[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#22404: 25.1.50; Forcing `window-scroll-functions` to run.
From: |
Keith David Bershatsky |
Subject: |
bug#22404: 25.1.50; Forcing `window-scroll-functions` to run. |
Date: |
Tue, 19 Jan 2016 10:49:57 -0800 |
Thank you, Eli, for taking a look at this feature request.
The post-command-hook ("PCH") is only sufficient to return the correct
window-start and window-end when no scrolling occurs. If I attach a function
to the PCH that places overlays, then I would need to know programmatically
with 100% certainty whether the window-scroll-functions ("WSF") will be running
one or more times subsequent to the PCH. If the WSF will be running one or
more times subsequent to the PCH, then I want to programmatically *prevent*
overlays from being placed with the PCH -- i.e., so that they can instead be
placed by the WSF. If the WSF will run more than once, then I want to wait
until the last time it runs to place my overlays -- i.e., because start/end
have changed since the first time WSF ran. E.g., point was partially visible
and redisplay brings it into full view.
I was not able to come up with a 100% reliable test from the PCH that tells me
whether WSF will be running one or more times subsequent thereto. So, I am
using the following work-around to force the WSF to run all the time. The
problem remaining is that I still need a reliable test to determine whether the
WSF will be running more than once, so that I can delay my overlay function
until the last call. The feature request is essentially: trigger WSF (similar
to set-window-buffer), but there is no need to set-window-buffer and there is
no need to run the window-configuration-change-hook. If there is any way you
can think of to programmatically know with 100% certainty whether the WSF will
be running more than one time, your help would be greatly appreciated.
(setq scroll-conservatively 101)
(defun pch-fn ()
(let ((window-configuration-change-hook nil))
(set-window-buffer (selected-window) (current-buffer) 'keep-margins)))
(add-hook 'post-command-hook 'pch-fn nil 'local)
(defun wsf-fn (win start)
(message "win: %s | start: %s | end: %s" win start (window-end win t)))
(add-hook 'window-scroll-functions 'wsf-fn nil 'local)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
At Tue, 19 Jan 2016 19:50:08 +0200,
Eli Zaretskii wrote:
>
> * * *
>
> Can you please tell more details about the problem you have? I;ve
> read this description several times, and couldn't figure out why are
> you having problems.
>
> For example, why can't you run your function from the
> post-command-hook directly? If you want it to run after all the hook
> functions finished, you can use the APPEND argument to add-hook,
> right?
>
> Or if the above somehow doesn't work, what about pre-command-hook?
>
> And those are just 2 random thoughts that went through my head while I
> was reading your request.
>
> Thanks.
- bug#22404: 25.1.50; Forcing `window-scroll-functions` to run., Keith David Bershatsky, 2016/01/19
- bug#22404: 25.1.50; Forcing `window-scroll-functions` to run., Eli Zaretskii, 2016/01/19
- bug#22404: 25.1.50; Forcing `window-scroll-functions` to run.,
Keith David Bershatsky <=
- bug#22404: 25.1.50; Forcing `window-scroll-functions` to run., John Wiegley, 2016/01/19
- bug#22404: 25.1.50; Forcing `window-scroll-functions` to run., Keith David Bershatsky, 2016/01/19
- bug#22404: 25.1.50; Forcing `window-scroll-functions` to run., Keith David Bershatsky, 2016/01/19
- bug#22404: 25.1.50; Forcing `window-scroll-functions` to run., Keith David Bershatsky, 2016/01/19
- bug#22404: 25.1.50; Forcing `window-scroll-functions` to run., Keith David Bershatsky, 2016/01/20
- bug#22404: 25.1.50; Forcing `window-scroll-functions` to run., Keith David Bershatsky, 2016/01/21