[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/free-keys e23ec255d4 13/19: Add option to ignore certain k
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/free-keys e23ec255d4 13/19: Add option to ignore certain keybindings (shadowed by WM etc.) |
Date: |
Sat, 29 Jan 2022 08:02:53 -0500 (EST) |
branch: elpa/free-keys
commit e23ec255d4356153dd18ca913f95273dc45f5b05
Author: Matus Goljer <dota.keys@gmail.com>
Commit: Matus Goljer <dota.keys@gmail.com>
Add option to ignore certain keybindings (shadowed by WM etc.)
---
free-keys.el | 59 ++++++++++++++++++++++++++++++++++-------------------------
1 file changed, 34 insertions(+), 25 deletions(-)
diff --git a/free-keys.el b/free-keys.el
index e3f142a7cb..8ef8145a44 100644
--- a/free-keys.el
+++ b/free-keys.el
@@ -50,6 +50,15 @@
:type 'string
:group 'free-keys)
+(defcustom free-keys-ignored-bindings nil
+ "List of bindings with modifiers which shouldn't be considered as free.
+
+The bindings should not contain a prefix. This can typically be
+used to ignore bindings intercepted by the window manager used
+for swapping windows and similar operations."
+ :type '(repeat string)
+ :group 'free-keys)
+
(defvar free-keys-mode-map
(let ((map (make-keymap)))
(define-key map "b" 'free-keys-change-buffer)
@@ -102,7 +111,30 @@ BUFFER and update the display."
This simply calls `free-keys'."
(free-keys nil free-keys-original-buffer))
-;; TODO: split this function into something cleaner.
+(defun free-keys--process-modifier (prefix modifier)
+ "Process free bindings for MODIFIER."
+ (let (empty-keys)
+ (mapc (lambda (key)
+ (let* ((key-name
+ (if (not (equal modifier ""))
+ (concat modifier "-" (char-to-string key))
+ (char-to-string key)))
+ (full-name
+ (if (and prefix (not (equal prefix ""))) (concat prefix "
" key-name) key-name))
+ (binding
+ (with-current-buffer free-keys-original-buffer
(key-binding (read-kbd-macro full-name)))))
+ (when (and (not (member key-name free-keys-ignored-bindings))
+ (or (not binding)
+ (eq binding 'undefined)))
+ (push full-name empty-keys))))
+ free-keys-keys)
+ (let ((len (length empty-keys)))
+ (when (> len 0)
+ (if (not (equal modifier ""))
+ (insert (format "With modifier %s (%d
free)\n=========================\n" modifier len))
+ (insert (format "With no modifier (%d
free)\n=========================\n" len)))
+ (free-keys--print-in-columns (nreverse empty-keys))
+ (insert "\n\n")))))
;;;###autoload
(defun free-keys (&optional prefix buffer)
@@ -132,31 +164,8 @@ format recognized by `kbd', for example \"C-x\"."
" in buffer "
(buffer-name free-keys-original-buffer)
" (major mode: " (with-current-buffer free-keys-original-buffer
(symbol-name major-mode)) ")\n\n")
- (mapc (lambda (modifier)
- (let (empty-keys)
- (mapc (lambda (key)
- (let* ((key-name
- (if (not (equal modifier ""))
- (concat modifier "-" (char-to-string key))
- (char-to-string key)))
- (full-name
- (if (and prefix (not (equal prefix "")))
(concat prefix " " key-name) key-name))
- (binding
- (with-current-buffer free-keys-original-buffer
(key-binding (read-kbd-macro full-name)))))
- (when (or (not binding)
- (eq binding 'undefined))
- (push full-name empty-keys))))
- free-keys-keys)
- (let ((len (length empty-keys)))
- (when (> len 0)
- (if (not (equal modifier ""))
- (insert (format "With modifier %s (%d
free)\n=========================\n" modifier len))
- (insert (format "With no modifier (%d
free)\n=========================\n" len)))
- (free-keys--print-in-columns (nreverse empty-keys))
- (insert "\n\n")))))
- free-keys-modifiers)
+ (mapc (lambda (m) (free-keys--process-modifier prefix m))
free-keys-modifiers)
(setq buffer-read-only t)
- (make-local-variable 'buffer-read-only)
(goto-char 0)
(free-keys-mode))))
- [nongnu] elpa/free-keys 11241fd518 07/19: Display keys for which keybinding is 'undefined., (continued)
- [nongnu] elpa/free-keys 11241fd518 07/19: Display keys for which keybinding is 'undefined., ELPA Syncer, 2022/01/29
- [nongnu] elpa/free-keys f5db0a1e43 02/19: Add the note about `bind-key`, fix typos, ELPA Syncer, 2022/01/29
- [nongnu] elpa/free-keys f5d882d4c7 11/19: Better display of empty keys (no empty groups, fixed nil modifiers), ELPA Syncer, 2022/01/29
- [nongnu] elpa/free-keys 8c9ea744c1 08/19: Move header help into header-line-format, ELPA Syncer, 2022/01/29
- [nongnu] elpa/free-keys 79205af5f5 01/19: Initial commit, ELPA Syncer, 2022/01/29
- [nongnu] elpa/free-keys 452d26a3fc 03/19: Do not autoload the major-mode, ELPA Syncer, 2022/01/29
- [nongnu] elpa/free-keys aca6032c3e 05/19: Merge pull request #1 from syohex/support-for-old-emacs, ELPA Syncer, 2022/01/29
- [nongnu] elpa/free-keys 9cc42a07a6 04/19: Support old emacs(<= 24.2), ELPA Syncer, 2022/01/29
- [nongnu] elpa/free-keys 982aea30d1 09/19: Add docstrings & readme, ELPA Syncer, 2022/01/29
- [nongnu] elpa/free-keys 845d7bc367 10/19: Update readme, ELPA Syncer, 2022/01/29
- [nongnu] elpa/free-keys e23ec255d4 13/19: Add option to ignore certain keybindings (shadowed by WM etc.),
ELPA Syncer <=
- [nongnu] elpa/free-keys 368820cb36 16/19: Merge pull request #2 from syohex/byte-compile-warning, ELPA Syncer, 2022/01/29
- [nongnu] elpa/free-keys edfd69dc36 17/19: [Fix #3] Add an option to specify multi-character keys, ELPA Syncer, 2022/01/29
- [nongnu] elpa/free-keys 6f9172376a 18/19: Bump version to 1.0, ELPA Syncer, 2022/01/29
- [nongnu] elpa/free-keys 7348ce6819 19/19: Merge pull request #6 from phikal/patch-1, ELPA Syncer, 2022/01/29
- [nongnu] elpa/free-keys f42c5c9480 14/19: Change type of free-keys-ignored-bindings to make customisation easier, ELPA Syncer, 2022/01/29