branch: externals/perl-doc
commit 8641934da5d611885a54c98c5d11e430d26a4109
Author: Harald Jörg <h...@posteo.de>
Commit: Harald Jörg <h...@posteo.de>

    Feature: New user option perl-doc-window
    
    Controls whether new Perl documentation is displayed
    by splitting the current window (default), using the whole
    window, using a new frame each time or use a dedicated
    frame for perl-doc-mode buffers.  Requested by
    https://github.com/HaraldJoerg/emacs-perl-doc/issues/3.
---
 ChangeLog   | 30 ++++++++++++++++++++++++++++++
 perl-doc.el | 42 +++++++++++++++++++++++++++++++++++++-----
 2 files changed, 67 insertions(+), 5 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index c62b079877..4db88b1fa4 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,33 @@
+2025-06-04  Harald Jörg  <h...@posteo.de>
+
+       Trial version:
+
+       * perl-doc.el: New user option 'perl-doc-window'
+       to control where perl-doc will display Perl documentation.
+       Requested in https://github.com/HaraldJoerg/emacs-perl-doc/issues/3.
+
+2023-08-05  Harald Jörg  <h...@posteo.de>
+
+       Version 0.81:
+
+       * perl-doc.el (perl-doc--index-available-p): New function to
+       indicate whether we can run imenu.
+       * perl-doc.el (perl-doc--render-pod): Delete run of
+       `perl-doc--process-region'
+       (perl-doc): Make completion work in Emacs 27/28 (Fixes #2)
+       Recognize atan2 as a function (Fixes #1)
+       (perl-doc--speedbar-view-source): New function to view POD sources
+       from the speedbar menu
+       (perl-doc-speedbar-menu-items): Add menu items to view POD and its
+       source to the speedbar context menu
+       (perl-doc--insert-file-button): Don't show a "+" for modules if
+       imenu isn't available
+       * (perl-doc-speedbar-view-pod): Fix an error
+       discovered by relint
+
+       * test/perl-doc-tests.el (perl-doc-test-process-links): Test one
+       more edge case from open.pm
+
 2022-09-29  Harald Jörg  <h...@posteo.de>
 
        * perl-doc.el (perl-doc-with-L-grammar): Allow the vertical bar in
diff --git a/perl-doc.el b/perl-doc.el
index 0e45b1b553..359cbe7dbb 100644
--- a/perl-doc.el
+++ b/perl-doc.el
@@ -112,6 +112,23 @@ be used by the Perl interpreter."
   :group 'perl-doc
   :type '(repeat directory))
 
+(defcustom perl-doc-window 'default
+  "Where `perl-doc' displays Perl documentation.
+same-window -- use the current window
+frame       -- use a new frame
+same-frame  -- reuse a frame already showing Perl documentation
+default     -- use the default selection of `pop-to-buffer'.
+Any other value behaves like 'default'.
+With the default setting, `perl-doc' can be customized to any desired
+behavior by using the user options `display-buffer-alist' and
+`display-buffer-base-action'."
+  :group 'perl-doc
+  :type '(radio
+          (const default)
+          (const same-window)
+          (const same-frame)
+          (const frame)))
+
 (defvar perl-doc--debug nil
   "If non-nil, unrecognized POD links are reported to the message buffer.
 This is only relevant for developers, not for users.")
@@ -541,8 +558,23 @@ function or a variable."
        (setq-local perl-doc-window-width
                    (window-body-width (selected-window) t))))
   ;; Eventually, show the buffer and store current variables
-  (or noselect
-      (pop-to-buffer perldoc-buffer))))
+    (or noselect
+       (cond
+        ((equal perl-doc-window 'same-window)
+         (pop-to-buffer-same-window perldoc-buffer))
+        ((equal perl-doc-window 'frame)
+         (pop-to-buffer perldoc-buffer
+                        '((display-buffer-reuse-window
+                           display-buffer-pop-up-frame)
+                          (reusable-frames . visible))))
+        ((equal perl-doc-window 'same-frame)
+         (pop-to-buffer perldoc-buffer
+                        '((display-buffer-reuse-window
+                           display-buffer-reuse-mode-window
+                           display-buffer-pop-up-frame)
+                          (mode . perl-doc-mode)
+                          (reusable-frames . 0))))
+        (t (pop-to-buffer perldoc-buffer))))))
 
 ;;;###autoload
 (defun perl-doc (word &optional section)
@@ -596,7 +628,7 @@ This retrieves the corresponding section from the perlfunc 
page.
 No completion is done (yet).  Sorry."
   (interactive "MFunction name: ")
   (perl-doc--common topic 'perl-function))
-    
+
 ;;;###autoload
 (defun perl-doc-variable (topic)
   "Get Perl documentation for a builtin function WORD.
@@ -604,7 +636,7 @@ This retrieves the corresponding section from the perlfunc 
page.
 No completion is done (yet).  Sorry."
   (interactive "MVariable name: ")
   (perl-doc--common topic 'perl-variable))
-    
+
 ;;;###autoload
 (defun perl-doc-file (file)
   "Run `perl-doc' on FILE.
@@ -1189,7 +1221,7 @@ already there, nil otherwise."
      (pcase topic
        ((pred perl-doc--language-documentation-p)
        "0:<.> Perl Language")
-       ((pred perl-doc--module-documentation-p) 
+       ((pred perl-doc--module-documentation-p)
        "0:<.> Modules")
        ((pred perl-doc--old-delta-p)
        "0:<.> Old perldeltas")))

Reply via email to