I have a question about this, namely: how to make a line the 'window start'?
Using 'set-window-start` does not work.
From 'emacs -Q' (which starts within the scratch buffer),
immediately evaluate
(set-window-start nil (point))
to set the 'new' window start. Subsequently do
(set-window-vscroll nil 1)
it will scroll from the start of the buffer, and not from the 'new' window start
as I would expect
(of course, here there are no lines after the 'new' window start, but you could
insert 1 to 3 on separate lines then set the line with 1 to window start, but this
does not really change anything).