]> git.eshelyaron.com Git - emacs.git/commitdiff
Allow minibuffer default to be a list of default values.
authorJuri Linkov <juri@jurta.org>
Mon, 22 Oct 2007 00:20:06 +0000 (00:20 +0000)
committerJuri Linkov <juri@jurta.org>
Mon, 22 Oct 2007 00:20:06 +0000 (00:20 +0000)
With empty input use the first element of this list as returned default.
(string_to_object):
(read_minibuf_noninteractive):  If defalt is cons, set val to its car.
(read_minibuf): If defalt is cons, set histstring to its car.
(Fread_string): If default_value is cons, set val to its car.
(Fread_buffer): If def is cons, use its car.
(Fcompleting_read): If defalt is cons, set val to its car.

src/ChangeLog
src/minibuf.c

index 3df88c6f3322618a231acbc99148d0693b214764..1ed1d3a5d389d21c64f1ab7d49c62bfe05c4998a 100644 (file)
@@ -1,3 +1,14 @@
+2007-10-22  Juri Linkov  <juri@jurta.org>
+
+       * minibuf.c: Allow minibuffer default to be a list of default values.
+       With empty input use the first element of this list as returned default.
+       (string_to_object):
+       (read_minibuf_noninteractive):  If defalt is cons, set val to its car.
+       (read_minibuf): If defalt is cons, set histstring to its car.
+       (Fread_string): If default_value is cons, set val to its car.
+       (Fread_buffer): If def is cons, use its car.
+       (Fcompleting_read): If defalt is cons, set val to its car.
+
 2007-10-21  Michael Albinus  <michael.albinus@gmx.de>
 
        * fileio.c (Fcopy_file): Call file name handler with preserve_uid_gid.
index d3c9eb505b6e8553b56c021d129348b444c522a2..377968fab4f545c6ce83d091782ae3736ecf15c4 100644 (file)
@@ -257,9 +257,13 @@ string_to_object (val, defalt)
 
   GCPRO2 (val, defalt);
 
-  if (STRINGP (val) && SCHARS (val) == 0
-      && STRINGP (defalt))
-    val = defalt;
+  if (STRINGP (val) && SCHARS (val) == 0)
+    {
+      if (STRINGP (defalt))
+       val = defalt;
+      else if (CONSP (defalt) && STRINGP (XCAR (defalt)))
+       val = XCAR (defalt);
+    }
 
   expr_and_pos = Fread_from_string (val, Qnil, Qnil);
   pos = XINT (Fcdr (expr_and_pos));
@@ -337,7 +341,7 @@ read_minibuf_noninteractive (map, initial, prompt, backup_n, expflag,
 
   /* If Lisp form desired instead of string, parse it. */
   if (expflag)
-    val = string_to_object (val, defalt);
+    val = string_to_object (val, CONSP (defalt) ? XCAR (defalt) : defalt);
 
   return val;
 }
@@ -785,6 +789,8 @@ read_minibuf (map, initial, prompt, backup_n, expflag,
     histstring = val;
   else if (STRINGP (defalt))
     histstring = defalt;
+  else if (CONSP (defalt) && STRINGP (XCAR (defalt)))
+    histstring = XCAR (defalt);
   else
     histstring = Qnil;
 
@@ -1102,7 +1108,7 @@ Fifth arg INHERIT-INPUT-METHOD, if non-nil, means the minibuffer inherits
                               Qnil, history, default_value,
                               inherit_input_method);
   if (STRINGP (val) && SCHARS (val) == 0 && ! NILP (default_value))
-    val = default_value;
+    val = CONSP (default_value) ? XCAR (default_value) : default_value;
   return val;
 }
 
@@ -1225,7 +1231,7 @@ The argument PROMPT should be a string ending with a colon and a space.  */)
 
          args[0] = build_string ("%s (default %s): ");
          args[1] = prompt;
-         args[2] = def;
+         args[2] = CONSP (def) ? XCAR (def) : def;
          prompt = Fformat (3, args);
        }
 
@@ -1835,7 +1841,7 @@ Completion ignores case if the ambient value of
                      !NILP (inherit_input_method));
 
   if (STRINGP (val) && SCHARS (val) == 0 && ! NILP (def))
-    val = def;
+    val = CONSP (def) ? XCAR (def) : def;
 
   RETURN_UNGCPRO (unbind_to (count, val));
 }