]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix problems with 'C-c C-n' in sh-script-mode
authorMiha Rihtaršič <miha@kamnitnik.top>
Thu, 23 Sep 2021 21:18:40 +0000 (23:18 +0200)
committerLars Ingebrigtsen <larsi@gnus.org>
Thu, 23 Sep 2021 21:19:11 +0000 (23:19 +0200)
* 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).

lisp/progmodes/sh-script.el

index cccd70f06cc6679f773b503f43d68073f31f5520..3b6774aa14c0ff86909e316b0a5e8e9256091a37 100644 (file)
@@ -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."