changeset 111684:280ee0988e1a

* lisp/shell.el (shell): Use current-buffer by default if it's already a shell mode buffer and its process is dead. Suggested by <jemarch@gnu.org>.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Tue, 23 Nov 2010 09:19:54 -0500
parents 01aefe45207c
children 411dce7ee068
files lisp/ChangeLog lisp/shell.el
diffstat 2 files changed, 15 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Tue Nov 23 10:22:49 2010 +0000
+++ b/lisp/ChangeLog	Tue Nov 23 09:19:54 2010 -0500
@@ -1,7 +1,13 @@
+2010-11-23  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* shell.el (shell): Use current-buffer by default if it's already
+	a shell mode buffer and its process is dead.
+	Suggested by <jemarch@gnu.org>.
+
 2010-11-23  Tassilo Horn  <tassilo@member.fsf.org>
 
-	* mail/emacsbug.el (report-emacs-bug-query-existing-bugs): Mention
-	that the keywords should be comma separated.
+	* mail/emacsbug.el (report-emacs-bug-query-existing-bugs):
+	Mention that the keywords should be comma separated.
 
 2010-11-23  Chong Yidong  <cyd@stupidchicken.com>
 
--- a/lisp/shell.el	Tue Nov 23 10:22:49 2010 +0000
+++ b/lisp/shell.el	Tue Nov 23 09:19:54 2010 -0500
@@ -554,13 +554,19 @@
 			  (generate-new-buffer-name "*shell*"))
 	   (if (file-remote-p default-directory)
 	       ;; It must be possible to declare a local default-directory.
+               ;; FIXME: This can't be right: it changes the default-directory
+               ;; of the current-buffer rather than of the *shell* buffer.
 	       (setq default-directory
 		     (expand-file-name
 		      (read-file-name
 		       "Default directory: " default-directory default-directory
 		       t nil 'file-directory-p))))))))
   (require 'ansi-color)
-  (setq buffer (get-buffer-create (or buffer "*shell*")))
+  (setq buffer (if (or buffer (not (derived-mode-p 'shell-mode))
+                       (comint-check-proc (current-buffer)))
+                   (get-buffer-create (or buffer "*shell*"))
+                 ;; If the current buffer is a dead shell buffer, use it.
+                 (current-buffer)))
   ;; Pop to buffer, so that the buffer's window will be correctly set
   ;; when we call comint (so that comint sets the COLUMNS env var properly).
   (pop-to-buffer buffer)