From 383b7a22e584dd9c5990dcd1b0cdf48f24ffe962 Mon Sep 17 00:00:00 2001 From: Yuchen Pei Date: Sun, 9 Jul 2023 23:12:55 +1000 Subject: Adding more wiki site examples and simple moinmoin / oddmuse fetching support. --- wiki-utils.el | 41 ++++++++++++++++++++++++++++++++++------- 1 file changed, 34 insertions(+), 7 deletions(-) (limited to 'wiki-utils.el') diff --git a/wiki-utils.el b/wiki-utils.el index 26e25b7..810e7ec 100644 --- a/wiki-utils.el +++ b/wiki-utils.el @@ -29,13 +29,14 @@ (defvar wiki-download-dir "~/Downloads") -(defun wiki-fetch-url (url &optional callback) +(defun wiki-fetch-url (url &optional callback title) "Fetch URL asynchronously. Then calls CALLBACK which is a closure taking no argument." (interactive "sURL: ") - (let ((file-name (expand-file-name (wiki-make-file-name-from-url url) - wiki-download-dir)) + (let ((file-name (expand-file-name + (or title (wiki-make-file-name-from-url url)) + wiki-download-dir)) (cb (lambda (status file-name) (wiki-fetch-url-save-and-switch status file-name) (when callback (funcall callback))))) @@ -64,20 +65,46 @@ Then calls CALLBACK which is a closure taking no argument." (car (url-path-and-query (url-generic-parse-url (url-unhex-string url))))))) +;; TODO: add wikihow; generalise fandom (defvar wiki-sites '((local) + (archwiki-en :base-url "https://wiki.archlinux.org/title/" + :engine mediawiki + :display-name "Archwiki EN") + (debianwiki :base-url "https://wiki.debian.org/" + :engine moinmoin + :display-name "Debian Wiki") + (emacswiki :base-url "https://www.emacswiki.org/emacs/" + :engine oddmuse + :display-name "EmacsWiki") + (esp :base-url "https://wiki.endsoftwarepatents.org/wiki/" + :engine mediawiki + :display-name "ESP Wiki") + (fandom-recipes :base-url "https://recipes.fandom.com/wiki/" + :engine mediawiki + :display-name "Fandom Recipes Wiki") + (fsd :base-url "https://directory.fsf.org/wiki/" + :engine mediawiki + :display-name "Free Software Directory") + (haskell-wiki :base-url "https://wiki.haskell.org/" + :engine mediawiki + :display-name "Haskell Wiki") + (libreplanet :base-url "https://libreplanet.org/wiki/" + :engine mediawiki + :display-name "Libreplanet Wiki") (wikipedia-en :base-url "https://en.wikipedia.org/wiki/" :engine mediawiki :display-name "Wikipedia EN") + (wikivoyage-en :base-url "https://en.wikivoyage.org/wiki/" + :engine mediawiki + :display-name "Wikivoyage EN") (wiktionary-en :base-url "https://en.wiktionary.org/wiki/" :engine mediawiki :display-name "Wiktionary EN") - (emacswiki :base-url "https://www.emacswiki.org/emacs/" - :engine oddmuse - :display-name "EmacsWiki") (debianwiki :base-url "https://wiki.debian.org/" :engine moinmoin - :display-name "Debian Wiki")) + :display-name "Debian Wiki") + ) "Alist of wiki sites. Each item is in the form of (identifier . properties), where -- cgit v1.2.3