From 0e8fc556b669cbb4794b76b8197519f808083dac Mon Sep 17 00:00:00 2001
From: Lars Ingebrigtsen <larsi@gnus.org>
Date: Tue, 3 May 2022 12:23:25 +0200
Subject: [PATCH] Make more buttons in *Help* respect
 `help-window-keep-selected'

* lisp/help-mode.el (help-function-cmacro, help-variable-def)
(help-face-def): Also respect `help-window-keep-selected' like the
other commands.
---
 lisp/help-mode.el | 17 +++++++++++++----
 1 file changed, 13 insertions(+), 4 deletions(-)

diff --git a/lisp/help-mode.el b/lisp/help-mode.el
index c725c0f1a15..94bd5911311 100644
--- a/lisp/help-mode.el
+++ b/lisp/help-mode.el
@@ -296,7 +296,10 @@ The format is (FUNCTION ARGS...).")
 		   (setq file (locate-library file t))
 		   (if (and file (file-readable-p file))
 		       (progn
-			 (pop-to-buffer (find-file-noselect file))
+                         (if help-window-keep-selected
+			     (pop-to-buffer-same-window
+                              (find-file-noselect file))
+                           (pop-to-buffer (find-file-noselect file)))
                          (widen)
 			 (goto-char (point-min))
 			 (if (re-search-forward
@@ -315,7 +318,9 @@ The format is (FUNCTION ARGS...).")
 		     (setq file (help-C-file-name var 'var)))
 		   (let* ((location (find-variable-noselect var file))
                           (position (cdr location)))
-		     (pop-to-buffer (car location))
+                     (if help-window-keep-selected
+		         (pop-to-buffer-same-window (car location))
+                       (pop-to-buffer (car location)))
 		     (run-hooks 'find-function-after-hook)
                      (if position
                            (progn
@@ -336,7 +341,9 @@ The format is (FUNCTION ARGS...).")
 		   (let* ((location
 			  (find-function-search-for-symbol fun 'defface file))
                          (position (cdr location)))
-		     (pop-to-buffer (car location))
+                     (if help-window-keep-selected
+                         (pop-to-buffer-same-window (car location))
+		       (pop-to-buffer (car location)))
                      (if position
                            (progn
                              ;; Widen the buffer if necessary to go to this position.
@@ -378,7 +385,9 @@ The format is (FUNCTION ARGS...).")
   :supertype 'help-xref
   'help-function
   (lambda (file pos)
-    (view-buffer-other-window (find-file-noselect file))
+    (if help-window-keep-selected
+        (view-buffer (find-file-noselect file))
+      (view-buffer-other-window (find-file-noselect file)))
     (goto-char pos))
   'help-echo (purecopy "mouse-2, RET: show corresponding NEWS announcement"))
 
-- 
2.39.5