summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRomain Francoise <romain@orebokech.com>2005-09-30 18:30:10 +0000
committerRomain Francoise <romain@orebokech.com>2005-09-30 18:30:10 +0000
commit97c3e4cc37decbf26618ce80b215f1a6aea2a7b8 (patch)
tree52f32dad2f4f08d11fe70633f195fc2cb20dbaf2
parent42b5e85ecd6609f0c35edb9eeb24936b431e940c (diff)
(High-Level Completion): Explain that the prompt
given to `read-buffer' should end with a colon and a space. Update usage examples.
-rw-r--r--lispref/ChangeLog6
-rw-r--r--lispref/minibuf.texi9
-rw-r--r--src/ChangeLog5
-rw-r--r--src/minibuf.c26
4 files changed, 42 insertions, 4 deletions
diff --git a/lispref/ChangeLog b/lispref/ChangeLog
index 6e8f20024d..332ec14df3 100644
--- a/lispref/ChangeLog
+++ b/lispref/ChangeLog
@@ -1,3 +1,9 @@
+2005-09-30 Romain Francoise <romain@orebokech.com>
+
+ * minibuf.texi (High-Level Completion): Explain that the prompt
+ given to `read-buffer' should end with a colon and a space.
+ Update usage examples.
+
2005-09-29 Juri Linkov <juri@jurta.org>
* display.texi (Displaying Messages): Rename argument name
diff --git a/lispref/minibuf.texi b/lispref/minibuf.texi
index 04443c493f..bc2342fc18 100644
--- a/lispref/minibuf.texi
+++ b/lispref/minibuf.texi
@@ -1044,6 +1044,11 @@ return if the user exits with an empty minibuffer. If non-@code{nil},
it should be a string or a buffer. It is mentioned in the prompt, but
is not inserted in the minibuffer as initial input.
+The argument @var{prompt} should be a string ending with a colon and a
+space. If @var{default} is non-@code{nil}, the function inserts it in
+@var{prompt} before the colon to follow the convention for reading from
+the minibuffer with a default value (@pxref{Programming Tips}).
+
If @var{existing} is non-@code{nil}, then the name specified must be
that of an existing buffer. The usual commands to exit the minibuffer
do not exit if the text is not valid, and @key{RET} does completion to
@@ -1058,7 +1063,7 @@ only buffer name starting with the given input is
@samp{minibuffer.texi}, so that name is the value.
@example
-(read-buffer "Buffer name? " "foo" t)
+(read-buffer "Buffer name: " "foo" t)
@group
;; @r{After evaluation of the preceding expression,}
;; @r{the following prompt appears,}
@@ -1067,7 +1072,7 @@ only buffer name starting with the given input is
@group
---------- Buffer: Minibuffer ----------
-Buffer name? (default foo) @point{}
+Buffer name (default foo): @point{}
---------- Buffer: Minibuffer ----------
@end group
diff --git a/src/ChangeLog b/src/ChangeLog
index 3b207c4b50..13c2c0562e 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,8 @@
+2005-09-30 Romain Francoise <romain@orebokech.com>
+
+ * minibuf.c (Fread_buffer): Follow convention for reading from the
+ minibuffer with a default value. Doc fix.
+
2005-09-29 Juri Linkov <juri@jurta.org>
* editfns.c (Fmessage, Fmessage_box, Fmessage_or_box):
diff --git a/src/minibuf.c b/src/minibuf.c
index ace1e0dda7..28789b60bd 100644
--- a/src/minibuf.c
+++ b/src/minibuf.c
@@ -1132,11 +1132,14 @@ DEFUN ("read-buffer", Fread_buffer, Sread_buffer, 1, 3, 0,
Prompt with PROMPT.
Optional second arg DEF is value to return if user enters an empty line.
If optional third arg REQUIRE-MATCH is non-nil,
- only existing buffer names are allowed. */)
+ only existing buffer names are allowed.
+The argument PROMPT should be a string ending with a colon and a space. */)
(prompt, def, require_match)
Lisp_Object prompt, def, require_match;
{
Lisp_Object args[4];
+ unsigned char *s;
+ int len;
if (BUFFERP (def))
def = XBUFFER (def)->name;
@@ -1145,7 +1148,26 @@ If optional third arg REQUIRE-MATCH is non-nil,
{
if (!NILP (def))
{
- args[0] = build_string ("%s(default %s) ");
+ /* A default value was provided: we must change PROMPT,
+ editing the default value in before the colon. To achieve
+ this, we replace PROMPT with a substring that doesn't
+ contain the terminal space and colon (if present). They
+ are then added back using Fformat. */
+
+ if (STRINGP (prompt))
+ {
+ s = SDATA (prompt);
+ len = strlen (s);
+ if (len >= 2 && s[len - 2] == ':' && s[len - 1] == ' ')
+ len = len - 2;
+ else if (len >= 1 && (s[len - 1] == ':' || s[len - 1] == ' '))
+ len--;
+
+ prompt = make_specified_string (s, -1, len,
+ STRING_MULTIBYTE (prompt));
+ }
+
+ args[0] = build_string ("%s (default %s): ");
args[1] = prompt;
args[2] = def;
prompt = Fformat (3, args);