Subject: bug#21649: closed (Re: 25.0.50; [PATCH] Allow M-x man to reuse an existing window)

From: [email-masked] (GNU bug Tracking System)
Date: Thu, 10 Mar 2016 09:57:02 +0000

Your bug report

#21649: 25.0.50; [PATCH] Allow M-x man to reuse an existing window

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
21649: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=21649
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: 25.0.50; [PATCH] Allow M-x man to reuse an existing window
From: Nicolas Richard <[email-masked]>
To: martin rudalics <[email-masked]>
Cc: [email-masked]
Date: Thu, 10 Mar 2016 10:55:35 +0100
List-Id: <debbugs-submit.debbugs.gnu.org>

Thanks for your review, martin. I pushed the modified commit to master
as 2d382515bfdb44d585bda6515f8d03f9056a83ef.

I'm marking this bug as done since one can now do 
(setq display-buffer-alist
      (list
       (cons "\\`\\*Man .*\\*\\'"
             (cons
              #'display-buffer-reuse-mode-window
              '((inhibit-same-window . nil))))))
to get the effect mentionned in the initial report.

-- 
Nicolas.

Subject: 25.0.50; [PATCH] Allow M-x man to reuse an existing window
From: Nicolas Richard <[email-masked]>
To: [email-masked]
Date: Thu, 08 Oct 2015 17:54:02 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

When running M-x man RET man RET, then C-x o to select the newly created
window and then running M-x man RET sed RET, what you get is: two "man"
windows side by side. It would make sense to re-use the existing one.

How to best do that I do not know. If modifying the code is necessary,
here's an attempt at adding an option in Man-notify-method. (I'm not
attached to this implementation, and even less attached to the silly
name `manly' that I chose, btw.)

>From 2b812b1c9f91af2cf6116f1d4e334154ae44c724 Mon Sep 17 00:00:00 2001
From: Nicolas Richard <[email-masked]>
Date: Thu, 8 Oct 2015 10:50:07 +0200
Subject: [PATCH] Allow M-x man to reuse an existing window

* man.el (Man-notify-when-ready): add `manly' option.
(Man-notify-method): augment docstring accordingly.
---
 lisp/man.el | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/lisp/man.el b/lisp/man.el
index c5dbcba..a02ee79 100644
--- a/lisp/man.el
+++ b/lisp/man.el
@@ -91,6 +91,8 @@
 (require 'ansi-color)
 (require 'cl-lib)
 (require 'button)
+(require 'subr-x)
+(require 'seq)
 
 (defgroup man nil
   "Browse UNIX manual pages."
@@ -162,6 +164,8 @@ (defcustom Man-notify-method (if (boundp 'Man-notify) Man-notify 'friendly)
 bully      -- make the manpage the current buffer and only window (sf)
 aggressive -- make the manpage the current buffer in the other window (sf)
 friendly   -- display manpage in the other window but don't make current (sf)
+manly      -- like `friendly' but re-use a window displaying a man page if
+              possible (sf)
 polite     -- don't display manpage, but prints message and beep when ready
 quiet      -- like `polite', but don't beep
 meek       -- make no indication that the manpage is ready
@@ -1166,6 +1170,16 @@ (defun Man-notify-when-ready (man-buffer)
        (and (frame-live-p saved-frame)
             (select-frame saved-frame))
        (display-buffer man-buffer 'not-this-window))
+      (`manly
+       (and (frame-live-p saved-frame)
+            (select-frame saved-frame))
+       (if-let ((window (seq-some-p
+                         (lambda (window)
+                           (with-current-buffer (window-buffer window)
+                             (derived-mode-p 'Man-mode)))
+                         (window-list))))
+           (set-window-buffer window man-buffer)
+         (display-buffer man-buffer)))
       (`polite
        (beep)
        (message "Manual buffer %s is ready" (buffer-name man-buffer)))
-- 
2.4.6