emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] Changes to emacs/src/minibuf.c


From: Stefan Monnier
Subject: [Emacs-diffs] Changes to emacs/src/minibuf.c
Date: Wed, 21 Dec 2005 17:33:41 +0000

Index: emacs/src/minibuf.c
diff -u emacs/src/minibuf.c:1.296 emacs/src/minibuf.c:1.297
--- emacs/src/minibuf.c:1.296   Fri Dec 16 19:03:17 2005
+++ emacs/src/minibuf.c Wed Dec 21 17:33:40 2005
@@ -2404,7 +2404,7 @@
   else
     {
       write_string ("Possible completions are:", -1);
-      for (tail = completions, i = 0; !NILP (tail); tail = Fcdr (tail), i++)
+      for (tail = completions, i = 0; CONSP (tail); tail = XCDR (tail), i++)
        {
          Lisp_Object tem, string;
          int length;
@@ -2412,7 +2412,7 @@
 
          startpos = Qnil;
 
-         elt = Fcar (tail);
+         elt = XCAR (tail);
          if (SYMBOLP (elt))
            elt = SYMBOL_NAME (elt);
          /* Compute the length of this element.  */
@@ -2588,9 +2588,21 @@
       temp_echo_area_glyphs (build_string (" [No completions]"));
     }
   else
-    internal_with_output_to_temp_buffer ("*Completions*",
-                                        display_completion_list_1,
-                                        Fsort (completions, Qstring_lessp));
+    {
+      /* Sort and remove duplicates.  */
+      Lisp_Object tmp = completions = Fsort (completions, Qstring_lessp);
+      while (CONSP (tmp))
+       {
+         if (CONSP (XCDR (tmp))
+             && !NILP (Fequal (XCAR (tmp), XCAR (XCDR (tmp)))))
+           XSETCDR (tmp, XCDR (XCDR (tmp)));
+         else
+           tmp = XCDR (tmp);
+       }
+      internal_with_output_to_temp_buffer ("*Completions*",
+                                          display_completion_list_1,
+                                          completions);
+    }
   return Qnil;
 }
 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]