summaryrefslogtreecommitdiff
path: root/lisp/emacs-lisp/crm.el
diff options
context:
space:
mode:
Diffstat (limited to 'lisp/emacs-lisp/crm.el')
-rw-r--r--lisp/emacs-lisp/crm.el26
1 files changed, 10 insertions, 16 deletions
diff --git a/lisp/emacs-lisp/crm.el b/lisp/emacs-lisp/crm.el
index 454c3e85074..a371a8e14de 100644
--- a/lisp/emacs-lisp/crm.el
+++ b/lisp/emacs-lisp/crm.el
@@ -251,22 +251,16 @@ with empty strings removed."
(setq-local minibuffer-completion-table #'crm--collection-fn)
(setq-local minibuffer-completion-predicate predicate)
(setq-local completion-list-insert-choice-function
- (lambda (start end choice)
- (if (and (stringp start) (stringp end))
- (let* ((beg (save-excursion
- (goto-char (minibuffer-prompt-end))
- (or (search-forward start nil t)
- (search-forward-regexp crm-separator nil t)
- (minibuffer-prompt-end))))
- (end (save-excursion
- (goto-char (point-max))
- (or (search-backward end nil t)
- (progn
- (goto-char beg)
- (search-forward-regexp crm-separator nil t))
- (point-max)))))
- (completion--replace beg end choice))
- (completion--replace start end choice))))
+ (lambda (_start _end choice)
+ (let* ((beg (save-excursion
+ (if (search-backward-regexp crm-separator nil t)
+ (1+ (point))
+ (minibuffer-prompt-end))))
+ (end (save-excursion
+ (if (search-forward-regexp crm-separator nil t)
+ (1- (point))
+ (point-max)))))
+ (completion--replace beg end choice))))
;; see completing_read in src/minibuf.c
(setq-local minibuffer-completion-confirm
(unless (eq require-match t) require-match))