mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-02-22 07:51:17 -08:00
Remove pseudo binding stuff
It's not necessary anymore with manual parsing of the keymaps
This commit is contained in:
parent
a55b90844c
commit
fc8855187f
1 changed files with 17 additions and 72 deletions
89
which-key.el
89
which-key.el
|
|
@ -525,24 +525,6 @@ it."
|
|||
:group 'which-key
|
||||
:type 'boolean)
|
||||
|
||||
(defcustom which-key-enable-extended-define-key nil
|
||||
"Advise `define-key' to make which-key aware of definitions of the form
|
||||
|
||||
\(define-key KEYMAP KEY '(\"DESCRIPTION\" . DEF))
|
||||
|
||||
With the advice, this definition will have the side effect of
|
||||
creating a replacement in `which-key-replacement-alist' that
|
||||
replaces DEF with DESCRIPTION when the key sequence ends in
|
||||
KEY. Using a cons cell like this is a valid definition for
|
||||
`define-key'. All this does is to make which-key aware of it.
|
||||
|
||||
Since many higher level keybinding functions use `define-key'
|
||||
internally, this will affect most if not all of those as well.
|
||||
|
||||
This variable must be set before loading which-key."
|
||||
:group 'which-key
|
||||
:type 'boolean)
|
||||
|
||||
;; Hooks
|
||||
(defcustom which-key-init-buffer-hook '()
|
||||
"Hook run when which-key buffer is initialized."
|
||||
|
|
@ -938,8 +920,7 @@ actually bound to write-file before performing the replacement."
|
|||
replacement
|
||||
(car-safe replacement)))
|
||||
(command (cdr-safe replacement)))
|
||||
(define-key keymap (which-key--pseudo-key (kbd key))
|
||||
`(which-key ,(cons string command))))
|
||||
(define-key keymap (kbd key) (cons string command)))
|
||||
(setq key (pop more)
|
||||
replacement (pop more))))
|
||||
(put 'which-key-add-keymap-based-replacements 'lisp-indent-function 'defun)
|
||||
|
|
@ -1044,19 +1025,6 @@ If AT-ROOT is non-nil the binding is also placed at the root of MAP."
|
|||
(which-key-define-key-recursively df key def t)))
|
||||
map))
|
||||
|
||||
(defun which-key--process-define-key-args (keymap key def)
|
||||
"When DEF takes the form (\"DESCRIPTION\". DEF), make sure
|
||||
which-key uses \"DESCRIPTION\" for this binding. This function is
|
||||
meant to be used as :before advice for `define-key'."
|
||||
(with-demoted-errors "Which-key extended define-key error: %s"
|
||||
(when (and (consp def)
|
||||
(stringp (car def))
|
||||
(symbolp (cdr def)))
|
||||
(define-key keymap (which-key--pseudo-key key) `(which-key ,def)))))
|
||||
|
||||
(when which-key-enable-extended-define-key
|
||||
(advice-add #'define-key :before #'which-key--process-define-key-args))
|
||||
|
||||
;;; Functions for computing window sizes
|
||||
|
||||
(defun which-key--text-width-to-total (text-width)
|
||||
|
|
@ -1493,20 +1461,6 @@ local bindings coming first. Within these categories order using
|
|||
(string-match-p binding-regexp
|
||||
(cdr key-binding)))))))
|
||||
|
||||
(defun which-key--get-pseudo-binding (key-binding &optional prefix)
|
||||
(let* ((key (kbd (car key-binding)))
|
||||
(pseudo-binding (key-binding (which-key--pseudo-key key prefix))))
|
||||
(when pseudo-binding
|
||||
(let* ((command-replacement (cadr pseudo-binding))
|
||||
(pseudo-desc (car command-replacement))
|
||||
(pseudo-def (cdr command-replacement)))
|
||||
(when (and (stringp pseudo-desc)
|
||||
(or (null pseudo-def)
|
||||
;; don't verify keymaps
|
||||
(keymapp pseudo-def)
|
||||
(eq pseudo-def (key-binding key))))
|
||||
(cons (car key-binding) pseudo-desc))))))
|
||||
|
||||
(defsubst which-key--replace-in-binding (key-binding repl)
|
||||
(cond ((or (not (consp repl)) (null (cdr repl)))
|
||||
key-binding)
|
||||
|
|
@ -1542,26 +1496,23 @@ local bindings coming first. Within these categories order using
|
|||
"Use `which-key--replacement-alist' to maybe replace KEY-BINDING.
|
||||
KEY-BINDING is a cons cell of the form \(KEY . BINDING\) each of
|
||||
which are strings. KEY is of the form produced by `key-binding'."
|
||||
(let* ((pseudo-binding (which-key--get-pseudo-binding key-binding prefix)))
|
||||
(if pseudo-binding
|
||||
pseudo-binding
|
||||
(let* ((replacer (if which-key-allow-multiple-replacements
|
||||
#'which-key--replace-in-repl-list-many
|
||||
#'which-key--replace-in-repl-list-once)))
|
||||
(pcase
|
||||
(apply replacer
|
||||
(list key-binding
|
||||
(cdr-safe (assq major-mode which-key-replacement-alist))))
|
||||
(`(replaced . ,repl)
|
||||
(if which-key-allow-multiple-replacements
|
||||
(pcase (apply replacer (list repl which-key-replacement-alist))
|
||||
(`(replaced . ,repl) repl)
|
||||
('() repl))
|
||||
repl))
|
||||
('()
|
||||
(pcase (apply replacer (list key-binding which-key-replacement-alist))
|
||||
(let* ((replacer (if which-key-allow-multiple-replacements
|
||||
#'which-key--replace-in-repl-list-many
|
||||
#'which-key--replace-in-repl-list-once)))
|
||||
(pcase
|
||||
(apply replacer
|
||||
(list key-binding
|
||||
(cdr-safe (assq major-mode which-key-replacement-alist))))
|
||||
(`(replaced . ,repl)
|
||||
(if which-key-allow-multiple-replacements
|
||||
(pcase (apply replacer (list repl which-key-replacement-alist))
|
||||
(`(replaced . ,repl) repl)
|
||||
('() key-binding))))))))
|
||||
('() repl))
|
||||
repl))
|
||||
('()
|
||||
(pcase (apply replacer (list key-binding which-key-replacement-alist))
|
||||
(`(replaced . ,repl) repl)
|
||||
('() key-binding))))))
|
||||
|
||||
(defsubst which-key--current-key-list (&optional key-str)
|
||||
(append (listify-key-sequence (which-key--current-prefix))
|
||||
|
|
@ -1593,12 +1544,6 @@ which are strings. KEY is of the form produced by `key-binding'."
|
|||
(or (eq lookup (intern (cdr keydesc)))
|
||||
(and (keymapp lookup) (string= (cdr keydesc) "Prefix Command"))))))
|
||||
|
||||
(defun which-key--pseudo-key (key &optional prefix)
|
||||
"Replace the last key in the sequence KEY by a special symbol
|
||||
in order for which-key to allow looking up a description for the key."
|
||||
(let ((seq (listify-key-sequence key)))
|
||||
(vconcat (or prefix (butlast seq)) [which-key] (last seq))))
|
||||
|
||||
(defun which-key--maybe-get-prefix-title (keys)
|
||||
"KEYS is a string produced by `key-description'.
|
||||
A title is possibly returned using
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue