emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/which-key 3153287 1/2: Add support for help-char being


From: ELPA Syncer
Subject: [elpa] externals/which-key 3153287 1/2: Add support for help-char being a generalized input event
Date: Tue, 17 Aug 2021 13:57:20 -0400 (EDT)

branch: externals/which-key
commit 31532874651bf3268c87601eb7478e1756e220af
Author: Duncan Burke <duncankburke@gmail.com>
Commit: Duncan Burke <duncankburke@gmail.com>

    Add support for help-char being a generalized input event
    
    Not all keyboard events can be represented as a character. For example,
    while ?\C-h is a character, represented as 8 in decimal, C-M-h is
    represented by 134217736 in decimal, as can be obtained from:
    
    (elt (kbd "C-M-h") 0)
    
    It is useful to allow help-char to be set to something other than a
    character, as characters cover only a very small region of possible
    input events. This is especially important because help-char is used to
    bring up the pagination menu (when which-key-use-C-h-commands is t), and
    this won't work if it conflicts with any keybinding within the prefix
    command that led to the activation of which-key.
    
    If help-char is left set to ?\C-h things work fine because as a
    convention keymaps avoid binding that due to it being the default
    binding for help. That is just a convention, however, and things become
    more difficult with a heavily user-customized set of keybindings that
    preclude the use of ?\C-h for that purpose.
    
    In that case, if ?\C-h cannot be used, it is much easier to find a
    binding for help-char that is unlikely to conflict with any bindings if
    it is permitted to use the full range of modifier keys.
    
    This patch modifies which-key--next-page-hint, which is the only place
    that broke when I set help-char to a keyboard event that wasn't a
    character. Rather than doing a string comparison, help-char and prefix
    keys are put in vectors and equality is checked that way.
---
 which-key.el | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/which-key.el b/which-key.el
index 0fdcb7a..62f0f61 100644
--- a/which-key.el
+++ b/which-key.el
@@ -1992,9 +1992,8 @@ max-lines max-width avl-lines avl-width 
(which-key--pages-height result))
                   (concat key " or " which-key-paging-key)
                 key)))
     (when (and which-key-use-C-h-commands
-               (or (not (stringp (kbd prefix-keys)))
-                   (not (string-equal (char-to-string help-char)
-                                      (kbd prefix-keys)))))
+               (not (equal (vector help-char)
+                           (vconcat (kbd prefix-keys)))))
       (which-key--propertize (format "[%s paging/help]" key)
                              'face 'which-key-note-face))))
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]