changeset 54909:2a24736eb420

(completion-setup-function): Set an initial value to `element-common-end' before entering loop. Set a value to `element-common-end' at the end of loop. The bug is reported by Juri Linkov <juri@jurta.org> in emacs-devel list.
author Masatake YAMATO <jet@gyve.org>
date Fri, 16 Apr 2004 08:45:40 +0000
parents 9839a506e9b8
children 2ac3325ab7ec
files lisp/ChangeLog lisp/simple.el
diffstat 2 files changed, 24 insertions(+), 14 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Fri Apr 16 00:22:38 2004 +0000
+++ b/lisp/ChangeLog	Fri Apr 16 08:45:40 2004 +0000
@@ -1,3 +1,11 @@
+2004-04-16  Masatake YAMATO  <jet@gyve.org>
+
+	* simple.el (completion-setup-function): Set an initial value
+	to `element-common-end' before entering loop. Set a value
+	to `element-common-end' at the end of loop.
+	The bug is reported by Juri Linkov <juri@jurta.org> in emacs-devel
+	list.
+
 2004-04-16  Juanma Barranquero  <lektu@terra.es>
 
 	* bookmark.el (bookmark-send-edited-annotation): Fix docstring.
--- a/lisp/simple.el	Fri Apr 16 00:22:38 2004 +0000
+++ b/lisp/simple.el	Fri Apr 16 08:45:40 2004 +0000
@@ -987,7 +987,7 @@
 	(undo-start))
       ;; get rid of initial undo boundary
       (undo-more 1))
-    ;; If we got this far, the next command should be a consecutive undo. 
+    ;; If we got this far, the next command should be a consecutive undo.
     (setq this-command 'undo)
     ;; Check to see whether we're hitting a redo record, and if
     ;; so, ask the user whether she wants to skip the redo/undo pair.
@@ -4116,12 +4116,12 @@
 
 ;; This function goes in completion-setup-hook, so that it is called
 ;; after the text of the completion list buffer is written.
-(defface completion-emphasis 
+(defface completion-emphasis
   '((t (:inherit bold)))
   "Face put on the first uncommon character in completions in *Completions* buffer."
   :group 'completion)
 
-(defface completion-de-emphasis 
+(defface completion-de-emphasis
   '((t (:inherit default)))
   "Face put on the common prefix substring in completions in *Completions* buffer."
   :group 'completion)
@@ -4156,24 +4156,26 @@
 	      (setq completion-base-size 0))))
        ;; Put emphasis and de-emphasis faces on completions.
       (when completion-base-size
-	(let ((common-string-length (length 
-				     (substring mbuf-contents 
-						completion-base-size)))
-	      (element-start (next-single-property-change 
-			      (point-min)
-			      'mouse-face))
-	      element-common-end)
-	  (while element-start
-	    (setq element-common-end  (+ element-start common-string-length))
+	(let* ((common-string-length (length
+				      (substring mbuf-contents
+						 completion-base-size)))
+	       (element-start (next-single-property-change
+			       (point-min)
+			       'mouse-face))
+	       (element-common-end (+ element-start common-string-length))
+	       (maxp (point-max)))
+	  (while (and element-start (< element-common-end maxp))
 	    (when (and (get-char-property element-start 'mouse-face)
 		       (get-char-property element-common-end 'mouse-face))
 	      (put-text-property element-start element-common-end
 				 'font-lock-face 'completion-de-emphasis)
 	      (put-text-property element-common-end (1+ element-common-end)
 				 'font-lock-face 'completion-emphasis))
-	    (setq element-start (next-single-property-change 
+	    (setq element-start (next-single-property-change
 				 element-start
-				 'mouse-face)))))
+				 'mouse-face))
+	    (if element-start
+		(setq element-common-end  (+ element-start common-string-length))))))
       ;; Insert help string.
       (goto-char (point-min))
       (if (display-mouse-p)