* lisp/emacs-lisp/crm.el: Set completion-list-insert-choice-function.

* lisp/emacs-lisp/crm.el (completing-read-multiple): Set buffer-local
completion-list-insert-choice-function that handles string values of args.
https://lists.gnu.org/archive/html/emacs-devel/2022-05/msg00017.html
This commit is contained in:
James N. V. Cash 2022-05-05 21:15:51 +03:00 committed by Juri Linkov
parent 459d5ff8ad
commit 7e9d364b66

View file

@ -254,6 +254,23 @@ with empty strings removed."
'crm--choose-completion-string nil 'local)
(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))))
;; see completing_read in src/minibuf.c
(setq-local minibuffer-completion-confirm
(unless (eq require-match t) require-match))