changeset 94558:9802c49152d9

(completion-hilit-commonality): Revert last change: the leftover code was actually useful.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Fri, 02 May 2008 17:02:52 +0000
parents 620608825355
children 687d0af3b0f3
files lisp/ChangeLog lisp/minibuffer.el
diffstat 2 files changed, 26 insertions(+), 14 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Fri May 02 15:58:16 2008 +0000
+++ b/lisp/ChangeLog	Fri May 02 17:02:52 2008 +0000
@@ -1,3 +1,8 @@
+2008-05-02  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* minibuffer.el (completion-hilit-commonality): Revert last change:
+	the leftover code was actually useful.
+
 2008-05-02  Sam Steingold  <sds@gnu.org>
 
 	* vc.el (vc-dir-mode-map): Enable mouse bindings.
@@ -8,8 +13,8 @@
 
 2008-05-02  Nick Roberts  <nickrob@snap.net.nz>
 
-	* progmodes/gdb-ui.el (gdb-info-breakpoints-custom): Don't
-	throw error if no file is found.
+	* progmodes/gdb-ui.el (gdb-info-breakpoints-custom):
+	Don't throw error if no file is found.
 
 2008-05-02  Juanma Barranquero  <lekktu@gmail.com>
 
@@ -18,7 +23,7 @@
 
 2008-05-02  Richard Sharman  <rsharman@pobox.com>
 
-	* hilit-chg.el (highlight-changes-mode): Removed references to
+	* hilit-chg.el (highlight-changes-mode): Remove references to
 	hooks that no longer exist.  Because define-minor-mode is used the
 	hook highlight-changes-mode-hook exists and can do what both the
 	old hooks used to do.  The documentation at the top of the file
--- a/lisp/minibuffer.el	Fri May 02 15:58:16 2008 +0000
+++ b/lisp/minibuffer.el	Fri May 02 17:02:52 2008 +0000
@@ -654,17 +654,24 @@
       (setcdr last nil)
       (nconc
        (mapcar
-        (lambda (str)
-          ;; Don't modify the string itself.
-          (setq str (copy-sequence str))
-          (put-text-property 0 com-str-len
-                             'font-lock-face 'completions-common-part
-                             str)
-          (if (> (length str) com-str-len)
-              (put-text-property com-str-len (1+ com-str-len)
-                                 'font-lock-face 'completions-first-difference
-                                 str))
-          str)
+        (lambda (elem)
+          (let ((str
+                 ;; Don't modify the string itself, but a copy, since the
+                 ;; the string may be read-only or used for other purposes.
+                 ;; Furthermore, since `completions' may come from
+                 ;; display-completion-list, `elem' may be a list.
+                 (if (consp elem)
+                     (car (setq elem (cons (copy-sequence (car elem))
+                                           (cdr elem))))
+                   (setq elem (copy-sequence elem)))))
+            (put-text-property 0 com-str-len
+                               'font-lock-face 'completions-common-part
+                               str)
+            (if (> (length str) com-str-len)
+                (put-text-property com-str-len (1+ com-str-len)
+                                   'font-lock-face 'completions-first-difference
+                                   str)))
+          elem)
         completions)
        base-size))))