* HowTo: Run a hook when a buffer becomes "current"
@ 2015-12-16 16:37 raman
2015-12-16 21:51 ` Nicolas Richard
` (2 more replies)
0 siblings, 3 replies; 24+ messages in thread
From: raman @ 2015-12-16 16:37 UTC (permalink / raw)
To: emacs-devel
I was looking for a way of running a function when a buffer becomes
"current". I cant find any hooks in Emacs -- the closest is
buffer-list-update-hook -- but that gets called way too often including
when a buffer is buried, is visited transiently from within lisp code
etc.
Is there a hook that I'm missing, or is advice the only fallback I have?
--
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: HowTo: Run a hook when a buffer becomes "current"
2015-12-16 16:37 HowTo: Run a hook when a buffer becomes "current" raman
@ 2015-12-16 21:51 ` Nicolas Richard
2015-12-16 23:04 ` David Kastrup
2015-12-17 4:58 ` Richard Stallman
2015-12-18 1:56 ` Karl Fogel
2 siblings, 1 reply; 24+ messages in thread
From: Nicolas Richard @ 2015-12-16 21:51 UTC (permalink / raw)
To: raman; +Cc: emacs-devel
raman <raman@google.com> writes:
> I was looking for a way of running a function when a buffer becomes
> "current". I cant find any hooks in Emacs -- the closest is
> buffer-list-update-hook -- but that gets called way too often including
> when a buffer is buried, is visited transiently from within lisp code
> etc.
I think you're after window-configuration-change-hook, see
(info "(elisp) Window Hooks")
--
Nicolas
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: HowTo: Run a hook when a buffer becomes "current"
2015-12-16 21:51 ` Nicolas Richard
@ 2015-12-16 23:04 ` David Kastrup
2015-12-16 23:20 ` T.V Raman
0 siblings, 1 reply; 24+ messages in thread
From: David Kastrup @ 2015-12-16 23:04 UTC (permalink / raw)
To: Nicolas Richard; +Cc: emacs-devel, raman
Nicolas Richard <nrichard@ulb.ac.be> writes:
> raman <raman@google.com> writes:
>
>> I was looking for a way of running a function when a buffer becomes
>> "current". I cant find any hooks in Emacs -- the closest is
>> buffer-list-update-hook -- but that gets called way too often
>> including when a buffer is buried, is visited transiently from within
>> lisp code etc.
>
> I think you're after window-configuration-change-hook, see
> (info "(elisp) Window Hooks")
That would be for "selected", not "current".
--
David Kastrup
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: HowTo: Run a hook when a buffer becomes "current"
2015-12-16 23:04 ` David Kastrup
@ 2015-12-16 23:20 ` T.V Raman
0 siblings, 0 replies; 24+ messages in thread
From: T.V Raman @ 2015-12-16 23:20 UTC (permalink / raw)
To: dak; +Cc: emacs-devel, nrichard, raman
For now, the only solution I've found is to advice select-window.
Interestingly, the documentation for select-window points you at
buffer-list-update-hook -- but it's likely that that hook's usage has
diverged since that documentation for select-window was written; for
fun I tried this:
(defvar record nil)
(defun my-record-buffer () (push (buffer-name) record))
(add-hook 'buffer-list-update-hook #'my-record-buffer)
A single buffer switch causes a lot of things to get pushed there
David Kastrup writes:
> Nicolas Richard <nrichard@ulb.ac.be> writes:
>
> > raman <raman@google.com> writes:
> >
> >> I was looking for a way of running a function when a buffer becomes
> >> "current". I cant find any hooks in Emacs -- the closest is
> >> buffer-list-update-hook -- but that gets called way too often
> >> including when a buffer is buried, is visited transiently from within
> >> lisp code etc.
> >
> > I think you're after window-configuration-change-hook, see
> > (info "(elisp) Window Hooks")
>
> That would be for "selected", not "current".
>
> --
> David Kastrup
--
--
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: HowTo: Run a hook when a buffer becomes "current"
2015-12-16 16:37 HowTo: Run a hook when a buffer becomes "current" raman
2015-12-16 21:51 ` Nicolas Richard
@ 2015-12-17 4:58 ` Richard Stallman
2015-12-17 16:15 ` raman
2015-12-18 1:56 ` Karl Fogel
2 siblings, 1 reply; 24+ messages in thread
From: Richard Stallman @ 2015-12-17 4:58 UTC (permalink / raw)
To: raman; +Cc: emacs-devel
[[[ To any NSA and FBI agents reading my email: please consider ]]]
[[[ whether defending the US Constitution against all enemies, ]]]
[[[ foreign or domestic, requires you to follow Snowden's example. ]]]
> I was looking for a way of running a function when a buffer becomes
> "current". I cant find any hooks in Emacs -- the closest is
> buffer-list-update-hook -- but that gets called way too often including
> when a buffer is buried, is visited transiently from within lisp code
> etc.
This is one of the hooks I decided we should not have. If changing
the current buffer, with set-buffer for instance, can affect execution
of code, you'll never be able to debug code when that hook is in use.
--
Dr Richard Stallman
President, Free Software Foundation (gnu.org, fsf.org)
Internet Hall-of-Famer (internethalloffame.org)
Skype: No way! See stallman.org/skype.html.
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: HowTo: Run a hook when a buffer becomes "current"
2015-12-17 4:58 ` Richard Stallman
@ 2015-12-17 16:15 ` raman
2015-12-18 4:04 ` Richard Stallman
0 siblings, 1 reply; 24+ messages in thread
From: raman @ 2015-12-17 16:15 UTC (permalink / raw)
To: Richard Stallman; +Cc: emacs-devel
I specifically want to run a function when a function becomes current
and interactable by the user -- agreed that I dont want to run code in
the case of set-buffer. For now, an after advice on select-window does
nicely -- a select-window-hook would obviate the need for that advice
--
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: HowTo: Run a hook when a buffer becomes "current"
2015-12-16 16:37 HowTo: Run a hook when a buffer becomes "current" raman
2015-12-16 21:51 ` Nicolas Richard
2015-12-17 4:58 ` Richard Stallman
@ 2015-12-18 1:56 ` Karl Fogel
2015-12-18 3:19 ` raman
2 siblings, 1 reply; 24+ messages in thread
From: Karl Fogel @ 2015-12-18 1:56 UTC (permalink / raw)
To: raman; +Cc: emacs-devel
raman <raman@google.com> writes:
>I was looking for a way of running a function when a buffer becomes
>"current". I cant find any hooks in Emacs -- the closest is
>buffer-list-update-hook -- but that gets called way too often including
>when a buffer is buried, is visited transiently from within lisp code
>etc.
>
>Is there a hook that I'm missing, or is advice the only fallback I have?
I'm curious what your larger goal is?
(Would want to know that before suggesting `select-buffer-hook' be created :-) ...)
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: HowTo: Run a hook when a buffer becomes "current"
2015-12-18 1:56 ` Karl Fogel
@ 2015-12-18 3:19 ` raman
2015-12-18 12:14 ` Marcin Borkowski
0 siblings, 1 reply; 24+ messages in thread
From: raman @ 2015-12-18 3:19 UTC (permalink / raw)
To: Karl Fogel; +Cc: emacs-devel
Hi Karl,
(good to hear from you:-))
Thanks for the note.
I was implementing myself a new feature in Emacspeak, though if it
works out it's not Emacspeak specific.
It's still WIP, so take it with a grain of salt --
1 line summary:
Adding "Soundscapes" -- quiet ambient nature sounds, that play in the
background, and change based on what I'm doing -- eg programming vs
communicating vs writing.
Take a look at the docs here
http://tvraman.github.io/emacspeak/manual/soundscape.html#soundscape
--raman
--
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: HowTo: Run a hook when a buffer becomes "current"
2015-12-17 16:15 ` raman
@ 2015-12-18 4:04 ` Richard Stallman
2015-12-18 4:20 ` raman
0 siblings, 1 reply; 24+ messages in thread
From: Richard Stallman @ 2015-12-18 4:04 UTC (permalink / raw)
To: raman; +Cc: emacs-devel
[[[ To any NSA and FBI agents reading my email: please consider ]]]
[[[ whether defending the US Constitution against all enemies, ]]]
[[[ foreign or domestic, requires you to follow Snowden's example. ]]]
> I specifically want to run a function when a function becomes current
> and interactable by the user -- agreed that I dont want to run code in
> the case of set-buffer. For now, an after advice on select-window does
> nicely -- a select-window-hook would obviate the need for that advice
That too will cause trouble for debugging. I think it is better
for interfaces to simply operate on whatever buffer you're typing at.
What would you like to use select-window-hook to do? Let's look for
some way to achieve the ultimate goal.
--
Dr Richard Stallman
President, Free Software Foundation (gnu.org, fsf.org)
Internet Hall-of-Famer (internethalloffame.org)
Skype: No way! See stallman.org/skype.html.
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: HowTo: Run a hook when a buffer becomes "current"
2015-12-18 4:04 ` Richard Stallman
@ 2015-12-18 4:20 ` raman
2015-12-18 9:30 ` David Kastrup
` (2 more replies)
0 siblings, 3 replies; 24+ messages in thread
From: raman @ 2015-12-18 4:20 UTC (permalink / raw)
To: Richard Stallman; +Cc: emacs-devel
Richard Stallman <rms@gnu.org> writes:
I just sent a short follow-up to Karl's note, but here is a more
detailed explanation.
I'm implementing myself something I'm calling "SoundScapes" --I'm
building it within Emacspeak but it may well be useful more generally.
I got tired of having to listen to text-to-speech all day long and
wanted to see if having soft nature sounds in the background helped.
I didn't want to get distracted from what I'm working on by having to
select music that plays in the background etc -- and I discovered this
package http://boodler.org -- that lets me play a variety of soft nature
sounds in the background.
so i wrote myself module soundscape.el
Code: github.io/tvraman/emacspeak (lisp/soundscape.el) -- docs are here:
http://tvraman.github.io/emacspeak/manual/soundscape.html
I divided the types of things I do into categories:
(things I do == things I do in Emacs since I dont use anything else)
Communicate: mail, gnus, twitter, jabber etc
Program (prog-mode covers them all)
text-mode (write content)
special-mode: applications written in Emacs
web: eww, w3
Then I created a mapping from modes to soundscapes (think mode -> mood)
and finally, i attached myself to select-mode-hook to switch the
soundscape that is playing.
My first attempt at doing this failed badly -- I tried attaching myself
to buffer-list-update-hook -- it fails because that hook gets called way
too often.
I'm not wedded to the advice on select-window;
-- all I want is to be able to attach my soundscape-update-hook to
the right point in Emacs so that when a buffer becomes current, the set
of playing SoundScapes automatically change (both killing off
soundscapes that are now irrelevant vs starting ones that are now
relevant per the context.
--Raman
any NSA and FBI agents reading my email: please consider ]]]
> [[[ whether defending the US Constitution against all enemies, ]]]
> [[[ foreign or domestic, requires you to follow Snowden's example. ]]]
>
> > I specifically want to run a function when a function becomes current
> > and interactable by the user -- agreed that I dont want to run code in
> > the case of set-buffer. For now, an after advice on select-window does
> > nicely -- a select-window-hook would obviate the need for that advice
>
> That too will cause trouble for debugging. I think it is better
> for interfaces to simply operate on whatever buffer you're typing at.
>
> What would you like to use select-window-hook to do? Let's look for
> some way to achieve the ultimate goal.
--
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: HowTo: Run a hook when a buffer becomes "current"
2015-12-18 4:20 ` raman
@ 2015-12-18 9:30 ` David Kastrup
2015-12-18 16:15 ` raman
2015-12-19 4:37 ` Richard Stallman
2015-12-22 17:47 ` John Wiegley
2 siblings, 1 reply; 24+ messages in thread
From: David Kastrup @ 2015-12-18 9:30 UTC (permalink / raw)
To: raman; +Cc: Richard Stallman, emacs-devel
raman <raman@google.com> writes:
> I divided the types of things I do into categories:
> (things I do == things I do in Emacs since I dont use anything else)
>
> Communicate: mail, gnus, twitter, jabber etc
> Program (prog-mode covers them all)
> text-mode (write content)
> special-mode: applications written in Emacs
> web: eww, w3
>
> Then I created a mapping from modes to soundscapes (think mode -> mood)
> and finally, i attached myself to select-mode-hook to switch the
> soundscape that is playing.
Sounds to me as if you want to hook in the mode line update. Which then
becomes more of a mood line update.
--
David Kastrup
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: HowTo: Run a hook when a buffer becomes "current"
2015-12-18 3:19 ` raman
@ 2015-12-18 12:14 ` Marcin Borkowski
2015-12-18 16:18 ` raman
0 siblings, 1 reply; 24+ messages in thread
From: Marcin Borkowski @ 2015-12-18 12:14 UTC (permalink / raw)
To: raman; +Cc: Karl Fogel, emacs-devel
On 2015-12-18, at 04:19, raman <raman@google.com> wrote:
> 1 line summary:
>
> Adding "Soundscapes" -- quiet ambient nature sounds, that play in the
> background, and change based on what I'm doing -- eg programming vs
> communicating vs writing.
Raman, that sounds really, really cool!
Will it be possible to install e.g. Emms' playlists as soundscapes?
> Take a look at the docs here
> http://tvraman.github.io/emacspeak/manual/soundscape.html#soundscape
>
> --raman
Best,
--
Marcin Borkowski
http://octd.wmi.amu.edu.pl/en/Marcin_Borkowski
Faculty of Mathematics and Computer Science
Adam Mickiewicz University
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: HowTo: Run a hook when a buffer becomes "current"
2015-12-18 9:30 ` David Kastrup
@ 2015-12-18 16:15 ` raman
0 siblings, 0 replies; 24+ messages in thread
From: raman @ 2015-12-18 16:15 UTC (permalink / raw)
To: David Kastrup; +Cc: Richard Stallman, emacs-devel
David Kastrup <dak@gnu.org> writes:
mode-line-update ->mood-line-update:-)
Eventually I think that is correct if this whole thing actually and
proves useful in the sense:
For someone who can see the screen and configures emacs window layout to
reflect the current activity, the mood is best computed from the set of
visible windows/frames -- and there, latching on to mode-line might be
the right thing. For now I 'm keeping it simple by only looking at the
current buffer --
>
>> I divided the types of things I do into categories:
>> (things I do == things I do in Emacs since I dont use anything else)
>>
>> Communicate: mail, gnus, twitter, jabber etc
>> Program (prog-mode covers them all)
>> text-mode (write content)
>> special-mode: applications written in Emacs
>> web: eww, w3
>>
>> Then I created a mapping from modes to soundscapes (think mode -> mood)
>> and finally, i attached myself to select-mode-hook to switch the
>> soundscape that is playing.
>
> Sounds to me as if you want to hook in the mode line update. Which then
> becomes more of a mood line update.
--
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: HowTo: Run a hook when a buffer becomes "current"
2015-12-18 12:14 ` Marcin Borkowski
@ 2015-12-18 16:18 ` raman
2015-12-18 17:06 ` David Kastrup
0 siblings, 1 reply; 24+ messages in thread
From: raman @ 2015-12-18 16:18 UTC (permalink / raw)
To: Marcin Borkowski; +Cc: Karl Fogel, emacs-devel
Marcin Borkowski <mbork@mbork.pl> writes:
Re installing emms playlists as soundscapes -- I dont see why not --
take a look at the code -- should be easy to do.
One reason I eventually landed on randomly repeating nature sounds: With
music playlists, streaming radio etc -- the media that is playing
changes without being in lock-step with what you're doing.
My intuition (completely unproven at this point) is that such switches
were actually preventing me from focusing fully on my current
activity -- and where I was fully focused, the change in music as the
result of one track ending and another starting actually took my focus
away.
The reason I built this prototype where those changes are in lock-step
with my own activity changes wer specifically to mitigate that.
That said, this is all still conjecture that will either be proven or
disproven by usage over time.
emacspeak/lisp/soundscape.el should be runnable in vanilla Emacs -- let
me know if you happen to try it and hit any issues
> On 2015-12-18, at 04:19, raman <raman@google.com> wrote:
>
>> 1 line summary:
>>
>> Adding "Soundscapes" -- quiet ambient nature sounds, that play in the
>> background, and change based on what I'm doing -- eg programming vs
>> communicating vs writing.
>
> Raman, that sounds really, really cool!
>
> Will it be possible to install e.g. Emms' playlists as soundscapes?
>
>> Take a look at the docs here
>> http://tvraman.github.io/emacspeak/manual/soundscape.html#soundscape
>>
>> --raman
>
> Best,
--
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: HowTo: Run a hook when a buffer becomes "current"
2015-12-18 16:18 ` raman
@ 2015-12-18 17:06 ` David Kastrup
2015-12-18 18:13 ` Marcin Borkowski
0 siblings, 1 reply; 24+ messages in thread
From: David Kastrup @ 2015-12-18 17:06 UTC (permalink / raw)
To: raman; +Cc: Karl Fogel, emacs-devel
raman <raman@google.com> writes:
> Marcin Borkowski <mbork@mbork.pl> writes:
> Re installing emms playlists as soundscapes -- I dont see why not --
> take a look at the code -- should be easy to do.
>
> One reason I eventually landed on randomly repeating nature sounds: With
> music playlists, streaming radio etc -- the media that is playing
> changes without being in lock-step with what you're doing.
>
> My intuition (completely unproven at this point) is that such switches
> were actually preventing me from focusing fully on my current
> activity -- and where I was fully focused, the change in music as the
> result of one track ending and another starting actually took my focus
> away.
Well, I'm a musician in some reasonable sense of the word. Any music is
distracting me from programming. And the better, the worse.
--
David Kastrup
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: HowTo: Run a hook when a buffer becomes "current"
2015-12-18 17:06 ` David Kastrup
@ 2015-12-18 18:13 ` Marcin Borkowski
2015-12-18 18:28 ` T.V Raman
0 siblings, 1 reply; 24+ messages in thread
From: Marcin Borkowski @ 2015-12-18 18:13 UTC (permalink / raw)
To: David Kastrup; +Cc: Karl Fogel, emacs-devel, raman
On 2015-12-18, at 18:06, David Kastrup <dak@gnu.org> wrote:
> raman <raman@google.com> writes:
>
>> Marcin Borkowski <mbork@mbork.pl> writes:
>> Re installing emms playlists as soundscapes -- I dont see why not --
>> take a look at the code -- should be easy to do.
>>
>> One reason I eventually landed on randomly repeating nature sounds: With
>> music playlists, streaming radio etc -- the media that is playing
>> changes without being in lock-step with what you're doing.
>>
>> My intuition (completely unproven at this point) is that such switches
>> were actually preventing me from focusing fully on my current
>> activity -- and where I was fully focused, the change in music as the
>> result of one track ending and another starting actually took my focus
>> away.
>
> Well, I'm a musician in some reasonable sense of the word. Any music is
> distracting me from programming. And the better, the worse.
Interesting.
My subjective feeling is that some music distracts me more: namely,
vocal more than instrumental, and unknown more than known.
I also did some measurements (a long time ago), and it turned out that
music and learning did not go well together.
Best,
--
Marcin Borkowski
http://octd.wmi.amu.edu.pl/en/Marcin_Borkowski
Faculty of Mathematics and Computer Science
Adam Mickiewicz University
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: HowTo: Run a hook when a buffer becomes "current"
2015-12-18 18:13 ` Marcin Borkowski
@ 2015-12-18 18:28 ` T.V Raman
2015-12-18 20:12 ` Drew Adams
0 siblings, 1 reply; 24+ messages in thread
From: T.V Raman @ 2015-12-18 18:28 UTC (permalink / raw)
To: mbork; +Cc: kfogel, dak, emacs-devel, raman
In general, soft nature sounds eg light-rain, soft waves, wind -- that
repeat in a pseudo-random pattern appear to work well in this regard
-- the repetition actually appears to aid in concentration. Anyway,
try out boodler.org -- it's a python package and is fun to play with.
Marcin Borkowski writes:
>
>
> On 2015-12-18, at 18:06, David Kastrup <dak@gnu.org> wrote:
>
> > raman <raman@google.com> writes:
> >
> >> Marcin Borkowski <mbork@mbork.pl> writes:
> >> Re installing emms playlists as soundscapes -- I dont see why not --
> >> take a look at the code -- should be easy to do.
> >>
> >> One reason I eventually landed on randomly repeating nature sounds: With
> >> music playlists, streaming radio etc -- the media that is playing
> >> changes without being in lock-step with what you're doing.
> >>
> >> My intuition (completely unproven at this point) is that such switches
> >> were actually preventing me from focusing fully on my current
> >> activity -- and where I was fully focused, the change in music as the
> >> result of one track ending and another starting actually took my focus
> >> away.
> >
> > Well, I'm a musician in some reasonable sense of the word. Any music is
> > distracting me from programming. And the better, the worse.
>
> Interesting.
>
> My subjective feeling is that some music distracts me more: namely,
> vocal more than instrumental, and unknown more than known.
>
> I also did some measurements (a long time ago), and it turned out that
> music and learning did not go well together.
>
> Best,
>
> --
> Marcin Borkowski
> http://octd.wmi.amu.edu.pl/en/Marcin_Borkowski
> Faculty of Mathematics and Computer Science
> Adam Mickiewicz University
--
--
^ permalink raw reply [flat|nested] 24+ messages in thread
* RE: HowTo: Run a hook when a buffer becomes "current"
2015-12-18 18:28 ` T.V Raman
@ 2015-12-18 20:12 ` Drew Adams
0 siblings, 0 replies; 24+ messages in thread
From: Drew Adams @ 2015-12-18 20:12 UTC (permalink / raw)
To: raman, mbork; +Cc: kfogel, dak, emacs-devel
Don't y'all think it might be time to move this to the tangents list?
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: HowTo: Run a hook when a buffer becomes "current"
2015-12-18 4:20 ` raman
2015-12-18 9:30 ` David Kastrup
@ 2015-12-19 4:37 ` Richard Stallman
2015-12-19 16:43 ` raman
2015-12-22 17:47 ` John Wiegley
2 siblings, 1 reply; 24+ messages in thread
From: Richard Stallman @ 2015-12-19 4:37 UTC (permalink / raw)
To: raman; +Cc: emacs-devel
You could arrange a timer to tell the soundscape program
once a second or so which buffer is selected.
--
Dr Richard Stallman
President, Free Software Foundation (gnu.org, fsf.org)
Internet Hall-of-Famer (internethalloffame.org)
Skype: No way! See stallman.org/skype.html.
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: HowTo: Run a hook when a buffer becomes "current"
2015-12-19 4:37 ` Richard Stallman
@ 2015-12-19 16:43 ` raman
2015-12-19 17:07 ` Dmitry Gutov
0 siblings, 1 reply; 24+ messages in thread
From: raman @ 2015-12-19 16:43 UTC (permalink / raw)
To: Richard Stallman; +Cc: emacs-devel
Richard Stallman <rms@gnu.org> writes:
Which would be far harder to debug :-)
--8<---------------cut here---------------start------------->8---
> You could arrange a timer to tell the soundscape program
> once a second or so which buffer is selected.
--8<---------------cut here---------------end--------------->8---
--
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: HowTo: Run a hook when a buffer becomes "current"
2015-12-19 16:43 ` raman
@ 2015-12-19 17:07 ` Dmitry Gutov
2015-12-20 3:07 ` raman
0 siblings, 1 reply; 24+ messages in thread
From: Dmitry Gutov @ 2015-12-19 17:07 UTC (permalink / raw)
To: raman, Richard Stallman; +Cc: emacs-devel
On 12/19/2015 06:43 PM, raman wrote:
> Which would be far harder to debug :-)
Not really. Timers are pretty easy to debug.
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: HowTo: Run a hook when a buffer becomes "current"
2015-12-19 17:07 ` Dmitry Gutov
@ 2015-12-20 3:07 ` raman
0 siblings, 0 replies; 24+ messages in thread
From: raman @ 2015-12-20 3:07 UTC (permalink / raw)
To: Dmitry Gutov; +Cc: Richard Stallman, emacs-devel
Dmitry Gutov <dgutov@yandex.ru> writes:
>
>> Which would be far harder to debug :-)
>
> Not really. Timers are pretty easy to debug.
>
So are hooks . And for that matter so is advice -- given that you can easily activate, deactivate, enable or disable advice forms.> On 12/19/2015 06:43 PM, raman wrote:
--
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: HowTo: Run a hook when a buffer becomes "current"
2015-12-18 4:20 ` raman
2015-12-18 9:30 ` David Kastrup
2015-12-19 4:37 ` Richard Stallman
@ 2015-12-22 17:47 ` John Wiegley
2015-12-22 18:19 ` raman
2 siblings, 1 reply; 24+ messages in thread
From: John Wiegley @ 2015-12-22 17:47 UTC (permalink / raw)
To: raman; +Cc: Richard Stallman, emacs-devel
>>>>> raman <raman@google.com> writes:
> I'm implementing myself something I'm calling "SoundScapes" --I'm building
> it within Emacspeak but it may well be useful more generally.
I really like the idea of soundscapes, Raman.
As a first approximation -- that is, before requiring a new hook to try out
the utility of your idea -- I'd recommend using a timer that checks the buffer
of the currently selected window is.
I doubt it's even desirable to change the music instantly whenever the buffer
changes; in some cases, that could become quite jarring. A timer not only
solves your problem quite simply, but allows for customization opportunities
like "cross-fading" after you know that the user has been in the new buffer
for X milliseconds. This would prevent quick Org capture buffers from
disrupting the music of my Gnus summary buffer, for example.
--
John Wiegley GPG fingerprint = 4710 CF98 AF9B 327B B80F
http://newartisans.com 60E1 46C4 BD1A 7AC1 4BA2
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: HowTo: Run a hook when a buffer becomes "current"
2015-12-22 17:47 ` John Wiegley
@ 2015-12-22 18:19 ` raman
0 siblings, 0 replies; 24+ messages in thread
From: raman @ 2015-12-22 18:19 UTC (permalink / raw)
To: Richard Stallman; +Cc: emacs-devel
John,
thanks for the reply:-)
For now I've implemented it with an advice on select-window --- and am
working on the Soundscapes themselves.
When I've made more progress, I'll write up what I learn re Emacs'
facilities for doing something like this -- email discussions tend to
drift after a while.
What I've learnt so far:
1. hook buffer-list-update-hook doesn't match its documentation --
2. select-window doc-string recommends the above hook and likely needs
to be updated
Re fading in and out rather than abruptly switching:
My first "get it working" idea killed and started new processes when
switching.
Next I tried stop-process which turns out be disfunctional on Linux --
so I'm now writing myself a more sophisticated Boodler Agent that
handles the fade-in/fade-out.
Anyway it's proving a fun holiday hack:-)
--
^ permalink raw reply [flat|nested] 24+ messages in thread
end of thread, other threads:[~2015-12-22 18:19 UTC | newest]
Thread overview: 24+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-12-16 16:37 HowTo: Run a hook when a buffer becomes "current" raman
2015-12-16 21:51 ` Nicolas Richard
2015-12-16 23:04 ` David Kastrup
2015-12-16 23:20 ` T.V Raman
2015-12-17 4:58 ` Richard Stallman
2015-12-17 16:15 ` raman
2015-12-18 4:04 ` Richard Stallman
2015-12-18 4:20 ` raman
2015-12-18 9:30 ` David Kastrup
2015-12-18 16:15 ` raman
2015-12-19 4:37 ` Richard Stallman
2015-12-19 16:43 ` raman
2015-12-19 17:07 ` Dmitry Gutov
2015-12-20 3:07 ` raman
2015-12-22 17:47 ` John Wiegley
2015-12-22 18:19 ` raman
2015-12-18 1:56 ` Karl Fogel
2015-12-18 3:19 ` raman
2015-12-18 12:14 ` Marcin Borkowski
2015-12-18 16:18 ` raman
2015-12-18 17:06 ` David Kastrup
2015-12-18 18:13 ` Marcin Borkowski
2015-12-18 18:28 ` T.V Raman
2015-12-18 20:12 ` Drew Adams
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).