diff options
author | James N. V. Cash <james.nvc@gmail.com> | 2022-05-05 21:15:51 +0300 |
---|---|---|
committer | Juri Linkov <juri@linkov.net> | 2022-05-05 21:15:51 +0300 |
commit | 7e9d364b663613fd907f92de31e996463ef7d03c (patch) | |
tree | 1607a5680bb8ffdb36c337d2871902b44f986cb5 /lisp/emacs-lisp | |
parent | 459d5ff8ad72dab8831635e3d914389982041ad2 (diff) | |
download | emacs-7e9d364b663613fd907f92de31e996463ef7d03c.tar.gz emacs-7e9d364b663613fd907f92de31e996463ef7d03c.tar.bz2 emacs-7e9d364b663613fd907f92de31e996463ef7d03c.zip |
* 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
Diffstat (limited to 'lisp/emacs-lisp')
-rw-r--r-- | lisp/emacs-lisp/crm.el | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/lisp/emacs-lisp/crm.el b/lisp/emacs-lisp/crm.el index f3e1981732c..8a5c3d3730c 100644 --- a/lisp/emacs-lisp/crm.el +++ b/lisp/emacs-lisp/crm.el @@ -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)) |