[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
emacs-28 9bd3f78: Make `M-x run-python' select the window again
From: |
Lars Ingebrigtsen |
Subject: |
emacs-28 9bd3f78: Make `M-x run-python' select the window again |
Date: |
Sun, 12 Dec 2021 23:17:10 -0500 (EST) |
branch: emacs-28
commit 9bd3f78645e14fdbaf3a569df5e0a52249c4f90e
Author: Kévin Le Gouguec <kevin.legouguec@gmail.com>
Commit: Lars Ingebrigtsen <larsi@gnus.org>
Make `M-x run-python' select the window again
Interactively, we want M-x run-python to focus the interpreter buffer.
The previous code failed in two ways:
- the call to 'display-buffer' was not reached if an interpreter
was already running,
- set-buffer is ineffectual if the interpreter's window is not
selected: once Emacs returns to the command loop, the current buffer
will revert back to what the selected window contains.
* lisp/progmodes/python.el (python-shell-make-comint): Handle the SHOW
argument regardless of whether an interpreter buffer exists, and use
pop-to-buffer to select the window.
(run-python): Delegate buffer management to
'python-shell-make-comint'.
* test/lisp/progmodes/python-tests.el
(python-tests--run-python-selects-window): Rename from
'python-tests--bug31398', and adjust assertions (bug#52380).
---
lisp/progmodes/python.el | 4 ++--
test/lisp/progmodes/python-tests.el | 18 ++++++++++++------
2 files changed, 14 insertions(+), 8 deletions(-)
diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el
index f1c3e75..6357c4f 100644
--- a/lisp/progmodes/python.el
+++ b/lisp/progmodes/python.el
@@ -2994,8 +2994,9 @@ killed."
(mapconcat #'identity args " ")))
(with-current-buffer buffer
(inferior-python-mode))
- (when show (display-buffer buffer))
(and internal (set-process-query-on-exit-flag process nil))))
+ (when show
+ (pop-to-buffer proc-buffer-name))
proc-buffer-name))))
;;;###autoload
@@ -3027,7 +3028,6 @@ process buffer for a list of commands.)"
(python-shell-make-comint
(or cmd (python-shell-calculate-command))
(python-shell-get-process-name dedicated) show)))
- (set-buffer buffer)
(get-buffer-process buffer)))
(defun run-python-internal ()
diff --git a/test/lisp/progmodes/python-tests.el
b/test/lisp/progmodes/python-tests.el
index 6ab9c62..752a4f0 100644
--- a/test/lisp/progmodes/python-tests.el
+++ b/test/lisp/progmodes/python-tests.el
@@ -5448,15 +5448,21 @@ buffer with overlapping strings."
(python-nav-end-of-statement)))
(should (eolp))))
-;; After call `run-python' the buffer running the python process is current.
-(ert-deftest python-tests--bug31398 ()
- "Test for https://debbugs.gnu.org/31398 ."
+;; Interactively, `run-python' focuses the buffer running the
+;; interpreter.
+(ert-deftest python-tests--run-python-selects-window ()
+ "Test for bug#31398. See also bug#44421 and bug#52380."
(skip-unless (executable-find python-tests-shell-interpreter))
- (let ((buffer (process-buffer (run-python nil nil 'show))))
- (should (eq buffer (current-buffer)))
+ (let* ((buffer (process-buffer (run-python nil nil 'show)))
+ (window (get-buffer-window buffer)))
+ ;; We look at `selected-window' rather than `current-buffer'
+ ;; because as `(elisp)Current buffer' says, the latter will only
+ ;; be synchronized with the former when returning to the "command
+ ;; loop"; until then, `current-buffer' can change arbitrarily.
+ (should (eq window (selected-window)))
(pop-to-buffer (other-buffer))
(run-python nil nil 'show)
- (should (eq buffer (current-buffer)))))
+ (should (eq window (selected-window)))))
(ert-deftest python-tests--fill-long-first-line ()
(should
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- emacs-28 9bd3f78: Make `M-x run-python' select the window again,
Lars Ingebrigtsen <=