* Hooks for new buffers?
@ 2013-04-04 20:12 Steven Degutis
2013-04-05 6:03 ` W. Greenhouse
` (2 more replies)
0 siblings, 3 replies; 5+ messages in thread
From: Steven Degutis @ 2013-04-04 20:12 UTC (permalink / raw)
To: help-gnu-emacs@gnu.org
[-- Attachment #1: Type: text/plain, Size: 1273 bytes --]
I wrote auto-dim-other-buffers.el (
https://github.com/sdegutis/auto-dim-other-buffers.el) a few days ago,
which applies a "dimmed" face to non-current buffers.
It adds to post-command-hook and after-change-major-mode-hook, the first as
a catch-all "something changed" and the second as a hacky way of saying "a
new buffer just got created".
This mostly works. But sometimes new buffers are created that don't change
major modes. For example, *magit-process* gets created at some point, and
when I show it via $ inside magit-status, it's not dimmed. So it's not
changing major modes.
When I show the buffer via $, it probably triggers the post-command-hook,
but my hook tries to be efficient, by only looking at the previous
current-buffer and the new current-buffer. And this isn't either of those,
since it just shows up in a new window but isn't given focus. I'm sure
there are other situations like this.
The easiest way to solve this is to find a hook that's called when new
buffers are created, even if that's not its official purpose. Apparently
after-change-major-mode-hook isn't enough, presumably because these never
changed major modes. So is there such a hook?
And if not, is there at least some hook that happens whenever new windows
are opened?
-Steven
[-- Attachment #2: Type: text/html, Size: 1624 bytes --]
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: Hooks for new buffers?
2013-04-04 20:12 Hooks for new buffers? Steven Degutis
@ 2013-04-05 6:03 ` W. Greenhouse
2013-04-05 8:47 ` Andreas Röhler
[not found] ` <mailman.23572.1365141815.855.help-gnu-emacs@gnu.org>
2 siblings, 0 replies; 5+ messages in thread
From: W. Greenhouse @ 2013-04-05 6:03 UTC (permalink / raw)
To: help-gnu-emacs-mXXj517/zsQ
Steven Degutis <sbdegutis-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> writes:
> The easiest way to solve this is to find a hook that's called when
> new buffers are created, even if that's not its official purpose.
> Apparently after-change-major-mode-hook isn't enough, presumably
> because these never changed major modes. So is there such a hook?
>
> And if not, is there at least some hook that happens whenever new
> windows are opened?
>
> -Steven
`window-configuration-change-hook', maybe?
--
BOFH excuse #39:
terrorist activities
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: Hooks for new buffers?
2013-04-04 20:12 Hooks for new buffers? Steven Degutis
2013-04-05 6:03 ` W. Greenhouse
@ 2013-04-05 8:47 ` Andreas Röhler
2013-04-05 11:09 ` Andreas Röhler
[not found] ` <mailman.23572.1365141815.855.help-gnu-emacs@gnu.org>
2 siblings, 1 reply; 5+ messages in thread
From: Andreas Röhler @ 2013-04-05 8:47 UTC (permalink / raw)
To: help-gnu-emacs
Am 04.04.2013 22:12, schrieb Steven Degutis:
> I wrote auto-dim-other-buffers.el (
> https://github.com/sdegutis/auto-dim-other-buffers.el) a few days ago,
> which applies a "dimmed" face to non-current buffers.
>
> It adds to post-command-hook and after-change-major-mode-hook, the first as
> a catch-all "something changed" and the second as a hacky way of saying "a
> new buffer just got created".
>
> This mostly works. But sometimes new buffers are created that don't change
> major modes.
Hi Steven,
AFAIU it's quite simple: there is only one buffer current, where all other will be subject to "dimmed".
If right, solution will not be to look what others do, but run-with-idle timer a routine dimming
everything except the current buffer.
Just my thoght,
Andreas
For example, *magit-process* gets created at some point, and
> when I show it via $ inside magit-status, it's not dimmed. So it's not
> changing major modes.
>
> When I show the buffer via $, it probably triggers the post-command-hook,
> but my hook tries to be efficient, by only looking at the previous
> current-buffer and the new current-buffer. And this isn't either of those,
> since it just shows up in a new window but isn't given focus. I'm sure
> there are other situations like this.
>
> The easiest way to solve this is to find a hook that's called when new
> buffers are created, even if that's not its official purpose. Apparently
> after-change-major-mode-hook isn't enough, presumably because these never
> changed major modes. So is there such a hook?
>
> And if not, is there at least some hook that happens whenever new windows
> are opened?
>
> -Steven
>
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: Hooks for new buffers?
2013-04-05 8:47 ` Andreas Röhler
@ 2013-04-05 11:09 ` Andreas Röhler
0 siblings, 0 replies; 5+ messages in thread
From: Andreas Röhler @ 2013-04-05 11:09 UTC (permalink / raw)
To: help-gnu-emacs
Am 05.04.2013 10:47, schrieb Andreas Röhler:
> Am 04.04.2013 22:12, schrieb Steven Degutis:
>> I wrote auto-dim-other-buffers.el (
>> https://github.com/sdegutis/auto-dim-other-buffers.el) a few days ago,
>> which applies a "dimmed" face to non-current buffers.
>>
>> It adds to post-command-hook and after-change-major-mode-hook, the first as
>> a catch-all "something changed" and the second as a hacky way of saying "a
>> new buffer just got created".
>>
>> This mostly works. But sometimes new buffers are created that don't change
>> major modes.
>
> Hi Steven,
>
> AFAIU it's quite simple: there is only one buffer current, where all other will be subject to "dimmed".
> If right, solution will not be to look what others do, but run-with-idle timer a routine dimming
> everything except the current buffer.
>
> Just my thoght,
>
> Andreas
>
Apropos if some other buffers like *Help* should not be dimmed though, register them in a list.
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: Hooks for new buffers?
[not found] ` <mailman.23572.1365141815.855.help-gnu-emacs@gnu.org>
@ 2013-04-05 14:45 ` Lowell Gilbert
0 siblings, 0 replies; 5+ messages in thread
From: Lowell Gilbert @ 2013-04-05 14:45 UTC (permalink / raw)
To: help-gnu-emacs
wgreenhouse@riseup.net (W. Greenhouse) writes:
> Steven Degutis <sbdegutis@gmail.com> writes:
>
>> The easiest way to solve this is to find a hook that's called when
>> new buffers are created, even if that's not its official purpose.
>> Apparently after-change-major-mode-hook isn't enough, presumably
>> because these never changed major modes. So is there such a hook?
>>
>> And if not, is there at least some hook that happens whenever new
>> windows are opened?
>>
>> -Steven
>
> `window-configuration-change-hook', maybe?
I was going to suggest that, but I wanted to test it first because its
documentation is unclear on whether it gets run for a new buffer in an
existing window (and haven't gotten around to said testing). Another
possibility was buffer-list-update-hook, but you'd have to figure out on
your own whether there was a new buffer and if so, which it was.
'advice'ing get-buffer-create should catch all the cases, but that's a C
function, and it might be wandering into deep magic (and intractable
debugging).
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2013-04-05 14:45 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-04-04 20:12 Hooks for new buffers? Steven Degutis
2013-04-05 6:03 ` W. Greenhouse
2013-04-05 8:47 ` Andreas Röhler
2013-04-05 11:09 ` Andreas Röhler
[not found] ` <mailman.23572.1365141815.855.help-gnu-emacs@gnu.org>
2013-04-05 14:45 ` Lowell Gilbert
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).