Don't bind standard-output in substitute-command-keys
This fixes a regression with regards to the old C version of substitute-command-keys. * lisp/help.el (substitute-command-keys): Don't bind standard-output. See Bug#39149. * test/lisp/help-tests.el (help-tests--was-in-buffer): New variable. (help-substitute-command-keys/menu-filter-in-correct-buffer): New test.
This commit is contained in:
parent
8761c155e4
commit
8ad9932f11
2 changed files with 21 additions and 2 deletions
|
@ -1013,8 +1013,7 @@ Otherwise, return a new string (without any text properties)."
|
|||
(insert string)
|
||||
(goto-char (point-min))
|
||||
(while (< (point) (point-max))
|
||||
(let ((standard-output (current-buffer))
|
||||
(orig-point (point))
|
||||
(let ((orig-point (point))
|
||||
end-point active-maps
|
||||
close generate-summary)
|
||||
(cond
|
||||
|
|
|
@ -361,6 +361,26 @@ C-b undefined
|
|||
|
||||
")))))
|
||||
|
||||
(defvar help-tests--was-in-buffer nil)
|
||||
|
||||
(ert-deftest help-substitute-command-keys/menu-filter-in-correct-buffer ()
|
||||
"Evaluate menu-filter in the original buffer. See Bug#39149."
|
||||
(unwind-protect
|
||||
(progn
|
||||
(define-key global-map (kbd "C-c C-l r")
|
||||
`(menu-item "2" identity
|
||||
:filter ,(lambda (cmd)
|
||||
(setq help-tests--was-in-buffer
|
||||
(current-buffer))
|
||||
cmd)))
|
||||
(with-temp-buffer
|
||||
(substitute-command-keys "\\[identity]")
|
||||
(should (eq help-tests--was-in-buffer
|
||||
(current-buffer)))))
|
||||
(setq help-tests--was-in-buffer nil)
|
||||
(define-key global-map (kbd "C-c C-l r") nil)
|
||||
(define-key global-map (kbd "C-c C-l") nil)))
|
||||
|
||||
(provide 'help-tests)
|
||||
|
||||
;;; help-tests.el ends here
|
||||
|
|
Loading…
Add table
Reference in a new issue