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:
parent
0929e061fb
commit
76b08a35bb
4
etc/NEWS
4
etc/NEWS
@ -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
|
||||
|
||||
---
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user