No, that's not what I meant. In that case redisplay does not scroll
and does not move point. Point simply becomes invisible.
No, redisplay will never accept a result that point is invisible. If
it ever does display such situations, it's a bug that needs to be
fixed.
Never say never...
It becomes visible again after the next redisplay, a second or two
later.
If such a situation exists, please describe how to reproduce it,
because it's a bug we need to fix. Emacs should never display a
window where point is not fully visible.
Here's a recipe:
emacs -Q
(defun recipe ()
(interactive)
(set-frame-width nil 80)
(set-frame-height nil 30)
(switch-to-buffer (get-buffer-create "*Recipe*"))
(goto-char 1)
(let ((i 0)) (while (< i 60) (setq i (1+ i)) (insert (format "L%d\n" i))))
(goto-char 148)
(sit-for 0.25)
(add-hook 'window-scroll-functions (lambda (&rest args) (set-window-start
nil 1)))
(forward-line 13))
M-x recipe
press C-n