unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* Tabs
@ 2019-08-31 20:45 Juri Linkov
  2019-09-01  8:12 ` Tabs martin rudalics
                   ` (6 more replies)
  0 siblings, 7 replies; 211+ messages in thread
From: Juri Linkov @ 2019-08-31 20:45 UTC (permalink / raw)
  To: emacs-devel

[-- Attachment #1: Type: text/plain, Size: 3975 bytes --]

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 <left>  - switches to the previous window tab;
C-x <right> - 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:


[-- Attachment #2: tabs.png --]
[-- Type: image/png, Size: 41241 bytes --]

^ permalink raw reply	[flat|nested] 211+ messages in thread
* Re: Tabs
@ 2019-09-02 13:31 Angelo Graziosi
  2019-09-02 19:46 ` Tabs Juri Linkov
  0 siblings, 1 reply; 211+ messages in thread
From: Angelo Graziosi @ 2019-09-02 13:31 UTC (permalink / raw)
  To: emacs-devel

[-- Attachment #1: Type: text/plain, Size: 984 bytes --]

I am an old user of 'tabbar-ruler' and friends from MELPA (https://melpa.org/#/tabbar-ruler) and have built your branch on Windows with the following results.

First, I tried this:

> 1. M-x tab-bar-mode RET
> 2. Click on the plus sign to create a new tab

I get the image tab-bar-mode.png (see tar-ball attached) and haven't understood much how to use it

> 3. Click on the previous tab
> 4. Click on the close icon
>

Then tried this, and the result is global-tab.png: notice, usually, Emacs here starts restoring about 65 buffers

> 1. M-x global-tab-line-mode
> 2. Click on the plus sign and select a buffer to create a new tab
> 3. Click on the previous tab
> 4. Click on the close icon
>

For comparison, with the same configuration (65 buffers) the result with tabbar-ruler from MELPA is tabbar-ruler.png: notice how the selected tab is highlighted compared to the others.

Tabbar-ruler allow for grouping per mode, see tabbar-ruler-permode.png.

Tanks for this work,
  Angelo.

[-- Attachment #2: tabs-img.tar.gz --]
[-- Type: application/x-gzip, Size: 32857 bytes --]

^ permalink raw reply	[flat|nested] 211+ messages in thread
* Re: Tabs
@ 2019-09-03  9:20 Angelo Graziosi
  0 siblings, 0 replies; 211+ messages in thread
From: Angelo Graziosi @ 2019-09-03  9:20 UTC (permalink / raw)
  To: emacs-devel

Eli Zaretskii wrote:

> Why cannot we support the mouse in text-mode frames?  We have several
> possible features for such support, including GPM, xterm-mouse, the
> MS-Windows and MS-DOS text-mode mouse functionality, etc.  I think we
> the tab bar should be able to support these.

When in early 90s I used my first IDEs (Turbo Pascal, C. C++...), the mouse was already supported to select text, menu, menu items etc., and at that time apps were only in text mode... there was also a menu called Window with which one could navigate between loaded 'buffers'...



^ permalink raw reply	[flat|nested] 211+ messages in thread
[parent not found: <<87a7bpysm8.fsf@mail.linkov.net>]

end of thread, other threads:[~2019-11-14  9:20 UTC | newest]

Thread overview: 211+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-08-31 20:45 Tabs Juri Linkov
2019-09-01  8:12 ` Tabs martin rudalics
2019-09-01 14:40   ` Tabs Eli Zaretskii
2019-09-01 19:57   ` Tabs Juri Linkov
2019-09-02  0:40     ` Tabs Stefan Kangas
2019-09-02 10:11       ` Tabs Elias Mårtenson
2019-09-02 11:16         ` Tabs Dmitry Gutov
2019-09-02 19:27         ` Tabs Juri Linkov
2019-09-03  5:21           ` Tabs Jean Louis
2019-09-03 19:40             ` Tabs Juri Linkov
2019-09-03 20:14               ` Tabs Jean Louis
2019-09-02 19:17       ` Tabs Juri Linkov
2019-09-03  5:45         ` Tabs Yuri Khan
2019-09-03 19:45           ` Tabs Juri Linkov
2019-09-15 16:44         ` Tabs Stefan Kangas
2019-09-15 21:17           ` Tabs Juri Linkov
2019-09-02  2:29     ` Tabs Eli Zaretskii
2019-09-02 19:29       ` Tabs Juri Linkov
2019-09-03  2:27         ` Tabs Eli Zaretskii
2019-09-01  8:59 ` Tabs (on macos) Jean-Christophe Helary
2019-09-01 20:11   ` Juri Linkov
2019-09-16 13:41     ` Stefan Kangas
2019-09-16 20:33       ` Juri Linkov
2019-09-17  9:11         ` Stefan Kangas
2019-09-17  9:29           ` Stefan Kangas
2019-09-17 20:28             ` Juri Linkov
2019-09-17 22:38               ` Stefan Kangas
2019-09-20 18:26               ` Alan Third
2019-09-17 23:29             ` Stefan Kangas
2019-09-01  9:28 ` Tabs Alan Mackenzie
2019-09-01 19:18   ` Tabs Juri Linkov
2019-09-01 12:31 ` Tabs Ergus
2019-09-01 19:31   ` Tabs Juri Linkov
2019-09-02  4:51     ` Tabs Ergus
2019-09-02 19:33       ` Tabs Juri Linkov
2019-09-02 21:06         ` Tabs Stefan Monnier
2019-09-03 19:56           ` Tabs Juri Linkov
2019-09-03  2:30         ` Tabs Eli Zaretskii
2019-09-03 19:58           ` Tabs Juri Linkov
2019-09-03  5:39         ` Tabs Ergus
2019-09-05 22:24         ` Tabs Ergus
2019-09-07 20:14           ` Tabs Juri Linkov
2019-09-02 12:41     ` Tabs Stefan Monnier
2019-09-02 19:39       ` Tabs Juri Linkov
2019-09-02 21:03         ` Tabs Stefan Monnier
2019-09-03 12:22 ` Tabs Robert Pluim
2019-09-03 20:21   ` Tabs Juri Linkov
2019-09-15 19:21 ` Tabs Stefan Kangas
2019-09-15 21:32   ` Tabs Juri Linkov
2019-09-16  4:19     ` Tabs Yuri Khan
2019-09-16 20:59       ` Tabs Juri Linkov
2019-09-17  5:29         ` Tabs Yuri Khan
2019-09-17 20:37           ` Tabs Juri Linkov
2019-09-17 22:53             ` Tabs Drew Adams
2019-09-28 17:06     ` Tabs Stefan Kangas
2019-09-28 19:52       ` Tabs Juri Linkov
2019-10-20 22:38         ` Tabs Juri Linkov
2019-11-02 21:40       ` Tabs Juri Linkov
2019-09-19 23:57 ` Tabs Michael Heerdegen
2019-09-21 22:45   ` Tabs Juri Linkov
2019-09-22  0:31     ` Tabs Michael Heerdegen
2019-09-25 20:15       ` Tabs Juri Linkov
2019-10-05 13:57         ` Tabs Michael Heerdegen
2019-10-05 22:12           ` Tabs Juri Linkov
2019-10-06  8:22             ` Tabs Michael Heerdegen
2019-10-06 12:09               ` Tabs Michael Heerdegen
2019-10-06 15:16                 ` Tabs Michael Heerdegen
2019-10-06 17:49                 ` Tabs Eli Zaretskii
2019-10-06 17:55                   ` Tabs Juri Linkov
2019-10-06 18:05                     ` Tabs Juri Linkov
2019-10-06 18:58                       ` Tabs Eli Zaretskii
2019-10-06 18:59                       ` Tabs Eli Zaretskii
2019-10-06 19:08                         ` Tabs Michael Heerdegen
2019-10-06 19:11                         ` Tabs Juri Linkov
2019-10-06 19:21                           ` Tabs Eli Zaretskii
2019-10-06 19:58                             ` Tabs Juri Linkov
2019-10-07 16:05                               ` Tabs Eli Zaretskii
2019-10-07 16:53                                 ` Tabs Michael Heerdegen
2019-10-07 17:12                                   ` Tabs Ergus
2019-10-07 18:24                                     ` Tabs Eli Zaretskii
2019-10-07 19:28                                       ` Tabs Ergus
2019-10-08  7:42                                         ` Tabs Eli Zaretskii
2019-10-08  8:56                                           ` Tabs Ergus
2019-10-08  9:18                                             ` Tabs Eli Zaretskii
2019-10-08 13:58                                               ` Tabs Eli Zaretskii
2019-10-08 16:00                                               ` Tabs Ergus
2019-10-08 16:18                                                 ` Tabs Eli Zaretskii
2019-10-08 16:40                                                   ` Tabs Ergus
2019-10-08 17:03                                                     ` Tabs Eli Zaretskii
2019-10-08 23:43                                                       ` Tabs Ergus
2019-10-09  8:37                                                         ` Tabs Eli Zaretskii
2019-10-09 10:39                                                           ` Tabs Ergus
2019-10-09 11:35                                                             ` Tabs Eli Zaretskii
2019-10-09 12:05                                                               ` Tabs Ergus
2019-10-09 12:18                                                                 ` Tabs Eli Zaretskii
2019-10-09 12:32                                                                 ` Tabs Eli Zaretskii
2019-10-09 18:12                                                                   ` Tabs martin rudalics
2019-10-09 18:46                                                                     ` Tabs Eli Zaretskii
2019-10-10  9:15                                                                       ` Tabs martin rudalics
2019-10-10  9:59                                                                         ` Tabs Eli Zaretskii
2019-10-10 10:38                                                                           ` Tabs martin rudalics
2019-10-10 11:33                                                                             ` Tabs Eli Zaretskii
2019-10-10 11:53                                                                               ` Tabs Eli Zaretskii
2019-10-10 14:58                                                                                 ` Tabs martin rudalics
2019-10-09 12:36                                                                 ` Tabs Eli Zaretskii
2019-10-09 13:55                                                                   ` Tabs Ergus
2019-10-09 14:21                                                                     ` Tabs Eli Zaretskii
2019-10-09 15:15                                                                       ` Tabs Ergus
2019-10-09 15:35                                                                         ` Tabs Eli Zaretskii
2019-10-10 11:52                                                                           ` Tabs Eli Zaretskii
2019-10-10 13:12                                                                             ` Tabs Ergus
2019-10-10 13:54                                                                               ` Tabs Eli Zaretskii
2019-10-10 14:19                                                                                 ` Tabs Ergus
2019-10-10 15:03                                                                                   ` Tabs Eli Zaretskii
2019-10-10 15:35                                                                                     ` Tabs martin rudalics
2019-10-10 15:46                                                                                       ` Tabs Ergus
2019-10-10 18:14                                                                                         ` Tabs martin rudalics
2019-10-10 18:26                                                                                           ` Tabs Eli Zaretskii
2019-10-11  8:18                                                                                             ` Tabs martin rudalics
2019-10-11  9:16                                                                                               ` Tabs Eli Zaretskii
2019-10-16  9:16                                                                                   ` Tabs martin rudalics
2019-10-10 13:29                                                                             ` Tabs Ergus
2019-10-10 13:47                                                                               ` Tabs Eli Zaretskii
2019-10-10 14:15                                                                                 ` Tabs Ergus
2019-10-10 14:40                                                                                 ` Tabs Ergus
2019-10-10 15:11                                                                                   ` Tabs Eli Zaretskii
2019-10-10 20:54                                                                                   ` Tabs Juri Linkov
2019-10-11  7:08                                                                                     ` Tabs Eli Zaretskii
2019-10-13 20:57                                                                                       ` Tabs Juri Linkov
2019-10-09 22:37                                                                       ` Tabs Juri Linkov
2019-10-10  7:51                                                                         ` Tabs Eli Zaretskii
2019-10-10 22:35                                                                           ` Tabs Juri Linkov
2019-10-11  8:18                                                                             ` Tabs martin rudalics
2019-10-12 22:42                                                                               ` Tabs Juri Linkov
2019-10-13  8:16                                                                                 ` Tabs martin rudalics
2019-10-14 18:02                                                                                   ` Tabs martin rudalics
2019-10-14 18:29                                                                                     ` Tabs Eli Zaretskii
2019-10-15  9:47                                                                                       ` Tabs martin rudalics
2019-10-14 19:35                                                                                     ` Tabs Juri Linkov
2019-10-14 21:17                                                                                       ` Tabs T.V Raman
2019-10-14 21:53                                                                                         ` Tabs Phil Sainty
2019-10-14 22:00                                                                                           ` Tabs Juri Linkov
2019-10-14 22:36                                                                                             ` Tabs T.V Raman
2019-10-15 20:39                                                                                               ` Tabs Juri Linkov
2019-10-16  0:14                                                                                                 ` Tabs T.V Raman
2019-10-15  6:12                                                                                         ` Tabs Eli Zaretskii
2019-10-15  9:47                                                                                       ` Tabs martin rudalics
2019-10-15 17:45                                                                                         ` Tabs Juri Linkov
2019-10-16  9:16                                                                                           ` Tabs martin rudalics
2019-10-14 19:00                                                                                   ` Tabs Juri Linkov
2019-10-15  9:47                                                                                     ` Tabs martin rudalics
2019-10-11  9:20                                                                             ` Tabs Eli Zaretskii
2019-10-12 22:47                                                                               ` Tabs Juri Linkov
2019-10-13  6:51                                                                                 ` Tabs Eli Zaretskii
2019-10-13 20:48                                                                                   ` Tabs Juri Linkov
2019-10-13 21:09                                                                                     ` Tabs Eli Zaretskii
2019-10-13 21:33                                                                                       ` Tabs Juri Linkov
2019-10-14  8:24                                                                                         ` Tabs Eli Zaretskii
2019-10-07 17:58                                   ` Tabs Eli Zaretskii
2019-10-07 19:11                                 ` Tabs Juri Linkov
2019-10-06 18:38                     ` Tabs Michael Heerdegen
2019-10-06 19:03                       ` Tabs Eli Zaretskii
2019-10-06 18:56                     ` Tabs Eli Zaretskii
2019-10-08 19:15               ` Tabs Michael Heerdegen
2019-10-09 22:48                 ` Tabs Juri Linkov
2019-10-10 11:06                   ` Tabs Michael Heerdegen
2019-10-10 20:59                     ` Tabs Juri Linkov
2019-10-13  9:32                       ` Tabs Michael Heerdegen
2019-10-13 20:24                         ` Tabs Juri Linkov
2019-10-15 14:42                           ` Tabs Michael Heerdegen
2019-10-19 22:51                             ` Tabs Juri Linkov
2019-10-25 11:19                               ` Tabs Michael Heerdegen
2019-10-26 22:40                                 ` Tabs Juri Linkov
2019-10-29 19:09                                   ` Tabs Michael Heerdegen
2019-11-05 23:24                                     ` Tabs Juri Linkov
2019-11-08 18:45                                       ` Tabs Michael Heerdegen
2019-11-08 19:56                                         ` Tabs Michael Heerdegen
2019-11-12 21:31                                           ` Tabs Juri Linkov
2019-11-13 16:47                                             ` Tabs Michael Heerdegen
2019-11-13 22:10                                               ` Tabs Juri Linkov
2019-11-14  9:20                                                 ` Tabs martin rudalics
  -- strict thread matches above, loose matches on Subject: below --
2019-09-02 13:31 Tabs Angelo Graziosi
2019-09-02 19:46 ` Tabs Juri Linkov
2019-09-03  8:49   ` Tabs Angelo Graziosi
2019-09-03 19:48     ` Tabs Juri Linkov
2019-09-04  8:22       ` Tabs Angelo Graziosi
2019-09-04 19:05         ` Tabs Juri Linkov
2019-09-04 22:41           ` Tabs Angelo Graziosi
2019-09-05 21:40           ` Tabs Angelo Graziosi
2019-09-06 20:16             ` Tabs Angelo Graziosi
2019-09-07 20:28             ` Tabs Juri Linkov
2019-09-08 20:19             ` Tabs Juri Linkov
2019-09-16  7:56               ` Tabs Angelo Graziosi
2019-09-16  8:45                 ` Tabs Angelo Graziosi
2019-09-16 20:43                   ` Tabs Juri Linkov
2019-10-13 14:49                     ` Tabs Angelo Graziosi
2019-10-13 15:07                       ` Tabs Eli Zaretskii
2019-10-13 21:09                         ` Tabs Angelo Graziosi
2019-10-14  8:23                           ` Tabs Eli Zaretskii
2019-10-15 21:38                             ` Tabs Angelo Graziosi
2019-10-16  6:53                               ` Tabs Eli Zaretskii
2019-10-13 22:08                         ` Tabs Juri Linkov
2019-10-14  6:37                           ` Tabs Eli Zaretskii
2019-10-15  7:55                             ` Tabs Eli Zaretskii
2019-10-15 19:44                               ` Tabs Juri Linkov
2019-10-16  6:23                                 ` Tabs Eli Zaretskii
2019-10-16 22:17                                   ` Tabs Juri Linkov
2019-10-17  7:17                                     ` Tabs Eli Zaretskii
2019-10-13 22:01                       ` Tabs Juri Linkov
2019-09-03  9:20 Tabs Angelo Graziosi
     [not found] <<87a7bpysm8.fsf@mail.linkov.net>
     [not found] ` <<d0768d60-979b-8635-b2b5-474742827552@gmx.at>
     [not found]   ` <<87o903dc2j.fsf@mail.linkov.net>
     [not found]     ` <<CADwFkmmgvyMzc_RZwz-AD6=cpUGfxdx5VZAv2eau4T9dAkTKQg@mail.gmail.com>
     [not found]       ` <<CADtN0WKCHd9fA-tCaGckHFQ59+6ns72NdGrvAdKHss0GLYFZ6g@mail.gmail.com>
     [not found]         ` <<87tv9ubirx.fsf@mail.linkov.net>
     [not found]           ` <<courier.000000005D6DF86C.00005323@protected.rcdrun.com>
2019-09-03 15:24             ` Tabs Drew Adams

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).