From f0a8a7d12d90d219cd4d8f4d3d9bc580e02c255a Mon Sep 17 00:00:00 2001
From: Richard Kim
Date: Thu, 10 Mar 2016 06:29:48 -0800
Subject: [PATCH] org-info.el: generate HTML links to gnu.org
* lisp/org-info.el (org-info-export): Convert info links to HTML URL's
that point to appropriate gnu.org or other pages. User's can customize
the behavior using `org-info-emacs-documents' and
`org-info-other-documets' new variables.
TINYCHANGE
---
lisp/org-info.el | 35 +++++++++++++++++++++++++++++++++--
1 file changed, 33 insertions(+), 2 deletions(-)
diff --git a/lisp/org-info.el b/lisp/org-info.el
index 270c19f..e7ff9ed 100644
--- a/lisp/org-info.el
+++ b/lisp/org-info.el
@@ -81,6 +81,37 @@
nodename-or-index)))))
(user-error "Could not open: %s" name)))
+(defvar org-info-emacs-documents
+ '("ada-mode" "auth" "autotype" "bovine" "calc" "ccmode" "cl" "dbus" "dired-x"
+ "ebrowse" "ede" "ediff" "edt" "efaq-w32" "efaq" "eieio" "eintr" "elisp"
+ "emacs-gnutls" "emacs-mime" "emacs" "epa" "erc" "ert" "eshell" "eudc" "eww"
+ "flymake" "forms" "gnus" "htmlfontify" "idlwave" "ido" "info" "mairix-el"
+ "message" "mh-e" "newsticker" "nxml-mode" "octave-mode" "org" "pcl-cvs"
+ "pgg" "rcirc" "reftex" "remember" "sasl" "sc" "semantic" "ses" "sieve"
+ "smtpmail" "speedbar" "srecode" "todo-mode" "tramp" "url" "vip" "viper"
+ "widget" "wisent" "woman")
+ "List of emacs documents available at the official URL
+")
+
+(defvar org-info-other-documents
+ '(("gcc" . "https://gcc.gnu.org/onlinedocs/gcc-5.3.0/gcc/index.html")
+ ("libc" . "http://www.gnu.org/software/libc/manual/html_mono/libc.html")
+ ("make" . "http://www.gnu.org/software/make/manual/index.html"))
+ "Alist of documents generated from texinfo source.
+
+When converting info links to html, links to any one of these manuals
+are converted to point to these links.")
+
+(defun org-info-map-html-url (filename)
+ "Given info FILENAME, either return it or convert it to URL pointing
+to the official page on internet, e.g., use gnu.org for all emacs related documents.
+See `org-info-official-gnu-document' and `org-info-other-documents' for details."
+ (if (member filename org-info-emacs-documents)
+ (format "http://www.gnu.org/software/emacs/manual/html_mono/%s.html"
+ filename)
+ (let ((url (cdr (assoc filename org-info-other-documents))))
+ (or url (concat filename ".html")))))
+
(defun org-info-export (path desc format)
"Export an info link.
See `org-add-link-type' for details about PATH, DESC and FORMAT."
@@ -89,8 +120,8 @@ See `org-add-link-type' for details about PATH, DESC and FORMAT."
(string-match "\\(.*\\)" path))
(let ((filename (match-string 1 path))
(node (or (match-string 2 path) "Top")))
- (format "%s"
- filename
+ (format "%s"
+ (org-info-map-html-url filename)
(replace-regexp-in-string " " "-" node)
(or desc path)))))
--
2.5.0