]> git.eshelyaron.com Git - emacs.git/commitdiff
(shell): Add BUFFER argument.
authorMiles Bader <miles@gnu.org>
Fri, 27 Oct 2000 08:01:52 +0000 (08:01 +0000)
committerMiles Bader <miles@gnu.org>
Fri, 27 Oct 2000 08:01:52 +0000 (08:01 +0000)
lisp/ChangeLog
lisp/shell.el

index 5257328d944de55bdd4007f92043c1853f76437f..611e0606008d024085c0dae45aac50d9aabc1969 100644 (file)
@@ -1,5 +1,9 @@
 2000-10-27  Miles Bader  <miles@lsi.nec.co.jp>
 
+       * shell.el (shell): Add BUFFER argument.
+       * comint.el (make-comint-in-buffer): New function.
+       (make-comint): Use it.
+
        * faces.el (face-spec-choose): Change syntax so that the list of
        attribute-value pairs is now the cdr of each clause, not the cadr.
        Detect old-style entries, and handle them.  Use pop.
index b7c27b7778ad85b2868ed5f5df4ee71010637216..966afc0a6600f45d12b6e9dc10d4a3ed9208c32f 100644 (file)
@@ -1,6 +1,6 @@
 ;;; shell.el --- specialized comint.el for running the shell.
 
-;; Copyright (C) 1988, 93, 94, 95, 96, 1997 Free Software Foundation, Inc.
+;; Copyright (C) 1988, 93, 94, 95, 96, 1997, 2000 Free Software Foundation, Inc.
 
 ;; Author: Olin Shivers <shivers@cs.cmu.edu> then
 ;;     Simon Marshall <simon@gnu.org>
@@ -456,10 +456,11 @@ Sentinels will always get the two parameters PROCESS and EVENT."
       (insert (format "\nProcess %s %s\n" process event))))
 \f
 ;;;###autoload
-(defun shell ()
-  "Run an inferior shell, with I/O through buffer *shell*.
-If buffer exists but shell process is not running, make new shell.
-If buffer exists and shell process is running, just switch to buffer `*shell*'.
+(defun shell (&optional buffer)
+  "Run an inferior shell, with I/O through BUFFER (which defaults to `*shell*').
+Interactively, a prefix arg means to prompt for BUFFER.
+If BUFFER exists but shell process is not running, make new shell.
+If BUFFER exists and shell process is running, just switch to BUFFER.
 Program used comes from variable `explicit-shell-file-name',
  or (if that is nil) from the ESHELL environment variable,
  or else from SHELL if there is no ESHELL.
@@ -483,8 +484,13 @@ its value is used as a list of arguments when invoking the shell.
 Otherwise, one argument `-i' is passed to the shell.
 
 \(Type \\[describe-mode] in the shell buffer for a list of commands.)"
-  (interactive)
-  (if (not (comint-check-proc "*shell*"))
+  (interactive
+   (list
+    (and current-prefix-arg
+        (read-buffer "Shell buffer: " "*shell*"))))
+  (when (null buffer)
+    (setq buffer "*shell*"))
+  (if (not (comint-check-proc buffer))
       (let* ((prog (or explicit-shell-file-name
                       (getenv "ESHELL")
                       (getenv "SHELL")
@@ -494,7 +500,7 @@ Otherwise, one argument `-i' is passed to the shell.
             (xargs-name (intern-soft (concat "explicit-" name "-args")))
             shell-buffer)
        (save-excursion
-         (set-buffer (apply 'make-comint "shell" prog
+         (set-buffer (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)
@@ -502,7 +508,7 @@ Otherwise, one argument `-i' is passed to the shell.
          (setq shell-buffer (current-buffer))
          (shell-mode))
        (pop-to-buffer shell-buffer))
-    (pop-to-buffer "*shell*")))
+    (pop-to-buffer buffer)))
 
 ;;; Don't do this when shell.el is loaded, only while dumping.
 ;;;###autoload (add-hook 'same-window-buffer-names "*shell*")