* lisp/progmodes/sh-script.el (sh-shell-process): If a *shell* buffer
doesn't exist, 'C-c C-n' creates one and displays it. This patch
prevents it from being displayed in the selected window.
Additionally, it ensures that the local `sh-shell-process' variable is
set in the correct buffer (bug#50765).
(or found
(and force
(get-buffer-process
- (let ((explicit-shell-file-name sh-shell-file))
- (shell)))))))))
+ (let ((explicit-shell-file-name sh-shell-file)
+ (display-buffer-overriding-action
+ '(nil . ((inhibit-same-window . t)))))
+ ;; We must prevent this `(shell)' call from
+ ;; switching buffers, so that the variable
+ ;; `sh-shell-process' is set locally in the
+ ;; correct buffer.
+ (save-current-buffer
+ (shell))))))))))
(defun sh-show-shell ()
"Pop the shell interaction buffer."