From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED.blaine.gmane.org!not-for-mail From: Juri Linkov Newsgroups: gmane.emacs.bugs Subject: bug#38624: 27.0.50; [wish] tab navigation via keyboard should mimic buffer navigation Date: Mon, 16 Dec 2019 23:46:30 +0200 Organization: LINKOV.NET Message-ID: <87immgjd2p.fsf@mail.linkov.net> References: <874ky1twb4.fsf@len.workgroup> <87mubt5gtt.fsf@mail.linkov.net> <87y2vcmy8q.fsf@len.workgroup> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226"; logging-data="165655"; mail-complaints-to="usenet@blaine.gmane.org" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (x86_64-pc-linux-gnu) Cc: 38624@debbugs.gnu.org To: Gregor Zattler Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Mon Dec 16 23:55:31 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 1igzGw-000gsQ-Pn for geb-bug-gnu-emacs@m.gmane.org; Mon, 16 Dec 2019 23:55:27 +0100 Original-Received: from localhost ([::1]:33046 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1igzGv-0005M4-9Y for geb-bug-gnu-emacs@m.gmane.org; Mon, 16 Dec 2019 17:55:25 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:33119) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1igzEg-0002uz-B1 for bug-gnu-emacs@gnu.org; Mon, 16 Dec 2019 17:53:07 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1igzEf-0002em-0A for bug-gnu-emacs@gnu.org; Mon, 16 Dec 2019 17:53:06 -0500 Original-Received: from debbugs.gnu.org ([209.51.188.43]:34511) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1igzEe-0002eb-TO for bug-gnu-emacs@gnu.org; Mon, 16 Dec 2019 17:53:04 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1igzEe-00070U-Sg for bug-gnu-emacs@gnu.org; Mon, 16 Dec 2019 17:53:04 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Juri Linkov Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 16 Dec 2019 22:53:04 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 38624 X-GNU-PR-Package: emacs Original-Received: via spool by 38624-submit@debbugs.gnu.org id=B38624.157653676426822 (code B ref 38624); Mon, 16 Dec 2019 22:53:04 +0000 Original-Received: (at 38624) by debbugs.gnu.org; 16 Dec 2019 22:52:44 +0000 Original-Received: from localhost ([127.0.0.1]:40469 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1igzEK-0006yY-3v for submit@debbugs.gnu.org; Mon, 16 Dec 2019 17:52:44 -0500 Original-Received: from bisque.elm.relay.mailchannels.net ([23.83.212.18]:11094) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1igzEH-0006yO-Qg for 38624@debbugs.gnu.org; Mon, 16 Dec 2019 17:52:42 -0500 X-Sender-Id: dreamhost|x-authsender|jurta@jurta.org Original-Received: from relay.mailchannels.net (localhost [127.0.0.1]) by relay.mailchannels.net (Postfix) with ESMTP id C38C9580B0A; Mon, 16 Dec 2019 22:52:40 +0000 (UTC) Original-Received: from pdx1-sub0-mail-a19.g.dreamhost.com (100-96-86-154.trex.outbound.svc.cluster.local [100.96.86.154]) (Authenticated sender: dreamhost) by relay.mailchannels.net (Postfix) with ESMTPA id 3B91C580AE7; Mon, 16 Dec 2019 22:52:40 +0000 (UTC) X-Sender-Id: dreamhost|x-authsender|jurta@jurta.org Original-Received: from pdx1-sub0-mail-a19.g.dreamhost.com ([TEMPUNAVAIL]. [64.90.62.162]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384) by 0.0.0.0:2500 (trex/5.18.5); Mon, 16 Dec 2019 22:52:40 +0000 X-MC-Relay: Neutral X-MailChannels-SenderId: dreamhost|x-authsender|jurta@jurta.org X-MailChannels-Auth-Id: dreamhost X-Wiry-Harmony: 12da4979373c9ec4_1576536760481_1148684545 X-MC-Loop-Signature: 1576536760481:109507088 X-MC-Ingress-Time: 1576536760480 Original-Received: from pdx1-sub0-mail-a19.g.dreamhost.com (localhost [127.0.0.1]) by pdx1-sub0-mail-a19.g.dreamhost.com (Postfix) with ESMTP id F272F7F028; Mon, 16 Dec 2019 14:52:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=linkov.net; h=from:to:cc :subject:references:date:in-reply-to:message-id:mime-version :content-type; s=linkov.net; bh=OvARap2ZjzAzTRYz4h5DYUVJgUM=; b= zgE/3epYa20REjUPklNKy2wDZMnV0tT6Zqs3i0PNfeoOJjjbTLu/3ire6FCOXqEF 9JTVXQq27iiQ89CZWBtivZjkTytZAHpdf/4absXbjWSfnyxJaB/Ye/AiuCFFCyYK iJPPYdLqk+2+5yDDXAlo5MtwwtnvjoR51cH9oOecOow= Original-Received: from mail.jurta.org (m91-129-107-186.cust.tele2.ee [91.129.107.186]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) (Authenticated sender: jurta@jurta.org) by pdx1-sub0-mail-a19.g.dreamhost.com (Postfix) with ESMTPSA id 9652A7F037; Mon, 16 Dec 2019 14:52:33 -0800 (PST) X-DH-BACKEND: pdx1-sub0-mail-a19 In-Reply-To: <87y2vcmy8q.fsf@len.workgroup> (Gregor Zattler's message of "Mon, 16 Dec 2019 10:11:01 +0100") X-VR-OUT-STATUS: OK X-VR-OUT-SCORE: 0 X-VR-OUT-SPAMCAUSE: gggruggvucftvghtrhhoucdtuddrgedufedrvddtiedgtdegucetufdoteggodetrfdotffvucfrrhhofhhilhgvmecuggftfghnshhusghstghrihgsvgdpffftgfetoffjqffuvfenuceurghilhhouhhtmecufedttdenucenucfjughrpefhvffuohhfffgjkfgfgggtsehttdertddtredtnecuhfhrohhmpefluhhrihcunfhinhhkohhvuceojhhurhhisehlihhnkhhovhdrnhgvtheqnecukfhppeeluddruddvledruddtjedrudekieenucfrrghrrghmpehmohguvgepshhmthhppdhhvghlohepmhgrihhlrdhjuhhrthgrrdhorhhgpdhinhgvthepledurdduvdelrddutdejrddukeeipdhrvghtuhhrnhdqphgrthhhpefluhhrihcunfhinhhkohhvuceojhhurhhisehlihhnkhhovhdrnhgvtheqpdhmrghilhhfrhhomhepjhhurhhisehlihhnkhhovhdrnhgvthdpnhhrtghpthhtohepthgvlhgvghhrrghphhesghhmgidrnhgvthenucevlhhushhtvghrufhiiigvpedv 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:173456 Archived-At: >> So you propose to bind it >> to the key 'C-x t t'? This key is the most convenient to type, >> so it should be used for the most frequently used tab command. >> Do you think 'tab-bar-switch-to-tab' would be the most frequently >> used command? > > I do not have used tabs much, but would assume the most frequent > action would switching tabs. I modeled this key stroke after > switch-to-buffer. And the other one (see below) after buffer-list. The key sequence for switching tabs doesn't need to be the easiest to type, because after running it, the user still needs to type the tab name to switch to, that requires more key strokes anyway. >> Actually, tab-list was designed to not destroy the window configuration. >> Unlike ibuffer or list-buffers that split the window, tab-list can't do >> the same. If tab-list will split the window, then after selecting >> another tab in the list and later going back to the same tab, will >> still display the window with tab-list, and the same window will be >> presented in every tab that would be annoying. Thus tab-list >> takes care to not break user's window configurations. > > Perhaps this window could be buried before switching tabs (see below). Maybe using quit-window before switching tabs, although this might cause other problems. Another problem is what to do when the user uses the tab list to delete the current window configuration (i.e. where the tab list is shown), this might have unexpected effect. Neither there is no "*Buffer List*" buffer in the list of buffers displayed by 'list-buffers', nor there is no "*Ibuffer*" buffer in the list of buffers displayed by 'ibuffer'. That's because they don't allow killing the same buffer where the buffer list is shown. Should the tab list allow deleting the tab where the tab list is shown? >> Or do you want to use tab-list for other purposes, >> not for selecting a tab from the list? > > I assumed that tab list shows a buffer for managing tabs. > Create, delete, perhaps regroup them. And perhaps users would > like to have a dedicated tab (leftmost?) for that. I personally > will use this feater via keyboard and therefore it is not > important for me to have a dedicated tab list tab. Thanks for your explanation, now it's clear what you expected from this, so you want an ibuffer-like buffer for managing tabs. Currently tab-bar.el contains commands for switching tabs, not for managing tabs like ibuffer manages buffers. Since current commands are designed to work like a so-called "task switcher" that is used in window managers to switch windows, tab-list was a misnomer. To reduce confusion I will rename tab-list to tab-switcher in tab-bar.el. Then later will create a new ELPA package tab-list.el that could be developed and used even after Emacs 27 is released, so its development won't delay the pretest of Emacs 27. I expect many ibuffer-like features will be implemented in this package, so it will have the same size as currently the whole tab-bar.el has. The tab-list.el package could display the tab list using outlines. For example: - Frame 1 - Tab 1.1 - Buffer 1.1.1 Size Mode Filename - Buffer 1.1.2 Size Mode Filename - Tab 1.2 - Buffer 1.2.1 Size Mode Filename - Buffer 1.2.2 Size Mode Filename - Buffer 1.2.3 Size Mode Filename D - Frame 2 D - Tab 2.1 - Buffer 2.1.1 Size Mode Filename D - Buffer 2.1.2 Size Mode Filename - Tab 2.2 *% - Buffer 2.2.1 Size Mode Filename *% - Buffer 2.2.2 Size Mode Filename >*% - Buffer 2.2.3 Size Mode Filename where typing RET on the frame line will select that frame; RET on the tab line will switch to that tab; RET on the buffer line will switch to that tab and select window with that buffer; D x on the frame line will delete that frame; D x on the tab line will close that tab; D x on the buffer line will kill that buffer; C-k or M-w will put the tab into the kill-ring; C-y would yank the killed tab to another frame (when point is moved to another frame line) Possibilities are endless...