diff options
Diffstat (limited to 'lisp/emacs-lisp/crm.el')
-rw-r--r-- | lisp/emacs-lisp/crm.el | 26 |
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)) |