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:
@@ -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))))
|
||||
|
||||
|
||||
Reference in New Issue
Block a user