X-Loop: help-debbugs@HIDDEN Subject: bug#75949: kill-buffer-quit-windows breaks kill-buffer-hook Resent-From: Juri Linkov <juri@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: rudalics@HIDDEN, bug-gnu-emacs@HIDDEN Resent-Date: Thu, 30 Jan 2025 17:14:02 +0000 Resent-Message-ID: <handler.75949.B.173825718717326 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: report 75949 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: 75949 <at> debbugs.gnu.org Cc: martin rudalics <rudalics@HIDDEN> X-Debbugs-Original-To: bug-gnu-emacs@HIDDEN X-Debbugs-Original-Xcc: martin rudalics <rudalics@HIDDEN> Received: via spool by submit <at> debbugs.gnu.org id=B.173825718717326 (code B ref -1); Thu, 30 Jan 2025 17:14:02 +0000 Received: (at submit) by debbugs.gnu.org; 30 Jan 2025 17:13:07 +0000 Received: from localhost ([127.0.0.1]:47506 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1tdY6F-0004VN-Cr for submit <at> debbugs.gnu.org; Thu, 30 Jan 2025 12:13:07 -0500 Received: from lists.gnu.org ([2001:470:142::17]:58302) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <juri@HIDDEN>) id 1tdY6C-0004Uo-9V for submit <at> debbugs.gnu.org; Thu, 30 Jan 2025 12:13:04 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <juri@HIDDEN>) id 1tdY66-0000WO-NA for bug-gnu-emacs@HIDDEN; Thu, 30 Jan 2025 12:12:58 -0500 Received: from relay6-d.mail.gandi.net ([2001:4b98:dc4:8::226]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <juri@HIDDEN>) id 1tdY64-00038s-Iw for bug-gnu-emacs@HIDDEN; Thu, 30 Jan 2025 12:12:58 -0500 Received: by mail.gandi.net (Postfix) with ESMTPSA id B78224428A for <bug-gnu-emacs@HIDDEN>; Thu, 30 Jan 2025 17:12:50 +0000 (UTC) From: Juri Linkov <juri@HIDDEN> Organization: LINKOV.NET Date: Thu, 30 Jan 2025 19:04:09 +0200 Message-ID: <87cyg4wv1i.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/31.0.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain X-GND-State: clean X-GND-Score: 0 X-GND-Cause: gggruggvucftvghtrhhoucdtuddrgeefvddrtddtgdeifeelucetufdoteggodetrfdotffvucfrrhhofhhilhgvmecuifetpfffkfdpucggtfgfnhhsuhgsshgtrhhisggvnecuuegrihhlohhuthemuceftddunecunecujfgurhephffvufhofffkfgggtgesthdtredttdertdenucfhrhhomheplfhurhhiucfnihhnkhhovhcuoehjuhhriheslhhinhhkohhvrdhnvghtqeenucggtffrrghtthgvrhhnpeejgffgtddthfelteejkeejueegvdekgfdufffgtdehvddtkeetveehgfffjeeuteenucfkphepledurdduvdelrdeliedrledtnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehinhgvthepledurdduvdelrdeliedrledtpdhhvghlohepmhgrihhlrdhgrghnughirdhnvghtpdhmrghilhhfrhhomhepjhhurhhisehlihhnkhhovhdrnhgvthdpnhgspghrtghpthhtohepuddprhgtphhtthhopegsuhhgqdhgnhhuqdgvmhgrtghssehgnhhurdhorhhg X-GND-Sasl: juri@HIDDEN Received-SPF: pass client-ip=2001:4b98:dc4:8::226; envelope-from=juri@HIDDEN; helo=relay6-d.mail.gandi.net X-Spam_score_int: -25 X-Spam_score: -2.6 X-Spam_bar: -- X-Spam_report: (-2.6 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: 0.7 (/) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -0.3 (/) Please try to evaluate in the *scratch* buffer: (progn (setopt kill-buffer-quit-windows t) (view-echo-area-messages) (pop-to-buffer-same-window (get-buffer-create "foo")) (add-hook 'kill-buffer-hook (lambda () (message "%S" (current-buffer)))) (add-hook 'kill-buffer-hook (lambda () (kill-buffer (get-buffer "bar"))) nil t) (display-buffer (get-buffer-create "bar")) (switch-to-buffer (get-buffer "*scratch*")) (kill-buffer (get-buffer "foo"))) Then observe in the *Messages* buffer that the hook 'kill-buffer-hook' is run in the *scratch* buffer that is never killed. Afterwards try to set kill-buffer-quit-windows back to the default value nil, and evaluate again. Then everything is correct. It seems that kill-buffer-quit-windows somehow messes up the current buffer while running 'kill-buffer-hook'. This is a distilled test case from the real problem in treesit--explorer-kill-explorer-buffer that prevents (add-hook 'kill-buffer-hook #'save-place-to-alist) from saving places in the right buffer.
Content-Disposition: inline Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Mailer: MIME-tools 5.505 (Entity 5.505) Content-Type: text/plain; charset=utf-8 X-Loop: help-debbugs@HIDDEN From: help-debbugs@HIDDEN (GNU bug Tracking System) To: Juri Linkov <juri@HIDDEN> Subject: bug#75949: Acknowledgement (kill-buffer-quit-windows breaks kill-buffer-hook) Message-ID: <handler.75949.B.173825718717326.ack <at> debbugs.gnu.org> References: <87cyg4wv1i.fsf@HIDDEN> X-Gnu-PR-Message: ack 75949 X-Gnu-PR-Package: emacs Reply-To: 75949 <at> debbugs.gnu.org Date: Thu, 30 Jan 2025 17:14:02 +0000 Thank you for filing a new bug report with debbugs.gnu.org. This is an automatically generated reply to let you know your message has been received. Your message is being forwarded to the package maintainers and other interested parties for their attention; they will reply in due course. As you requested using X-Debbugs-CC, your message was also forwarded to martin rudalics <rudalics@HIDDEN> (after having been given a bug report number, if it did not have one). Your message has been sent to the package maintainer(s): bug-gnu-emacs@HIDDEN If you wish to submit further information on this problem, please send it to 75949 <at> debbugs.gnu.org. Please do not send mail to help-debbugs@HIDDEN unless you wish to report a problem with the Bug-tracking system. --=20 75949: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D75949 GNU Bug Tracking System Contact help-debbugs@HIDDEN with problems
X-Loop: help-debbugs@HIDDEN Subject: bug#75949: kill-buffer-quit-windows breaks kill-buffer-hook Resent-From: martin rudalics <rudalics@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Fri, 31 Jan 2025 08:50:02 +0000 Resent-Message-ID: <handler.75949.B75949.173831339818965 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 75949 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Juri Linkov <juri@HIDDEN>, 75949 <at> debbugs.gnu.org Received: via spool by 75949-submit <at> debbugs.gnu.org id=B75949.173831339818965 (code B ref 75949); Fri, 31 Jan 2025 08:50:02 +0000 Received: (at 75949) by debbugs.gnu.org; 31 Jan 2025 08:49:58 +0000 Received: from localhost ([127.0.0.1]:49919 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1tdmis-0004vp-44 for submit <at> debbugs.gnu.org; Fri, 31 Jan 2025 03:49:58 -0500 Received: from mout.gmx.net ([212.227.15.15]:45265) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <rudalics@HIDDEN>) id 1tdmiq-0004vY-4v for 75949 <at> debbugs.gnu.org; Fri, 31 Jan 2025 03:49:57 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.at; s=s31663417; t=1738313389; x=1738918189; i=rudalics@HIDDEN; bh=SSJ78h2LRFygly7uHuV/eAsuspwDQL+Rb5bhVWYM6DE=; h=X-UI-Sender-Class:Message-ID:Date:MIME-Version:Subject:To: References:From:In-Reply-To:Content-Type: Content-Transfer-Encoding:cc:content-transfer-encoding: content-type:date:from:message-id:mime-version:reply-to:subject: to; b=dO4B11N+mdbrdtVZ1vaMgP705MPal9YU3nVISnbYnJ3SesQuUTqXok/v/uW8tvCm VThLzOMowl4Ws21I7DYUjC/3EEmUI6NnDF1BY+VrR62vckA083fYjBZ8/ot1UkWlt KfQBoAn2yNE+2rAQY257VW/2zH/pgmKW6OkJxc+PiAm0Y8/pyA1lBrFMZylXNGld+ VobHg/q5qUDdojsJtLyzVitxtN+9kapdJyPhgbm1pUIChLtezocN5Ohl2z2ePX8tO yWdqqRmh4mWWC5Hoi2s1T65oKckhgkCUYGEf+jkGkB5lQa/pfDINjRSW1Yu4NTlj/ 0t5LANcVn6V/QAU5Nw== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from [192.168.31.113] ([213.142.96.23]) by mail.gmx.net (mrgmx005 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MbzuH-1t1xat3gKd-00pzBj; Fri, 31 Jan 2025 09:49:48 +0100 Message-ID: <a2cd0ac3-0810-4ebb-9fe8-0d7c17e62961@HIDDEN> Date: Fri, 31 Jan 2025 09:49:48 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird References: <87cyg4wv1i.fsf@HIDDEN> Content-Language: en-US From: martin rudalics <rudalics@HIDDEN> In-Reply-To: <87cyg4wv1i.fsf@HIDDEN> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K1:S5Rcb8ijYmxIRyFapEui8yHL346w1JXiyLolYbDioCCPUhMct2t 5lHzf7xe9Mwq7J/+pL7NN9omAzm4UFAyA9BlMJxrtm64/rroWQY7G8M9hlw9PIvU51WmMgZ bpR7slKUlnEV9j4Aol4Z7iKZstRDc1gTjp7fOzuBwUmJbbr1PSf3Oa5oTrRT8X4vP9s4JMN FY8U3MA4rtgj2BoOq8Ozg== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:5jraIHPc+3Y=;woXMESXxkaIe/O20PxLKWTOpGYy 6cyl9dZu3lp9ZfY7WoOmOsb4O3kkHsCekshUgYDkhje+lEtbxOfbv///A268/53eGoNGU8zA0 tSyKST7x1Uy+AtVxTG3tJhH4bWoIY+0xTKRtayUjkER1gd+pUoAG5MdGfK+kPpAMTWWMSOJt6 2208rmXwXA1bg606s8CtKla6ytr5Gxn5oxuY5KAasfcIdqSqFcg3iNY1wSlv1pH/bcpyYe4jP UmcOz51wZvRy67IALkDNhUuvYK61DW4SH87W5OcoMusq03VK9BFKD5hKVjCu/zYUTna7rEObV Q9xMYhwUr6B508tS+swKq57G4OanPSmfmu56+86Iq6MDr2hd70aNOS9TT8G8xn00aMg7qnbAx ar3XmOyNrYjxzB4zAk9yjcBmSUjPzhBCAycz3AE0KSpVGdAkphi3CzbGvBjwH1+E6bt62rgpr eB5t/YBZqqmyY9NDnzKdDqkkvqZo/hdO2Oo1szbBiqMHqoZGTWSDu4vA7ftmooR62bqpdGjfM 4T/+geom9IAolxY9C5MELKbKo+u8n1QbAhFnPUftKOFNJN3TOaOBk+TllXDAwYqQ5kYKQFpHj zDj5kQ0LrMgK20xc60neIKxRlmeXNDlGEC3k+iTIDvWXShNqbwBDqKRo9X3jc8nKAZSkgSF7v 0k75ASYMvhdXTaH9vxPLxYK8M9egSyJp+MEQxwGWOKNE7bl+CsmtxI9+KJ1swvz6a6jOhD1i0 hhUmFbMUODdaopiQ7QIO0lQ3d29SqavRkobdSsMEtLUePx5BlNYfHjTPHXSwYwu1ezpGoZjDi hvn9vG3YhRE0mw7mvjXrNJtMmt639IBwxSPzcl4jgA5t0EtGitgAa2w5vhuZnfzWlSfF2TcKz XNppVp98ysO91xcqZNqBRNrxx2rykvYCTMn0xOG5H1cJDw+Z3Q+Q22rD6LRQDhVdRqIpq3Lhj MrlMEqrcu+FT11nSGkZrgXfijGKk95idkvQQwx4FgOeFwc2y9cieyDLLioZW7eKNKiZ5ieQud Iu7FemZLaBO/jtl0UD4BMigyH6WHjSn2dSfYEq0n9LYpHsLYOcmHFyzWZdvKSmgAoZgHHRvfi /NsCVH3zvBe0tazALv2GrtSwLSTEYYHg8T6si2+ng4g4/KREymbOO7F+WUqwaOYe+dAMfKoQR Jh/sdPxGfnedBzly8wX/nkF1GOxD7c/KF2kdN8JxONs12ouIzabWjJvBwagFoma3o0LuWkoyF Ou4PoUsEUqVWBw2DBQi/0QdjnPq6sLmKTKzFiZyO9Zah/xyFiskqdnc4OhUOmh4e0qYZ5OuX+ C4Rpry0VcXfWJ7+1RBOWnRB4kqDWUPKuUumsuTPdDJQzkY= X-Spam-Score: -0.7 (/) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.7 (-) > Then observe in the *Messages* buffer that the hook 'kill-buffer-hook' > is run in the *scratch* buffer that is never killed. > > Afterwards try to set kill-buffer-quit-windows back to the default value nil, > and evaluate again. Then everything is correct. > > It seems that kill-buffer-quit-windows somehow messes up the current buffer > while running 'kill-buffer-hook'. I checked in a fix. In general, no function on 'kill-buffer-hook' can be sure that the buffer to be killed is current because another function on that hook might have changed the current buffer (or even killed it) before. That promise, like similar ones in 'window-configuration-change-hook', should never have been made. An appropriate fix could be possibly made in run_hook_with_args. But that might change behaviors that rely on hook-2 running after hook-1 changed the current buffer. Ideally, we'd have 'kill-buffer-functions' with the buffer to be killed as sole argument (and the function on the hook would still have to check whether that buffer is alive). Thanks, martin
X-Loop: help-debbugs@HIDDEN Subject: bug#75949: kill-buffer-quit-windows breaks kill-buffer-hook Resent-From: Juri Linkov <juri@HIDDEN> Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> Resent-CC: bug-gnu-emacs@HIDDEN Resent-Date: Sat, 01 Feb 2025 17:28:02 +0000 Resent-Message-ID: <handler.75949.B75949.173843086529927 <at> debbugs.gnu.org> Resent-Sender: help-debbugs@HIDDEN X-GNU-PR-Message: followup 75949 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: martin rudalics <rudalics@HIDDEN> Cc: 75949 <at> debbugs.gnu.org Received: via spool by 75949-submit <at> debbugs.gnu.org id=B75949.173843086529927 (code B ref 75949); Sat, 01 Feb 2025 17:28:02 +0000 Received: (at 75949) by debbugs.gnu.org; 1 Feb 2025 17:27:45 +0000 Received: from localhost ([127.0.0.1]:59816 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1teHHV-0007md-0F for submit <at> debbugs.gnu.org; Sat, 01 Feb 2025 12:27:45 -0500 Received: from relay3-d.mail.gandi.net ([2001:4b98:dc4:8::223]:53927) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <juri@HIDDEN>) id 1teHHS-0007mL-A3; Sat, 01 Feb 2025 12:27:43 -0500 Received: by mail.gandi.net (Postfix) with ESMTPSA id 7C06B204A5; Sat, 1 Feb 2025 17:27:33 +0000 (UTC) From: Juri Linkov <juri@HIDDEN> In-Reply-To: <a2cd0ac3-0810-4ebb-9fe8-0d7c17e62961@HIDDEN> (martin rudalics's message of "Fri, 31 Jan 2025 09:49:48 +0100") Organization: LINKOV.NET References: <87cyg4wv1i.fsf@HIDDEN> <a2cd0ac3-0810-4ebb-9fe8-0d7c17e62961@HIDDEN> Date: Sat, 01 Feb 2025 19:25:47 +0200 Message-ID: <87msf5k25g.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/31.0.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain X-GND-State: clean X-GND-Score: -100 X-GND-Cause: gggruggvucftvghtrhhoucdtuddrgeefvddrtddtgdduvdeffecutefuodetggdotefrodftvfcurfhrohhfihhlvgemucfitefpfffkpdcuggftfghnshhusghstghrihgsvgenuceurghilhhouhhtmecufedtudenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujfgurhephffvvefujghofhffkfgfgggtsehttdertddtredtnecuhfhrohhmpefluhhrihcunfhinhhkohhvuceojhhurhhisehlihhnkhhovhdrnhgvtheqnecuggftrfgrthhtvghrnhepffegteefveelhfeljeefueehieduiedtfffhuddtkeeffffghfevheetgeeukeehnecukfhppeeluddruddvledrleeirdeltdenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepihhnvghtpeeluddruddvledrleeirdeltddphhgvlhhopehmrghilhdrghgrnhguihdrnhgvthdpmhgrihhlfhhrohhmpehjuhhriheslhhinhhkohhvrdhnvghtpdhnsggprhgtphhtthhopeefpdhrtghpthhtoheptghonhhtrhholhesuggvsggsuhhgshdrghhnuhdrohhrghdprhgtphhtthhopeejheelgeelseguvggssghughhsrdhgnhhurdhorhhgpdhrtghpthhtoheprhhuuggrlhhitghssehgmhigrdgrth X-GND-Sasl: juri@HIDDEN X-Spam-Score: -0.7 (/) X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.7 (-) close 75949 31.0.50 thanks >> Then observe in the *Messages* buffer that the hook 'kill-buffer-hook' >> is run in the *scratch* buffer that is never killed. >> >> Afterwards try to set kill-buffer-quit-windows back to the default value nil, >> and evaluate again. Then everything is correct. >> >> It seems that kill-buffer-quit-windows somehow messes up the current buffer >> while running 'kill-buffer-hook'. > > I checked in a fix. Thanks, I confirm there is no problem anymore. > In general, no function on 'kill-buffer-hook' can be sure > that the buffer to be killed is current because another function > on that hook might have changed the current buffer (or even killed it) > before. That promise, like similar ones in > 'window-configuration-change-hook', should never have been made. > > An appropriate fix could be possibly made in run_hook_with_args. But > that might change behaviors that rely on hook-2 running after hook-1 > changed the current buffer. Ideally, we'd have 'kill-buffer-functions' > with the buffer to be killed as sole argument (and the function on the > hook would still have to check whether that buffer is alive). Since a new argument can't be added, another variant would be at least to set the current buffer before every call of the hook functions. I.e. instead of (run-hooks 'kill-buffer-hook) to do something like (run-hook-wrapped 'kill-buffer-hook (lambda (fun) (with-current-buffer current-buffer (funcall fun)) nil)) But this won't help when buffers are switched inside hook functions.
Received: (at control) by debbugs.gnu.org; 1 Feb 2025 17:27:46 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sat Feb 01 12:27:46 2025 Received: from localhost ([127.0.0.1]:59818 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1teHHW-0007ml-Aa for submit <at> debbugs.gnu.org; Sat, 01 Feb 2025 12:27:46 -0500 Received: from relay3-d.mail.gandi.net ([2001:4b98:dc4:8::223]:53927) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <juri@HIDDEN>) id 1teHHS-0007mL-A3; Sat, 01 Feb 2025 12:27:43 -0500 Received: by mail.gandi.net (Postfix) with ESMTPSA id 7C06B204A5; Sat, 1 Feb 2025 17:27:33 +0000 (UTC) From: Juri Linkov <juri@HIDDEN> To: martin rudalics <rudalics@HIDDEN> Subject: Re: bug#75949: kill-buffer-quit-windows breaks kill-buffer-hook In-Reply-To: <a2cd0ac3-0810-4ebb-9fe8-0d7c17e62961@HIDDEN> (martin rudalics's message of "Fri, 31 Jan 2025 09:49:48 +0100") Organization: LINKOV.NET References: <87cyg4wv1i.fsf@HIDDEN> <a2cd0ac3-0810-4ebb-9fe8-0d7c17e62961@HIDDEN> Date: Sat, 01 Feb 2025 19:25:47 +0200 Message-ID: <87msf5k25g.fsf@HIDDEN> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/31.0.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain X-GND-State: clean X-GND-Score: -100 X-GND-Cause: gggruggvucftvghtrhhoucdtuddrgeefvddrtddtgdduvdeffecutefuodetggdotefrodftvfcurfhrohhfihhlvgemucfitefpfffkpdcuggftfghnshhusghstghrihgsvgenuceurghilhhouhhtmecufedtudenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujfgurhephffvvefujghofhffkfgfgggtsehttdertddtredtnecuhfhrohhmpefluhhrihcunfhinhhkohhvuceojhhurhhisehlihhnkhhovhdrnhgvtheqnecuggftrfgrthhtvghrnhepffegteefveelhfeljeefueehieduiedtfffhuddtkeeffffghfevheetgeeukeehnecukfhppeeluddruddvledrleeirdeltdenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepihhnvghtpeeluddruddvledrleeirdeltddphhgvlhhopehmrghilhdrghgrnhguihdrnhgvthdpmhgrihhlfhhrohhmpehjuhhriheslhhinhhkohhvrdhnvghtpdhnsggprhgtphhtthhopeefpdhrtghpthhtoheptghonhhtrhholhesuggvsggsuhhgshdrghhnuhdrohhrghdprhgtphhtthhopeejheelgeelseguvggssghughhsrdhgnhhurdhorhhgpdhrtghpthhtoheprhhuuggrlhhitghssehgmhigrdgrth X-GND-Sasl: juri@HIDDEN X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: control Cc: 75949 <at> debbugs.gnu.org X-BeenThere: debbugs-submit <at> debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: <debbugs-submit.debbugs.gnu.org> List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe> List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/> List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org> List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help> List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe> Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org> X-Spam-Score: -1.7 (-) close 75949 31.0.50 thanks >> Then observe in the *Messages* buffer that the hook 'kill-buffer-hook' >> is run in the *scratch* buffer that is never killed. >> >> Afterwards try to set kill-buffer-quit-windows back to the default value nil, >> and evaluate again. Then everything is correct. >> >> It seems that kill-buffer-quit-windows somehow messes up the current buffer >> while running 'kill-buffer-hook'. > > I checked in a fix. Thanks, I confirm there is no problem anymore. > In general, no function on 'kill-buffer-hook' can be sure > that the buffer to be killed is current because another function > on that hook might have changed the current buffer (or even killed it) > before. That promise, like similar ones in > 'window-configuration-change-hook', should never have been made. > > An appropriate fix could be possibly made in run_hook_with_args. But > that might change behaviors that rely on hook-2 running after hook-1 > changed the current buffer. Ideally, we'd have 'kill-buffer-functions' > with the buffer to be killed as sole argument (and the function on the > hook would still have to check whether that buffer is alive). Since a new argument can't be added, another variant would be at least to set the current buffer before every call of the hook functions. I.e. instead of (run-hooks 'kill-buffer-hook) to do something like (run-hook-wrapped 'kill-buffer-hook (lambda (fun) (with-current-buffer current-buffer (funcall fun)) nil)) But this won't help when buffers are switched inside hook functions.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997 nCipher Corporation Ltd,
1994-97 Ian Jackson.