From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED.blaine.gmane.org!not-for-mail From: martin rudalics Newsgroups: gmane.emacs.bugs Subject: bug#9867: 24.0.90; quit-window should provide quit-window-hook Date: Sun, 25 Aug 2019 10:11:16 +0200 Message-ID: <79f9288e-c518-3607-78a7-2e0e0939851d@gmx.at> References: <861uu1ogxq.fsf@googlemail.com> <87d0h01sqf.fsf@mouse.gnus.org> <761cfbbf-88ef-d161-fb7b-a906c12e5307@gmx.at> <87mug2xoek.fsf@mouse.gnus.org> <2f9b873f-3ac0-0008-0c23-1add5eb82a03@gmx.at> <8736hsd9qm.fsf@mouse.gnus.org> <70aa4943-eb2d-ffa2-b6ee-4638181d1920@gmx.at> <87a7c0cnn2.fsf@gnus.org> <87zhjxakbs.fsf@gnus.org> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226"; logging-data="47344"; mail-complaints-to="usenet@blaine.gmane.org" Cc: Christoph Scholtes , 9867@debbugs.gnu.org To: Lars Ingebrigtsen Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Sun Aug 25 10:13:23 2019 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([209.51.188.17]) by blaine.gmane.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from ) id 1i1neM-000CAM-Ht for geb-bug-gnu-emacs@m.gmane.org; Sun, 25 Aug 2019 10:13:22 +0200 Original-Received: from localhost ([::1]:41312 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1i1neK-00049S-BD for geb-bug-gnu-emacs@m.gmane.org; Sun, 25 Aug 2019 04:13:21 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:37706) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1i1nd5-00049M-SX for bug-gnu-emacs@gnu.org; Sun, 25 Aug 2019 04:12:04 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1i1nd4-0007uP-TA for bug-gnu-emacs@gnu.org; Sun, 25 Aug 2019 04:12:03 -0400 Original-Received: from debbugs.gnu.org ([209.51.188.43]:34727) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1i1nd4-0007uI-LM for bug-gnu-emacs@gnu.org; Sun, 25 Aug 2019 04:12:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1i1nd4-0005iU-F8 for bug-gnu-emacs@gnu.org; Sun, 25 Aug 2019 04:12:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: martin rudalics Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 25 Aug 2019 08:12:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 9867 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: fixed Original-Received: via spool by 9867-submit@debbugs.gnu.org id=B9867.156672068921936 (code B ref 9867); Sun, 25 Aug 2019 08:12:02 +0000 Original-Received: (at 9867) by debbugs.gnu.org; 25 Aug 2019 08:11:29 +0000 Original-Received: from localhost ([127.0.0.1]:43548 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1i1ncW-0005hj-Sv for submit@debbugs.gnu.org; Sun, 25 Aug 2019 04:11:29 -0400 Original-Received: from mout.gmx.net ([212.227.17.22]:33951) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1i1ncU-0005hV-J9 for 9867@debbugs.gnu.org; Sun, 25 Aug 2019 04:11:27 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1566720677; bh=8h+tnwvrQiaYJ4ujNleTEHKiDAZpyTmFnTxMa/0DP8U=; h=X-UI-Sender-Class:Subject:To:Cc:References:From:Date:In-Reply-To; b=UIn9MT7/WrYqSXDsjXWVF1snqoMXlUbHEHjVMkNuVWjzGo4P4i8x+09mthIvjqSrL mIoE4I3Lx6zNUEStZ6pc+HVYxyO3ym+E1W65hXSut4DZESRzTTZMvkiqNfmTjtyMgx F/QnDdUMAStSAzrxZCdGidPF4oeDM0nu7T+hOkIA= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Original-Received: from [192.168.1.101] ([46.125.250.73]) by mail.gmx.com (mrgmx101 [212.227.17.168]) with ESMTPSA (Nemesis) id 0M6730-1iPXXb3D34-00y91E; Sun, 25 Aug 2019 10:11:17 +0200 In-Reply-To: <87zhjxakbs.fsf@gnus.org> Content-Language: de-DE X-Provags-ID: V03:K1:fxnJVdO5oXo3ktyfFZoWgcAs/Kbo2xYL9+ZWFY3jL5CLnocxjh1 wF0sMhiVZ9mAuNPPsSi84NiaANLvaphj0qHgkdMzShna4P1PlpiiqqRWRdQU2AoUrw/yylJ S89B5yJd6S27a+zujozJPxCEDs5dGqJiB1M4sXkaNqt9bueI03nwqNfhhpmlj+2Pf93T6Id 794XXZeaSAqVftDeSLmbw== X-UI-Out-Filterresults: notjunk:1;V03:K0:6OuCTy78R4I=:NCYQ2U5kwedNp8rsCyok7F 5kweg12/n0JorA6DVA6zyGMiyi28qeJ8Pot+suPzO/Vy5jc5hHYh3rxmsJi+DcCi19dTrj49e ObhWUC4gnfxpKauWLmp8tEXoqBZ/ZFns2sNoAYyibXU55oWZ3UhvwfYDnEh1CR9zFH5nDj/Zy kuFDPLECKqNsWXpLIXDlFMXnR9icZjW1je3dAWuT7MohBWfLZDvOQwl73GjlwgfEmVo9gbHE1 WMO5dtPiVStAhxwyS8UZdSkJH0Ri4X9iyvIixnYL74lPsqoTjiwywZNg4LMW9741EBA8TwCnz DHJnfzg5ZSr8QIy8gEfJuBmpQQ0K1CMc0DdIlUpaNJ4laB0uJWciiguJVfaQ9EoEFiWkdAYkJ 7Nf9cTfnK6DzXp7U1LGSTEcLfK4JZyQmGEpiiAJzO8hbUMJsaSe8gGh9YkrMnOXHkeFDiOGp2 hWEtEZQDME0HqcH9AKPMTozPUmYLvuFDNKPhkq1ii+TewmwPiwAhl79XILcVRYPQpukgzyVZb zH73v718LXsknPuZTZhkvKCC7g36+82AraQQ6KCAPKMAzBodfwg/+eKzrfaPXhnHebeysmadz A7gAUIofQobCuaZKlFzxjgLGpTFubAX5QFUlm6ZoGfIv//mQY1EQoPHsiceGxvKUoY5qLzANR sfzRiy4AFblBCYI7KMVD3Xkf+jhj5BQ53BBbT6mIAtd6k2E7x+LklF3HUYZfu9JSWdopX7LFi 9q7T9DgA3DGeilxveBDl3Bm+wvQhCDq1RFD/2mJ/AaIl4oUoC2NpO2zqZwm0YAziWeN05FnW 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: 209.51.188.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:165813 Archived-At: > I wasn't aware of `with-selected-window' -- it sounds a bit dramatic. > Does it have any side effects? Not normally. It's wrapped in an unwind protection form like 'with-current-buffer'. The following untested snippet should be (1) fairly optimal for the normal case where the selected window is quit and (2) guard against the case where the function run on the hook does soemthing unexpected with the window configuration: (let ((window (window-normalize-window window)) (buffer (window-buffer window))) (if (and (eq window (selected-window)) (eq buffer (current-buffer))) (run-hooks 'quit-window-hook) ;; Select WINDOW for `quit-window-hook'. (with-selected-window window (run-hooks 'quit-window-hook))) ;; Run 'quit-restore-window' only if 'quit-window-hook' has left ;; WINDOW alone. (when (and (window-live-p window) (eq (window-buffer window) buffer)) (quit-restore-window window (if kill 'kill 'bury)))) Something like (2) is needed, for example, when a function run by the hook kills WINDOW's buffer and 'kill-buffer' cleans up WINDOW by deleting it which in its turn would cause 'quit-restore-window' act on the window selected after 'replace-buffer-in-windows'. For an amusing example of why such a thing is necessary have a look at how often 'kill-buffer' checks whetheer the buffer it's supposed to kill is still alive. >> Or, as I suggested earlier, run the hook only when >> quitting the selected window. > > That's possible, but the semantics become perhaps a bit complicated? You would have to provide a somewhat disputable doc-string, indeed. martin