diff options
| author | Lars Ingebrigtsen | 2021-10-19 04:50:59 +0200 |
|---|---|---|
| committer | Lars Ingebrigtsen | 2021-10-19 04:50:59 +0200 |
| commit | 5c996471babfca2ac54591f7182d31fe7df151f0 (patch) | |
| tree | f0950fdc00874b36ec81e6332bddcfd660413e3a | |
| parent | fbf7dd3ccecda778f6ea70d0ad6778b138e73e1d (diff) | |
| download | emacs-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.el | 3 | ||||
| -rw-r--r-- | lisp/subr.el | 3 | ||||
| -rw-r--r-- | lisp/vc/cvs-status.el | 2 |
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 |