Function: embark-completing-read-prompter
embark-completing-read-prompter is a byte-compiled function defined in
embark.el.
Signature
(embark-completing-read-prompter KEYMAP UPDATE &optional NO-DEFAULT)
Documentation
Prompt via completion for a command bound in KEYMAP.
If NO-DEFAULT is t, no default value is passed tocompleting-read.
UPDATE is the indicator update function. It is not used directly
here, but if the user switches to embark-keymap-prompter, the
UPDATE function is passed to it.
Source Code
;; Defined in ~/.emacs.d/elpa/embark-20260610.302/embark.el
(defun embark-completing-read-prompter (keymap update &optional no-default)
"Prompt via completion for a command bound in KEYMAP.
If NO-DEFAULT is t, no default value is passed to`completing-read'.
UPDATE is the indicator update function. It is not used directly
here, but if the user switches to `embark-keymap-prompter', the
UPDATE function is passed to it."
(let* ((candidates+def (embark--formatted-bindings keymap))
(candidates (car candidates+def))
(def (and (not no-default) (cdr candidates+def)))
(buf (current-buffer))
(choice
(catch 'choice
(minibuffer-with-setup-hook
(lambda ()
(let ((map (make-sparse-keymap)))
(define-key map "\M-q"
(lambda ()
(interactive)
(with-current-buffer buf
(embark-toggle-quit))))
(when-let* ((cycle (embark--cycle-key)))
;; Rebind `embark-cycle' in order allow cycling
;; from the `completing-read' prompter. Additionally
;; `embark-cycle' can be selected via
;; `completing-read'. The downside is that this breaks
;; recursively acting on the candidates of type
;; embark-keybinding in the `completing-read' prompter.
(define-key
map cycle
(cond
((eq (lookup-key keymap cycle) 'embark-cycle)
(lambda ()
(interactive)
(throw 'choice 'embark-cycle)))
((null embark-cycle-key)
(lambda ()
(interactive)
(minibuffer-message
"No cycling possible; press `%s' again to act."
(key-description cycle))
(define-key map cycle #'embark-act))))))
(when embark-keymap-prompter-key
(keymap-set map embark-keymap-prompter-key
(lambda ()
(interactive)
(message "Press key binding")
(let ((cmd (embark-keymap-prompter keymap update)))
(if (null cmd)
(user-error "Unknown key")
(throw 'choice cmd))))))
(use-local-map
(make-composed-keymap map (current-local-map)))))
(completing-read
"Command: "
(embark--with-category 'embark-keybinding candidates)
nil nil nil 'embark--prompter-history def)))))
(pcase (assoc choice candidates)
(`(,_formatted ,_name ,cmd ,key ,_desc)
;; Set last-command-event as it would be from the command loop.
(setq last-command-event (aref key (1- (length key))))
cmd)
('nil (intern-soft choice)))))