From: Ship Mints <shipmints@gmail.com>
To: Juri Linkov <juri@linkov.net>
Cc: 74087@debbugs.gnu.org
Subject: bug#74087: Bug patch: invoke tab-bar-tab-post-open-functions during tabs initialization
Date: Tue, 29 Oct 2024 15:03:29 -0400 [thread overview]
Message-ID: <CAN+1HbpaqOn4xSY5GHj6VQOLpVb7ooyeP2DD8Tsshh_OdMEcJg@mail.gmail.com> (raw)
In-Reply-To: <861pzy3fot.fsf@mail.linkov.net>
[-- Attachment #1: Type: text/plain, Size: 2986 bytes --]
I think my proposed patch is more natural for implied-open tabs (with the
tab bar showing or not, doesn't really matter) or explicitly opened ones.
Just invoke when the tabs are created seems the best route and the one that
people would expect reading the code.
I'll have a look at the close hooks again in a bit. I do know the behavior
of the pre-close hook is good for my uses.
On Tue, Oct 29, 2024 at 2:54 PM Juri Linkov <juri@linkov.net> wrote:
> >> I'm trying to align all tab creation behavior with
> >> tab-bar-tab-post-open-functions. Even the first tab should be
> >> considered "opened" by the system and call people's functions on the
> >> hook. That tab, if you close it, does call the close hooks correctly
> >> and that's aligned, at least.
>
> Calling the close hooks currently doesn't look correct:
>
> (run-hook-with-args 'tab-bar-tab-pre-close-functions
> (nth close-index tabs)
> last-tab-p)
> (if last-tab-p
> (pcase tab-bar-close-last-tab-choice
> ('nil
> (user-error "Attempt to delete the sole tab in a frame"))
>
> where first it makes an attempt to close the tab, calls the hook,
> then fails with the user-error. I think the hook should be called
> when the tab is really closed.
>
> >> If the open hook doesn't get called, then
> >> those tabs have to be treated in a special way and that creates bugs
> >> and burden. Not sure how relevant it is what I do in my custom hook
> >> that should get called for the implied opened first frames but doesn't.
> >
> > If you're really curious, one use case is auto-assigning a tab group.
> When
> > one makes a frame, the tab bar defaults to showing the window from which
> it
> > was created and any custom tab-bar symbols attached to the tab have to be
> > recreated. Another use case is optionally keeping tabs "pinned" to their
> > user-specified positions and the post-open hook can help track the first
> > and subsequent positions. I'll surely add more over time. tab-bar is
> great
> > and fun to use and enhance with cool productivity tools.
>
> Thanks, this is an interesting case. Indeed, currently
> there is an inconsistency. For example, start `emacs -Q`.
> Even if there is no tab-bar initially, we can say that
> the first tab is already created. Later, after creating
> the second tab with 'C-x t 2', we have two tabs where
> the post-open hook was called only in the second tab.
>
> A possible solution would be to detect such situation
> in 'tab-bar-new-tab-to' with the same code that
> enables the tab-bar initially with:
>
> (when tab-bar-show
> (if (not tab-bar-mode)
> ;; Turn on `tab-bar-mode' since a tab was created.
> ;; Note: this also updates `tab-bar-lines'.
> (tab-bar-mode 1)
> (tab-bar--update-tab-bar-lines)))
>
> then run the hook in the first tab as well.
>
[-- Attachment #2: Type: text/html, Size: 3801 bytes --]
next prev parent reply other threads:[~2024-10-29 19:03 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-10-29 14:12 bug#74087: Bug patch: invoke tab-bar-tab-post-open-functions during tabs initialization Ship Mints
2024-10-29 18:13 ` Juri Linkov
2024-10-29 18:19 ` Ship Mints
2024-10-29 18:29 ` Ship Mints
2024-10-29 18:43 ` Ship Mints
2024-10-29 18:52 ` Juri Linkov
2024-10-29 19:03 ` Ship Mints [this message]
2024-10-29 19:07 ` Juri Linkov
2024-10-29 19:18 ` Ship Mints
2024-10-29 19:23 ` Ship Mints
2024-10-29 19:32 ` Ship Mints
2024-10-29 19:46 ` Juri Linkov
2024-10-29 20:04 ` Ship Mints
2024-10-29 20:05 ` Ship Mints
2024-10-30 7:24 ` Juri Linkov
2024-10-30 12:41 ` Ship Mints
2024-10-30 13:44 ` Ship Mints
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=CAN+1HbpaqOn4xSY5GHj6VQOLpVb7ooyeP2DD8Tsshh_OdMEcJg@mail.gmail.com \
--to=shipmints@gmail.com \
--cc=74087@debbugs.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.