The setup I use with WikiMode works in Emacs and XEmacs.
I use text-mode as my default major mode, therefore all wiki pages are in text mode. In text mode, I want the apostrophe to be considered a word separator.
(setq default-major-mode 'text-mode)
(modify-syntax-entry ?' "." text-mode-syntax-table)
I want to use two spaces after a period. If I use one space, I want to alert myself to that. And when I use the magic FIXME string in text files, I want it to stand out.
(defface extra-whitespace-face '((t (:background "pale green"))) "Used in text-mode and friends for exactly one space after a period.") (font-lock-add-keywords 'text-mode '(("FIXME[:!]?" 0 'show-paren-mismatch-face) ("\\.\\( \\)\\b" 1 'extra-whitespace-face)))
Now for XEmacs, we need to load easy-mmode.el. I just use the source file from my Emacs lisp directory. And we need some time stuff for wiki interlinks, therefore I load these files from my Gnus directory. You might have them stored in other directories, obviously.
(when (featurep 'xemacs)
(load-file "/usr/local/share/emacs/20.7/lisp/emacs-lisp/easy-mmode.el")
(load "~/elisp/gnus/lisp/parse-time.el" t t t)
(load "~/elisp/gnus/lisp/time-date.el" t t t))
We are getting to the wiki stuff at last. Load the mode and switch on font-lock and auto-fill.
(load-library "wiki")
(load-library "wiki-inter")
;; Usually text-mode buffers don't use font-lock!
(add-hook 'wiki-mode-on-hook 'turn-on-font-lock)
(add-hook 'wiki-mode-on-hook 'turn-on-auto-fill)
In order to navigate and fill bullet lists, I patched my fill.el (thanks to Stefan Monnier). A marginal improvement.
(load-library "fill"); Stefan's bugfix included
(add-hook 'wiki-mode-on-hook (lambda ()
(setq paragraph-start "\\*\\|$"
paragraph-separate "$")))
I want to use Shift TAB on Linux running under X to jump to the previous reference.
(if (not (featurep 'xemacs))
(define-key wiki-mode-map '[(shift iso-lefttab)] 'wiki-previous-reference)
(define-key wiki-mode-map '[(iso-left-tab)] 'wiki-previous-reference))
And now for the big thing. The markup. I added WikiSummary? and WikiLanguage? functions as well as the quoting of the ampersand (&). Other customized variables such as directories, maintainer mail address, and index page I keep to myself. ^_^
These are the new XHTML 1.0 publishing rules:
(setq wiki-pub-rules
`(my-wiki-store-language
my-wiki-store-summary
("&" . "&")
("<" . "<")
(">" . ">")
("''\\(\\(\\|.\\)*\\)''" . "<strong>\\1</strong>")
("\\`\n*" . "<p>\n"); remove emty lines and add <p> at the beginning
("\n+\\'" . ""); remove emty lines at the end
(end-of-buffer . "\n</p>"); add </p> at the end
("\n\n+" . "\n</p>\n<p>\n"); insert </p><p> between all paragraphs
("^\\*[ ]*" . "</li>\n<li>")
("\n</li>" . "</li>")
("<p></li>\\(\\(\\|.\\|\n\\)+\\)\n</p>" . "<ul>\\1</li>\n</ul>")
("<p>\n\\([ ]+\\(\\|.\\|\n\\)+\\)</p>" . "<pre>\n\\1</pre>")
("<p>\n:\\(\\(\\|.\\|\n\\)+\\)</p>" . "<blockquote>\n<p>\n \\1</p>\n</blockquote>")
;; ("<p>\n\\'" . "")
,(cons thing-at-point-url-regexp "<a href=\"\\&\">\\&</a>")
("[-a-zA-Z0-9._]+@\\([-a-zA-z0-9_]+\\.\\)+[a-zA-Z0-9]+" . "<a href=\"mailto:\\&\">\\&</a>")
wiki-replace-links
wiki-inter-link-publish
(beginning-of-buffer . "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"DTD/xhtml1-strict.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<title><?name></title>\n<link rel=\"contents\" href=\"../index.html\" title=\"Table of Contents\"/>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8559-1\"/>\n<meta http-equiv=\"Content-Style-Type\" content=\"text/css\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"../wiki.css\"/>\n</head>\n<body>\n<p>\n<a href=\"SiteMap.html\">SiteMap</a> /\n<a href=\"AllPages.html\">AllPages</a> /\n<a href=\"../index.html\">Out</a>\n</p>\n<h1><a name=\"<?name>\" title=\"<?name>\"><?name></a></h1>\n")
("<\\?name>" . wiki-page-name)
(end-of-buffer . "\n<hr></hr>\n<p>\n<a href=\"SiteMap.html\">SiteMap</a> /\n<a href=\"AllPages.html\">AllPages</a> /\n<a href=\"../index.html\">Out</a> /\n<a href=\"mailto:kensanata@yahoo.com\">kensanata@yahoo.com</a> /\nLast change: <?date>\n</p>\n</body>\n</html>")
("<\\?date>" . wiki-current-date)
my-wiki-add-language
my-wiki-add-summary))
This is the old HTML 3.2 markup:
(setq wiki-pub-rules
`(my-wiki-store-language
my-wiki-store-summary
("&" . "&")
("<" . "<")
(">" . ">")
("''\\(\\(\\|.\\)*\\)''" . "<strong>\\1</strong>")
("\\`\n*" . "<p>\n")
("\n\n+" . "\n\n<p>\n")
("^\\*[ ]*" . "<li>")
("<p>\n<li>\\(\\([^\n]\n?\\)+\\)" . "<p>\n<ul>\n<li>\\1</ul>\n")
("<p>\n\\([ ]+\\([^\n]\n?\\)+\\)" . "<p>\n<pre>\n\\1</pre>\n")
("<p>\n:\\(\\([^\n]\n?\\)+\\)" . "<blockquote>\n<p>\n\\1</blockquote>\n")
,(cons thing-at-point-url-regexp "<a href=\"\\&\">\\&</a>")
,(cons goto-address-mail-regexp "<a href=\"mailto:\\&\">\\&</a>")
wiki-replace-links
wiki-inter-link-publish
(beginning-of-buffer . "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\">\n<html>\n<head>\n<title><?name></title>\n<link rel=\"contents\" href=\"../index.html\" title=\"Table of Contents\">\n<link rel=\"index\" href=\"../site-index.html\" title=\"Site Index\">\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8559-1\">\n<meta http-equiv=\"Content-Style-Type\" content=\"text/css\">\n<link rel=stylesheet type=\"text/css\" href=\"../wiki.css\">\n</head>\n<body>\n<p>\n<a href=\"SiteMap.html\">SiteMap</a> /\n<a href=\"AllPages.html\">AllPages</a> /\n<a href=\"../index.html\">Out</a>\n<h1><a name=\"<?name>\" title=\"<?name>\"><?name></a></h1>\n")
("<\\?name>" . wiki-page-name)
(end-of-buffer . "\n<hr>\n<p>\n<a href=\"SiteMap.html\">SiteMap</a> /\n<a href=\"AllPages.html\">AllPages</a> /\n<a href=\"../index.html\">Out</a> /\n<a href=\"mailto:kensanata@yahoo.com\">kensanata@yahoo.com</a> /\nLast change: <?date>\n</body>\n</html>")
("<\\?date>" . wiki-current-date)
my-wiki-add-language
my-wiki-add-summary))
SiteMap / AllPages / Out / kensanata@yahoo.com / Last change: 2001-04-14