Commit b1da2957 authored by Stefan Monnier's avatar Stefan Monnier
Browse files

* lisp/minibuffer.el (completion-pcm--merge-completions): Make sure prefixes

and suffixes don't overlap.

Fixes: debbugs:14061
parent f557c1b1
2013-03-27 Stefan Monnier <monnier@iro.umontreal.ca>
 
* minibuffer.el (completion-pcm--merge-completions): Make sure prefixes
and suffixes don't overlap (bug#14061).
* case-table.el: Use lexical-binding.
(case-table-get-table): New function.
(get-upcase-table): Use it. Mark as obsolete. Adjust callers.
 
* minibuffer.el (completion-pcm--merge-completions): Make sure prefixes
and suffixes don't overlap
2013-03-27 Teodor Zlatanov <tzz@lifelogs.com>
 
* progmodes/subword.el: Add `superword-mode' to do word motion
......
......@@ -2997,12 +2997,21 @@ the same set of elements."
;; here any more.
(unless unique
(push elem res)
(when (memq elem '(star point prefix))
;; Extract common suffix additionally to common prefix.
;; Only do it for `point', `star', and `prefix' since for
;; `any' it could lead to a merged completion that
;; doesn't itself match the candidates.
(let ((suffix (completion--common-suffix comps)))
;; Extract common suffix additionally to common prefix.
;; Don't do it for `any' since it could lead to a merged
;; completion that doesn't itself match the candidates.
(when (and (memq elem '(star point prefix))
;; If prefix is one of the completions, there's no
;; suffix left to find.
(not (assoc-string prefix comps t)))
(let ((suffix
(completion--common-suffix
(if (zerop (length prefix)) comps
;; Ignore the chars in the common prefix, so we
;; don't merge '("abc" "abbc") as "ab*bc".
(let ((skip (length prefix)))
(mapcar (lambda (str) (substring str skip))
comps))))))
(cl-assert (stringp suffix))
(unless (equal suffix "")
(push suffix res)))))
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment