aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLars Ingebrigtsen2021-10-19 04:50:59 +0200
committerLars Ingebrigtsen2021-10-19 04:50:59 +0200
commit5c996471babfca2ac54591f7182d31fe7df151f0 (patch)
treef0950fdc00874b36ec81e6332bddcfd660413e3a
parentfbf7dd3ccecda778f6ea70d0ad6778b138e73e1d (diff)
downloademacs-5c996471babfca2ac54591f7182d31fe7df151f0.tar.gz
emacs-5c996471babfca2ac54591f7182d31fe7df151f0.zip
Error out on invalid `define-keymap' keywords
* lisp/subr.el (define-keymap--define): Error out on invalid keywords (bug#51268). * lisp/emacs-lisp/byte-opt.el (byte-optimize-define-keymap): Check keywords at compile time. * lisp/vc/cvs-status.el (cvs-status-mode-map): Fix keyword.
-rw-r--r--lisp/emacs-lisp/byte-opt.el3
-rw-r--r--lisp/subr.el3
-rw-r--r--lisp/vc/cvs-status.el2
3 files changed, 6 insertions, 2 deletions
diff --git a/lisp/emacs-lisp/byte-opt.el b/lisp/emacs-lisp/byte-opt.el
index abfc9b3b316..9b3b2e5ce14 100644
--- a/lisp/emacs-lisp/byte-opt.el
+++ b/lisp/emacs-lisp/byte-opt.el
@@ -1211,6 +1211,9 @@ See Info node `(elisp) Integer Basics'."
1211 (while (and form 1211 (while (and form
1212 (keywordp (car form)) 1212 (keywordp (car form))
1213 (not (eq (car form) :menu))) 1213 (not (eq (car form) :menu)))
1214 (unless (memq (car form)
1215 '(:full :keymap :parent :suppress :name :prefix))
1216 (error "Invalid keyword: %s" (car form)))
1214 (push (pop form) result) 1217 (push (pop form) result)
1215 (when (null form) 1218 (when (null form)
1216 (error "Uneven number of keywords in %S" form)) 1219 (error "Uneven number of keywords in %S" form))
diff --git a/lisp/subr.el b/lisp/subr.el
index 78709b7fa9c..91189787d55 100644
--- a/lisp/subr.el
+++ b/lisp/subr.el
@@ -6664,7 +6664,8 @@ should be a MENU form as accepted by `easy-menu-define'.
6664 (:parent (setq parent value)) 6664 (:parent (setq parent value))
6665 (:suppress (setq suppress value)) 6665 (:suppress (setq suppress value))
6666 (:name (setq name value)) 6666 (:name (setq name value))
6667 (:prefix (setq prefix value)))))) 6667 (:prefix (setq prefix value))
6668 (_ (error "Invalid keyword: %s" keyword))))))
6668 6669
6669 (when (and prefix 6670 (when (and prefix
6670 (or full parent suppress keymap)) 6671 (or full parent suppress keymap))
diff --git a/lisp/vc/cvs-status.el b/lisp/vc/cvs-status.el
index 723f277e07f..86b62eb1ce6 100644
--- a/lisp/vc/cvs-status.el
+++ b/lisp/vc/cvs-status.el
@@ -35,7 +35,7 @@
35;;; 35;;;
36 36
37(defvar-keymap cvs-status-mode-map 37(defvar-keymap cvs-status-mode-map
38 :inherit 'cvs-mode-map 38 :parent 'cvs-mode-map
39 "n" #'next-line 39 "n" #'next-line
40 "p" #'previous-line 40 "p" #'previous-line
41 "N" #'cvs-status-next 41 "N" #'cvs-status-next