unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* Reusing dead shell buffers
@ 2009-01-11 20:19 jemarch
  2009-01-13 23:27 ` Juri Linkov
  2010-11-17 15:16 ` Stefan Monnier
  0 siblings, 2 replies; 3+ messages in thread
From: jemarch @ 2009-01-11 20:19 UTC (permalink / raw)
  To: emacs-devel


Hi.

Just a tiny patch for shell.

The patch assumes that the person launching M-xshell while in a
shell-mode buffer with a terminated process really wants to launch a
shell process in the current buffer instead to switch to "*shell*".

The semantics of C-uM-xshell are not changed by the patch.

Index: shell.el
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/shell.el,v
retrieving revision 1.165
diff -u -r1.165 shell.el
--- shell.el	5 Jan 2009 03:19:45 -0000	1.165
+++ shell.el	11 Jan 2009 19:46:35 -0000
@@ -555,6 +555,9 @@
 		      (read-file-name
 		       "Default directory: " default-directory default-directory
 		       t nil 'file-directory-p))))))))
+  ;; If the current buffer is a dead shell buffer, use it.
+  (if (and (not buffer) (eq major-mode 'shell-mode))
+      (setq buffer (current-buffer)))
   (setq buffer (get-buffer-create (or buffer "*shell*")))
   ;; 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).




^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: Reusing dead shell buffers
  2009-01-11 20:19 Reusing dead shell buffers jemarch
@ 2009-01-13 23:27 ` Juri Linkov
  2010-11-17 15:16 ` Stefan Monnier
  1 sibling, 0 replies; 3+ messages in thread
From: Juri Linkov @ 2009-01-13 23:27 UTC (permalink / raw)
  To: jemarch; +Cc: emacs-devel

> Just a tiny patch for shell.
>
> The patch assumes that the person launching M-x shell while in a
> shell-mode buffer with a terminated process really wants to launch a
> shell process in the current buffer instead to switch to "*shell*".
>
> The semantics of C-u M-x shell are not changed by the patch.
>
> Index: shell.el
> ===================================================================
> RCS file: /cvsroot/emacs/emacs/lisp/shell.el,v
> retrieving revision 1.165
> diff -u -r1.165 shell.el
> --- shell.el	5 Jan 2009 03:19:45 -0000	1.165
> +++ shell.el	11 Jan 2009 19:46:35 -0000
> @@ -555,6 +555,9 @@
>  		      (read-file-name
>  		       "Default directory: " default-directory default-directory
>  		       t nil 'file-directory-p))))))))
> +  ;; If the current buffer is a dead shell buffer, use it.
> +  (if (and (not buffer) (eq major-mode 'shell-mode))
> +      (setq buffer (current-buffer)))
>    (setq buffer (get-buffer-create (or buffer "*shell*")))

Some other modes do similar things (e.g. compilation/grep) reusing the
current buffer, so I think it would be natural to revive the current buffer
with `M-x shell' unless a numeric prefix is given.

BTW, what I still desperately need from shell.el is using a prefix arg
to add a numeric suffix to the shell buffer name in the same way as
eshell already does:

    "A numeric prefix arg (as in `C-u 42 M-x eshell RET') switches
    to the session with that number, creating it if necessary."

-- 
Juri Linkov
http://www.jurta.org/emacs/




^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: Reusing dead shell buffers
  2009-01-11 20:19 Reusing dead shell buffers jemarch
  2009-01-13 23:27 ` Juri Linkov
@ 2010-11-17 15:16 ` Stefan Monnier
  1 sibling, 0 replies; 3+ messages in thread
From: Stefan Monnier @ 2010-11-17 15:16 UTC (permalink / raw)
  To: jemarch; +Cc: emacs-devel

> The patch assumes that the person launching M-xshell while in a
> shell-mode buffer with a terminated process really wants to launch a
> shell process in the current buffer instead to switch to "*shell*".

The problem with this patch if that if the user really wanted to jump
from *shell*<2> to the *shell* buffer instead (current behavior), he'll
be surprised because the command will end up not doing anything.

I think your idea is right, but it needs two fixes:
- check that the process is indeed dead.
- replace (eq major-mode 'shell-mode) with (derived-mode-p 'shell-mode)

I promise that I'll install such a patch much quicker than it took me to
reply to this email.


        Stefan "going through some of his voluminous backlog"


> The semantics of C-uM-xshell are not changed by the patch.

> Index: shell.el
> ===================================================================
> RCS file: /cvsroot/emacs/emacs/lisp/shell.el,v
> retrieving revision 1.165
> diff -u -r1.165 shell.el
> --- shell.el	5 Jan 2009 03:19:45 -0000	1.165
> +++ shell.el	11 Jan 2009 19:46:35 -0000
> @@ -555,6 +555,9 @@
>  		      (read-file-name
>  		       "Default directory: " default-directory default-directory
>  		       t nil 'file-directory-p))))))))
> +  ;; If the current buffer is a dead shell buffer, use it.
> +  (if (and (not buffer) (eq major-mode 'shell-mode))
> +      (setq buffer (current-buffer)))
>    (setq buffer (get-buffer-create (or buffer "*shell*")))
>    ;; 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).




^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2010-11-17 15:16 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-01-11 20:19 Reusing dead shell buffers jemarch
2009-01-13 23:27 ` Juri Linkov
2010-11-17 15:16 ` Stefan Monnier

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).