From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Michael Heerdegen Newsgroups: gmane.emacs.bugs Subject: bug#51883: 29.0.50; Command to get accidentally deleted frames back Date: Tue, 16 Nov 2021 00:38:42 +0100 Message-ID: <87czn1gfb1.fsf@web.de> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="10434"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) To: 51883@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Tue Nov 16 00:39:12 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 1mmlZA-0002Wu-48 for geb-bug-gnu-emacs@m.gmane-mx.org; Tue, 16 Nov 2021 00:39:12 +0100 Original-Received: from localhost ([::1]:60112 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mmlZ8-0006Mx-Do for geb-bug-gnu-emacs@m.gmane-mx.org; Mon, 15 Nov 2021 18:39:10 -0500 Original-Received: from eggs.gnu.org ([209.51.188.92]:37518) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mmlZ0-0006Mn-Mx for bug-gnu-emacs@gnu.org; Mon, 15 Nov 2021 18:39:02 -0500 Original-Received: from debbugs.gnu.org ([209.51.188.43]:44994) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mmlZ0-0001kQ-Cj for bug-gnu-emacs@gnu.org; Mon, 15 Nov 2021 18:39:02 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1mmlZ0-0005i2-8v for bug-gnu-emacs@gnu.org; Mon, 15 Nov 2021 18:39:02 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Michael Heerdegen Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 15 Nov 2021 23:39:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 51883 X-GNU-PR-Package: emacs X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Original-Received: via spool by submit@debbugs.gnu.org id=B.163701953021924 (code B ref -1); Mon, 15 Nov 2021 23:39:02 +0000 Original-Received: (at submit) by debbugs.gnu.org; 15 Nov 2021 23:38:50 +0000 Original-Received: from localhost ([127.0.0.1]:56540 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mmlYo-0005hW-8g for submit@debbugs.gnu.org; Mon, 15 Nov 2021 18:38:50 -0500 Original-Received: from lists.gnu.org ([209.51.188.17]:33528) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mmlYm-0005hN-Ck for submit@debbugs.gnu.org; Mon, 15 Nov 2021 18:38:48 -0500 Original-Received: from eggs.gnu.org ([209.51.188.92]:37516) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mmlYm-0006KH-2x for bug-gnu-emacs@gnu.org; Mon, 15 Nov 2021 18:38:48 -0500 Original-Received: from mout.web.de ([212.227.17.11]:37651) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mmlYj-0001is-Mj for bug-gnu-emacs@gnu.org; Mon, 15 Nov 2021 18:38:47 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=web.de; s=dbaedf251592; t=1637019523; bh=Iu9l0cDW7mUDvrhmgiqNCaqfz5CgsVopm3G30jQwauY=; h=X-UI-Sender-Class:From:To:Subject:Date; b=aubo9M22rJO/YZvYoNn1khIGYAMmnYR6SAZaR5f1bNmwEE8H9GgQ8bTVGk8hO7OgZ R7P4Ly8xydd/qPlNPRxgfbbrca/J5l+R1mxPHRwt3amEVhfEZsCajMZf7OyGJdLJzk sKpxOA3M3BhmN9eLfg73xBmEpvUVdj+ivW4pOIDM= X-UI-Sender-Class: c548c8c5-30a9-4db5-a2e7-cb6cb037b8f9 Original-Received: from drachen.dragon ([92.208.225.87]) by smtp.web.de (mrweb106 [213.165.67.124]) with ESMTPSA (Nemesis) id 1MBS6v-1myXXg0oE3-00CpLz; Tue, 16 Nov 2021 00:38:43 +0100 X-Provags-ID: V03:K1:1xQR7CFhF2G88yEvAUtCeURE2Yo87OxWfSefevHYukZkscLwSAo /pYIr+3O9Th7VDSyAfPwJcGu3Ke6k/0PzXWXgYaHMz6BDSp4p+YvfWVUaHcKqDGWUCtO7Dg TXCcozRGfEwTPALFOiag1aRWyf081eACNnButaBx7A84aS7BGnFxaAgpw8mk0t5ZB8iHLEo OubiSmXX3qLEt3UNwB0+g== X-UI-Out-Filterresults: notjunk:1;V03:K0:4lune3toB7A=:GI6VOVyzDw1ReBzbRA8jmS p8GzbvP7YtXzIH4Jre5S7XV4A8e9dGie4lybI12Cnnvcwt0vPqCNkYweJ4kD0MLt/LrHoUU2z GjBmykqU9ZiWki0Rj+BgXecFUMFc8vDk3lNNAEZZViuhsDcsTi+iRTqL/8s5UWdot3+LG1Uh7 bD+2UU9f6fzGKHjLUjH2OWuQjgJKokukqkPHo7tMc98+rBdYR6Wf+7ByUuTxvTWB+pn3EjYmQ V2eK8kSIeBanOxEJzNuGmVeVRuWM9Ox34GKLp7Ex9NKssdtYqOdBOdul+1sb/3xiKgpnB09Bc pqjxlbbPxK3Lm5OzI0I72AUwNbz2tNfN5H0r5a3YCBVy0OWfDRL7vtw+V8Bmp/pbbhEEQEba1 EUWcCUU2PiEf0DBiILhRZLj9M8eO8+V4WlE+CW7+0/PNa6FpXxoBh93XpoCkwFxIso+ypF2K+ dddLO4YYiSuGKxXEUBa8slum6MbyRhD7oKUzbZxxTSl71GIcnKCKuqz3azwYwLaeeyfV94rJa Q98UVdJ+4S6EBkbppYvRPosUO7mzVBBT+NlJMZUBKIse3oqJfcZ7RK2mG5fPToca2lTirkfWh SjCCS+eDm8TRVk+vus7hfssUH6asbj/t4gCt5Van24JTUSBWf2I9zWRmlHuTd2RYTfEFGEOj1 FDnAlD1Mm4Fnd+h292QlxYDWoFbw1jxo2k0RHCMKDz4bYSZ/nA3S9r+7Dk4qfutcPwguGnZTj IqqojniVFjACWJmLx23uSVJU8O4ALAvfbuytRNoNsglD4MkWwMWf+57M4lnvfpCFhtav7p+C Received-SPF: pass client-ip=212.227.17.11; envelope-from=michael_heerdegen@web.de; helo=mout.web.de X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action 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:220089 Archived-At: Hello, seems we don't have a command to restore a frame that the user has killed by accident (note: we have `restore-frame', but that's something different [related to maximizing commands]). This is a feature request to add such a command. It seems this feature can't be implemented using window configurations (AFAIU they die with their frame), and also not using frame configurations (they don't work per frame) - but using one element framesets seems to work: #+begin_src emacs-lisp (require 'frameset) (require 'cl-lib) (defvar my-killed-frame-ring-size 10) (defvar my-killed-frames (make-ring my-killed-frame-ring-size)) (advice-add 'delete-frame :before #'my-remember-deleted-frame) (defun my-remember-deleted-frame (&optional frame _force) (ring-insert my-killed-frames (frameset-save (list (or frame (selected-frame)))))) (defun my-restore-killed-frame (&optional n) (interactive "p") (let ((frames-before (frame-list))) (frameset-restore (ring-ref my-killed-frames (- (or n 1) 1))) (let ((restored (cl-set-difference (frame-list) frames-before))) (when (and restored (not (cdr restored))) (select-frame-set-input-focus (car restored)))))) (global-set-key [?\C-x ?5 ?t] #'my-restore-killed-frame) #+end_src Maybe having it in C would be better - I don't know. A more convenient access to frames killed earlier than the last one, instead of using the prefix arg like above, might be appropriate (making the command repeatable, maybe?) Apart from these details the above is a start and could just go to frameset.el. Opinions? TIA, Michael. In GNU Emacs 29.0.50 (build 25, x86_64-pc-linux-gnu, GTK+ Version 3.24.24, cairo version 1.16.0) of 2021-11-15 built on drachen Repository revision: 6b79b03c81f77ca00adeb80170653d4c0b53d46a Repository branch: master Windowing system distributor 'The X.Org Foundation', version 11.0.12011000 System Description: Debian GNU/Linux 11 (bullseye)