]> git.eshelyaron.com Git - emacs.git/commitdiff
Make sure that `shell' makes BUFFER current
authorMartin Rudalics <rudalics@gmx.at>
Mon, 10 Apr 2017 08:21:44 +0000 (10:21 +0200)
committerMartin Rudalics <rudalics@gmx.at>
Mon, 10 Apr 2017 08:21:44 +0000 (10:21 +0200)
* lisp/shell.el (shell): Restrict scope of recently added
`with-current-buffer' to make sure that BUFFER is current when
`shell' returns.

lisp/shell.el

index e03ccbb4f9443d5c96fc3f48aea596333a0dad81..c5e5cbbee7e43db545b269d7c7b7f37453bad269 100644 (file)
@@ -729,25 +729,26 @@ Otherwise, one argument `-i' is passed to the shell.
                 (file-local-name
                  (read-file-name
                   "Remote shell path: " default-directory shell-file-name
-                  t shell-file-name))))))
-
-    ;; The buffer's window must be correctly set when we call comint
-    ;; (so that comint sets the COLUMNS env var properly).
-    (pop-to-buffer buffer)
-    (unless (comint-check-proc buffer)
-      (let* ((prog (or explicit-shell-file-name
-                       (getenv "ESHELL") shell-file-name))
-             (name (file-name-nondirectory prog))
-             (startfile (concat "~/.emacs_" name))
-             (xargs-name (intern-soft (concat "explicit-" name "-args"))))
-        (unless (file-exists-p startfile)
-          (setq startfile (concat user-emacs-directory "init_" name ".sh")))
-        (apply 'make-comint-in-buffer "shell" buffer prog
-               (if (file-exists-p startfile) startfile)
-               (if (and xargs-name (boundp xargs-name))
-                   (symbol-value xargs-name)
-                 '("-i")))
-        (shell-mode))))
+                  t shell-file-name)))))))
+
+  ;; The buffer's window must be correctly set when we call comint
+  ;; (so that comint sets the COLUMNS env var properly).
+  (pop-to-buffer buffer)
+  ;; Rain or shine, BUFFER must be current by now.
+  (unless (comint-check-proc buffer)
+    (let* ((prog (or explicit-shell-file-name
+                     (getenv "ESHELL") shell-file-name))
+           (name (file-name-nondirectory prog))
+           (startfile (concat "~/.emacs_" name))
+           (xargs-name (intern-soft (concat "explicit-" name "-args"))))
+      (unless (file-exists-p startfile)
+        (setq startfile (concat user-emacs-directory "init_" name ".sh")))
+      (apply 'make-comint-in-buffer "shell" buffer prog
+             (if (file-exists-p startfile) startfile)
+             (if (and xargs-name (boundp xargs-name))
+                 (symbol-value xargs-name)
+               '("-i")))
+      (shell-mode)))
   buffer)
 
 ;;; Directory tracking