summaryrefslogtreecommitdiff
path: root/lisp/net/browse-url.el
diff options
context:
space:
mode:
authorMark Oteiza <mvoteiza@udel.edu>2016-10-21 11:23:39 -0400
committerMark Oteiza <mvoteiza@udel.edu>2016-10-21 11:32:29 -0400
commit76b08a35bb6b3b32e5e5fda53e374769ceae6ed8 (patch)
treed25b79582ac9000e0b545d987a67a6dd4099c6a1 /lisp/net/browse-url.el
parent0929e061fb544c0f4c10ff0412a41cf7e8148270 (diff)
downloademacs-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.el24
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