From: Andrea Cardaci <cyrus.and@gmail.com>
To: Eli Zaretskii <eliz@gnu.org>
Cc: martin rudalics <rudalics@gmx.at>, emacs-devel@gnu.org
Subject: Re: Zoom: a window management minor mode -- best practices and questions
Date: Tue, 8 May 2018 12:40:01 +0200 [thread overview]
Message-ID: <CACMsj9M5-oar40u+NgvY3to2t-Y3aTLhidcTt2LVCSnY6TkSmQ@mail.gmail.com> (raw)
In-Reply-To: <83603zqqfv.fsf@gnu.org>
> I don't remember (perhaps Martin does). But if you show a C-level
> backtrace from such a call to buffer-list-update-hook, it will be easy
> to say whether this is expected or not.
Is there a simple way to dump a backtrace from Emacs?
It's easy to reproduce tough:
(defun foo ()
(message "buffer-list-update-hook"))
(add-hook 'buffer-list-update-hook 'foo)
then simply click in the selected window.
Anyway according to the documentation this hook is called by
`select-window` which is actually called if you click on a window,
even if it is the selected one.
> Do you mean that pre-redisplay-function is called? If not, what
> exactly do you mean by "relayout is triggered"?
Yeah, I mean I collect all the events which tell me that a relayout is
needed (window created/destroyed, window/buffer selected, etc.) then
finally I perform the actual relayout. If a subsequent event tells me
that a relayout is needed but no window has been actually
created/destroyed etc. then it's a false positive, in this case for
example it happens when `pre-redisplay-function` is called, e.g., when
the user clicks in the selected window.
(By relayout I mean what Zoom does: `balance-windows` and resize the
selected window.)
> That's strange. The most frequent call to pre-redisplay-function is
> in prepare_menu_bars; are you saying that function is never called on
> macOS?
Well, there's more than that, it doesn't seem to be a macOS thing. If I do:
(defun foo (x)
(message "pre-redisplay-function"))
(add-hook 'pre-redisplay-function 'foo)
Almost always, the hook is not called when I interact with windows and
the text selection mark becomes invisible for future selections (!),
even in the terminal. Otherwise (but I cannot reproduce it anymore...)
the hook is called very frequently, even when Emacs is idle.
Emacs 26.0.90 on Linux, using the -Q option.
> If you put a breakpoint inside that function, does it never break?
`prepare_menu_bars` does break but `FUNCTIONP
(Vpre_redisplay_function)` is false so `safe__call1 (true,
Vpre_redisplay_function, windows);` is never executed.
next prev parent reply other threads:[~2018-05-08 10:40 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-05-02 16:31 Zoom: a window management minor mode -- best practices and questions Andrea Cardaci
2018-05-02 17:32 ` Eli Zaretskii
2018-05-02 18:41 ` Andrea Cardaci
2018-05-02 18:58 ` Eli Zaretskii
2018-05-03 7:11 ` martin rudalics
2018-05-03 9:50 ` Andrea Cardaci
2018-05-03 9:46 ` Andrea Cardaci
2018-05-03 7:11 ` martin rudalics
2018-05-03 9:47 ` Andrea Cardaci
2018-05-07 12:32 ` Andrea Cardaci
2018-05-07 18:19 ` Eli Zaretskii
2018-05-08 10:40 ` Andrea Cardaci [this message]
2018-05-08 14:53 ` Noam Postavsky
2018-05-08 15:03 ` Andrea Cardaci
2018-05-09 12:33 ` Stefan Monnier
2018-05-08 17:52 ` Eli Zaretskii
2018-05-09 7:00 ` martin rudalics
2018-05-09 16:06 ` Andrea Cardaci
2018-05-10 6:27 ` martin rudalics
2018-05-10 10:11 ` Andrea Cardaci
2018-05-10 10:27 ` martin rudalics
2018-05-10 10:34 ` Andrea Cardaci
2018-05-10 10:37 ` martin rudalics
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=CACMsj9M5-oar40u+NgvY3to2t-Y3aTLhidcTt2LVCSnY6TkSmQ@mail.gmail.com \
--to=cyrus.and@gmail.com \
--cc=eliz@gnu.org \
--cc=emacs-devel@gnu.org \
--cc=rudalics@gmx.at \
/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.