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

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.