]> git.eshelyaron.com Git - emacs.git/commitdiff
Don't bind standard-output in substitute-command-keys
authorStefan Kangas <stefan@marxist.se>
Sun, 1 Nov 2020 15:31:12 +0000 (16:31 +0100)
committerStefan Kangas <stefan@marxist.se>
Sun, 1 Nov 2020 17:58:12 +0000 (18:58 +0100)
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.

lisp/help.el
test/lisp/help-tests.el

index 795f7e74d8b29f1db94e9bc7815f7205afb258a8..df055d602fe28cffb4ae9314bba7e10850750a10 100644 (file)
@@ -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
index 079b1114a81a08c01abe4ef226ef337eaa16b442..b6dffb2a405b81db0feac0360a1a226acde99925 100644 (file)
@@ -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