31 |
;; - Olin Shivers (shivers@cs.cmu.edu) |
;; - Olin Shivers (shivers@cs.cmu.edu) |
32 |
;; - Simon Marshall (simon@gnu.org) |
;; - Simon Marshall (simon@gnu.org) |
33 |
|
|
34 |
;; This file defines a a shell-in-a-buffer package (shell mode) built |
;; This file defines a shell-in-a-buffer package (shell mode) built on |
35 |
;; on top of comint mode. This is actually cmushell with things |
;; top of comint mode. This is actually cmushell with things renamed |
36 |
;; renamed to replace its counterpart in Emacs 18. cmushell is more |
;; to replace its counterpart in Emacs 18. cmushell is more |
37 |
;; featureful, robust, and uniform than the Emacs 18 version. |
;; featureful, robust, and uniform than the Emacs 18 version. |
38 |
|
|
39 |
;; Since this mode is built on top of the general command-interpreter-in- |
;; Since this mode is built on top of the general command-interpreter-in- |
165 |
This is a fine thing to set in your `.emacs' file.") |
This is a fine thing to set in your `.emacs' file.") |
166 |
|
|
167 |
(defvar shell-file-name-chars |
(defvar shell-file-name-chars |
168 |
(if (memq system-type '(ms-dos windows-nt)) |
(if (memq system-type '(ms-dos windows-nt cygwin)) |
169 |
"~/A-Za-z0-9_^$!#%&{}@`'.,:()-" |
"~/A-Za-z0-9_^$!#%&{}@`'.,:()-" |
170 |
"~/A-Za-z0-9+@:_.$#%,={}-") |
"~/A-Za-z0-9+@:_.$#%,={}-") |
171 |
"String of characters valid in a file name. |
"String of characters valid in a file name. |
275 |
:type '(repeat (string :tag "Argument")) |
:type '(repeat (string :tag "Argument")) |
276 |
:group 'shell) |
:group 'shell) |
277 |
|
|
278 |
|
(defcustom explicit-bash-args |
279 |
|
;; Tell bash not to use readline, except for bash 1.x which doesn't grook --noediting. |
280 |
|
;; Bash 1.x has -nolineediting, but process-send-eof cannot terminate bash if we use it. |
281 |
|
(let* ((prog (or (and (boundp 'explicit-shell-file-name) explicit-shell-file-name) |
282 |
|
(getenv "ESHELL") shell-file-name)) |
283 |
|
(name (file-name-nondirectory prog))) |
284 |
|
(if (and (not purify-flag) |
285 |
|
(equal name "bash") |
286 |
|
(file-executable-p prog) |
287 |
|
(string-match "bad option" |
288 |
|
(shell-command-to-string (concat prog " --noediting")))) |
289 |
|
'("-i") |
290 |
|
'("--noediting" "-i"))) |
291 |
|
"*Args passed to inferior shell by M-x shell, if the shell is bash. |
292 |
|
Value is a list of strings, which may be nil." |
293 |
|
:type '(repeat (string :tag "Argument")) |
294 |
|
:group 'shell) |
295 |
|
|
296 |
(defcustom shell-input-autoexpand 'history |
(defcustom shell-input-autoexpand 'history |
297 |
"*If non-nil, expand input command history references on completion. |
"*If non-nil, expand input command history references on completion. |
298 |
This mirrors the optional behavior of tcsh (its autoexpand and histlit). |
This mirrors the optional behavior of tcsh (its autoexpand and histlit). |
516 |
(name (file-name-nondirectory prog)) |
(name (file-name-nondirectory prog)) |
517 |
(startfile (concat "~/.emacs_" name)) |
(startfile (concat "~/.emacs_" name)) |
518 |
(xargs-name (intern-soft (concat "explicit-" name "-args")))) |
(xargs-name (intern-soft (concat "explicit-" name "-args")))) |
519 |
|
(if (not (file-exists-p startfile)) |
520 |
|
(setq startfile (concat "~/.emacs.d/.emacs_" name))) |
521 |
(apply 'make-comint-in-buffer "shell" buffer prog |
(apply 'make-comint-in-buffer "shell" buffer prog |
522 |
(if (file-exists-p startfile) startfile) |
(if (file-exists-p startfile) startfile) |
523 |
(if (and xargs-name (boundp xargs-name)) |
(if (and xargs-name (boundp xargs-name)) |