#+title: wiki.el - an Emacs mode for editing and browsing wiki files #+author: Yuchen Pei #+language: en *NOTE: this project is very much WIP.* * Intro :PROPERTIES: :UPDATED: [2023-07-23 Sun 18:19] :END: wiki.el is an Emacs wiki mode for editing and browsing wiki files. There are several goals and areas of emphasis that differentiate it from other packages handling wiki. First, it aims at a unified approach to various wiki markups and engines. On the markup front it will support standard or default markups of various wiki engines, as well as standalone markups like creole. On the engine front it will support fetching and browsing wiki titles from various engines, as well as locally. Down the road we would like to develop a minor mode that can help with link navigation and browsing for non-wiki markups like markdown and rst. It remains to be determined whether submitting edited wiki entries directly from emacs is feasible under this unified approach. Second, it aims to be close to the Emacs core, including not only using as many builtin features as possible and needed, but also working in a similar way to core packages. Specifically, an org-like set of navigation and editing features belongs to the second category. As a non-goal, wiki.el does not try to come up with its own markup rules or languages, nor does it attempt to export wiki files to other formats. Currently supported features: - Font-locking for basic mediawiki markups to the extent that Wikipedia titles are readable: headings, emphasis, linking, reference, etc. - Fetching and link jumping work for mediawiki, oddmuse and moinmoin sites. Files are saved locally, that may be used for caching. - The handling of local wiki files also allow maintaining a local wiki with interlinking with no remote sites. - Outline and imenu integration. * Install and use :PROPERTIES: :UPDATED: [2023-07-24 Mon 13:57] :END: Clone, require, M-x: #+begin_src shell git clone https://g.ypei.me/generic-search.el.git git clone https://g.ypei.me/wiki.el.git #+end_src Assuming you have cloned into dirs under =~/.emacs.d/lisp=, then #+begin_src emacs-lisp (add-to-list 'load-path "~/.emacs.d/lisp/generic-search.el") (add-to-list 'load-path "~/.emacs.d/lisp/wiki.el") (require 'wiki) #+end_src Some entry points: - ~wiki-<site-name>-fetch~: fetch a title from a wiki site. These functions are defined by the macro ~defun-wiki-fetchers~, for all sites in the alist ~wiki-sites~. For example - M-x ~wiki-wikipedia-en-fetch~ RET Emacs RET - M-x ~wiki-parabolawiki-fetch~ RET Installation Guide RET - M-x ~wiki-libreplanet-fetch~ RET Activism Guide RET - M-x ~wiki-emacswiki-fetch~ RET SandBox RET - ~wiki-open-url~: fetches a title from a url. Example: - M-x ~wiki-open-url~ RET https://libreplanet.org/wiki/Group_talk:Freedom_Ladder RET * Prior Art :PROPERTIES: :UPDATED: [2023-07-23 Sun 18:22] :END: EmacsWiki has [[https://www.emacswiki.org/emacs/WikiModes][a list of wiki modes]], classified under two categories: #+begin_quote 1. The first kind allows you to download a page from a remote wiki, edit it using Emacs, and submit it back to the wiki. 2. The second kind allows you to treat local files as a local wiki without using a browser. Usually these modes allow you to publish the local wiki as a set of static HTML pages. #+end_quote wiki.el mainly falls under the first category, though it cannot be used for submitting back to wiki yet. Unlike wiki.el, the modes listed under the first category are mostly specialised to one engine / markup only. wiki.el also supports editing local files as a local wiki, with native linking support, though it does not aim to contain features for exporting and publication. * Copyright and contact :PROPERTIES: :UPDATED: [2023-07-23 Sun 18:15] :END: ~wiki.el~ is maintained by Yuchen Pei <id@ypei.org> and covered by [[https://www.gnu.org/licenses/agpl-3.0.en.html][GNU AGPLv3+]]. You may find the license text in a file named COPYING.agpl3 in the project tree. The project is intended for eventual publication in the [[https://elpa.gnu.org/][GNU ELPA]], which requires [[https://www.fsf.org/licensing/assigning.html][copyright assignment to the FSF]] for contributions.