summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Ingebrigtsen <larsi@gnus.org>2022-02-21 19:19:55 +0100
committerLars Ingebrigtsen <larsi@gnus.org>2022-02-21 19:19:55 +0100
commitde003cb2b555719a005516b7791a6f6c3c11f9a3 (patch)
tree1105f0f8c3a1b271ac0ef7a1153ae787a510fe73
parent9df5e3080066341d78489f0b18eabeeccac76b0c (diff)
downloademacs-de003cb2b555719a005516b7791a6f6c3c11f9a3.tar.gz
Improve vtable :keymap handling
* lisp/emacs-lisp/vtable.el (vtable-map, vtable--make-keymap): Don't alter keymaps passed in, and respect parent keymaps.
-rw-r--r--lisp/emacs-lisp/vtable.el11
1 files changed, 9 insertions, 2 deletions
diff --git a/lisp/emacs-lisp/vtable.el b/lisp/emacs-lisp/vtable.el
index 08849860307..2c61996637f 100644
--- a/lisp/emacs-lisp/vtable.el
+++ b/lisp/emacs-lisp/vtable.el
@@ -61,7 +61,6 @@
"A object to hold the data for a table.")
(defvar-keymap vtable-map
- :suppress t
"S" #'vtable-sort-by-current-column
"{" #'vtable-narrow-current-column
"}" #'vtable-widen-current-column
@@ -634,7 +633,15 @@ This also updates the displayed table."
(setq actions (cddr actions))))
(if (vtable-keymap table)
(progn
- (set-keymap-parent (vtable-keymap table) map)
+ (setf (vtable-keymap table)
+ (copy-keymap (vtable-keymap table)))
+ ;; Respect any previously set parent keymaps.
+ (set-keymap-parent (vtable-keymap table)
+ (if (keymap-parent (vtable-keymap table))
+ (append (ensure-list
+ (vtable-keymap table))
+ (list map))
+ map))
(vtable-keymap table))
map)))