Avoid infinite recursion in bind-keys-form (bug#80759)

* lisp/bind-key.el (bind-keys-form): Always continue loop after
matching a keyword argument.
This commit is contained in:
Pip Cet
2026-04-07 18:44:16 +00:00
parent 65b984c21a
commit 948aecee65

View File

@@ -314,31 +314,41 @@ function symbol (unquoted)."
(while (and cont args)
(if (cond ((and (eq :map (car args))
(not prefix-map))
(setq map (cadr args)))
(setq map (cadr args))
t)
((eq :prefix-docstring (car args))
(setq prefix-doc (cadr args)))
(setq prefix-doc (cadr args))
t)
((and (eq :prefix-map (car args))
(not (memq map '(global-map
override-global-map))))
(setq prefix-map (cadr args)))
(setq prefix-map (cadr args))
t)
((eq :repeat-docstring (car args))
(setq repeat-doc (cadr args)))
(setq repeat-doc (cadr args))
t)
((and (eq :repeat-map (car args))
(not (memq map '(global-map
override-global-map))))
(setq repeat-map (cadr args))
(setq map repeat-map))
(setq map repeat-map)
t)
((memq (car args) '(:continue :continue-only :exit))
(setq repeat-type (car args)
arg-change-func 'cdr))
arg-change-func 'cdr)
t)
((eq :prefix (car args))
(setq prefix (cadr args)))
(setq prefix (cadr args))
t)
((eq :filter (car args))
(setq filter (cadr args)) t)
(setq filter (cadr args))
t)
((eq :menu-name (car args))
(setq menu-name (cadr args)))
(setq menu-name (cadr args))
t)
((eq :package (car args))
(setq pkg (cadr args))))
(setq pkg (cadr args))
t))
(setq args (funcall arg-change-func args))
(setq cont nil))))