From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Drew Adams Newsgroups: gmane.emacs.devel Subject: RE: Should mode commands be idempotent? Date: Tue, 19 Sep 2017 15:58:23 -0700 (PDT) Message-ID: References: NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Trace: blaine.gmane.org 1505861998 27896 195.159.176.226 (19 Sep 2017 22:59:58 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Tue, 19 Sep 2017 22:59:58 +0000 (UTC) To: Philipp Stephani , Emacs developers Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Wed Sep 20 00:59:50 2017 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1duRUb-0006qi-4Q for ged-emacs-devel@m.gmane.org; Wed, 20 Sep 2017 00:59:49 +0200 Original-Received: from localhost ([::1]:45777 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1duRUi-00024u-7m for ged-emacs-devel@m.gmane.org; Tue, 19 Sep 2017 18:59:56 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:56091) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1duRTk-00023z-42 for emacs-devel@gnu.org; Tue, 19 Sep 2017 18:58:57 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1duRTh-0003aM-1Q for emacs-devel@gnu.org; Tue, 19 Sep 2017 18:58:56 -0400 Original-Received: from aserp1040.oracle.com ([141.146.126.69]:41080) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1duRTg-0003Di-Os for emacs-devel@gnu.org; Tue, 19 Sep 2017 18:58:52 -0400 Original-Received: from aserv0021.oracle.com (aserv0021.oracle.com [141.146.126.233]) by aserp1040.oracle.com (Sentrion-MTA-4.3.2/Sentrion-MTA-4.3.2) with ESMTP id v8JMwQsC014919 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 19 Sep 2017 22:58:26 GMT Original-Received: from userv0122.oracle.com (userv0122.oracle.com [156.151.31.75]) by aserv0021.oracle.com (8.14.4/8.14.4) with ESMTP id v8JMwP7t031600 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 19 Sep 2017 22:58:26 GMT Original-Received: from abhmp0014.oracle.com (abhmp0014.oracle.com [141.146.116.20]) by userv0122.oracle.com (8.14.4/8.14.4) with ESMTP id v8JMwPDb026424; Tue, 19 Sep 2017 22:58:25 GMT In-Reply-To: X-Priority: 3 X-Mailer: Oracle Beehive Extensions for Outlook 2.0.1.9.1 (1003210) [OL 12.0.6776.5000 (x86)] X-Source-IP: aserv0021.oracle.com [141.146.126.233] X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.4.x-2.6.x [generic] [fuzzy] X-Received-From: 141.146.126.69 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.org gmane.emacs.devel:218549 Archived-At: > I think it's generally expected that mode commands (both major and > minor) are reasonably idempotent, i.e. calling them twice should > have the same effects as calling them once (unless using 'toggle, > of course). However, I couldn't find this requirement in the manual, > should it be added to the "Modes" section? It is perhaps typical; i.e., perhaps most modes have that property. But I don't see why it "should" be true of modes. Why should it be a "requirement" or a convention? People can use a mode for whatever they want. A mode can do anything its author wants it to do. I see that as a good thing, not a bad thing. What's the use case for such a restriction? If it's to allow for easier program analysis or something, it should be enough to let people know (if appropriate) that if a mode is not idempotent then it might be more difficult to reason about its behavior. (But reasoning about Lisp behavior is anyway not something simple - Lisp is not Haskell.) The fact that most modes are likely idempotent should be enough, I think. Most mode writers don't go out of their way to make a mode act differently if it is turned on more than once.