From: Miha Rihtaršič Date: Thu, 23 Sep 2021 21:18:40 +0000 (+0200) Subject: Fix problems with 'C-c C-n' in sh-script-mode X-Git-Tag: emacs-28.0.90~701 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=66d15137629a5224e16a0269e0e3181500962de2;p=emacs.git Fix problems with 'C-c C-n' in sh-script-mode * 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). --- diff --git a/lisp/progmodes/sh-script.el b/lisp/progmodes/sh-script.el index cccd70f06cc..3b6774aa14c 100644 --- a/lisp/progmodes/sh-script.el +++ b/lisp/progmodes/sh-script.el @@ -1396,8 +1396,15 @@ If FORCE is non-nil and no process found, create one." (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."