changeset 58363:f8ac0eb0faa3

(Fminibuffer_complete_and_exit): Fixup the case of the completed value, for case-indep completion.
author Richard M. Stallman <rms@gnu.org>
date Sat, 20 Nov 2004 22:32:07 +0000
parents 0301caf145d2
children c8e69a3cb57f
files src/minibuf.c
diffstat 1 files changed, 21 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/minibuf.c	Sat Nov 20 22:09:50 2004 +0000
+++ b/src/minibuf.c	Sat Nov 20 22:32:07 2004 +0000
@@ -2082,9 +2082,29 @@
   if (XINT (Fminibuffer_prompt_end ()) == ZV)
     goto exit;
 
-  if (!NILP (Ftest_completion (Fminibuffer_contents (),
+  val = Fminibuffer_contents ();
+  if (!NILP (Ftest_completion (val,
 			       Vminibuffer_completion_table,
 			       Vminibuffer_completion_predicate)))
+    {
+      if (completion_ignore_case)
+	{ /* Fixup case of the field, if necessary. */
+	  Lisp_Object compl
+	    = Ftry_completion (val,
+			       Vminibuffer_completion_table,
+			       Vminibuffer_completion_predicate);
+	  if (STRINGP (compl)
+	      /* If it weren't for this piece of paranoia, I'd replace
+		 the whole thing with a call to do_completion. */
+	      && EQ (Flength (val), Flength (compl)))
+	    {
+	      del_range (XINT (Fminibuffer_prompt_end ()), ZV);
+	      Finsert (1, &compl);
+	    }
+	}
+      goto exit;
+    }
+
     goto exit;
 
   /* Call do_completion, but ignore errors.  */