From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.ciao.gmane.io!not-for-mail From: "Basil L. Contovounesios" Newsgroups: gmane.emacs.bugs Subject: bug#40679: 28.0.50; Multiple definitions of explicit-shell-file-name Date: Fri, 17 Apr 2020 11:37:49 +0100 Message-ID: <871rom5req.fsf@tcd.ie> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Injection-Info: ciao.gmane.io; posting-host="ciao.gmane.io:159.69.161.202"; logging-data="50002"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) Cc: Stefan Monnier , Tino Calancha To: 40679@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Fri Apr 17 12:38:16 2020 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1jPOO0-000Cry-30 for geb-bug-gnu-emacs@m.gmane-mx.org; Fri, 17 Apr 2020 12:38:16 +0200 Original-Received: from localhost ([::1]:45292 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jPONy-00007e-SX for geb-bug-gnu-emacs@m.gmane-mx.org; Fri, 17 Apr 2020 06:38:14 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:39472) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jPONp-00007F-T0 for bug-gnu-emacs@gnu.org; Fri, 17 Apr 2020 06:38:07 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1jPONn-0002sv-Vy for bug-gnu-emacs@gnu.org; Fri, 17 Apr 2020 06:38:05 -0400 Original-Received: from debbugs.gnu.org ([209.51.188.43]:56722) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1jPONn-0002sa-Rk for bug-gnu-emacs@gnu.org; Fri, 17 Apr 2020 06:38:03 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1jPONm-0002B1-Bp; Fri, 17 Apr 2020 06:38:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: "Basil L. Contovounesios" Original-Sender: "Debbugs-submit" Resent-CC: monnier@iro.umontreal.ca, tino.calancha@gmail.com, bug-gnu-emacs@gnu.org Resent-Date: Fri, 17 Apr 2020 10:38:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 40679 X-GNU-PR-Package: emacs X-Debbugs-Original-To: bug-gnu-emacs@gnu.org X-Debbugs-Original-Xcc: Stefan Monnier , Tino Calancha Original-Received: via spool by submit@debbugs.gnu.org id=B.15871198808357 (code B ref -1); Fri, 17 Apr 2020 10:38:02 +0000 Original-Received: (at submit) by debbugs.gnu.org; 17 Apr 2020 10:38:00 +0000 Original-Received: from localhost ([127.0.0.1]:40032 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jPONk-0002Aj-6f for submit@debbugs.gnu.org; Fri, 17 Apr 2020 06:38:00 -0400 Original-Received: from lists.gnu.org ([209.51.188.17]:39906) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jPONi-0002Aa-5t for submit@debbugs.gnu.org; Fri, 17 Apr 2020 06:37:58 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:39454) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jPONg-0008V7-64 for bug-gnu-emacs@gnu.org; Fri, 17 Apr 2020 06:37:57 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1jPONe-0002nA-A3 for bug-gnu-emacs@gnu.org; Fri, 17 Apr 2020 06:37:56 -0400 Original-Received: from mail-ed1-x544.google.com ([2a00:1450:4864:20::544]:44973) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1jPONd-0002lZ-CP for bug-gnu-emacs@gnu.org; Fri, 17 Apr 2020 06:37:54 -0400 Original-Received: by mail-ed1-x544.google.com with SMTP id r7so1090494edo.11 for ; Fri, 17 Apr 2020 03:37:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tcd-ie.20150623.gappssmtp.com; s=20150623; h=from:to:subject:date:message-id:user-agent:mime-version; bh=fN/Prrwtqk0hV3kHpVP6XPcTf3eVnRqpesLq66P1XW4=; b=YCk4KuF5KIm+vBd/9Z8MvEZ0SIiCO7XhnTB/O8bqeDWiES7FUcF1gyIrXzUybZV3b3 KrDG3KPl7PAOrXhM14F93LYXwb6txk7aLWW9i5glvFcHGy++Salh9Iatm3i5wp6P/yY6 jWVKfw3GGV8Vs8Aj0bkjRAQyUoinXvUjKWr8kqJo+i+LhBwB45pw/hPmToaPD0f9oI79 UmS1wD32uKK+gcz5//Qq4CqZy49myXrX6jjiL0K1aoDoYG9mQO9DZzUNNoTQRm6gPh3d 1LR7R/yOndRLBCbdGTWYmzaiy967BfM3DsSCl/bhkWWAgwMzXzuOo5H6b6fdlUXe7Ox9 Gn+A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:user-agent :mime-version; bh=fN/Prrwtqk0hV3kHpVP6XPcTf3eVnRqpesLq66P1XW4=; b=afTZYeFDIbUXEHbCBJOuBHu/TLvoCrE2YssWefjihGkA7o6UYFF8iUAs8KGEH7i9bq hlGSGFGSgMa+f0FXUw3QrVRktBgwORVJbZv4DzOdC+MuSCtXYkjIhEKZ7UUgYrho7VBG YobNJ5L1kNC4CI5G+2yr2idvd7rusmAiWELPqc0GoR2stXiU/1fOaQp48y/oegJdqAIB TK0Ki/4GX05mLF/DertAsA8MzUpOp++W8VpKuYYvsb/pIRZrP7jM6ET0t/zldA8xjs2w EV8C7SikEv1m8ExgOoHWivSgl9kOp1U/hwnR3LH3OXQ/YlCHptbaW0jisX1/RjPJxaiA Zv1Q== X-Gm-Message-State: AGi0Pub1fKSguXAVPnWg5A0rbXKfGW17Svo1t2MT+aqVvv2Eldg/Qn2t Br0AT0LqHxYrJmGScpTy66MnKOsFyLE= X-Google-Smtp-Source: APiQypKfd7s9bfFviUWKIao9oTiFliLuTUKUi7f0aksieLqsg8C4SksbQIxbt4Ta1t4Tl8VhXKU4fQ== X-Received: by 2002:a05:6402:2025:: with SMTP id ay5mr2208646edb.315.1587119871379; Fri, 17 Apr 2020 03:37:51 -0700 (PDT) Original-Received: from localhost ([2a02:8084:20e2:c380:1f68:7ff5:120d:64e]) by smtp.gmail.com with ESMTPSA id dg9sm2964519edb.91.2020.04.17.03.37.50 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 17 Apr 2020 03:37:50 -0700 (PDT) X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.51.188.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.io gmane.emacs.bugs:178502 Archived-At: --=-=-= Content-Type: text/x-diff Content-Disposition: attachment; filename=0001-Define-explicit-shell-file-name-only-in-shell.el.patch >From 0744d8d7c8a6a4b9cdddec8a8a39abef06559e17 Mon Sep 17 00:00:00 2001 From: "Basil L. Contovounesios" Date: Fri, 17 Apr 2020 10:27:36 +0100 Subject: [PATCH] Define explicit-shell-file-name only in shell.el For discussion, see the following thread: https://lists.gnu.org/archive/html/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. * lisp/shell.el (explicit-shell-file-name): Clarify docstring. (shell): Simplify. --- doc/emacs/cmdargs.texi | 3 ++- doc/emacs/misc.texi | 2 +- lisp/dired.el | 3 +-- lisp/obsolete/terminal.el | 7 +------ lisp/shell.el | 24 ++++++++++++------------ lisp/term.el | 16 +++------------- 6 files changed, 20 insertions(+), 35 deletions(-) diff --git a/doc/emacs/cmdargs.texi b/doc/emacs/cmdargs.texi index 9303b0b8dd..936facbf28 100644 --- a/doc/emacs/cmdargs.texi +++ b/doc/emacs/cmdargs.texi @@ -647,7 +647,8 @@ General Variables @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 diff --git a/doc/emacs/misc.texi b/doc/emacs/misc.texi index d097f4ee7d..8e1b61815d 100644 --- a/doc/emacs/misc.texi +++ b/doc/emacs/misc.texi @@ -806,6 +806,7 @@ Single Shell @file{*Shell Command Output*} buffer. @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 @@ -875,7 +876,6 @@ Interactive Shell @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 diff --git a/lisp/dired.el b/lisp/dired.el index 14bbb28db5..071597716c 100644 --- a/lisp/dired.el +++ b/lisp/dired.el @@ -1448,8 +1448,7 @@ dired-insert-directory (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))) (unless diff --git a/lisp/obsolete/terminal.el b/lisp/obsolete/terminal.el index 6ee53af648..3d73c030c3 100644 --- a/lisp/obsolete/terminal.el +++ b/lisp/obsolete/terminal.el @@ -44,6 +44,7 @@ ;;>> more-processing enabled. (require 'ehelp) +(require 'shell) (defgroup terminal nil "Terminal emulator for Emacs." @@ -1056,12 +1057,6 @@ te-stty-string ;; 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. diff --git a/lisp/shell.el b/lisp/shell.el index 1e2679f723..6688f9dcd9 100644 --- a/lisp/shell.el +++ b/lisp/shell.el @@ -268,10 +268,11 @@ shell-dirtrack-verbose :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'. @@ -742,16 +743,15 @@ shell (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) diff --git a/lisp/term.el b/lisp/term.el index b990c83cfc..373d23d2e2 100644 --- a/lisp/term.el +++ b/lisp/term.el @@ -302,15 +302,10 @@ term-protocol-version (eval-when-compile (require 'ange-ftp)) (eval-when-compile (require 'cl-lib)) -(require 'ring) -(require 'ehelp) (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." @@ -394,11 +389,6 @@ term-pager-old-filter (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. -- 2.25.1 --=-=-= Content-Type: text/plain This is a followup to the following emacs-devel thread: https://lists.gnu.org/archive/html/emacs-devel/2020-04/msg00880.html The user option explicit-shell-file-name has been defined in three different places and under three different custom groups since at least as far back as 1997: - lisp/shell.el - lisp/term.el - lisp/obsolete/terminal.el I think there should be only a single definition, and lisp/shell.el was suggested as the correct place in the aforementioned thread. I attach a patch which does this and also cleans up a couple of uses of explicit-shell-file-name. Tino, was there a particular reason for using explicit-shell-file-name instead of shell-file-name in dired-insert-directory[1], or is it safe to swap them? [1]: Don't assume /bin/sh as the 'sh' location in the local host e82c4f56e6 2017-08-02 16:50:44 +0900 https://git.savannah.gnu.org/cgit/emacs.git/commit/?id=e82c4f56e6f9a6bce4098698b17fa45dcc5bbd25 Thanks, -- Basil --=-=-=--