| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 | ;;; org-man.el - Support for links to manpages in Org-mode;;;; Author: Carsten Dominik <carsten at orgmode dot org>;; Keywords: outlines, hypermedia, calendar, wp;; Homepage: http://orgmode.org;; Version: 1.0;;;; This file is not yet part of GNU Emacs.;;;; This program is free software; you can redistribute it and/or modify;; it under the terms of the GNU General Public License as published by;; the Free Software Foundation; either version 3, or (at your option);; any later version.;; This program is distributed in the hope that it will be useful,;; but WITHOUT ANY WARRANTY; without even the implied warranty of;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the;; GNU General Public License for more details.;; You should have received a copy of the GNU General Public License;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Commentary:(require 'org)(org-add-link-type "man" 'org-man-open 'org-man-export)(add-hook 'org-store-link-functions 'org-man-store-link)(defcustom org-man-command 'man  "The Emacs command to be used to display a man page."  :group 'org-link  :type '(choice (const man) (const woman)))(defun org-man-open (path)  "Visit the manpage on PATH.PATH should be a topic that can be thrown at the man command."  (funcall org-man-command path))(defun org-man-store-link ()  "Store a link to a README file."  (when (memq major-mode '(Man-mode woman-mode))    ;; This is a man page, we do make this link    (let* ((page (org-man-get-page-name))           (link (concat "man:" page))           (description (format "Manpage for %s" page)))      (org-store-link-props       :type "man"       :link link       :description description))))(defun org-man-get-page-name ()  "Extract the page name from the buffer name."  ;; This works for both `Man-mode' and `woman-mode'.  (if (string-match " \\(\\S-+\\)\\*" (buffer-name))      (match-string 1 (buffer-name))    (error "Cannot create link to this man page")))(defun org-man-export (link description format)  "Export a man page link from Org files."  (let ((path (format "http://man.he.net/?topic=%s§ion=all" link))	(desc (or description link)))    (cond     ((eq format 'html) (format "<a target=\"_blank\" href=\"%s\">%s</a>" path desc))     ((eq format 'latex) (format "\href{%s}{%s}" path desc))     ((eq format 'ascii) (format "%s (%s)" desc path))     (t path))))(provide 'org-man);;; org-man.el ends here
 |