]> git.eshelyaron.com Git - emacs.git/commitdiff
(completion-hilit-commonality): Don't presume
authorStefan Monnier <monnier@iro.umontreal.ca>
Tue, 6 Jan 2009 04:17:04 +0000 (04:17 +0000)
committerStefan Monnier <monnier@iro.umontreal.ca>
Tue, 6 Jan 2009 04:17:04 +0000 (04:17 +0000)
all-completions always include the input as prefix.
(completion-pcm--pattern-trivial-p): Accept a few more patterns
as trivial.
(completion-pcm--hilit-commonality): Remove leftover code that used to
deal with the now removed cdr-in-last-cons.

lisp/ChangeLog
lisp/minibuffer.el

index bd394143d9a0f104709b9572d1aae5c1261941f8..5267a905bdc3c6a83d866aef18437410e52e0404 100644 (file)
@@ -1,11 +1,20 @@
+2009-01-06  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * minibuffer.el (completion-hilit-commonality): Don't presume
+       all-completions always include the input as prefix.
+       (completion-pcm--pattern-trivial-p): Accept a few more patterns
+       as trivial.
+       (completion-pcm--hilit-commonality): Remove leftover code that used to
+       deal with the now removed cdr-in-last-cons.
+
 2009-01-06  Juanma Barranquero  <lekktu@gmail.com>
 
        * international/mule.el (define-coding-system): Fix typos in docstring.
 
 2009-01-05  Alan Mackenzie  <acm@muc.de>
 
-       * progmodes/cc-styles.el (c-setup-paragraph-variables): Ensure
-       paragraph-\(start\|separate\) match blank lines.  For AWK Mode.
+       * progmodes/cc-styles.el (c-setup-paragraph-variables):
+       Ensure paragraph-\(start\|separate\) match blank lines.  For AWK Mode.
 
 2009-01-05  Michael Albinus  <michael.albinus@gmx.de>
 
        (tramp-prefix-domain-regexp, tramp-domain-regexp)
        (tramp-user-with-domain-regexp, tramp-prefix-ipv6-format)
        (tramp-prefix-ipv6-regexp, tramp-ipv6-regexp)
-       (tramp-postfix-ipv6-format, tramp-postfix-ipv6-regexp): New
-       defconst.
+       (tramp-postfix-ipv6-format, tramp-postfix-ipv6-regexp): New defconst.
        (tramp-file-name-structure, tramp-file-name-regexp-unified)
        (tramp-completion-dissect-file-name, tramp-parse-hosts-group)
        (tramp-dissect-file-name, tramp-make-tramp-file-name)
        (tramp-completion-make-tramp-file-name): Handle IPv6 addresses.
        (tramp-handle-insert-file-contents): Fix setting of
        `buffer-read-only'.
-       (tramp-compute-multi-hops, tramp-local-host-p): Use
-       `tramp-local-host-regexp'.
-       (tramp-file-name-real-user, tramp-file-name-domain): Use
-       `tramp-user-with-domain-regexp'.
+       (tramp-compute-multi-hops, tramp-local-host-p):
+       Use `tramp-local-host-regexp'.
+       (tramp-file-name-real-user, tramp-file-name-domain):
+       Use `tramp-user-with-domain-regexp'.
 
        * net/tramp-smb.el (top): Use `tramp-prefix-domain-regexp'.
-       (tramp-smb-maybe-open-connection): Use `tramp-file-name-*'
-       methods.
+       (tramp-smb-maybe-open-connection): Use `tramp-file-name-*' methods.
 
 2009-01-03  Roland Winkler  <Roland.Winkler@physik.uni-erlangen.de>
 
        * proced.el (proced-grammar-alist): Refiner can be a
        list (function help-echo) instead of a cons pair.
        (proced-post-display-hook): New variable.
-       (proced-tree-depth): Renamed from proced-tree-indent.
+       (proced-tree-depth): Rename from proced-tree-indent.
        (proced-mode): Derive mode from special-mode.
-       (proced-mode-map): Changed accordingly.
+       (proced-mode-map): Change accordingly.
        (proced, proced-update): Run proced-post-display-hook.
-       (proced-do-mark-all): Count processes for which mark has been
-       updated.
+       (proced-do-mark-all): Count processes for which mark has been updated.
        (proced-format): Check for ppid attribute.
        (proced-process-attributes): Take time and ctime attribute from
        system-process-attributes.
index 51e0358136b4809f67a611e21bc768423cc3b1f9..364ee3d909f5cf4d890165ee5a35cd0bc54bed43 100644 (file)
@@ -789,7 +789,11 @@ of the differing parts is, by contrast, slightly highlighted."
                      (car (setq elem (cons (copy-sequence (car elem))
                                            (cdr elem))))
                    (setq elem (copy-sequence elem)))))
-            (put-text-property 0 com-str-len
+            (put-text-property 0
+                              ;; If completion-boundaries returns incorrect
+                              ;; values, all-completions may return strings
+                              ;; that don't contain the prefix.
+                              (min com-str-len (length str))
                                'font-lock-face 'completions-common-part
                                str)
             (if (> (length str) com-str-len)
@@ -1333,7 +1337,13 @@ expression (not containing character ranges like `a-z')."
   :type 'string)
 
 (defun completion-pcm--pattern-trivial-p (pattern)
-  (and (stringp (car pattern)) (null (cdr pattern))))
+  (and (stringp (car pattern))
+       ;; It can be followed by `point' and "" and still be trivial.
+       (let ((trivial t))
+        (dolist (elem (cdr pattern))
+          (unless (member elem '(point ""))
+            (setq trivial nil)))
+        trivial)))
 
 (defun completion-pcm--string->pattern (string &optional point)
   "Split STRING into a pattern.
@@ -1411,29 +1421,24 @@ PATTERN is as returned by `completion-pcm--string->pattern'."
 (defun completion-pcm--hilit-commonality (pattern completions)
   (when completions
     (let* ((re (completion-pcm--pattern->regex pattern '(point)))
-           (case-fold-search completion-ignore-case)
-           (last (last completions))
-           (base-size (cdr last)))
+           (case-fold-search completion-ignore-case))
       ;; Remove base-size during mapcar, and add it back later.
-      (setcdr last nil)
-      (nconc
-       (mapcar
-        (lambda (str)
-          ;; Don't modify the string itself.
-          (setq str (copy-sequence str))
-          (unless (string-match re str)
-            (error "Internal error: %s does not match %s" re str))
-          (let ((pos (or (match-beginning 1) (match-end 0))))
-            (put-text-property 0 pos
-                               'font-lock-face 'completions-common-part
-                               str)
-            (if (> (length str) pos)
-                (put-text-property pos (1+ pos)
-                                   'font-lock-face 'completions-first-difference
-                                   str)))
-          str)
-        completions)
-       base-size))))
+      (mapcar
+       (lambda (str)
+        ;; Don't modify the string itself.
+         (setq str (copy-sequence str))
+         (unless (string-match re str)
+           (error "Internal error: %s does not match %s" re str))
+         (let ((pos (or (match-beginning 1) (match-end 0))))
+           (put-text-property 0 pos
+                              'font-lock-face 'completions-common-part
+                              str)
+           (if (> (length str) pos)
+               (put-text-property pos (1+ pos)
+                                 'font-lock-face 'completions-first-difference
+                                 str)))
+        str)
+       completions))))
 
 (defun completion-pcm--find-all-completions (string table pred point
                                                     &optional filter)