From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED.blaine.gmane.org!not-for-mail From: Lars Ingebrigtsen Newsgroups: gmane.emacs.bugs Subject: bug#19812: 24.4; suggest `shell-mode' not interactive Date: Fri, 02 Aug 2019 21:52:17 +0200 Message-ID: <87v9vfmjke.fsf@mouse.gnus.org> References: <87bnl5qc50.fsf@blah.blah> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226"; logging-data="257474"; mail-complaints-to="usenet@blaine.gmane.org" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (gnu/linux) Cc: 19812@debbugs.gnu.org To: Kevin Ryde Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Fri Aug 02 21:53:26 2019 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([209.51.188.17]) by blaine.gmane.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from ) id 1htdcB-0014nN-Au for geb-bug-gnu-emacs@m.gmane.org; Fri, 02 Aug 2019 21:53:23 +0200 Original-Received: from localhost ([::1]:37238 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1htdcA-0003KY-6l for geb-bug-gnu-emacs@m.gmane.org; Fri, 02 Aug 2019 15:53:22 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:53857) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1htdbt-0003Jz-0U for bug-gnu-emacs@gnu.org; Fri, 02 Aug 2019 15:53:06 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1htdbr-0001WH-4S for bug-gnu-emacs@gnu.org; Fri, 02 Aug 2019 15:53:04 -0400 Original-Received: from debbugs.gnu.org ([209.51.188.43]:48960) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1htdbq-0001VX-I8 for bug-gnu-emacs@gnu.org; Fri, 02 Aug 2019 15:53:03 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1htdbq-00024D-9O for bug-gnu-emacs@gnu.org; Fri, 02 Aug 2019 15:53:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Lars Ingebrigtsen Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 02 Aug 2019 19:53:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 19812 X-GNU-PR-Package: emacs Original-Received: via spool by 19812-submit@debbugs.gnu.org id=B19812.15647755467879 (code B ref 19812); Fri, 02 Aug 2019 19:53:02 +0000 Original-Received: (at 19812) by debbugs.gnu.org; 2 Aug 2019 19:52:26 +0000 Original-Received: from localhost ([127.0.0.1]:57778 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1htdbF-000231-QG for submit@debbugs.gnu.org; Fri, 02 Aug 2019 15:52:26 -0400 Original-Received: from quimby.gnus.org ([80.91.231.51]:34930) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1htdbD-00022o-4g for 19812@debbugs.gnu.org; Fri, 02 Aug 2019 15:52:23 -0400 Original-Received: from 77.18.62.220.tmi.telenormobil.no ([77.18.62.220] helo=sandy) by quimby.gnus.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from ) id 1htdb8-0005Sd-MX; Fri, 02 Aug 2019 21:52:21 +0200 In-Reply-To: <87bnl5qc50.fsf@blah.blah> (Kevin Ryde's message of "Sun, 08 Feb 2015 15:07:39 +1100") 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.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.org gmane.emacs.bugs:164389 Archived-At: Kevin Ryde writes: > The `shell-mode' function is interactive, but I think perhaps it should > not be since it is not designed for use as M-x shell-mode in an > arbitrary buffer, but only after the `shell' function makes various > setups. > > I struck this when a brain fade confused me between shell-command, > shell-mode and shell and I did M-x shell-mode in a file buffer and > nearly made a big mess. The problem is only seen when shell.el has been > loaded (for any reason) since shell-mode is not autoloaded. > > Similar could apply to other special modes, maybe even to most modes > derived from `special-mode'. As you point out, there's a lot of modes that only make sense in certain limited contexts, and having them be interactive isn't very helpful. I'm not sure it's that much of a problem in general, but it is a particular an issue with `shell-mode', since I'd guess that a lot of people type that instead of `M-x shell-script-mode' when starting to write new shell scripts. The following fixes this particular issue. Would something like this be welcome? A different fix would be to extend defined-derived-mode to take a :noninteractive flag to just not include the `(interactive)' in the defun. It looks fairly straightforward to implement -- is that a better idea, perhaps? (That is, if we want to fix this at all.) diff --git a/lisp/shell.el b/lisp/shell.el index 2914d1d2c8..ba7515e7ba 100644 --- a/lisp/shell.el +++ b/lisp/shell.el @@ -553,6 +553,8 @@ shell-mode `comint-scroll-to-bottom-on-input' and `comint-scroll-to-bottom-on-output' control whether input and output cause the window to scroll to the end of the buffer." + (when (called-interactively-p 'any) + (error "Can't be called interactively; did you mean `shell-script-mode' instead?")) (setq comint-prompt-regexp shell-prompt-pattern) (shell-completion-vars) (setq-local paragraph-separate "\\'") -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no