diff options
author | Mark Oteiza <mvoteiza@udel.edu> | 2016-10-21 11:23:39 -0400 |
---|---|---|
committer | Mark Oteiza <mvoteiza@udel.edu> | 2016-10-21 11:32:29 -0400 |
commit | 76b08a35bb6b3b32e5e5fda53e374769ceae6ed8 (patch) | |
tree | d25b79582ac9000e0b545d987a67a6dd4099c6a1 /lisp/net/browse-url.el | |
parent | 0929e061fb544c0f4c10ff0412a41cf7e8148270 (diff) | |
download | emacs-76b08a35bb6b3b32e5e5fda53e374769ceae6ed8.tar.gz |
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.
Diffstat (limited to 'lisp/net/browse-url.el')
-rw-r--r-- | lisp/net/browse-url.el | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/lisp/net/browse-url.el b/lisp/net/browse-url.el index c0b359176ec..1bb48314bc8 100644 --- a/lisp/net/browse-url.el +++ b/lisp/net/browse-url.el @@ -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 |