GNU bug report logs -
#38164
quit-restore-window doesn't restore point in man
Previous Next
Reported by: Juri Linkov <juri <at> linkov.net>
Date: Sun, 10 Nov 2019 20:57:01 UTC
Severity: minor
Done: Lars Ingebrigtsen <larsi <at> gnus.org>
Bug is archived. No further changes may be made.
Full log
View this message in rfc822 format
>>>> (progn
>>>> (man "XYZ")
>>>> (read-string "-->"))
>>>>
>>>> This is because quit-restore-window moves point to wrong window.
>>>
>>> What should 'quit-restore-window' do here in particular?
>>
>> quit-restore-window should move point to old-selected-window,
>> i.e. the minibuffer window that was selected before Man-bgproc-sentinel
>> kicked in. But I don't understand why it's not doing that.
>
> I'm not sure what you mean. At the time 'man' calls 'display-buffer',
> the latter simply records the window returned by 'selected-window' as
> the one to reselect when the *Man XYZ* window gets deleted. That
> recorded window is not the minibuffer window here, even if I evaluate
> the form via M-:. Am I missing something?
Removing these lines from 'quit-restore-window' fixes the problem:
;; Select old window.
(when (window-live-p (nth 2 quit-restore))
(select-window (nth 2 quit-restore)))
If there lines are the whole purpose of 'quit-restore-window',
then in man.el we need to reselect the original window explicitly:
diff --git a/lisp/man.el b/lisp/man.el
index ce01fdc805..76890f74a9 100644
--- a/lisp/man.el
+++ b/lisp/man.el
@@ -1469,8 +1469,10 @@ Man-bgproc-sentinel
(when delete-buff
(if (window-live-p (get-buffer-window Man-buffer t))
- (quit-restore-window
- (get-buffer-window Man-buffer t) 'kill)
+ (progn
+ (quit-restore-window
+ (get-buffer-window Man-buffer t) 'kill)
+ (select-window (old-selected-window)))
(kill-buffer Man-buffer)))
(when message
This bug report was last modified 4 years and 47 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.