From 4fb75fa6eff6b6920f66a09170fae1744082d1e7 Mon Sep 17 00:00:00 2001 From: justbur Date: Thu, 3 Dec 2015 20:49:43 -0500 Subject: [PATCH] Don't abort key seq after unbound key in C-h-map Allows to recover from accidentally pressing C-h. This commit also fixes some echo area problems that become apprent after introducing the C-h-map stuff --- which-key.el | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/which-key.el b/which-key.el index 57214df430a..a875c23ce2f 100644 --- a/which-key.el +++ b/which-key.el @@ -1489,7 +1489,7 @@ is the width of the live window." Slight delay gets around evil functions that clear the echo area." (let* ((minibuffer (eq which-key-popup-type 'minibuffer)) - (delay (if minibuffer 0.2 0.01)) + (delay (if minibuffer 0.2 (+ echo-keystrokes 0.001))) message-log-max) (unless minibuffer (message "%s" text)) (run-with-idle-timer @@ -1609,7 +1609,7 @@ enough space based on your settings and frame size." prefix-keys) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; paging functions -(defun which-key-turn-page (&optional backward) +(defun which-key-turn-page (delta) "Show the next page of keys. Will force an update if called before `which-key--update'." (cond @@ -1627,7 +1627,7 @@ Will force an update if called before `which-key--update'." (mapcar (lambda (ev) (cons t ev)) (which-key--current-key-list))) (next-page (if which-key--current-page-n - (+ which-key--current-page-n (if backward -1 1)) 0))) + (+ which-key--current-page-n delta) 0))) (setq unread-command-events next-event) (if which-key--last-try-2-loc (let ((which-key-side-window-location which-key--last-try-2-loc) @@ -1641,7 +1641,7 @@ Will force an update if called before `which-key--update'." "Call the command in `which-key--prefix-help-cmd-backup'. Usually this is `describe-prefix-bindings'." (interactive) - (let (which-key-inhibit) + (let ((which-key-inhibit t)) (which-key--hide-popup-ignore-command) (funcall which-key--prefix-help-cmd-backup))) @@ -1650,11 +1650,11 @@ Usually this is `describe-prefix-bindings'." "Show next page of keys unless on the last page, in which case call `which-key-show-standard-help'." (interactive) - (let (which-key-inhibit) + (let ((which-key-inhibit t)) (if (and which-key--current-page-n which-key--on-last-page) (which-key-show-standard-help) - (which-key-turn-page)))) + (which-key-turn-page 1)))) (defalias 'which-key-show-next-page 'which-key-show-next-page-no-cycle) (make-obsolete 'which-key-show-next-page 'which-key-show-next-page-no-cycle "2015-12-2") @@ -1664,27 +1664,27 @@ call `which-key-show-standard-help'." "Show previous page of keys unless on the first page, in which case do nothing." (interactive) - (let (which-key-inhibit) + (let ((which-key-inhibit t)) (if (and which-key--current-page-n (eq which-key--current-page-n 0)) - nil - (which-key-turn-page t)))) + (which-key-turn-page 0) + (which-key-turn-page -1)))) ;;;###autoload (defun which-key-show-next-page-cycle () "Show the next page of keys, cycling from end to beginning after last page." (interactive) - (let (which-key-inhibit) - (which-key-turn-page))) + (let ((which-key-inhibit t)) + (which-key-turn-page 1))) ;;;###autoload (defun which-key-show-previous-page-cycle () "Show the previous page of keys, cycling from beginning to end after first page." (interactive) - (let (which-key-inhibit) - (which-key-turn-page t))) + (let ((which-key-inhibit t)) + (which-key-turn-page -1))) ;;;###autoload (defun which-key-show-top-level () @@ -1698,7 +1698,7 @@ after first page." "Undo last keypress and force which-key update." (interactive) (let* ((key-lst (butlast (which-key--current-key-list))) - which-key-inhibit) + (which-key-inhibit t)) (if key-lst (progn (setq unread-command-events @@ -1711,7 +1711,7 @@ after first page." (defun which-key-abort () "Abort key sequence." (interactive) - (let (which-key-inhibit) + (let ((which-key-inhibit t)) (which-key--hide-popup-ignore-command) (message "Aborted key sequence"))) @@ -1736,8 +1736,8 @@ prefix) if `which-key-use-C-h-commands' is non nil." (propertize " [n]ext-page, [p]revious-page, [u]ndo-key, [h]elp, [a]bort" 'face 'which-key-note-face))))) (cmd (lookup-key which-key-C-h-map k)) - which-key-inhibit) - (if cmd (funcall cmd) (which-key-abort)))) + (which-key-inhibit t)) + (if cmd (funcall cmd) (which-key-turn-page 0)))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Update