From: martin rudalics <rudalics@gmx.at>
To: "Štěpán Němec" <stepnem@gmail.com>
Cc: 7381@debbugs.gnu.org
Subject: bug#7381: 24.0.50; Provide a hook run when a window is selected
Date: Fri, 12 Nov 2010 19:09:38 +0100 [thread overview]
Message-ID: <4CDD82E2.9070906@gmx.at> (raw)
In-Reply-To: <8739r6foz3.fsf@gmail.com>
> But I really don't think extending `w-c-c-hook' is the right
> solution. I don't see why just selecting another window should be
> considered a window configuration change...
Agreed.
>> Basically, we could keep the old window configuration around from one
>> "change" to the next but it's not clear whether we want to save the
>> configuration before the last command or before the last configuration
>> change. In the latter case, your code would hardly know whether it runs
>> within one and the same command or within different commands.
>>
>> Note in this context that a single command like setting up a GDB frame
>> may entail a couple of configuration changes and you would have to keep
>> track of all of them. And the hook would trigger within each and every
>> instance of `with-selected-window' or `save-window-excursion' no matter
>> how silly these macros are occasionally used.
>
> ...and these caveats seem only to confirm such doubts (although some of
> them would apply to lesser extent to the hypothetical
> `select-window'-specific hook as well).
I'm afraid they would apply to the same extent.
> What's wrong with a separate `window-selected-hook' or perhaps
> `select-window-hook'?
Nothing but the fact that it might not help you very much. Your use
case was formulated in terms of commands
> ... repeating the command would toggle between two windows ...
and not in terms of window selections. So I don't think that Lennart's
proposal of using a `post-command-hook' here is unreasonable ;-)
> [On a related note, it would be nice if there were some clean and simple
> way to define custom hooks attached to arbitrary functions; that would
> solve problems similar to this one, preventing discussions whether adding
> yet another hook is worth it or not. Something like:
>
> (define-function-hook 'select-window)
> => select-window-hook
>
> (add-hook 'select-window-hook ...)
>
> Dream on...]
Hooks can be dangerous. It's very easy to crash Emacs by putting some
innocuously looking function on `window-configuration-change-hook'.
BTW, I could give `get-mru-window' an additional argument like
(defun get-mru-window (&optional all-frames avoid-selected)
(let (best-window best-time time)
(dolist (window (window-list-1 nil nil all-frames))
(setq time (window-use-time window))
(unless (and avoid-selected
(eq (window (selected-window))))
(when (or (not best-time) (> time best-time))
(setq best-time time)
(setq best-window window))))
best-window))
which would return nil if the selected window is the only one on
ALL-FRAMES.
martin
next prev parent reply other threads:[~2010-11-12 18:09 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-11-12 0:14 bug#7381: 24.0.50; Provide a hook run when a window is selected Štěpán Němec
2010-11-12 0:53 ` Lennart Borgman
2010-11-12 11:26 ` Štěpán Němec
2010-11-12 8:16 ` martin rudalics
2010-11-12 11:31 ` Štěpán Němec
2010-11-12 13:05 ` martin rudalics
2010-11-12 14:53 ` Štěpán Němec
2010-11-12 16:31 ` martin rudalics
2010-11-12 17:09 ` Štěpán Němec
2010-11-12 18:09 ` martin rudalics [this message]
2010-11-12 18:40 ` Štěpán Němec
2010-11-13 8:32 ` martin rudalics
2010-11-13 12:13 ` Štěpán Němec
2010-11-13 13:57 ` martin rudalics
2010-11-13 15:23 ` Štěpán Němec
2010-11-13 16:02 ` martin rudalics
2010-11-13 16:03 ` martin rudalics
2010-11-13 18:49 ` Chong Yidong
2010-12-23 17:07 ` Štěpán Němec
2010-12-24 9:31 ` martin rudalics
2010-12-29 11:21 ` Chong Yidong
2010-12-30 16:06 ` Richard Stallman
2010-11-12 20:55 ` Stefan Monnier
2019-01-12 9:15 ` martin rudalics
2019-01-12 11:46 ` Štěpán Němec
2019-01-12 14:12 ` martin rudalics
2019-01-12 14:58 ` Štěpán Němec
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
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4CDD82E2.9070906@gmx.at \
--to=rudalics@gmx.at \
--cc=7381@debbugs.gnu.org \
--cc=stepnem@gmail.com \
/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 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).