From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED.blaine.gmane.org!not-for-mail From: Ergus Newsgroups: gmane.emacs.devel Subject: Re: Tabs Date: Sun, 1 Sep 2019 14:31:48 +0200 Message-ID: <20190901123148.5cn3kzpap3bwuy5z@Ergus> References: <87a7bpysm8.fsf@mail.linkov.net> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226"; logging-data="71684"; mail-complaints-to="usenet@blaine.gmane.org" User-Agent: NeoMutt/20180716 Cc: emacs-devel@gnu.org To: Juri Linkov Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Sun Sep 01 14:32:14 2019 Return-path: Envelope-to: ged-emacs-devel@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 1i4P1i-000IZZ-LW for ged-emacs-devel@m.gmane.org; Sun, 01 Sep 2019 14:32:14 +0200 Original-Received: from localhost ([::1]:57276 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1i4P1g-0007ud-Q7 for ged-emacs-devel@m.gmane.org; Sun, 01 Sep 2019 08:32:12 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:54425) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1i4P1Z-0007uL-Ce for emacs-devel@gnu.org; Sun, 01 Sep 2019 08:32:06 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1i4P1X-00047Q-QH for emacs-devel@gnu.org; Sun, 01 Sep 2019 08:32:04 -0400 Original-Received: from sonic303-20.consmr.mail.ir2.yahoo.com ([77.238.178.201]:35012) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1i4P1V-00045l-KX for emacs-devel@gnu.org; Sun, 01 Sep 2019 08:32:01 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=aol.com; s=a2048; t=1567341118; bh=f2qBsWbrLfeJWnvx3S71luqZoNPgpNCZLco3kezzwPk=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From:Subject; b=qUMBqZPBdik339Jhzz7bZXGZWvgM9BlkfHcAqpPZyKUc3Xjf8WEmYUnFg4rvreThshoxMJ74H8e050AmcZaO7C5d0V2FvJAk7r8BDYaBja/NxHq9s8aX2/7/JnjADs3qCVe/KjMSdV7hjd06ufoABFc+c/8pEFOCV5atKiUKrf6q7xyMjf0qUIHWjIZPeUND7Ksp6BcbJ+7C84U9YSlKCwzScXZi9QWchfnPXbMWlgN4gf0baJGnbpfM+4Zy0lcvD4BjaWnehrFmXCzxCW/Z4m4wEPcEaN02DgCyAER4WVvFhTyDwN/8GvQyQGKQDOCccU8iRrJN/FZnxusfuDCz/w== X-YMail-OSG: ibIvzhcVM1lAQFevbiwDOIOyY4wc6N.46iQcX8k1sJkCsM7mdaEV_zh1juGVynR bTBX8LvPlcmx_XiVkwnY48Yj3BjXI4v7N8fieeFPNWnK4zCdLxGqjd3EZv86FbcB8YTXD0_bawB. VqYnISaye2krP.S8HnrjXLNHJMrXnJhIg5_lKSnvaSynu_vFjGHHwnO6OQRYnXNf7OKeNuJzU451 l7BQ_5CEvptjWAoqrH5vHqEVCm_9upw2DPwHxTi1vebgeVjrgYFhxwaiTqAzAP8HfYBA1G3jl4Ge WoU4eoRh1lLH1QZN8DzOYztvcVmNKZW8mfzjoI5dwp_4mCbwStvKeGgaXqItES_zX83OR8fBugM1 kEWuOI82DsAJToTf69IW6BRYhwrFwqVUPqZqXOG.X7vygXP6K_u7anDeJHH4JBHr9gSQiELDs7R7 i59opEndnhN6MykDSbDEznfGPP91fYt6jfMH2mcjWpJ3mQXAYv3eDw1q31V52iqHLAoQGFnlN_Wy tRRHJavht47T365qfAHOS9EYgBLv1pwXBrag.zbXqD9aZ2QRNYgKCDWxwArjyDcBxmMRztEK42jF o4XpjBTNbCLv0P3sJbFYMrLGvt8Fz9XHYEebAKs9tlsk3Wv1CXLMzITuhlJ_MfYbsKc76zkLmk5z hyjmOiSJOB4rn2THAw9pvyKQo0YhdpXmQETmFteMsAXRfJ2.XLzCTb009633vHgFe0DZmBdhWk1b Td3WIM3kF3YWLxuJANkjhLlZMBEs0ORieSwLypsx16a6xQo553zhGfoBeqIR1YGTXmWWz5jgvbRC dirUaj5IMS_cEwiCQRVSjYIwF3Ubw3FobkZ8AfSzr2 Original-Received: from sonic.gate.mail.ne1.yahoo.com by sonic303.consmr.mail.ir2.yahoo.com with HTTP; Sun, 1 Sep 2019 12:31:58 +0000 Original-Received: by smtp416.mail.ir2.yahoo.com (Oath Hermes SMTP Server) with ESMTPA ID 27f84b60d5f658d6c87caa68cc12b6c2; Sun, 01 Sep 2019 12:31:56 +0000 (UTC) Content-Disposition: inline In-Reply-To: <87a7bpysm8.fsf@mail.linkov.net> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 77.238.178.201 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.org gmane.emacs.devel:239749 Archived-At: Hi Juri: Very thanks for this. I have tried your feature branch but it seems to be working only on gui interface. I tried with -nw in xterm and they are not working. And disabling the toolbar in gui they didn't work either. Is this supposed to work like this? On Sat, Aug 31, 2019 at 11:45:07PM +0300, Juri Linkov wrote: >There is a long story of several attempts to implement tabs in Emacs. >Finally now a complete implementation is available for these >etc/TODO tasks: > > ** "Perspectives" are named persistent window configurations. We have > had the window configuration mechanism in GNU Emacs since the > beginning but we have never developed a good user interface to take > advantage of them. Eclipse's user interface seems to be good. > Perspectives also need to interact with the tabs. > > ** Having tabs above a window to switch buffers in it. > >Frame-local tabs represent window configurations. >Window-local tabs represent window buffers. > >Using such data structures means there is no need in special handling >of saving tabs in the desktop file - both persistence of frame tabs >and persistence of window tabs is already supported by the existing >code in master, because frame tabs are implemented as presentation of >window configurations in the frame parameter saved by frameset as >window states, and window tabs are implemented as presentation of >window buffers already saved by frameset. > >Also both implementation of frame tabs and implementation of >window tabs doesn't require using hooks - frame-local tabs for >window-configuration switching doesn't rely on hooks and >window-local tabs for switching window-buffers doesn't use hooks: >window-configuration-change-hook is not used, no hook >window-size-change-functions, no buffer-list-update-hook, no >post-command-hook is used, none of the hooks. > >All this makes the implementation as simple as possible, >providing only code for displaying and manipulating the already >existing data structures of window configurations and window buffers >represented in the new display elements tab-bar and tab-line >based on the existing elements tool-bar and header-line. > >The prefix '-bar' in tab-bar is by analogy with frame tool-bar, menu-bar. >The prefix '-line' in tab-line is by analogy with window header-line, mode-line. > >The tab-bar is located above the tool-bar like in web browsers. >The tab-line is located above the header-line >that is more related to the current buffer. > >Frame-local horizontal interface elements are in this order: >--- menu-bar --- >--- tab-bar --- >--- tool-bar --- > >Window-local horizontal interface elements are in this order: >--- tab-line --- >--- header-line --- >--- mode-line --- > >The implementation of the tab-bar replicates the existing tool-bar. >The implementation of the tab-line replicates the existing header-line. > >Tabs on the frame tab-bar represent window configurations. >Tabs on the window tab-line represent window buffers: previous on the >left side from the current tab (current-buffer) and next on the right. > >Clicking on the tab in the tab-bar selects its window configuration. >Clicking on the tab in the tab-line selects its window buffer. >Clicking on the close button closes the clicked tab. > >Keybindings for the tab-bar: > C-TAB - switches to the next frame tab; >S-C-TAB - switches to the previous frame tab. >Clicking on the plus sign adds a new window configuration tab to the tab-bar. > >Keybindings for the tab-line: >C-x - switches to the previous window tab; >C-x - switches to the next window tab. >Clicking on the plus sign adds a new buffer tab to the tab-line. > >'C-x 6 2' creates a new frame-local tab; >'C-x 6 b' switches to buffer in another frame-local tab; >'C-x 6 f' and 'C-x 6 C-f' edit file in another frame-local tab. > >I invite everyone to try the new branch named 'feature/tabs' >and to report all found problems. > >Authors of all packages that currently had no choice other than to >misuse the header-line for displaying window tabs are welcome now to >adapt their packages for displaying window tabs on the new dedicated >tab-line that doesn't conflict with the header-line anymore. >For example, I tried just to replace header-line-format with >tab-line-format in the package awesome-tabs and the result >shows two separate rows - tab-line and header-line of Info buffer: >