all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Stefan Monnier <monnier@iro.umontreal.ca>
To: Eli Zaretskii <eliz@gnu.org>
Cc: josh+gnu@nispio.net, 18739@debbugs.gnu.org
Subject: bug#18739: 24.3; Request for a hook to be provided when scrolling will move the cursor
Date: Thu, 16 Oct 2014 09:44:34 -0400	[thread overview]
Message-ID: <jwviojktapv.fsf-monnier+emacsbugs@gnu.org> (raw)
In-Reply-To: <83r3y84iuv.fsf@gnu.org> (Eli Zaretskii's message of "Thu, 16 Oct 2014 09:41:12 +0300")

>> >> It would be helpful to have a hook that would be called before any
>> >> scrolling command moves the cursor.  In other words, I want to be
>> >> notified when an update to the display will force the location of
>> >> `point' to change in the current buffer.
>> > What's wrong with window-scroll-functions?
>> But these are also called when point is not affected, right?
> Yes.  But it's easy to detect that situation, I think.

Is it?

I think the main reason why I ask is because I truly have no idea when
window-scroll-functions is called.  You seem to be somewhat familiar
with it, so could you try and clarify it in the docstring?

Currently I see "List of functions to call before redisplaying a window
with scrolling" and "Note that these functions are also called by
`set-window-buffer'".

Here are some of the questions this brings up for me:
- is it called during set-window-buffer itself, or is it called in the
  first redisplay after set-window-buffer?
- what means "redisplaying a window with scrolling" exactly?  Does it
  mean "redisplay with a different window-start then during the last
  redisplay"?  Does that include the case where window-start is changed
  so as to follow point or is it only the cases where window-start was
  changed explicitly by a scrolling command?
- how could a window-scroll-function distinguish the 3 cases:
  "set-window-buffer", "used a scroll command", "moved point out of viewport".

I tried already a few times to understand window-scroll-functions, but
so far it has eluded me.  FWIW, I found 3 kinds of uses:
- A crutch from when jit-lock didn't exist (in linum and lazy-lock).
- A way to try and keep a window fully empty showing only point-max by
  calling set-window-start with the same window-start (in follow-mode).
  Not clear exactly why this should work, and arguably goes against the
  warning in window-scroll-functions's docstring.
- Do fancy auto-scrolling in eshell/em-smart (which does exactly what
  window-scroll-functions's docstring warns not to do, AFAICT), calling
  redisplay internally.


        Stefan





  reply	other threads:[~2014-10-16 13:44 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-10-15 18:51 bug#18739: 24.3; Request for a hook to be provided when scrolling will move the cursor Josh
2014-10-15 20:43 ` Eli Zaretskii
2014-10-15 21:01   ` Josh
2014-10-15 21:08     ` Eli Zaretskii
2014-10-15 21:12       ` Josh Hunsaker
2014-10-15 21:27         ` Ivan Shmakov
2014-10-16  6:36         ` Eli Zaretskii
2014-10-16  7:15           ` Andreas Schwab
2014-10-16  7:33             ` Eli Zaretskii
2014-10-16  7:38               ` Andreas Schwab
2014-10-16  7:50                 ` Eli Zaretskii
2014-10-15 22:48   ` Stefan Monnier
2014-10-16  6:41     ` Eli Zaretskii
2014-10-16 13:44       ` Stefan Monnier [this message]
2014-10-16 13:53         ` Josh
2014-10-16 14:25           ` Eli Zaretskii
2014-10-16 14:35             ` Josh
2014-10-16 14:46               ` Eli Zaretskii
2014-10-16 14:58                 ` Josh
2014-10-16 15:00                   ` Eli Zaretskii
2022-04-27 18:45                   ` Lars Ingebrigtsen
2014-10-16 14:13         ` Eli Zaretskii
2014-10-16 15:13           ` Stefan Monnier
2014-10-16 15:32             ` Josh
2014-10-16 15:54             ` Eli Zaretskii
2014-10-16 19:28               ` Stefan Monnier
2014-10-16 20:28                 ` Eli Zaretskii
2014-10-16 21:24                   ` Stefan Monnier
2014-10-17  6:38                     ` Eli Zaretskii
2014-10-17 13:04                       ` Stefan Monnier
2014-10-17 13:16                         ` Eli Zaretskii
2014-10-17 17:02                           ` Stefan Monnier

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

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=jwviojktapv.fsf-monnier+emacsbugs@gnu.org \
    --to=monnier@iro.umontreal.ca \
    --cc=18739@debbugs.gnu.org \
    --cc=eliz@gnu.org \
    --cc=josh+gnu@nispio.net \
    /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 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.