]> git.eshelyaron.com Git - emacs.git/commitdiff
Improve vtable :keymap handling
authorLars Ingebrigtsen <larsi@gnus.org>
Mon, 21 Feb 2022 18:19:55 +0000 (19:19 +0100)
committerLars Ingebrigtsen <larsi@gnus.org>
Mon, 21 Feb 2022 18:19:55 +0000 (19:19 +0100)
* lisp/emacs-lisp/vtable.el (vtable-map, vtable--make-keymap):
Don't alter keymaps passed in, and respect parent keymaps.

lisp/emacs-lisp/vtable.el

index 088498603078e0e340022a6258d4e4a575cf903d..2c61996637ff4f60c2cb143a14ac462190bc681f 100644 (file)
@@ -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)))