all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
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.



  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.