all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Stefan Kangas <stefan@marxist.se>
To: Juri Linkov <juri@linkov.net>
Cc: Emacs developers <emacs-devel@gnu.org>
Subject: Re: Tabs
Date: Sat, 28 Sep 2019 19:06:57 +0200	[thread overview]
Message-ID: <CADwFkmnnvyM5JrFE=_OnEVC8edN4+0CaA_qFpnvUejZdNT00Dg@mail.gmail.com> (raw)
In-Reply-To: <87muf56wwf.fsf@mail.linkov.net>

Juri Linkov <juri@linkov.net> writes:

> > 1. When I run C-x <left> or C-x <right>, it automatically creates a new tab with
> > the next buffer.  I'd rather it switched between the open tabs, and have a
> > separate command to create a new tab.  I believe this would be more in line with
> > how tabs work in other software, and therefore more intuitive.
>
> If an inactive tab is displayed to the left from the currently active tab,
> do you mean that 'C-x <left>' doesn't switch to it but instead creates a new tab?

When I do:

0. emacs -Q
1. M-x global-tab-line-mode
1. C-x <left>

I see a new tab open up with the *Messages* buffer.  I would expect it
to not open up a new tab when I just ask to see the next or previous
tab.

> > 2. None of these interactive commands work when run with M-x:
> >
> > command-execute: tab-line-add-tab must be bound to an event with parameters
> > command-execute: tab-line-close-tab must be bound to an event with parameters
> > command-execute: tab-line-select-tab must be bound to an event with parameters
> > command-execute: tab-line-switch-to-next-tab must be bound to an event
> > with parameters
> > command-execute: tab-line-switch-to-prev-tab must be bound to an event
> > with parameters
>
> Mouse commands don't work with M-x.  For example, try M-x Buffer-menu-mouse-select

True.

> but we could declare the EVENT arg optional for these commands,
> and perform non-mouse logic when it's nil.

This is what I would prefer.  I think users will naturally try to use
these commands and be surprised when they don't work.

> > 3. It would then be good to have key bindings for the above commands.
>
> tab-line-switch-to-prev-tab is already the same as 'C-x <left>'
> tab-line-switch-to-next-tab is already the same as 'C-x <right>'
> tab-line-add-tab is the same as 'C-x b' or any other buffer switching command
> tab-line-close-tab is the same as bury-buffer or quit-window (`q')

Interesting.  Could the doc strings for the tab-line-* commands refer
to the corresponding functions?  I think that would help lessen the
confusion.

> only tab-line-select-tab could have a keybinding for referring tab by its
> absolute position.

That would be good, yes.

> > I suggest that the menu is
> > the optional non-default behaviour.
>
> I agree this should be configurable, like in e.g. Firefox a new tab page
> is configurable.

Fair enough.

> > Here are some suggestions that are less fundamental, listed in no particular
> > order.
> >
> > 5. When I hover inactive tabs with the mouse, only the name of the tab is
> > highlighted.  Can we get the entire tab highlighted instead, including the
> > section where the close button is?
>
> This is fixed now in the branch.

Looks great.  It might look even better if there is an "extra"
highlight on just the button when hovering only that.  That would
provide the feedback that there is something clickable there.  The
same goes for the active tab, where I see no highlight when I hover
the close button.

> > 6. When I hover the close button on the currently active tab, I get a grey line
> > between the tab name and the button.  Could we get rid of that line?
>
> This is fixed now.

Looks great.

> > 7. The active tab seems to be the same color in both the currently active window
> > and in other windows.  Could we perhaps color the active tab differently
> > depending on if it's in the active window or not?
>
> This is an interesting suggestion, I'd never thought about such distinction,
> but it could be useful for additional indication of the currently selected
> window, like different faces of the mode-line indicate the selected window.

Indeed.

> > 8. In Firefox, the close tab button is not visible unless that tab is selected.
> > Perhaps that behaviour makes more sense, especially if we also implement the
> > "fixed size tabs that shrinks to fit" behaviour discussed elsewhere (because
> > smaller tabs make it too easy to accidentally click the close button).
>
> This Firefox behaviour is very inconvenient - to be able to close
> several tabs in a row I have first to switch to each of them that starts
> loading the page, so browser hangs for a while - very frustrating experience.
> Chromium close buttons on every tab are much better.  However, you can set
> the close button variable to nil to disable close buttons.

In my experience, there is rarely any significant loading time when
switching buffer in Emacs.

In my opinion, removing the close buttons makes it easier to quickly
select tabs without worrying about accidentally closing them.  Setting
tab-bar-close-button to nil gets rid of them altogether; what I want
is to only have a close button on the currently active tab.  Perhaps
we could add a separate defcustom to make my preferred behaviour
optional?

That makes me wonder how we can best track these feature suggestions
for this branch?  Wait until it lands on master and then file wishlist
bugs?

> > 9. It would probably look better if there was a couple of pixels of padding
> > between the tab name and the edge of the tab.
>
> Is this possible in Emacs?  Could you please show an example of a text property
> that would put e.g. 5 pixels between characters in string.

Sorry, I don't know how to do that.

Is it possible to use variable-pitch-mode for the tab-bar only?  In
that case C-x 8 RET THIN SPACE RET would probably do the trick.

In any case, having a variable width font for the tabs in my opinion
would be a fantastic feature to have, and will probably go a long way
to make it look more polished and professional.

> > 10. Could we make the "+" sign (to add more tabs) more visually
> > distinct from the tabs?  For example, it could have no borders.
>
> This is fixed now in the branch.

Sorry to nit-pick so much, but I suggest to make it a bit bigger, to
make the background the same color as the surrounding tab bar, and to
make the lines thicker.  (I also think that the close buttons could be
a bit bigger and thicker, too.)

> > 14. Could we add a vertical line below the tabs to separate it from the buffer?
[...]
>
> This is fixed now in the branch, please try it.

Yes, this looks good.

I also see some other areas where you could perhaps look over the behaviour:

A)
0. emacs -Q
1. C-x b *Messages* RET
2. M-x global-tab-bar-mode

I now see two tabs -- but I would expect to see only one.

B)
0. emacs -Q
1. M-x global-tab-bar-mode
2. Create new tab using "+" (add tab button).
3. Run C-x <right>

The two tabs now switches places.  I would expect them to stay where
they are unless I ask to move them.

C)
0. emacs -Q
1. M-x global-tab-bar-mode
2. Click "+" (add tab button)

In the menu, I now see the "*scratch*" buffer as an option.  If I
click it, nothing happens.
Expected: I only see the other available but not open buffer.

D)
0. emacs -Q
1. M-x global-tab-bar-mode
2. Click "+" (add tab button)
3. Click "*Messages*"
4. Click "+" (add tab button)

(BTW, here I would expect to see an error message that there are no
more buffers to select or something...)

5. Click "*scratch"

Now I'm in the "*scratch*" buffer -- and the buffers switch places.  I
suppose this is a result of the behaviour I've described above.

E)
Finally, and I understand this could potentially be a lot of work, but
it would be fantastic if one could drag and drop tabs to have them
switch places (bonus points if one can drag them to other windows or
frames!).

Great to see that this feature is progressing so well!

Best regards,
Stefan Kangas



  parent reply	other threads:[~2019-09-28 17:06 UTC|newest]

Thread overview: 219+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
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     ` Stefan Kangas [this message]
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
     [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
  -- strict thread matches above, loose matches on Subject: below --
2019-09-03  9:20 Tabs Angelo Graziosi
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
2005-08-22 11:25 Tabs Maurizio Colucci
2005-08-22 12:13 ` Tabs Thomas Kjosmoen
2005-08-22 15:48 ` Tabs Aaron S. Hawley
2005-08-23  1:29 ` Tabs Richard M. Stallman
2005-08-23 10:49   ` Tabs Maurizio Colucci
2005-08-24 10:32     ` Tabs Richard M. Stallman
2003-08-15 22:35 Tabs Paul
2003-08-15 23:23 ` Tabs Marcus Frings

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CADwFkmnnvyM5JrFE=_OnEVC8edN4+0CaA_qFpnvUejZdNT00Dg@mail.gmail.com' \
    --to=stefan@marxist.se \
    --cc=emacs-devel@gnu.org \
    --cc=juri@linkov.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

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

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.