From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Lars Ingebrigtsen Newsgroups: gmane.emacs.bugs Subject: bug#47992: 27; 28; Phase out use of `equal` in `add-hook`, `remove-hook` Date: Sun, 02 May 2021 11:09:48 +0200 Message-ID: <87mttdh57n.fsf@gnus.org> References: Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="40097"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) Cc: 47992@debbugs.gnu.org, monnier@iro.umontreal.ca, jakanakaevangeli@chiru.no To: Daniel Mendler Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Sun May 02 11:12:16 2021 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 1ld89A-000AKY-Lk for geb-bug-gnu-emacs@m.gmane-mx.org; Sun, 02 May 2021 11:12:16 +0200 Original-Received: from localhost ([::1]:44922 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ld898-0000Sm-O7 for geb-bug-gnu-emacs@m.gmane-mx.org; Sun, 02 May 2021 05:12:14 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:38342) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ld87z-0000Re-Cu for bug-gnu-emacs@gnu.org; Sun, 02 May 2021 05:11:03 -0400 Original-Received: from debbugs.gnu.org ([209.51.188.43]:58376) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ld87y-0007tC-V4 for bug-gnu-emacs@gnu.org; Sun, 02 May 2021 05:11:03 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1ld87y-0002Qj-Qb for bug-gnu-emacs@gnu.org; Sun, 02 May 2021 05:11: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: Sun, 02 May 2021 09:11:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 47992 X-GNU-PR-Package: emacs Original-Received: via spool by 47992-submit@debbugs.gnu.org id=B47992.16199466039299 (code B ref 47992); Sun, 02 May 2021 09:11:02 +0000 Original-Received: (at 47992) by debbugs.gnu.org; 2 May 2021 09:10:03 +0000 Original-Received: from localhost ([127.0.0.1]:41680 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ld871-0002Pv-IZ for submit@debbugs.gnu.org; Sun, 02 May 2021 05:10:03 -0400 Original-Received: from quimby.gnus.org ([95.216.78.240]:56182) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ld86y-0002PR-Vy for 47992@debbugs.gnu.org; Sun, 02 May 2021 05:10:02 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org; s=20200322; h=Content-Type:MIME-Version:Message-ID:In-Reply-To:Date: References:Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=aiVXYvtOtFqhCCnfXtTVWZFrYfYp5JGeGxPqXIImXpA=; b=LXOvgpOV/A7lq+FoIMuxcsAgHK uoLC05K442txBoB8x9+2xIQzh9jHrfwnlOT4/EPZkCp09vO90oFYzjV9SUFJi5vNG71+WQS+ziJ6D rKJMV+PH1wgjFv3f/FIuo4UYnJvYKcfFUIe0cwwyobI0F1ZSB+B1f91FQFVpZvYIpbf8=; Original-Received: from cm-84.212.220.105.getinternet.no ([84.212.220.105] helo=xo) by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1ld86n-0004kW-Cc; Sun, 02 May 2021 11:09:51 +0200 X-Now-Playing: Nico's _Do Or Die_: "No One Is There" In-Reply-To: (Daniel Mendler's message of "Sat, 24 Apr 2021 14:11:48 +0200") X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list 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:205410 Archived-At: Daniel Mendler writes: > It would be good to change `add/remove-hook` such that it only relies > on `eq` to test hook equality. Then the symbol indirection workarounds > can be avoided. > > However making such a change directly can lead to subtle > breakage. Perhaps one could introduce some deprecation behavior first, > before making the final change to `eq`. If a hook is added/removed > and the added/removed object is not found via `eq` but found via > `equal`, show a deprecation warning? There are two issues here: 1) Should `add/remove-hook' even attempt to do uniqueness checks when adding/removing things that aren't symbols (or more generally, eq-able things), and 2) Should `add-hook' disallow adding such things? Today, it's super common for people to say (add-hook 'some-hook (lambda () ...)) in their .emacs files. This isn't because they have any expectation that add-hook does this uniquely, or that remove-hook will work, but because that's just what they think they should do. So I think 2) is out of the question -- we can't deprecate this, and we can't issue any warnings about doing it this way. (Even if it's "wrong" -- it's just not feasible to disallow this.) And since 2) isn't possible, I don't really think 1) is possible either. People do `M-x eval-buffer' their .emacs files, and since we're using `equal' here, this happens to work -- almost by accident. (If they change the lambda, then they get two instances of the lambda in the hook, so it's "wrong", but it's so common.) So I'm not sure I see any way forward with this. Would adding a new pair of functions (that are `eq' only) help in any way? -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no