all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Kevin Rodgers <ihs_4664@yahoo.com>
Subject: Re: How to run DOS shell & Cygwin at the same time?
Date: Wed, 30 Apr 2003 11:51:38 -0600	[thread overview]
Message-ID: <3EB00D2A.7070802@yahoo.com> (raw)
In-Reply-To: mailman.5368.1051639436.21513.help-gnu-emacs@gnu.org

[-- Attachment #1: Type: text/plain, Size: 405 bytes --]

szhu@SonicWALL.com wrote:

> Hi, I'm using emacs on the windows platform, I'd like to use both the
> bash shell (cygwin), and the DOS shell (because most of my colleagues
> use the .bat scripts). I know how to set "M-x shell" to either one of
> them, how can I add a function to invoke the other one?

Try defshell.el (attached).


-- 
<a href="mailto:&lt;kevin.rodgers&#64;ihs.com&gt;">Kevin Rodgers</a>

[-- Attachment #2: defshell.el --]
[-- Type: text/plain, Size: 3877 bytes --]

;;; -*-unibyte: t;-*-

;;; defshell.el -- Define inferior shells.

;;; RCS $Id: defshell.el,v 1.3 2001/05/21 16:17:46 kevinr Exp $

;;; Description:
;;; defshell.el makes it easy to run different inferior shells at the
;;; same time, by defining new commands for the Bourne (M-x sh), C (M-x
;;; csh), Korn (M-x ksh), and Bourne Again (M-x bash) shells.  And
;;; whereas the `M-x shell' command defined in Emacs' shell.el always
;;; reuses the *shell* buffer, defshell.el can be customized via the
;;; defshell-reuse-buffer and defshell-rename-buffer-uniquely options
;;; (e.g. for `M-x sh') to reuse the *sh* buffer or create a *sh*<2> (or
;;; *sh*<N>) buffer.
;;; 
;;; defshell.el also provides the `defshell' macro to define additional
;;; shell commands.  E.g. to define the Foo shell (M-x fsh):
;;; 	(defshell "/bin/fsh" "Foo")
;;; or to define a DNS lookup shell (M-x nslookup):
;;; 	(defshell "/usr/sbin/nslookup" "DNS lookup")
;;; and since `nslookup` doesn't accept the -i option:
;;; 	(setq explicit-nslookup-args '())

;;; Copyright:
;;; 
;;; Copyright © 2000 Kevin Rodgers
;;; 
;;; This program is free software; you can redistribute it and/or modify
;;; it under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 2 of the License, or
;;; at your option) any later version.
;;; 
;;; This program is distributed in the hope that it will be useful,
;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;;; GNU General Public License for more details.
;;; 
;;; You should have received a copy of the GNU General Public License
;;; along with this program; if not, write to the Free Software
;;; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
;;; 
;;; My employer (Information Handling Services) has not disclaimed any
;;; copyright interest in minibuffer-complete-cycle.el.
;;; 
;;; Kevin Rodgers <kevinr@ihs.com>          Lead Software Engineer
;;; Information Handling Services           Electronic Systems Development
;;; 15 Inverness Way East, M/S A114         GO BUFFS!
;;; Englewood CO 80112-5776 USA             1+ (303) 397-2807[voice]/705-4258[fax]

;;; Emacs Lisp Archive Entry:
;;; Filename: defshell.el
;;; Author: Kevin Rodgers <kevinr@ihs.com>
;;; Version: $Revision: 1.3 $
;;; Description: Define inferior shells.
;;; Keywords: shell
;;; Last-Updated: $Date: 2001/05/21 16:17:46 $

(provide 'defshell)

(require 'comint)			; comint-check-proc
(require 'shell)			; shell

(defvar defshell-reuse-buffer t
  "*If non-nil, reuse `defshell-shell' buffers.") ; i.e. pop-to-buffer

(defvar defshell-rename-buffer-uniquely nil
  "*If non-nil, rename `defshell-shell' buffers uniquely.")

(defun defshell-shell (defshell-file-name)
  "*Run an inferior DEFSHELL-FILE-NAME shell."
  (interactive "sShell: ")
  (let* ((explicit-shell-file-name defshell-file-name)
	 (defshell-buffer-name (concat "*"
				       (file-name-sans-extension
					(file-name-nondirectory
					 explicit-shell-file-name))
				       "*")))
    (if (and defshell-reuse-buffer
	     (comint-check-proc defshell-buffer-name)) ; see shell.el
	(pop-to-buffer (get-buffer defshell-buffer-name))
      (progn
	(shell)
	(rename-buffer defshell-buffer-name
		       (or defshell-rename-buffer-uniquely
			   (comint-check-proc defshell-buffer-name)))))))

(defmacro defshell (shell-file-name &optional shell-name)
  (let ((command (intern (file-name-sans-extension (file-name-nondirectory
						    shell-file-name)))))
    `(defun ,command ()
       ,(format "*Run an inferior %s shell." (or shell-name shell-file-name))
       (interactive)
       (defshell-shell ,shell-file-name))))

(defshell "/bin/sh" "Bourne")
(defshell "/bin/csh" "C")
(defshell "/bin/ksh" "Korn")
(defshell "/usr/local/bin/bash" "Bourne Again")

;;; defshell.el ends here

[-- Attachment #3: Type: text/plain, Size: 151 bytes --]

_______________________________________________
Help-gnu-emacs mailing list
Help-gnu-emacs@gnu.org
http://mail.gnu.org/mailman/listinfo/help-gnu-emacs

  parent reply	other threads:[~2003-04-30 17:51 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <mailman.5368.1051639436.21513.help-gnu-emacs@gnu.org>
2003-04-30  1:35 ` How to run DOS shell & Cygwin at the same time? Galen Boyer
2003-04-30 17:51 ` Kevin Rodgers [this message]
2003-04-30 22:15   ` Jason Dufair
2003-04-29 18:03 szhu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=3EB00D2A.7070802@yahoo.com \
    --to=ihs_4664@yahoo.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

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

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.