Subject: Re: bug#35860: Delayed window positioning after buffer display

From: Juri Linkov <[email-masked]>
Date: Thu, 23 May 2019 23:56:17 +0300

>> There are commands that set point while the buffer is not displayed,
>> and after displaying the buffer point remains at an old position,
>> not where it was moved while the buffer was undisplayed.
>
> That's a feature, isn't it?  See switch-to-buffer-preserve-window-point.

IIUC, it tries to preserve the previous position of window-point,
but the required feature should set point when the buffer
is displayed for the first time.

>> One solution is to generalize the variable 'help-window-point-marker'
>> currently described as:
>> 
>>   ;; `help-window-point-marker' is a marker you can move to a valid
>>   ;; position of the buffer shown in the help window in order to override
>>   ;; the standard positioning mechanism (`point-min') chosen by
>>   ;; `with-output-to-temp-buffer' and `with-temp-buffer-window'.
>>   ;; `with-help-window' has this point nowhere before exiting.  Currently
>>   ;; used by `view-lossage' to assert that the last keystrokes are always
>>   ;; visible.
>>   (defvar help-window-point-marker (make-marker)
>>     "Marker to override default `window-point' in help windows.")
>
> Why not bind switch-to-buffer-preserve-window-point to nil instead?

I don't know.  I tried to replace

  (set-marker help-window-point-marker (point))

with

  (goto-char (point-max))
  (setq-local switch-to-buffer-preserve-window-point nil)

and it doesn't set point to the end of the Help buffer
when it's displayed for the first time.