From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Alan Mackenzie Newsgroups: gmane.emacs.bugs Subject: bug#33601: 26; Add macro `with-hook-added' Date: 4 Dec 2018 18:46:14 -0000 Organization: muc.de e.V. Message-ID: <20181204184614.2049.qmail@mail.muc.de> References: <6871371f-5c46-46f2-9a92-b1c154ec5a73@default> NNTP-Posting-Host: blaine.gmane.org X-Trace: blaine.gmane.org 1543949118 26767 195.159.176.226 (4 Dec 2018 18:45:18 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Tue, 4 Dec 2018 18:45:18 +0000 (UTC) User-Agent: tin/2.4.2-20171224 ("Lochhead") (UNIX) (FreeBSD/11.2-RELEASE-p4 (amd64)) Cc: 33601@debbugs.gnu.org To: Drew Adams Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Tue Dec 04 19:45:14 2018 Return-path: Envelope-to: geb-bug-gnu-emacs@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 1gUFh3-0006pX-0Z for geb-bug-gnu-emacs@m.gmane.org; Tue, 04 Dec 2018 19:45:13 +0100 Original-Received: from localhost ([::1]:58503 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gUFj9-00041f-8h for geb-bug-gnu-emacs@m.gmane.org; Tue, 04 Dec 2018 13:47:23 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:50425) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gUFit-0003zq-14 for bug-gnu-emacs@gnu.org; Tue, 04 Dec 2018 13:47:07 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gUFip-0001DO-07 for bug-gnu-emacs@gnu.org; Tue, 04 Dec 2018 13:47:07 -0500 Original-Received: from debbugs.gnu.org ([208.118.235.43]:56690) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1gUFio-0001DE-SU for bug-gnu-emacs@gnu.org; Tue, 04 Dec 2018 13:47:02 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1gUFio-0006iL-Ff for bug-gnu-emacs@gnu.org; Tue, 04 Dec 2018 13:47:02 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Alan Mackenzie Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 04 Dec 2018 18:47:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 33601 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: Original-Received: via spool by 33601-submit@debbugs.gnu.org id=B33601.154394917725740 (code B ref 33601); Tue, 04 Dec 2018 18:47:02 +0000 Original-Received: (at 33601) by debbugs.gnu.org; 4 Dec 2018 18:46:17 +0000 Original-Received: from localhost ([127.0.0.1]:60948 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gUFi4-0006h6-SO for submit@debbugs.gnu.org; Tue, 04 Dec 2018 13:46:17 -0500 Original-Received: from colin.muc.de ([193.149.48.1]:18749 helo=mail.muc.de) by debbugs.gnu.org with smtp (Exim 4.84_2) (envelope-from ) id 1gUFi3-0006gx-F9 for 33601@debbugs.gnu.org; Tue, 04 Dec 2018 13:46:16 -0500 Original-Received: (qmail 2050 invoked by uid 3782); 4 Dec 2018 18:46:14 -0000 In-Reply-To: X-Newsgroups: gnu.emacs.bug 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: 208.118.235.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:153073 Archived-At: Hello, Drew. In article you wrote: > Enhancement request: Please consider adding a macro such as this, to > facilitate temporary use of a hook function. > (defmacro with-hook-added (hook function &rest body) > "Evaluate forms in BODY with FUNCTION added to HOOK, then remove FUNCTION." > (declare (indent 1) (debug t)) > `(unwind-protect (progn (add-hook ',hook ',function) ,@body) > (remove-hook ',hook ',function))) Just a big point: you need to test whether FUNCTION is already on HOOK at the start, and if so, not remove it at the end. Apologies if somebody else has already pointed this out. > In GNU Emacs 26.1 (build 1, x86_64-w64-mingw32) > of 2018-05-30 > Repository revision: 07f8f9bc5a51f5aa94eb099f3e15fbe0c20ea1ea > Windowing system distributor `Microsoft Corp.', version 10.0.16299 > Configured using: > `configure --without-dbus --host=x86_64-w64-mingw32 > --without-compress-install 'CFLAGS=-O2 -static -g3'' -- Alan Mackenzie (Nuremberg, Germany).