]> git.eshelyaron.com Git - emacs.git/commitdiff
Define explicit-shell-file-name only in shell.el
authorBasil L. Contovounesios <contovob@tcd.ie>
Fri, 17 Apr 2020 09:27:36 +0000 (10:27 +0100)
committerBasil L. Contovounesios <contovob@tcd.ie>
Thu, 3 Dec 2020 17:25:04 +0000 (17:25 +0000)
For discussion, see the following thread:
https://lists.gnu.org/r/emacs-devel/2020-04/msg00880.html

* doc/emacs/cmdargs.texi (General Variables): Mention
shell-file-name in relation to SHELL.
* doc/emacs/misc.texi (Interactive Shell): Move index entry for
SHELL environment variable from here, where it is not mentioned...
(Single Shell): ...to here, where it is discussed along with
shell-file-name.
* lisp/dired.el (dired-insert-directory): Use shell-file-name
instead of explicit-shell-file-name when a shell is implicitly
requested.
* lisp/obsolete/terminal.el (explicit-shell-file-name):
* lisp/term.el (explicit-shell-file-name): Remove duplicate
defcustoms and load lisp/shell.el instead.  (Bug#40679)
* lisp/shell.el (explicit-shell-file-name): Clarify docstring.
(shell): Simplify.

doc/emacs/cmdargs.texi
doc/emacs/misc.texi
lisp/dired.el
lisp/obsolete/terminal.el
lisp/shell.el
lisp/term.el

index 3dd1fe9a30800f103806bda659c66f7d08d7f83a..a828eee076f6c9a56684c133029cd0f7c6bc6945 100644 (file)
@@ -654,7 +654,8 @@ Used by the Gnus package.
 @item SHELL
 @vindex SHELL@r{, environment variable}
 The name of an interpreter used to parse and execute programs run from
-inside Emacs.
+inside Emacs.  This is used to initialize the variable
+@code{shell-file-name} (@pxref{Single Shell}).
 @item SMTPSERVER
 @vindex SMTPSERVER@r{, environment variable}
 The name of the outgoing mail server.  This is used to initialize the
index 4865ee175180cdf0890d5b9fc4e5fde791a3011e..5b5134b7c3fc5951c052747e97de64de95ca18e7 100644 (file)
@@ -810,6 +810,7 @@ to @command{gpg}.  This will output the list of keys to the
 buffer whose name is the value of @code{shell-command-buffer-name}.
 
 @vindex shell-file-name
+@cindex @env{SHELL} environment variable
   The above commands use the shell specified by the variable
 @code{shell-file-name}.  Its default value is determined by the
 @env{SHELL} environment variable when Emacs is started.  If the file
@@ -889,7 +890,6 @@ Subshells in different buffers run independently and in parallel.
 @vindex explicit-shell-file-name
 @cindex environment variables for subshells
 @cindex @env{ESHELL} environment variable
-@cindex @env{SHELL} environment variable
   To specify the shell file name used by @kbd{M-x shell}, customize
 the variable @code{explicit-shell-file-name}.  If this is @code{nil}
 (the default), Emacs uses the environment variable @env{ESHELL} if it
index 08b19a022503ad4cbe6417dc129cf073baa273c4..30b9f5b8fa10853c08f15e3cf5ee4e35278980c7 100644 (file)
@@ -1509,8 +1509,7 @@ see `dired-use-ls-dired' for more details.")
                     (script (format "ls %s %s" switches (cdr dir-wildcard)))
                     (remotep (file-remote-p dir))
                     (sh (or (and remotep "/bin/sh")
-                            (and (bound-and-true-p explicit-shell-file-name)
-                                 (executable-find explicit-shell-file-name))
+                            (executable-find shell-file-name)
                             (executable-find "sh")))
                     (switch (if remotep "-c" shell-command-switch)))
                ;; Enable globstar
index 6ee53af6483617b68bdf7f85bd557d0a3080c1bd..3d73c030c36aad1084d6a74629805190e22e059f 100644 (file)
@@ -44,6 +44,7 @@
 ;;>>   more-processing enabled.
 
 (require 'ehelp)
+(require 'shell)
 
 (defgroup terminal nil
   "Terminal emulator for Emacs."
@@ -1056,12 +1057,6 @@ move to start of new line, clear to end of line."
 ;; This used to have `new' in it, but that loses outside BSD
 ;; and it's apparently not needed in BSD.
 
-(defcustom explicit-shell-file-name nil
-  "If non-nil, is file name to use for explicitly requested inferior shell."
-  :type '(choice (const :tag "None" nil)
-                file)
-  :group 'terminal)
-
 ;;;###autoload
 (defun terminal-emulator (buffer program args &optional width height)
   "Under a display-terminal emulator in BUFFER, run PROGRAM on arguments ARGS.
index 51937cdeef3bffdce4f469e279b1db742534506c..5fed6513b961dca45fb9d9164c70cdc7b1425d42 100644 (file)
@@ -265,10 +265,11 @@ see the function `dirtrack-mode'."
   :group 'shell-directories)
 
 (defcustom explicit-shell-file-name nil
-  "If non-nil, is file name to use for explicitly requested inferior shell.
-When nil, such interactive shell sessions fallback to using either
-the shell specified in $ESHELL or in `shell-file-name'."
-  :type '(choice (const :tag "None" nil) file)
+  "If non-nil, the file name to use for explicitly requested inferior shells.
+When nil, such interactive shell sessions fall back to using the
+shell specified in either the environment variable \"ESHELL\" or
+`shell-file-name'."
+  :type '(choice (const :tag "Default" nil) file)
   :group 'shell)
 
 ;; Note: There are no explicit references to the variable `explicit-csh-args'.
@@ -748,16 +749,15 @@ Make the shell buffer the current buffer, and return it.
 
   (with-connection-local-variables
    ;; On remote hosts, the local `shell-file-name' might be useless.
-   (when (file-remote-p default-directory)
-     (if (and (called-interactively-p 'any)
+   (when (and (file-remote-p default-directory)
+              (called-interactively-p 'any)
               (null explicit-shell-file-name)
               (null (getenv "ESHELL")))
-         (set (make-local-variable 'explicit-shell-file-name)
-              (file-local-name
-              (expand-file-name
-                (read-file-name
-                 "Remote shell path: " default-directory shell-file-name
-                 t shell-file-name))))))
+     (setq-local explicit-shell-file-name
+                 (file-local-name
+                  (expand-file-name
+                   (read-file-name "Remote shell path: " default-directory
+                                   shell-file-name t shell-file-name)))))
 
    ;; Rain or shine, BUFFER must be current by now.
    (unless (comint-check-proc buffer)
index 148d7a7c286fcbfa409d008698ff762bb50862b3..34dc2870f2191b8fa8e81086bab5239c56f284b6 100644 (file)
 ;; so it is important to increase it if there are protocol-relevant changes.
 (defconst term-protocol-version "0.96")
 
-(eval-when-compile (require 'ange-ftp))
-(eval-when-compile (require 'cl-lib))
-(require 'ring)
-(require 'ehelp)
+(eval-when-compile
+  (require 'ange-ftp)
+  (require 'cl-lib))
 (require 'comint) ; Password regexp.
-
-(declare-function ring-empty-p "ring" (ring))
-(declare-function ring-ref "ring" (ring index))
-(declare-function ring-insert-at-beginning "ring" (ring item))
-(declare-function ring-length "ring" (ring))
-(declare-function ring-insert "ring" (ring item))
+(require 'ehelp)
+(require 'ring)
+(require 'shell)
 
 (defgroup term nil
   "General command interpreter in a window."
@@ -393,11 +389,6 @@ by moving term-home-marker.  It is set to t if there is a
 (defvar-local term-line-mode-buffer-read-only nil
   "The `buffer-read-only' state to set in `term-line-mode'.")
 
-(defcustom explicit-shell-file-name nil
-  "If non-nil, is file name to use for explicitly requested inferior shell."
-  :type '(choice (const nil) file)
-  :group 'term)
-
 (defvar term-prompt-regexp "^"
   "Regexp to recognize prompts in the inferior process.
 Defaults to \"^\", the null string at BOL.