[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] /srv/bzr/emacs/trunk r100154: Extract common suffix for *
From: |
Stefan Monnier |
Subject: |
[Emacs-diffs] /srv/bzr/emacs/trunk r100154: Extract common suffix for * in partial-completion. |
Date: |
Wed, 05 May 2010 22:59:07 -0400 |
User-agent: |
Bazaar (2.0.3) |
------------------------------------------------------------
revno: 100154
committer: Stefan Monnier <address@hidden>
branch nick: trunk
timestamp: Wed 2010-05-05 22:59:07 -0400
message:
Extract common suffix for * in partial-completion.
* minibuffer.el (completion--sreverse, completion--common-suffix):
New functions.
(completion-pcm--merge-completions): Extract common suffix when safe.
modified:
lisp/ChangeLog
lisp/minibuffer.el
=== modified file 'lisp/ChangeLog'
--- a/lisp/ChangeLog 2010-05-06 02:53:56 +0000
+++ b/lisp/ChangeLog 2010-05-06 02:59:07 +0000
@@ -1,5 +1,9 @@
2010-05-06 Stefan Monnier <address@hidden>
+ * minibuffer.el (completion--sreverse, completion--common-suffix):
+ New functions.
+ (completion-pcm--merge-completions): Extract common suffix when safe.
+
* emacs-lisp/easy-mmode.el (define-minor-mode):
Make :variable more flexible.
* files.el (auto-save-mode): Use it to define using define-minor-mode.
=== modified file 'lisp/minibuffer.el'
--- a/lisp/minibuffer.el 2010-05-01 01:08:43 +0000
+++ b/lisp/minibuffer.el 2010-05-06 02:59:07 +0000
@@ -1983,6 +1983,17 @@
(nconc (completion-pcm--hilit-commonality pattern all)
(length prefix)))))
+(defun completion--sreverse (str)
+ "Like `reverse' but for a string STR rather than a list."
+ (apply 'string (nreverse (mapcar 'identity str))))
+
+(defun completion--common-suffix (strs)
+ "Return the common suffix of the strings STRS."
+ (completion--sreverse
+ (try-completion
+ ""
+ (mapcar 'completion--sreverse comps))))
+
(defun completion-pcm--merge-completions (strs pattern)
"Extract the commonality in STRS, with the help of PATTERN."
;; When completing while ignoring case, we want to try and avoid
@@ -2044,7 +2055,17 @@
;; `any' into a `star' because the surrounding context has
;; changed such that string->pattern wouldn't add an `any'
;; here any more.
- (unless unique (push elem res))
+ (unless unique
+ (push elem res)
+ (when (memq elem '(star point))
+ ;; Extract common suffix additionally to common prefix.
+ ;; Only do it for `point' and `star' since for
+ ;; `any' it could lead to a merged completion that
+ ;; doesn't itself match the candidates.
+ (let ((suffix (completion--common-suffix comps)))
+ (assert (stringp suffix))
+ (unless (equal suffix "")
+ (push suffix res)))))
(setq fixed "")))))
;; We return it in reverse order.
res)))))
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] /srv/bzr/emacs/trunk r100154: Extract common suffix for * in partial-completion.,
Stefan Monnier <=