1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2025-01-10 15:56:18 +00:00

Teach browse-url to open man page urls

* lisp/net/browse-url.el (browse-url-man-function): New custom option.
(browse-url): Add a condition to catch links matching "^man:".
(browse-url-man): New function.
This commit is contained in:
Mark Oteiza 2016-10-21 11:23:39 -04:00
parent 0929e061fb
commit 76b08a35bb
2 changed files with 28 additions and 0 deletions

View File

@ -275,6 +275,10 @@ whose content matches a regexp; bound to '% g'.
'ibuffer-never-search-content-mode' used by
'ibuffer-mark-by-content-regexp'.
** Browse-URL
*** Support for opening links to man pages in Man or WoMan mode.
** Compilation mode
---

View File

@ -184,6 +184,15 @@ be used instead."
:version "24.1"
:group 'browse-url)
(defcustom browse-url-man-function 'browse-url-man
"Function to display man: links."
:type '(radio
(function-item :tag "Emacs Man" :value browse-url-man)
(const :tag "None" nil)
(function :tag "Other function"))
:version "26.1"
:group 'browse-url)
(defcustom browse-url-netscape-program "netscape"
;; Info about netscape-remote from Karl Berry.
"The name by which to invoke Netscape.
@ -801,6 +810,8 @@ as ARGS."
(let ((process-environment (copy-sequence process-environment))
(function (or (and (string-match "\\`mailto:" url)
browse-url-mailto-function)
(and (string-match "\\`man:" url)
browse-url-man-function)
browse-url-browser-function))
;; Ensure that `default-directory' exists and is readable (b#6077).
(default-directory (or (unhandled-file-name-directory default-directory)
@ -1588,6 +1599,19 @@ used instead of `browse-url-new-window-flag'."
(unless (bolp)
(insert "\n"))))))))
;; --- man ---
(defvar manual-program)
(defun browse-url-man (url &optional _new-window)
"Open a man page."
(interactive (browse-url-interactive-arg "Man page URL: "))
(require 'man)
(setq url (replace-regexp-in-string "\\`man:" "" url))
(cond
((executable-find manual-program) (man url))
(t (woman (replace-regexp-in-string "([[:alnum:]]+)" "" url)))))
;; --- Random browser ---
;;;###autoload