Juri Linkov <juri@HIDDEN>
to control <at> debbugs.gnu.org
.
Full text available.Received: (at 75949) by debbugs.gnu.org; 1 Feb 2025 17:27:45 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sat Feb 01 12:27:45 2025 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> 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: 75949 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.
bug-gnu-emacs@HIDDEN
:bug#75949
; Package emacs
.
Full text available.Received: (at 75949) by debbugs.gnu.org; 31 Jan 2025 08:49:58 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri Jan 31 03:49:58 2025 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 Subject: Re: bug#75949: kill-buffer-quit-windows breaks kill-buffer-hook To: Juri Linkov <juri@HIDDEN>, 75949 <at> debbugs.gnu.org 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-Debbugs-Envelope-To: 75949 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
bug-gnu-emacs@HIDDEN
:bug#75949
; Package emacs
.
Full text available.Received: (at submit) by debbugs.gnu.org; 30 Jan 2025 17:13:07 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Jan 30 12:13:07 2025 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> To: bug-gnu-emacs@HIDDEN Subject: kill-buffer-quit-windows breaks kill-buffer-hook Organization: LINKOV.NET X-Debbugs-Cc: martin rudalics <rudalics@HIDDEN> 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-Debbugs-Envelope-To: submit 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.
Juri Linkov <juri@HIDDEN>
:rudalics@HIDDEN, bug-gnu-emacs@HIDDEN
.
Full text available.rudalics@HIDDEN, bug-gnu-emacs@HIDDEN
:bug#75949
; Package emacs
.
Full text available.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997 nCipher Corporation Ltd,
1994-97 Ian Jackson.