Recent changes to this wiki:

hmmmm
diff --git a/doc/todo/be_more_selective_about_running_hooks.mdwn b/doc/todo/be_more_selective_about_running_hooks.mdwn
index 0c8e0b0..b57bd5c 100644
--- a/doc/todo/be_more_selective_about_running_hooks.mdwn
+++ b/doc/todo/be_more_selective_about_running_hooks.mdwn
@@ -18,3 +18,7 @@ this parameter `exclusive` in my branch, but this might not be the
 best name.
 
 [[!tag patch]]
+
+> It's an interesting idea, but it might be more useful if it was more generalized, say, by making it a filter, where the parameter is a regexp.
+> 
+> --[[KathrynAndersen]]

diff --git a/doc/todo/be_more_selective_about_running_hooks.mdwn b/doc/todo/be_more_selective_about_running_hooks.mdwn
new file mode 100644
index 0000000..0c8e0b0
--- /dev/null
+++ b/doc/todo/be_more_selective_about_running_hooks.mdwn
@@ -0,0 +1,20 @@
+[[!template  id=gitbranch branch=chrismgray/exclusive-hooks author="[[chrismgray]]"]]
+
+Sometimes plugins register a function with `hook`, but they only want
+the function called with the content that they know how to deal with.
+Normally, this means that they call `pagetype` first thing in the
+function, determine if they know how to deal with the content, and
+only do anything if they do.  
+
+This is a bit wasteful in itself, but for external plugins, it's
+really bad.  For functions like `scan` and `linkify`, where the entire
+page is sent back and forth over `stdout` and `stdin`, it really slows
+things down.  
+
+Thus, I propose that there be a new optional parameter to `hook` that
+tells it that the function should only be called for files whose type
+is the same as the id of the plugin calling `hook`.  I have called
+this parameter `exclusive` in my branch, but this might not be the
+best name.
+
+[[!tag patch]]

Easier if I go by my github name
diff --git a/doc/git.mdwn b/doc/git.mdwn
index c9f16a2..b8bf501 100644
--- a/doc/git.mdwn
+++ b/doc/git.mdwn
@@ -74,7 +74,7 @@ think about merging them. This is recommended. :-)
 * nezmer `git://gitorious.org/ikiwiki-nezmer/ikiwiki-nezmer.git`
 * [[yds]] `git://github.com/yds/ikiwiki.git`
 * [[pelle]] `git://github.com/hemmop/ikiwiki.git`
-* [[cgray]] `git://github.com/chrismgray/ikiwiki.git`
+* [[chrismgray]] `git://github.com/chrismgray/ikiwiki.git`
 
 ## branches
 

diff --git a/doc/git.mdwn b/doc/git.mdwn
index 2e58c69..c9f16a2 100644
--- a/doc/git.mdwn
+++ b/doc/git.mdwn
@@ -74,6 +74,7 @@ think about merging them. This is recommended. :-)
 * nezmer `git://gitorious.org/ikiwiki-nezmer/ikiwiki-nezmer.git`
 * [[yds]] `git://github.com/yds/ikiwiki.git`
 * [[pelle]] `git://github.com/hemmop/ikiwiki.git`
+* [[cgray]] `git://github.com/chrismgray/ikiwiki.git`
 
 ## branches
 

diff --git a/doc/bugs/__91__SOLVED__93___Pandoc_plugin_and_UTF-8:_IkiWiki_and_UTF-8.mdwn b/doc/bugs/__91__SOLVED__93___Pandoc_plugin_and_UTF-8:_IkiWiki_and_UTF-8.mdwn
index ab4dc89..c80c915 100644
--- a/doc/bugs/__91__SOLVED__93___Pandoc_plugin_and_UTF-8:_IkiWiki_and_UTF-8.mdwn
+++ b/doc/bugs/__91__SOLVED__93___Pandoc_plugin_and_UTF-8:_IkiWiki_and_UTF-8.mdwn
@@ -1,13 +1,6 @@
-I'm writing [pykipandoc plugin](https://github.com/temmen/pykipandoc/blob/master/pykipandoc), that work at least as pandoc-iki.
+import os
+os.environment['LANG'] = 'it_IT.utf-8'
 
-It works in compile mode, editing pages in web mode however results in 
+Suona plausibile?
 
-    pandoc: : hGetContents: invalid argument (Invalid or incomplete multibyte or wide character)
-
-I think that is because HTTP POST request building editpage doesn't correctly manage utf-8 contents: see strange chars in this form-data name="editcontent"?
-
-    This principle has guided pandoc’s decisions in finding syntax for tables, footnotes, and other extensions.
-
-Please, any advice can be sent to [GitHub pykipandoc](https://github.com/temmen/pykipandoc) (some other info there on the [README](https://github.com/temmen/pykipandoc/blob/master/README.md)) and to [temmenel(at)gmail(dot)com](mailto:temmenel@gmail.com).
-
-¡Thank you all!
+[GitHub pykipandoc](https://github.com/temmen/pykipandoc) -- Temmen

rename bugs/Pandoc_plugin_and_UTF-8:_IkiWiki_and_UTF-8.mdwn to bugs/__91__SOLVED__93___Pandoc_plugin_and_UTF-8:_IkiWiki_and_UTF-8.mdwn
diff --git a/doc/bugs/Pandoc_plugin_and_UTF-8:_IkiWiki_and_UTF-8.mdwn b/doc/bugs/Pandoc_plugin_and_UTF-8:_IkiWiki_and_UTF-8.mdwn
deleted file mode 100644
index ab4dc89..0000000
--- a/doc/bugs/Pandoc_plugin_and_UTF-8:_IkiWiki_and_UTF-8.mdwn
+++ /dev/null
@@ -1,13 +0,0 @@
-I'm writing [pykipandoc plugin](https://github.com/temmen/pykipandoc/blob/master/pykipandoc), that work at least as pandoc-iki.
-
-It works in compile mode, editing pages in web mode however results in 
-
-    pandoc: : hGetContents: invalid argument (Invalid or incomplete multibyte or wide character)
-
-I think that is because HTTP POST request building editpage doesn't correctly manage utf-8 contents: see strange chars in this form-data name="editcontent"?
-
-    This principle has guided pandoc’s decisions in finding syntax for tables, footnotes, and other extensions.
-
-Please, any advice can be sent to [GitHub pykipandoc](https://github.com/temmen/pykipandoc) (some other info there on the [README](https://github.com/temmen/pykipandoc/blob/master/README.md)) and to [temmenel(at)gmail(dot)com](mailto:temmenel@gmail.com).
-
-¡Thank you all!
diff --git a/doc/bugs/Pandoc_plugin_and_UTF-8:_IkiWiki_and_UTF-8/discussion.mdwn b/doc/bugs/Pandoc_plugin_and_UTF-8:_IkiWiki_and_UTF-8/discussion.mdwn
deleted file mode 100644
index 9cdc9e7..0000000
--- a/doc/bugs/Pandoc_plugin_and_UTF-8:_IkiWiki_and_UTF-8/discussion.mdwn
+++ /dev/null
@@ -1,23 +0,0 @@
-	# plugins to add to the default configuration
-	add_plugins => [qw{
-		    brokenlinks
-		    map
-		    orphans
-		    pagecount
-		    pagestats
-		    tag
-		    template
-		    openid
-		    attachment
-		    edittemplate
-		    remove
-		    listdirectives
-		    shortcut
-		    pykipandoc}],
-	# plugins to disable
-	disable_plugins => [qw{passwordauth mdwn}],
-
-and
-
-	# UTF-8 locale to use
-	locale => 'it_IT.UTF-8',
diff --git a/doc/bugs/__91__SOLVED__93___Pandoc_plugin_and_UTF-8:_IkiWiki_and_UTF-8.mdwn b/doc/bugs/__91__SOLVED__93___Pandoc_plugin_and_UTF-8:_IkiWiki_and_UTF-8.mdwn
new file mode 100644
index 0000000..ab4dc89
--- /dev/null
+++ b/doc/bugs/__91__SOLVED__93___Pandoc_plugin_and_UTF-8:_IkiWiki_and_UTF-8.mdwn
@@ -0,0 +1,13 @@
+I'm writing [pykipandoc plugin](https://github.com/temmen/pykipandoc/blob/master/pykipandoc), that work at least as pandoc-iki.
+
+It works in compile mode, editing pages in web mode however results in 
+
+    pandoc: : hGetContents: invalid argument (Invalid or incomplete multibyte or wide character)
+
+I think that is because HTTP POST request building editpage doesn't correctly manage utf-8 contents: see strange chars in this form-data name="editcontent"?
+
+    This principle has guided pandoc’s decisions in finding syntax for tables, footnotes, and other extensions.
+
+Please, any advice can be sent to [GitHub pykipandoc](https://github.com/temmen/pykipandoc) (some other info there on the [README](https://github.com/temmen/pykipandoc/blob/master/README.md)) and to [temmenel(at)gmail(dot)com](mailto:temmenel@gmail.com).
+
+¡Thank you all!
diff --git a/doc/bugs/__91__SOLVED__93___Pandoc_plugin_and_UTF-8:_IkiWiki_and_UTF-8/discussion.mdwn b/doc/bugs/__91__SOLVED__93___Pandoc_plugin_and_UTF-8:_IkiWiki_and_UTF-8/discussion.mdwn
new file mode 100644
index 0000000..9cdc9e7
--- /dev/null
+++ b/doc/bugs/__91__SOLVED__93___Pandoc_plugin_and_UTF-8:_IkiWiki_and_UTF-8/discussion.mdwn
@@ -0,0 +1,23 @@
+	# plugins to add to the default configuration
+	add_plugins => [qw{
+		    brokenlinks
+		    map
+		    orphans
+		    pagecount
+		    pagestats
+		    tag
+		    template
+		    openid
+		    attachment
+		    edittemplate
+		    remove
+		    listdirectives
+		    shortcut
+		    pykipandoc}],
+	# plugins to disable
+	disable_plugins => [qw{passwordauth mdwn}],
+
+and
+
+	# UTF-8 locale to use
+	locale => 'it_IT.UTF-8',

Added a comment: I'm trying to use OpenID without success
diff --git a/doc/forum/OpenID_not_working___47___where_to_define_wiki__39__s_ID__63__/comment_3_f581afcdb4481ea5d65bcc33bdbab99a._comment b/doc/forum/OpenID_not_working___47___where_to_define_wiki__39__s_ID__63__/comment_3_f581afcdb4481ea5d65bcc33bdbab99a._comment
new file mode 100644
index 0000000..1ac15d7
--- /dev/null
+++ b/doc/forum/OpenID_not_working___47___where_to_define_wiki__39__s_ID__63__/comment_3_f581afcdb4481ea5d65bcc33bdbab99a._comment
@@ -0,0 +1,25 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawnp4lzWSX1pvSpwAoboehP3SSbmbQESe80"
+ nickname="Felipe Augusto"
+ subject="I'm trying to use OpenID without success"
+ date="2012-02-08T04:54:22Z"
+ content="""
+I'm using ikiwiki package from Debian squeeze and I can't seem
+to be able to make OpenID work.  It's a blog and when I try to
+add a comment and click on SignIn, I'm redirected to
+
+>http://my.site/ikiwiki.cgi?do=commentsignin
+
+
+Once I click on Google logo/icon, it takes a while before showing
+
+>no_identity_server: The provided URL doesn't declare its OpenID identity server.
+
+
+It's not clear for me what's wrong or if I should add meta openid in some page.
+This is the version of libnet-openid-consumer-perl: 1.03-1.  It also fails for
+Yahoo! and other providers, we never get redirected to Google/Yahoo! or other
+verification page.
+
+Thank you in advance!
+"""]]

diff --git a/doc/forum/Problem_with_gitweb.mdwn b/doc/forum/Problem_with_gitweb.mdwn
new file mode 100644
index 0000000..98a7f39
--- /dev/null
+++ b/doc/forum/Problem_with_gitweb.mdwn
@@ -0,0 +1,3 @@
+I use gitweb to display the pagehistories of my local ikiwiki. However since a few weeks it doesn't work anymore and displays just: 404 - No such project. I don't remember that I changed something with my wiki. Any ideas how to fix this? I guess that it could be a permission problem, however I don't really know which permissions are important in this case.
+
+

response
diff --git a/doc/todo/recommend_libtext-markdown-discount_instead_of_depending.mdwn b/doc/todo/recommend_libtext-markdown-discount_instead_of_depending.mdwn
index 3c14469..bb953ef 100644
--- a/doc/todo/recommend_libtext-markdown-discount_instead_of_depending.mdwn
+++ b/doc/todo/recommend_libtext-markdown-discount_instead_of_depending.mdwn
@@ -18,3 +18,8 @@ installable on a wheezy host. -- [[Jon]]
 >> not installable on *squeeze*, which is what I care about, rather than
 >> *wheezy*.  Someone needs to backport `libtext-markdown-discount` I
 >> guess. — [[Jon]]
+
+>>> For squeeze, it will be appropriate for an ikiwiki backport to
+>>> still depend on the old markdown. Although a discount backport would be 
+>>> nice! I don't want the current ikiwiki to be held back by requirement
+>>> that it be installable as-is on squeeze. --[[Joey]]

whoops, I meant squeeze
diff --git a/doc/todo/recommend_libtext-markdown-discount_instead_of_depending.mdwn b/doc/todo/recommend_libtext-markdown-discount_instead_of_depending.mdwn
index 736e347..3c14469 100644
--- a/doc/todo/recommend_libtext-markdown-discount_instead_of_depending.mdwn
+++ b/doc/todo/recommend_libtext-markdown-discount_instead_of_depending.mdwn
@@ -13,3 +13,8 @@ installable on a wheezy host. -- [[Jon]]
 > `libtext-markdown-discount-perl | libtext-markdown-perl',
 > then users will not automatically transition to using discount, which
 > I want them to do. [[done]] --[[Joey]]
+
+>> Sorry, I made a mistake in the phrasing of my original request. It's
+>> not installable on *squeeze*, which is what I care about, rather than
+>> *wheezy*.  Someone needs to backport `libtext-markdown-discount` I
+>> guess. — [[Jon]]

testing
This reverts commit 26dbe8ba9a397d5d59af789c7ef3576ebdcf2db8
diff --git a/doc/index.mdwn b/doc/index.mdwn
index 6b10ed3..4c22ce0 100644
--- a/doc/index.mdwn
+++ b/doc/index.mdwn
@@ -27,4 +27,3 @@ can be submitted and tracked using this wiki.
 
 Ikiwiki is developed by [[Joey]] and many contributors,
 and is [[FreeSoftware]].
-

testing
diff --git a/doc/index.mdwn b/doc/index.mdwn
index 4c22ce0..6b10ed3 100644
--- a/doc/index.mdwn
+++ b/doc/index.mdwn
@@ -27,3 +27,4 @@ can be submitted and tracked using this wiki.
 
 Ikiwiki is developed by [[Joey]] and many contributors,
 and is [[FreeSoftware]].
+

Revert spam
diff --git a/doc/index.mdwn b/doc/index.mdwn
index 9fe179f..4c22ce0 100644
--- a/doc/index.mdwn
+++ b/doc/index.mdwn
@@ -27,29 +27,3 @@ can be submitted and tracked using this wiki.
 
 Ikiwiki is developed by [[Joey]] and many contributors,
 and is [[FreeSoftware]].
-
-[[joesop|http://yawan.blogdetik.com/]] blogdetik
-[[foarfm|http://lucubanget.inilahkita.com/]] lucubanget
-[[kamplo|http://deyong.dagdigdug.com/]] dagdigdug
-[[ada aja|http://id4download.blog.com/]] downloadblog
-[[kianmiu|http://kanduyung.wordpress.com/]] wordpress
-dai lama tooz
-
-
-[[depresi|http://katamutiarabijak.netai.net/]] netai
-[[karena ada|http://bentor.pressku.com/]] pressyou
-[[cewek cantik|http://infonews.site90.net/]] infonews
-[[disini|http://mutiarabijak.wordpress.com/]] mutiarabijak
-[[oleh seab itu|http://lucubro.blogspot.com/]] blogspot
-part off
-[[do helf|http://deyong.abatasa.com/]] abatasa
-
-
-[[do carow|http://kandu.webnode.com/]] webnode
-[[get apung|http://wockee.weebly.com/index.html]] wockee
-[[satring|http://deyong.posterous.com/]] posterous
-
-
-[[lowbugg|http://deyongbp.bravejournal.com/index.php]] bravenet
-[[depends|http://kandu.webs.com/]] websin
-[[kancingm|http://deyong.livejournal.com/]] uberjournal

dude, it's a wiki
diff --git a/doc/ikiwiki-makerepo.mdwn b/doc/ikiwiki-makerepo.mdwn
index 61ca8e6..eccfb69 100644
--- a/doc/ikiwiki-makerepo.mdwn
+++ b/doc/ikiwiki-makerepo.mdwn
@@ -21,7 +21,7 @@ made into a clone of it. (monotone and darcs are similar.)
 For svn and cvs, the `repo` is the centralized repository, and the `srcdir`
 is a checkout of it.
 
-For for mercurial and bzr, the srcdir is the only repository set up.
+For mercurial and bzr, the srcdir is the only repository set up.
 
 For darcs, the master repo's apply hook will be preconfigured to call a
 ikiwiki wrapper.

diff --git a/doc/index.mdwn b/doc/index.mdwn
index 4c22ce0..9fe179f 100644
--- a/doc/index.mdwn
+++ b/doc/index.mdwn
@@ -27,3 +27,29 @@ can be submitted and tracked using this wiki.
 
 Ikiwiki is developed by [[Joey]] and many contributors,
 and is [[FreeSoftware]].
+
+[[joesop|http://yawan.blogdetik.com/]] blogdetik
+[[foarfm|http://lucubanget.inilahkita.com/]] lucubanget
+[[kamplo|http://deyong.dagdigdug.com/]] dagdigdug
+[[ada aja|http://id4download.blog.com/]] downloadblog
+[[kianmiu|http://kanduyung.wordpress.com/]] wordpress
+dai lama tooz
+
+
+[[depresi|http://katamutiarabijak.netai.net/]] netai
+[[karena ada|http://bentor.pressku.com/]] pressyou
+[[cewek cantik|http://infonews.site90.net/]] infonews
+[[disini|http://mutiarabijak.wordpress.com/]] mutiarabijak
+[[oleh seab itu|http://lucubro.blogspot.com/]] blogspot
+part off
+[[do helf|http://deyong.abatasa.com/]] abatasa
+
+
+[[do carow|http://kandu.webnode.com/]] webnode
+[[get apung|http://wockee.weebly.com/index.html]] wockee
+[[satring|http://deyong.posterous.com/]] posterous
+
+
+[[lowbugg|http://deyongbp.bravejournal.com/index.php]] bravenet
+[[depends|http://kandu.webs.com/]] websin
+[[kancingm|http://deyong.livejournal.com/]] uberjournal

This reverts commit 0202f169e82fcfe17e09952902e947254dd9bc82
diff --git a/doc/index.mdwn b/doc/index.mdwn
index 9fe179f..4c22ce0 100644
--- a/doc/index.mdwn
+++ b/doc/index.mdwn
@@ -27,29 +27,3 @@ can be submitted and tracked using this wiki.
 
 Ikiwiki is developed by [[Joey]] and many contributors,
 and is [[FreeSoftware]].
-
-[[joesop|http://yawan.blogdetik.com/]] blogdetik
-[[foarfm|http://lucubanget.inilahkita.com/]] lucubanget
-[[kamplo|http://deyong.dagdigdug.com/]] dagdigdug
-[[ada aja|http://id4download.blog.com/]] downloadblog
-[[kianmiu|http://kanduyung.wordpress.com/]] wordpress
-dai lama tooz
-
-
-[[depresi|http://katamutiarabijak.netai.net/]] netai
-[[karena ada|http://bentor.pressku.com/]] pressyou
-[[cewek cantik|http://infonews.site90.net/]] infonews
-[[disini|http://mutiarabijak.wordpress.com/]] mutiarabijak
-[[oleh seab itu|http://lucubro.blogspot.com/]] blogspot
-part off
-[[do helf|http://deyong.abatasa.com/]] abatasa
-
-
-[[do carow|http://kandu.webnode.com/]] webnode
-[[get apung|http://wockee.weebly.com/index.html]] wockee
-[[satring|http://deyong.posterous.com/]] posterous
-
-
-[[lowbugg|http://deyongbp.bravejournal.com/index.php]] bravenet
-[[depends|http://kandu.webs.com/]] websin
-[[kancingm|http://deyong.livejournal.com/]] uberjournal

diff --git a/doc/index.mdwn b/doc/index.mdwn
index 4c22ce0..9fe179f 100644
--- a/doc/index.mdwn
+++ b/doc/index.mdwn
@@ -27,3 +27,29 @@ can be submitted and tracked using this wiki.
 
 Ikiwiki is developed by [[Joey]] and many contributors,
 and is [[FreeSoftware]].
+
+[[joesop|http://yawan.blogdetik.com/]] blogdetik
+[[foarfm|http://lucubanget.inilahkita.com/]] lucubanget
+[[kamplo|http://deyong.dagdigdug.com/]] dagdigdug
+[[ada aja|http://id4download.blog.com/]] downloadblog
+[[kianmiu|http://kanduyung.wordpress.com/]] wordpress
+dai lama tooz
+
+
+[[depresi|http://katamutiarabijak.netai.net/]] netai
+[[karena ada|http://bentor.pressku.com/]] pressyou
+[[cewek cantik|http://infonews.site90.net/]] infonews
+[[disini|http://mutiarabijak.wordpress.com/]] mutiarabijak
+[[oleh seab itu|http://lucubro.blogspot.com/]] blogspot
+part off
+[[do helf|http://deyong.abatasa.com/]] abatasa
+
+
+[[do carow|http://kandu.webnode.com/]] webnode
+[[get apung|http://wockee.weebly.com/index.html]] wockee
+[[satring|http://deyong.posterous.com/]] posterous
+
+
+[[lowbugg|http://deyongbp.bravejournal.com/index.php]] bravenet
+[[depends|http://kandu.webs.com/]] websin
+[[kancingm|http://deyong.livejournal.com/]] uberjournal

clarified and largely rewritten
diff --git a/doc/ikiwiki-makerepo.mdwn b/doc/ikiwiki-makerepo.mdwn
index acb1211..61ca8e6 100644
--- a/doc/ikiwiki-makerepo.mdwn
+++ b/doc/ikiwiki-makerepo.mdwn
@@ -4,19 +4,24 @@ ikiwiki-makerepo - check an ikiwiki srcdir into revision control
 
 # SYNOPSIS
 
-ikiwiki-makerepo git|svn|monotone|darcs|cvs srcdir repository
+ikiwiki-makerepo git|svn|monotone|darcs|cvs srcdir repo
 
 ikiwiki-makerepo bzr|mercurial srcdir
 
 # DESCRIPTION
 
-`ikiwiki-makerepo` injects a `srcdir` directory, containing an ikiwiki wiki,
-into a `repository` that it creates. The repository can be created using
-any of a variety of revision control systems.
+`ikiwiki-makerepo` injects an existing `srcdir` directory, containing
+sources for an ikiwiki wiki, into revision control. It is rarely
+run directly; consider using `ikiwiki -setup /etc/ikiwiki/wiki.setup` instead
+to set up a wiki.
 
-Note that for mercurial and bzr, the srcdir is converted into a
-repository. There is no need to have a separate repository with mercurial
-or bzr.
+For git, the `repo` is created as a bare git repository, and the srcdir is
+made into a clone of it. (monotone and darcs are similar.)
+
+For svn and cvs, the `repo` is the centralized repository, and the `srcdir`
+is a checkout of it.
+
+For for mercurial and bzr, the srcdir is the only repository set up.
 
 For darcs, the master repo's apply hook will be preconfigured to call a
 ikiwiki wrapper.
@@ -24,13 +29,13 @@ ikiwiki wrapper.
 Note that for monotone, you are assumed to already have run "mtn genkey"
 to generate a key.
 
-
 # EXAMPLE 
 
-`ikiwiki-makerepo git /var/www/wiki /home/user/wiki/`
+`ikiwiki-makerepo git /srv/web/wiki /srv/git/wiki.git/`
 
-The above command creates a new git repo in /home/user/wiki as well as a new git repo in the /var/www/wiki directory. 
-It then initializes the /home/user/wiki git repo and makes the /var/www/wiki a clone. 
+This creates a bare repository `/srv/git/wiki.git/`,
+and sets up `/srv/web/wiki` to be a clone of it, committing
+any files that already exist in that directory.
 
 # AUTHOR
 

revert spam
This reverts commit bd17671c506e5ef626b5eef3fe61786ea2c43832
diff --git a/doc/index.mdwn b/doc/index.mdwn
index 2109a4d..4c22ce0 100644
--- a/doc/index.mdwn
+++ b/doc/index.mdwn
@@ -27,25 +27,3 @@ can be submitted and tracked using this wiki.
 
 Ikiwiki is developed by [[Joey]] and many contributors,
 and is [[FreeSoftware]].
-
-
-Source :
-[[http://yawan.blogdetik.com/ blogdetik]]
-[[http://lucubanget.inilahkita.com/ lucubanget]]
-[[http://deyong.dagdigdug.com/ dagdigdug]]
-[[http://id4download.blog.com/ downloadblog]]
-[[http://kanduyung.wordpress.com/ wordpress]]
-[[dai lama tooz]]
-[[http://katamutiarabijak.netai.net/ netai]]
-[[http://bentor.pressku.com/ pressyou]]
-[[http://infonews.site90.net/ infonews]]
-[[http://mutiarabijak.wordpress.com/ mutiarabijak]]
-[[http://lucubro.blogspot.com/ blogspot]]
-[[part off]]
-[[http://deyong.abatasa.com/ abatasa]]
-[[http://kandu.webnode.com/ webnode]]
-[[http://wockee.weebly.com/index.html wockee]]
-[[http://deyong.posterous.com/ posterous]]
-[[http://deyongbp.bravejournal.com/index.php bravenet]]
-[[http://kandu.webs.com/ websin]]
-[[http://deyong.livejournal.com/ uberjournal]]

diff --git a/doc/index.mdwn b/doc/index.mdwn
index 4c22ce0..2109a4d 100644
--- a/doc/index.mdwn
+++ b/doc/index.mdwn
@@ -27,3 +27,25 @@ can be submitted and tracked using this wiki.
 
 Ikiwiki is developed by [[Joey]] and many contributors,
 and is [[FreeSoftware]].
+
+
+Source :
+[[http://yawan.blogdetik.com/ blogdetik]]
+[[http://lucubanget.inilahkita.com/ lucubanget]]
+[[http://deyong.dagdigdug.com/ dagdigdug]]
+[[http://id4download.blog.com/ downloadblog]]
+[[http://kanduyung.wordpress.com/ wordpress]]
+[[dai lama tooz]]
+[[http://katamutiarabijak.netai.net/ netai]]
+[[http://bentor.pressku.com/ pressyou]]
+[[http://infonews.site90.net/ infonews]]
+[[http://mutiarabijak.wordpress.com/ mutiarabijak]]
+[[http://lucubro.blogspot.com/ blogspot]]
+[[part off]]
+[[http://deyong.abatasa.com/ abatasa]]
+[[http://kandu.webnode.com/ webnode]]
+[[http://wockee.weebly.com/index.html wockee]]
+[[http://deyong.posterous.com/ posterous]]
+[[http://deyongbp.bravejournal.com/index.php bravenet]]
+[[http://kandu.webs.com/ websin]]
+[[http://deyong.livejournal.com/ uberjournal]]

diff --git a/doc/sandbox.mdwn b/doc/sandbox.mdwn
index 2f17367..c3fb32b 100644
--- a/doc/sandbox.mdwn
+++ b/doc/sandbox.mdwn
@@ -171,3 +171,5 @@ endmodule
 #<asd>
 
 This is simple enough for now [[sandbocen]] no?
+
+    Do code tags work?

fix rcs_add() of a text file under a name that had been a binary file
diff --git a/doc/rcs/cvs/discussion.mdwn b/doc/rcs/cvs/discussion.mdwn
index 7df9e6b..fdd2fbf 100644
--- a/doc/rcs/cvs/discussion.mdwn
+++ b/doc/rcs/cvs/discussion.mdwn
@@ -172,4 +172,7 @@ Bugs found and fixed so far:
 > Merged to current head. --[[Joey]] 
 
 * Return bounded output from `rcs_diff()` when asked, as the API states.
-   (6753235d98a3903364af26c0614106c47d93ae35
+   (6753235d98a3903364af26c0614106c47d93ae35)
+* When adding a text file under a name formerly tracked as binary,
+  fix CVS keyword substitution behavior by explicitly setting `-kkv`.
+   (e45175d5454cc72b261507260accb309f13b5e8b)

diff --git a/doc/bugs/Pandoc_plugin_and_UTF-8:_IkiWiki_and_UTF-8/discussion.mdwn b/doc/bugs/Pandoc_plugin_and_UTF-8:_IkiWiki_and_UTF-8/discussion.mdwn
new file mode 100644
index 0000000..9cdc9e7
--- /dev/null
+++ b/doc/bugs/Pandoc_plugin_and_UTF-8:_IkiWiki_and_UTF-8/discussion.mdwn
@@ -0,0 +1,23 @@
+	# plugins to add to the default configuration
+	add_plugins => [qw{
+		    brokenlinks
+		    map
+		    orphans
+		    pagecount
+		    pagestats
+		    tag
+		    template
+		    openid
+		    attachment
+		    edittemplate
+		    remove
+		    listdirectives
+		    shortcut
+		    pykipandoc}],
+	# plugins to disable
+	disable_plugins => [qw{passwordauth mdwn}],
+
+and
+
+	# UTF-8 locale to use
+	locale => 'it_IT.UTF-8',

diff --git a/doc/bugs/Pandoc_plugin_and_UTF-8:_IkiWiki_and_UTF-8.mdwn b/doc/bugs/Pandoc_plugin_and_UTF-8:_IkiWiki_and_UTF-8.mdwn
new file mode 100644
index 0000000..ab4dc89
--- /dev/null
+++ b/doc/bugs/Pandoc_plugin_and_UTF-8:_IkiWiki_and_UTF-8.mdwn
@@ -0,0 +1,13 @@
+I'm writing [pykipandoc plugin](https://github.com/temmen/pykipandoc/blob/master/pykipandoc), that work at least as pandoc-iki.
+
+It works in compile mode, editing pages in web mode however results in 
+
+    pandoc: : hGetContents: invalid argument (Invalid or incomplete multibyte or wide character)
+
+I think that is because HTTP POST request building editpage doesn't correctly manage utf-8 contents: see strange chars in this form-data name="editcontent"?
+
+    This principle has guided pandoc’s decisions in finding syntax for tables, footnotes, and other extensions.
+
+Please, any advice can be sent to [GitHub pykipandoc](https://github.com/temmen/pykipandoc) (some other info there on the [README](https://github.com/temmen/pykipandoc/blob/master/README.md)) and to [temmenel(at)gmail(dot)com](mailto:temmenel@gmail.com).
+
+¡Thank you all!

diff --git a/doc/tips/html5.mdwn b/doc/tips/html5.mdwn
index cb71c08..b47c3fe 100644
--- a/doc/tips/html5.mdwn
+++ b/doc/tips/html5.mdwn
@@ -14,7 +14,7 @@ The html5 support is still experimental, and may break in some browsers.
 No care is taken to add backwards compatibility hacks for browsers that
 are not html5 aware (like MSIE). If you want to include the javascript with
 those hacks, you can edit `page.tmpl` to do so. 
-[Dive Into HTML5](http://diveintohtml5.org/) is a good reference for
+[Dive Into HTML5](http://diveintohtml5.info/) is a good reference for
 current compatability issues and workarounds with html5.  And a remotely-loadable
 JS shiv for enabling HTML5 elements in IE is available through [html5shiv at Google Code](http://code.google.com/p/html5shiv/).
 

rcs_diff() would always return unbounded output, fixed
diff --git a/doc/rcs/cvs/discussion.mdwn b/doc/rcs/cvs/discussion.mdwn
index e10892e..7df9e6b 100644
--- a/doc/rcs/cvs/discussion.mdwn
+++ b/doc/rcs/cvs/discussion.mdwn
@@ -170,3 +170,6 @@ Bugs found and fixed so far:
    (ac8eab29e8394aca4c0b23a6687ec947ea1ac869)
 
 > Merged to current head. --[[Joey]] 
+
+* Return bounded output from `rcs_diff()` when asked, as the API states.
+   (6753235d98a3903364af26c0614106c47d93ae35

Missed a portability spot.
diff --git a/doc/bugs/find_gnuism.mdwn b/doc/bugs/find_gnuism.mdwn
new file mode 100644
index 0000000..89eee78
--- /dev/null
+++ b/doc/bugs/find_gnuism.mdwn
@@ -0,0 +1,5 @@
+[[!template id=gitbranch branch=schmonz/portability author="[[schmonz]]"]]
+
+Whoops, somehow missed a spot on the last incarnation of this branch.
+`find -not` doesn't work on NetBSD and `find !` runs equivalently
+for me. Fixed in 9659272e25fac37f896991dab01a05b4f4c85ccb.

add news item for ikiwiki 3.20120202
diff --git a/doc/news/version_3.20111106.mdwn b/doc/news/version_3.20111106.mdwn
deleted file mode 100644
index b4ed1d1..0000000
--- a/doc/news/version_3.20111106.mdwn
+++ /dev/null
@@ -1,12 +0,0 @@
-ikiwiki 3.20111106 released with [[!toggle text="these changes"]]
-[[!toggleable text="""
-   * searchquery.tmpl: Track escaping change in upstream template.
-     Thanks Olly Betts for review.
-   * svn: Support subversion 1.7, which does not have .svn in each
-     subdirectory.
-   * rst: import docutils lazily, to avoid errors during ikiwiki --setup.
-     Closes: #[637604](http://bugs.debian.org/637604) (Thanks, smcv)
-   * Make the setup automator create YAML formatted files.
-   * Fix handling of discussion page creation links to make discussion pages
-     in the right place and with the right case. Broken by page case
-     preservation feature added in 3.20110707."""]]
\ No newline at end of file
diff --git a/doc/news/version_3.20120202.mdwn b/doc/news/version_3.20120202.mdwn
new file mode 100644
index 0000000..3a9ebeb
--- /dev/null
+++ b/doc/news/version_3.20120202.mdwn
@@ -0,0 +1,11 @@
+ikiwiki 3.20120202 released with [[!toggle text="these changes"]]
+[[!toggleable text="""
+   * mdwn: Added nodiscount setting, which can be used to avoid using the
+     markdown discount engine, when maximum compatability is needed.
+   * Switch to YAML::XS to work around insanity in YAML::Mo. Closes: #[657533](http://bugs.debian.org/657533)
+   * cvs: Ensure text files are added in non-binary mode. (Amitai Schlair)
+   * cvs: Various cleanups and testing. (Amitai Schlair)
+   * calendar: Fix strftime encoding bug.
+   * shortcuts: Fixed a broken shortcut to wikipedia (accidentially
+     made into a shortcut to wikiMedia).
+   * Various portability improvements. (Amitai Schlair)"""]]
\ No newline at end of file

can't do that, and testing transition already resolved
diff --git a/doc/todo/recommend_libtext-markdown-discount_instead_of_depending.mdwn b/doc/todo/recommend_libtext-markdown-discount_instead_of_depending.mdwn
index 0c39c41..736e347 100644
--- a/doc/todo/recommend_libtext-markdown-discount_instead_of_depending.mdwn
+++ b/doc/todo/recommend_libtext-markdown-discount_instead_of_depending.mdwn
@@ -1 +1,15 @@
-Would you consider Recommending `libtext-markdown-discount` instead of depending on it?  It isn't available in wheezy, and the sid version is the wrong side of a perl transition, unfortunately.  This is the only dependency preventing the stock sid version of ikiwiki from being installable on a wheezy host. -- [[Jon]]
+Would you consider Recommending `libtext-markdown-discount` instead of
+depending on it?  It isn't available in wheezy, and the sid version is the
+wrong side of a perl transition, unfortunately.  This is the only
+dependency preventing the stock sid version of ikiwiki from being
+installable on a wheezy host. -- [[Jon]]
+
+> That's a temporary problem. Actually, I just checked and it's already
+> resolved; discount is in testing now, as is the latest ikiwiki.
+> 
+> Ikiwiki depends on enough perl modules
+> to make sure it will work, and since it uses discount by default,
+> it needs to depend on it. If I make the dependency on
+> `libtext-markdown-discount-perl | libtext-markdown-perl',
+> then users will not automatically transition to using discount, which
+> I want them to do. [[done]] --[[Joey]]

diff --git a/doc/todo/recommend_libtext-markdown-discount_instead_of_depending.mdwn b/doc/todo/recommend_libtext-markdown-discount_instead_of_depending.mdwn
new file mode 100644
index 0000000..0c39c41
--- /dev/null
+++ b/doc/todo/recommend_libtext-markdown-discount_instead_of_depending.mdwn
@@ -0,0 +1 @@
+Would you consider Recommending `libtext-markdown-discount` instead of depending on it?  It isn't available in wheezy, and the sid version is the wrong side of a perl transition, unfortunately.  This is the only dependency preventing the stock sid version of ikiwiki from being installable on a wheezy host. -- [[Jon]]

Remove dead blog link and add blipfoto link instead
diff --git a/doc/users/ajt.mdwn b/doc/users/ajt.mdwn
index bc47040..61efbf8 100644
--- a/doc/users/ajt.mdwn
+++ b/doc/users/ajt.mdwn
@@ -12,9 +12,9 @@ I like wikis and I'm currently in love with ikiwiki, having moved my home intran
 
 * [iredale dot net](http://www.iredale.net/) my web server and main blog
 * [ajt](http://www.perlmonks.org/index.pl?node_id=113686) my Perkmonks home node
-* [ajt](http://use.perl.org/~ajt) my use Perl home
 * [ATRICKETT](http://search.cpan.org/~atrickett/) my CPAN folder
 * [ajt](http://www.debian-administration.org/users/ajt) my Debian-Administration home (good site btw)
+* [ajt](http://www.blipfoto.com/ajt) by blipfoto photo blog
 * [drajt](http://www.linkedin.com/in/drajt) my LinkedIn profile
 * [drajt](http://www.slideshare.net/drajt) my "Slidespace" on SlideShare
 * [AdamTrickett](http://www.hants.lug.org.uk/cgi-bin/wiki.pl?AdamTrickett) my wiki page on my LUG's site

Account for the strangeness of my committer email.
diff --git a/doc/users/schmonz-web-ikiwiki.mdwn b/doc/users/schmonz-web-ikiwiki.mdwn
new file mode 100644
index 0000000..6b0dbed
--- /dev/null
+++ b/doc/users/schmonz-web-ikiwiki.mdwn
@@ -0,0 +1 @@
+[[!meta redir=users/schmonz]]

link added
diff --git a/doc/ikiwikiusers.mdwn b/doc/ikiwikiusers.mdwn
index 0b16618..96b94a1 100644
--- a/doc/ikiwikiusers.mdwn
+++ b/doc/ikiwikiusers.mdwn
@@ -171,3 +171,4 @@ Personal sites and blogs
 * [The personal website of Andrew Back](http://carrierdetect.com)
 * [SolderPad Documentation](http://docs.solderpad.com)
 * various sub-domains at kisikew.org ([example](https://portal.kisikew.org/))
+* [Paul Elms](http://paul.elms.pro) Personal site and blog in russian.

clean example blog
This reverts commit e8dfb79a80103c70371b8c741ecac1e80936a63c
diff --git a/doc/examples/blog/posts/Test_Post.mdwn b/doc/examples/blog/posts/Test_Post.mdwn
deleted file mode 100644
index e416c23..0000000
--- a/doc/examples/blog/posts/Test_Post.mdwn
+++ /dev/null
@@ -1,7 +0,0 @@
-## Test Post
-
-This is a quick test of *ikiwiki*. The quick brown dog jumps over the lazy dog and now is the time for all good men to come to the aid of the party.
-
-### Some More Stuff
-
-And here is a new paragraph.

A comment.
diff --git a/doc/examples/blog/posts/Test_Post.mdwn b/doc/examples/blog/posts/Test_Post.mdwn
new file mode 100644
index 0000000..e416c23
--- /dev/null
+++ b/doc/examples/blog/posts/Test_Post.mdwn
@@ -0,0 +1,7 @@
+## Test Post
+
+This is a quick test of *ikiwiki*. The quick brown dog jumps over the lazy dog and now is the time for all good men to come to the aid of the party.
+
+### Some More Stuff
+
+And here is a new paragraph.

Merge remaining TODO items into CVS page, and delete TODO.cvs.
diff --git a/TODO.cvs b/TODO.cvs
deleted file mode 100644
index 2562685..0000000
--- a/TODO.cvs
+++ /dev/null
@@ -1,8 +0,0 @@
-* merge old tests into new test subs
-
-* remove code comments when tests are explanatory
-
-* do a writeup for doc/rcs/details.mdwn
-* remove outdated stuff from doc/rcs/cvs.mdwn
-
-* more copyright years?
diff --git a/doc/rcs/cvs.mdwn b/doc/rcs/cvs.mdwn
index a0ee5ab..2b191f2 100644
--- a/doc/rcs/cvs.mdwn
+++ b/doc/rcs/cvs.mdwn
@@ -43,3 +43,4 @@ general-purpose one:
   (and `.../cvs/foo.mdwn` on case-insensitive filesystems); thanks
   to the CVS metadata directory, the attempt will fail anyway (and
   much more confusingly) if we don't.
+* Do a writeup for [[rcs/details]].

agreed
diff --git a/doc/todo/rewrite_ikiwiki_in_haskell/discussion.mdwn b/doc/todo/rewrite_ikiwiki_in_haskell/discussion.mdwn
index 01910a9..b649519 100644
--- a/doc/todo/rewrite_ikiwiki_in_haskell/discussion.mdwn
+++ b/doc/todo/rewrite_ikiwiki_in_haskell/discussion.mdwn
@@ -53,3 +53,5 @@ href="http://jaspervdj.be/hakyll">Hakyll</a>?
 >> Haykll isn't a wiki but it does do static compilation. The missing
 >> parts are: the web interface, the wiki link processing, and page
 >> dependency stuff. -- [[tychoish]]
+
+>>> (nods) Which is why I suggested it.  I'm not sure whether it would be easier to "bolt on" those things than static compilation, but it could be worth looking at, at least. -- [[KathrynAndersen]]

there are actually reasons, yes
diff --git a/doc/plugins/contrib/newpage/discussion.mdwn b/doc/plugins/contrib/newpage/discussion.mdwn
index d312ce4..fb18646 100644
--- a/doc/plugins/contrib/newpage/discussion.mdwn
+++ b/doc/plugins/contrib/newpage/discussion.mdwn
@@ -2,3 +2,9 @@ How is this better than creating an inline with `rootpage` set,
 which creates a similar new page form? I sometimes make the inline match
 nothing, while still creating pages, in the odd cases where I have a map 
 or such displaying the pages. --[[Joey]]
+
+> I wanted something that would automatically be available on every page, but only when editing was enabled.
+> One of the sites I maintain as webmaster (<http://www.constrainttec.com/>) has a two-stage publication process.  The "working" site is on an internal server, where it is set up as a wiki that authorized users in the company can edit.  When they're satisfied with the changes they've made, the "working" site gets pushed (with git) to the "production" site, which is on a different server.  The ikiwiki setup for the production site has editing completely disabled, because it is the site which is exposed to the outside world.
+> For that site, I want all sign that it's a wiki to be hidden.  Therefore using an inline directive would be unsuitable.
+
+> --[[KathrynAndersen]]

remove non-ikiwiki site
diff --git a/doc/ikiwikiusers.mdwn b/doc/ikiwikiusers.mdwn
index bd85d6c..0b16618 100644
--- a/doc/ikiwikiusers.mdwn
+++ b/doc/ikiwikiusers.mdwn
@@ -165,7 +165,6 @@ Personal sites and blogs
 * [Jonas Smedegaard](http://dr.jones.dk/) multilingual "classic" website w/ blog
 * [Siri Reiter](http://sirireiter.dk/) portfolio website with a blog (in danish)
 * [L'Altro Wiki](http://laltromondo.dynalias.net/~iki/) Tutorials, reviews, miscellaneus articles in English and Italian.
-* [STUPiD](http://lhzhang.com/)
 * gregoa's [p.r. - political rants](http://info.comodo.priv.at/pr/)
 * [Michael Hammer](http://www.michael-hammer.at/)
 * [Richardson Family Wiki](http://the4richardsons.com) A wiki, blog or some such nonsense for the family home page or something or other... I will eventually move the rest of my sites to ikiwiki. The source of the site is in git.

remove stealthy spam
diff --git a/doc/forum/TMPL__95__VAR_IS__95__ADMIN/comment_8_054ff10998857bbb69d15ff17e6e9756._comment b/doc/forum/TMPL__95__VAR_IS__95__ADMIN/comment_8_054ff10998857bbb69d15ff17e6e9756._comment
deleted file mode 100644
index ee0c46f..0000000
--- a/doc/forum/TMPL__95__VAR_IS__95__ADMIN/comment_8_054ff10998857bbb69d15ff17e6e9756._comment
+++ /dev/null
@@ -1,12 +0,0 @@
-[[!comment format=mdwn
- username="https://me.yahoo.com/a/dh6LXMw6hZydhHOqgWKiORWXspNyeW9n1nk-#9ce8d"
- nickname="shobo"
- subject="comment 8"
- date="2011-12-16T13:21:57Z"
- content="""
-URLs containing /ikiwiki.cgi/ are dynamically-generated pages; everything else is static.
-
-How is this possible? Where can I find more about this?<a href=\"http://yourbookmaker.co.uk/bet365\"></a>
-
-Shobo, Junior Software Developer
-"""]]

Added a comment
diff --git a/doc/forum/OpenID_not_working___47___where_to_define_wiki__39__s_ID__63__/comment_2_14a1b269be6dbcc9b2068d3e18b55711._comment b/doc/forum/OpenID_not_working___47___where_to_define_wiki__39__s_ID__63__/comment_2_14a1b269be6dbcc9b2068d3e18b55711._comment
new file mode 100644
index 0000000..3078a14
--- /dev/null
+++ b/doc/forum/OpenID_not_working___47___where_to_define_wiki__39__s_ID__63__/comment_2_14a1b269be6dbcc9b2068d3e18b55711._comment
@@ -0,0 +1,10 @@
+[[!comment format=mdwn
+ username="http://joey.kitenet.net/"
+ nickname="joey"
+ subject="comment 2"
+ date="2012-01-30T19:34:00Z"
+ content="""
+Yes, good spotting, [[ikiwiki/directive/meta]] had a doubled quote in the openid example.
+
+Otherwise, that example will work. You don't need anything installed on your server to add openid delegation to a page.
+"""]]

fix typo (doubled quote)
diff --git a/doc/ikiwiki/directive/meta.mdwn b/doc/ikiwiki/directive/meta.mdwn
index a7e86a7..72cfc6f 100644
--- a/doc/ikiwiki/directive/meta.mdwn
+++ b/doc/ikiwiki/directive/meta.mdwn
@@ -109,7 +109,7 @@ Supported fields:
 
 	\[[!meta openid="http://joeyh.myopenid.com/"
 	server="http://www.myopenid.com/server"
-	xrds-location="http://www.myopenid.com/xrds?username=joeyh.myopenid.com""]]
+	xrds-location="http://www.myopenid.com/xrds?username=joeyh.myopenid.com"]]
 
 * link
 

Added a comment
diff --git a/doc/forum/How_to_change_registration_page/comment_1_43758a232e4360561bc84f710862ff40._comment b/doc/forum/How_to_change_registration_page/comment_1_43758a232e4360561bc84f710862ff40._comment
new file mode 100644
index 0000000..5edd993
--- /dev/null
+++ b/doc/forum/How_to_change_registration_page/comment_1_43758a232e4360561bc84f710862ff40._comment
@@ -0,0 +1,14 @@
+[[!comment format=mdwn
+ username="http://joey.kitenet.net/"
+ nickname="joey"
+ subject="comment 1"
+ date="2012-01-30T19:30:20Z"
+ content="""
+Sure.. You're looking for the file `IkiWiki/Plugin/passwordauth.pm`
+
+This line in particular is the text that gets modified and displayed to the user.
+
+<pre>
+                                        name => \"account_creation_password\",
+</pre>
+"""]]

cleanup
diff --git a/doc/examples/blog/posts/Discussion.mdwn b/doc/examples/blog/posts/Discussion.mdwn
deleted file mode 100644
index f04a955..0000000
--- a/doc/examples/blog/posts/Discussion.mdwn
+++ /dev/null
@@ -1 +0,0 @@
-foo bar.

calendar, prettydate: Fix strftime encoding bug
strftime is a C function, it does not return decoded utf8.
Several places in ikiwiki manually decoded it, but at least two
forgot to.
Also, strftime might not return even encoded utf8, if LC_TIME is set
to a non-utf8 value. Went ahead and supported decoding whatever encoding
it uses.
The remaining direct calls to strftime() are all ones that first set
LC_TIME=C, in order to get times that are not for human display.
diff --git a/IkiWiki.pm b/IkiWiki.pm
index bc56501..0a788f3 100644
--- a/IkiWiki.pm
+++ b/IkiWiki.pm
@@ -20,7 +20,7 @@ use Exporter q{import};
 our @EXPORT = qw(hook debug error htmlpage template template_depends
 	deptype add_depends pagespec_match pagespec_match_list bestlink
 	htmllink readfile writefile pagetype srcfile pagename
-	displaytime will_render gettext ngettext urlto targetpage
+	displaytime strftime_utf8 will_render gettext ngettext urlto targetpage
 	add_underlay pagetitle titlepage linkpage newpagefile
 	inject add_link add_autofile
 	%config %links %pagestate %wikistate %renderedfiles
@@ -1148,9 +1148,19 @@ sub formattime ($;$) {
 		$format=$config{timeformat};
 	}
 
+	return strftime_utf8($format, localtime($time));
+}
+
+my $strftime_encoding;
+sub strftime_utf8 {
 	# strftime doesn't know about encodings, so make sure
-	# its output is properly treated as utf8
-	return decode_utf8(POSIX::strftime($format, localtime($time)));
+	# its output is properly treated as utf8.
+	# Note that this does not handle utf-8 in the format string.
+	$strftime_encoding = POSIX::setlocale(&POSIX::LC_TIME) =~ m#\.([^@]+)#
+		unless defined $strftime_encoding;
+	$strftime_encoding
+		? Encode::decode($strftime_encoding, POSIX::strftime(@_))
+		: POSIX::strftime(@_);
 }
 
 sub date_3339 ($) {
diff --git a/IkiWiki/Plugin/calendar.pm b/IkiWiki/Plugin/calendar.pm
index c7d2b7c..fc497b3 100644
--- a/IkiWiki/Plugin/calendar.pm
+++ b/IkiWiki/Plugin/calendar.pm
@@ -22,7 +22,6 @@ use warnings;
 use strict;
 use IkiWiki 3.00;
 use Time::Local;
-use POSIX ();
 
 my $time=time;
 my @now=localtime($time);
@@ -123,10 +122,10 @@ sub format_month (@) {
 	}
 
 	# Find out month names for this, next, and previous months
-	my $monthabbrev=POSIX::strftime("%b", @monthstart);
-	my $monthname=POSIX::strftime("%B", @monthstart);
-	my $pmonthname=POSIX::strftime("%B", localtime(timelocal(0,0,0,1,$pmonth-1,$pyear-1900)));
-	my $nmonthname=POSIX::strftime("%B", localtime(timelocal(0,0,0,1,$nmonth-1,$nyear-1900)));
+	my $monthabbrev=strftime_utf8("%b", @monthstart);
+	my $monthname=strftime_utf8("%B", @monthstart);
+	my $pmonthname=strftime_utf8("%B", localtime(timelocal(0,0,0,1,$pmonth-1,$pyear-1900)));
+	my $nmonthname=strftime_utf8("%B", localtime(timelocal(0,0,0,1,$nmonth-1,$nyear-1900)));
 
 	my $archivebase = 'archives';
 	$archivebase = $config{archivebase} if defined $config{archivebase};
@@ -182,7 +181,7 @@ EOF
 	my %dowabbr;
 	for my $dow ($week_start_day..$week_start_day+6) {
 		my @day=localtime(timelocal(0,0,0,$start_day++,$params{month}-1,$params{year}-1900));
-		my $downame = POSIX::strftime("%A", @day);
+		my $downame = strftime_utf8("%A", @day);
 		my $dowabbr = substr($downame, 0, 1);
 		$downame{$dow % 7}=$downame;
 		$dowabbr{$dow % 7}=$dowabbr;
@@ -329,8 +328,8 @@ EOF
 	for (my $month = 1; $month <= 12; $month++) {
 		my @day=localtime(timelocal(0,0,0,15,$month-1,$params{year}-1900));
 		my $murl;
-		my $monthname = POSIX::strftime("%B", @day);
-		my $monthabbr = POSIX::strftime("%b", @day);
+		my $monthname = strftime_utf8("%B", @day);
+		my $monthabbr = strftime_utf8("%b", @day);
 		$calendar.=qq{\t<tr>\n}  if ($month % $params{months_per_row} == 1);
 		my $tag;
 		my $mtag=sprintf("%02d", $month);
diff --git a/IkiWiki/Plugin/comments.pm b/IkiWiki/Plugin/comments.pm
index 3ad2a0e..91a482e 100644
--- a/IkiWiki/Plugin/comments.pm
+++ b/IkiWiki/Plugin/comments.pm
@@ -9,7 +9,6 @@ use warnings;
 use strict;
 use IkiWiki 3.00;
 use Encode;
-use POSIX qw(strftime);
 
 use constant PREVIEW => "Preview";
 use constant POST_COMMENT => "Post comment";
@@ -460,7 +459,7 @@ sub editcomment ($$) {
 	}
 	$content .= " subject=\"$subject\"\n";
 
-	$content .= " date=\"" . decode_utf8(strftime('%Y-%m-%dT%H:%M:%SZ', gmtime)) . "\"\n";
+	$content .= " date=\"" . strftime_utf8('%Y-%m-%dT%H:%M:%SZ', gmtime) . "\"\n";
 
 	my $editcontent = $form->field('editcontent');
 	$editcontent="" if ! defined $editcontent;
diff --git a/IkiWiki/Plugin/prettydate.pm b/IkiWiki/Plugin/prettydate.pm
index 82d8a3d..b0931cb 100644
--- a/IkiWiki/Plugin/prettydate.pm
+++ b/IkiWiki/Plugin/prettydate.pm
@@ -118,10 +118,10 @@ sub IkiWiki::formattime ($;$) {
 		}
 	}
 
-	$t=~s{\%A-}{my @yest=@t; $yest[6]--; strftime("%A", \@yest)}eg;
+	$t=~s{\%A-}{my @yest=@t; $yest[6]--; strftime_utf8("%A", \@yest)}eg;
 
 	$format=~s/\%X/$t/g;
-	return strftime($format, \@t);
+	return strftime_utf8($format, \@t);
 }
 
 1
diff --git a/debian/changelog b/debian/changelog
index 1765142..57fe786 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -5,6 +5,7 @@ ikiwiki (3.20120116) UNRELEASED; urgency=low
   * Switch to YAML::XS to work around insanity in YAML::Mo. Closes: #657533
   * cvs: Ensure non-text files are added in binary mode. (Amitai Schlair)
   * cvs: Various cleanups and testing. (Amitai Schlair)
+  * calendar, prettydate: Fix strftime encoding bug.
 
  -- Joey Hess <joeyh@debian.org>  Mon, 16 Jan 2012 13:41:14 -0400
 
diff --git a/doc/bugs/Encoding_problem_in_calendar_plugin.mdwn b/doc/bugs/Encoding_problem_in_calendar_plugin.mdwn
index 2ccc43c..80e9f2c 100644
--- a/doc/bugs/Encoding_problem_in_calendar_plugin.mdwn
+++ b/doc/bugs/Encoding_problem_in_calendar_plugin.mdwn
@@ -11,6 +11,10 @@ The problem is that I do not know Perl, encoding is one of the thing I would be
 Cheers,    
 Louis
 
+> Yes, this seems basically right. I've applied a modified version of this.
+> [[done]]
+> --[[Joey]] 
+
 
     diff --git a/IkiWiki/Plugin/calendar.pm b/IkiWiki/Plugin/calendar.pm
     index c7d2b7c..1345939 100644
diff --git a/doc/forum/Encoding_problem_in_french_with_ikiwiki-calendar.mdwn b/doc/forum/Encoding_problem_in_french_with_ikiwiki-calendar.mdwn
index 7e21644..472412d 100644
--- a/doc/forum/Encoding_problem_in_french_with_ikiwiki-calendar.mdwn
+++ b/doc/forum/Encoding_problem_in_french_with_ikiwiki-calendar.mdwn
@@ -15,3 +15,6 @@ Is someone could test it and verify if it works or not?
 Thanks.
 
 Zut
+
+> This was discussed in [[bugs/Encoding_problem_in_calendar_plugin]]
+> and is now fixed. --[[Joey]] 

comment on haskell rebuild
diff --git a/doc/todo/rewrite_ikiwiki_in_haskell/discussion.mdwn b/doc/todo/rewrite_ikiwiki_in_haskell/discussion.mdwn
index 733d69d..01910a9 100644
--- a/doc/todo/rewrite_ikiwiki_in_haskell/discussion.mdwn
+++ b/doc/todo/rewrite_ikiwiki_in_haskell/discussion.mdwn
@@ -49,3 +49,7 @@ href="http://jaspervdj.be/hakyll">Hakyll</a>?
 > that are wiki compilers. Since we know from experience that dealing
 > with static compilation turns out to be one of the trickiest parts of
 > ikiwiki, I'm doubtful about trying to bolt that into one. --[[Joey]] 
+
+>> Haykll isn't a wiki but it does do static compilation. The missing
+>> parts are: the web interface, the wiki link processing, and page
+>> dependency stuff. -- [[tychoish]]

merged
diff --git a/doc/rcs/cvs/discussion.mdwn b/doc/rcs/cvs/discussion.mdwn
index 2e6468d..e10892e 100644
--- a/doc/rcs/cvs/discussion.mdwn
+++ b/doc/rcs/cvs/discussion.mdwn
@@ -168,3 +168,5 @@ Bugs found and fixed so far:
 
 * Stop treating text files as binary (`-kb`) on `rcs_add()`
    (ac8eab29e8394aca4c0b23a6687ec947ea1ac869)
+
+> Merged to current head. --[[Joey]] 

query
diff --git a/doc/plugins/contrib/newpage/discussion.mdwn b/doc/plugins/contrib/newpage/discussion.mdwn
new file mode 100644
index 0000000..d312ce4
--- /dev/null
+++ b/doc/plugins/contrib/newpage/discussion.mdwn
@@ -0,0 +1,4 @@
+How is this better than creating an inline with `rootpage` set, 
+which creates a similar new page form? I sometimes make the inline match
+nothing, while still creating pages, in the odd cases where I have a map 
+or such displaying the pages. --[[Joey]]

comments
diff --git a/doc/todo/rewrite_ikiwiki_in_haskell/discussion.mdwn b/doc/todo/rewrite_ikiwiki_in_haskell/discussion.mdwn
index cf27255..733d69d 100644
--- a/doc/todo/rewrite_ikiwiki_in_haskell/discussion.mdwn
+++ b/doc/todo/rewrite_ikiwiki_in_haskell/discussion.mdwn
@@ -15,11 +15,37 @@ Congratulations for demonstrating that April fools jokes can still be subtle
 
 -----
 
-I'm torn about this idea, if it's actually serious.  I'm very comfortable programming in Perl, and have written quite a few modules for IkiWiki, and it would be a huge pain to have to start from scratch all over again.
-On the other hand, this could be a motivation for me to learn Haskell.  My only encounter with Haskell has been a brief time when I was using the Xmonad window manager, but it looks like an interesting language. Functional programming is cool.
-
-There are a lot of interesting plusses for Haskell you note (in the parent page), but it's true that the idea is horribly daunting (as [[Joey]] said "If only I had a spare year").  Is there any way that you could "start small"?  Because nothing will ever happen if the task is too daunting to even start.
-
-On further thought... perhaps it would be easier to fork or contribute to an existing Haskell-based wiki, such as <a href="http://jaspervdj.be/hakyll">Hakyll</a>?
+I'm torn about this idea, if it's actually serious.  I'm very comfortable
+programming in Perl, and have written quite a few modules for IkiWiki, and
+it would be a huge pain to have to start from scratch all over again. On
+the other hand, this could be a motivation for me to learn Haskell.  My
+only encounter with Haskell has been a brief time when I was using the
+Xmonad window manager, but it looks like an interesting language.
+Functional programming is cool.
+
+There are a lot of interesting plusses for Haskell you note (in the parent
+page), but it's true that the idea is horribly daunting (as [[Joey]] said
+"If only I had a spare year").  Is there any way that you could "start
+small"?  Because nothing will ever happen if the task is too daunting to
+even start.
+
+> This seems destined to remain a thought experiment unless something like
+> that can be done, or I get a serious case of second system disease.
+> 
+> I've considered doing things like using the external plugin interface
+> to run a separate haskell program, which would allow implementing
+> arbitrary plugins in haskell (starting with a pandoc plugin..),
+> and could perhaps grow to subsume the perl code. However, this would
+> stick us with the perl data structures, which are not a very good fit
+> for haskell. --[[Joey]]
+
+On further thought... perhaps it would be easier to fork or contribute to
+an existing Haskell-based wiki, such as <a
+href="http://jaspervdj.be/hakyll">Hakyll</a>?
 
 --[[KathrynAndersen]]
+
+> As far as I know there are no other wikis (haskell or otherwise)
+> that are wiki compilers. Since we know from experience that dealing
+> with static compilation turns out to be one of the trickiest parts of
+> ikiwiki, I'm doubtful about trying to bolt that into one. --[[Joey]] 

functional changes are underway
diff --git a/doc/rcs/cvs/discussion.mdwn b/doc/rcs/cvs/discussion.mdwn
index 2df2c13..2e6468d 100644
--- a/doc/rcs/cvs/discussion.mdwn
+++ b/doc/rcs/cvs/discussion.mdwn
@@ -159,3 +159,12 @@ branch harder for you to pull.
 Before I go writing a whole swack of test cases, could you merge
 my latest? Through at least ad0e56cdcaaf76bc68d1b5c56e6845307b51c44a
 there should be no functional change. --[[schmonz]]
+
+Never mind, I was able to convince myself (by cloning `origin`
+afresh and merging from `schmonz/cvs`). The history is a little
+gross but the before-and-after diff looks right.
+
+Bugs found and fixed so far:
+
+* Stop treating text files as binary (`-kb`) on `rcs_add()`
+   (ac8eab29e8394aca4c0b23a6687ec947ea1ac869)

even further thought
diff --git a/doc/todo/rewrite_ikiwiki_in_haskell/discussion.mdwn b/doc/todo/rewrite_ikiwiki_in_haskell/discussion.mdwn
index 7ac1f4b..cf27255 100644
--- a/doc/todo/rewrite_ikiwiki_in_haskell/discussion.mdwn
+++ b/doc/todo/rewrite_ikiwiki_in_haskell/discussion.mdwn
@@ -20,4 +20,6 @@ On the other hand, this could be a motivation for me to learn Haskell.  My only
 
 There are a lot of interesting plusses for Haskell you note (in the parent page), but it's true that the idea is horribly daunting (as [[Joey]] said "If only I had a spare year").  Is there any way that you could "start small"?  Because nothing will ever happen if the task is too daunting to even start.
 
+On further thought... perhaps it would be easier to fork or contribute to an existing Haskell-based wiki, such as <a href="http://jaspervdj.be/hakyll">Hakyll</a>?
+
 --[[KathrynAndersen]]

further thoughts
diff --git a/doc/todo/rewrite_ikiwiki_in_haskell/discussion.mdwn b/doc/todo/rewrite_ikiwiki_in_haskell/discussion.mdwn
index d8e0e3e..7ac1f4b 100644
--- a/doc/todo/rewrite_ikiwiki_in_haskell/discussion.mdwn
+++ b/doc/todo/rewrite_ikiwiki_in_haskell/discussion.mdwn
@@ -18,4 +18,6 @@ Congratulations for demonstrating that April fools jokes can still be subtle
 I'm torn about this idea, if it's actually serious.  I'm very comfortable programming in Perl, and have written quite a few modules for IkiWiki, and it would be a huge pain to have to start from scratch all over again.
 On the other hand, this could be a motivation for me to learn Haskell.  My only encounter with Haskell has been a brief time when I was using the Xmonad window manager, but it looks like an interesting language. Functional programming is cool.
 
+There are a lot of interesting plusses for Haskell you note (in the parent page), but it's true that the idea is horribly daunting (as [[Joey]] said "If only I had a spare year").  Is there any way that you could "start small"?  Because nothing will ever happen if the task is too daunting to even start.
+
 --[[KathrynAndersen]]

comment about Haskell
diff --git a/doc/todo/rewrite_ikiwiki_in_haskell/discussion.mdwn b/doc/todo/rewrite_ikiwiki_in_haskell/discussion.mdwn
index 1edebe4..d8e0e3e 100644
--- a/doc/todo/rewrite_ikiwiki_in_haskell/discussion.mdwn
+++ b/doc/todo/rewrite_ikiwiki_in_haskell/discussion.mdwn
@@ -12,3 +12,10 @@ Congratulations for demonstrating that April fools jokes can still be subtle
 >>> It doesn't really. I recently (re-)read about couchdb and thought that
 >>> what it was trying to do had some comparisons with the thinking going on
 >>> in [[todo/structured_page_data]]. -- [[Jon]]
+
+-----
+
+I'm torn about this idea, if it's actually serious.  I'm very comfortable programming in Perl, and have written quite a few modules for IkiWiki, and it would be a huge pain to have to start from scratch all over again.
+On the other hand, this could be a motivation for me to learn Haskell.  My only encounter with Haskell has been a brief time when I was using the Xmonad window manager, but it looks like an interesting language. Functional programming is cool.
+
+--[[KathrynAndersen]]

response
diff --git a/doc/todo/multi-thread_ikiwiki.mdwn b/doc/todo/multi-thread_ikiwiki.mdwn
index 0beea6f..358185a 100644
--- a/doc/todo/multi-thread_ikiwiki.mdwn
+++ b/doc/todo/multi-thread_ikiwiki.mdwn
@@ -64,3 +64,26 @@ Disclaimer: I know nothing of the Perl approach to parallel processing.
 
 >>> I'm not really sure what the best solution is.  Me, I profile my IkiWiki builds and try to tweak performance for them... but there's only so much I can do.
 >>> --[[KathrynAndersen]]
+
+>>>> IMHO, the best way to get a multithreaded ikiwiki is to rewrite it
+>>>> in haskell, using as much pure code as possible. Many avenues
+>>>> then would open up to taking advantage of haskell's ability to
+>>>> parallize pure code.
+>>>>
+>>>> With that said, we already have some nice invariants that could be
+>>>> used to parallelize page builds. In particular, we know that
+>>>> page A never needs state built up while building page B, for any
+>>>> pages A and B that don't have a dependency relationship -- and ikiwiki
+>>>> tracks such dependency relationships, although not currently in a form
+>>>> that makes it very easy (or fast..) to pick out such groups of
+>>>> unrelated pages.
+>>>> 
+>>>> OTOH, there are problems.. building page A can result in changes to
+>>>> ikiwiki's state; building page B can result in other changes. All
+>>>> such changes would have to be made thread-safely. And would the
+>>>> resulting lock contention result in a program that ran any faster
+>>>> once parallelized?
+>>>> 
+>>>> Which is why [[rewrite_ikiwiki_in_haskell]], while pretty insane, is
+>>>> something I keep thinking about. If only I had a spare year..
+>>>> --[[Joey]]
diff --git a/doc/todo/rewrite_ikiwiki_in_haskell.mdwn b/doc/todo/rewrite_ikiwiki_in_haskell.mdwn
index 48ed744..e48765b 100644
--- a/doc/todo/rewrite_ikiwiki_in_haskell.mdwn
+++ b/doc/todo/rewrite_ikiwiki_in_haskell.mdwn
@@ -62,8 +62,4 @@ Some other things to be scared about:
   a bunch of haskell libraries. OTOH, it might be possible to build a
   static binary at home and upload it, thus avoiding a messy installation
   procedure entirely.
-* I can barely code in haskell yet. I'm probably about 100x faster at
-  programming in perl. I need to get some more practical experience before
-  I´m fast and seasoned enough in haskell to attempt such a project.
-  (And so far, progress at learning has been slow and I have not managed
-  to write anything serious in haskell.) --[[Joey]] 
+  --[[Joey]] 

why do I always forget something?
diff --git a/doc/forum/two_new_contrib_plugins:_newpage__44___jssearchfield.mdwn b/doc/forum/two_new_contrib_plugins:_newpage__44___jssearchfield.mdwn
index 757b58a..8293b09 100644
--- a/doc/forum/two_new_contrib_plugins:_newpage__44___jssearchfield.mdwn
+++ b/doc/forum/two_new_contrib_plugins:_newpage__44___jssearchfield.mdwn
@@ -16,3 +16,5 @@ is running on.
 Because this uses Javascript, the htmlscrubber must be turned off for any page where the directive is used.
 
 This plugin depends on the [[!iki plugins/contrib/field]] plugin.
+
+--[[KathrynAndersen]]

new plugins, anyone?
diff --git a/doc/forum/two_new_contrib_plugins:_newpage__44___jssearchfield.mdwn b/doc/forum/two_new_contrib_plugins:_newpage__44___jssearchfield.mdwn
new file mode 100644
index 0000000..757b58a
--- /dev/null
+++ b/doc/forum/two_new_contrib_plugins:_newpage__44___jssearchfield.mdwn
@@ -0,0 +1,18 @@
+Just thought people might like to know I've added a couple more plugins to contrib.
+
+[[plugins/contrib/newpage]]: This plugin adds a new action to the "ACTIONS" section of a page; a button labelled "create" and an input field next to it.
+
+The common way of creating a new page is to edit a different page and add a link to the new page. However, there are some situations where that is a nuisance; for example, where pages are listed using a map directive. The newpage plugin enables one to simply type the name of the new page, click the "create" button, and one is then taken to the standard IkiWiki create-page form.
+
+[[plugins/contrib/jssearchfield]]: This plugin provides the [[plugins/contrib/ikiwiki/directive/jssearchfield]] directive.  This
+enables one to search the structured data ("field" values) of multiple pages.
+This uses Javascript for the searching, which means that the entire thing
+is self-contained and does not require a server or CGI access, unlike
+the default IkiWiki search. This means that it can be used in places such
+as ebook readers.  The disadvantage is that because Javascript runs
+in the browser, the searching is only as fast as the machine your browser
+is running on.
+
+Because this uses Javascript, the htmlscrubber must be turned off for any page where the directive is used.
+
+This plugin depends on the [[!iki plugins/contrib/field]] plugin.

new jssearchfield directive
diff --git a/doc/plugins/contrib/ikiwiki/directive/jssearchfield.mdwn b/doc/plugins/contrib/ikiwiki/directive/jssearchfield.mdwn
new file mode 100644
index 0000000..5d33890
--- /dev/null
+++ b/doc/plugins/contrib/ikiwiki/directive/jssearchfield.mdwn
@@ -0,0 +1,42 @@
+The `jssearchfield` directive is supplied by the [[!iki plugins/contrib/jssearchfield desc=jssearchfield]] plugin.
+
+This enables one to search the structured data ("field" values) of
+multiple pages.  A search form is constructed, and the searching is
+done with Javascript, which means that the entire thing is self-contained.
+This depends on the [[!iki plugins/contrib/field]] plugin.
+
+The pages to search are selected by a PageSpec given by the "pages"
+parameter.
+The fields to search are given by the "fields" parameter.  By default,
+the field name is given, and the user can type the search parameter for
+that field into a text input field.
+
+## OPTIONS
+
+**pages**: A PageSpec to determine the pages to search through.
+
+**fields**: The fields to put into the search form, and to display
+in the results.
+
+**tagfields**: Display the given fields as a list of tags that can
+be selected from, rather than having a text input field.  Every distinct
+value of that field will be listed, so it is best used for things with
+short values, like "Author" rather than long ones like "Description".
+Note that "tagfields" must be a subset of "fields".
+
+**sort**: A SortSpec to determine how the matching pages should be sorted; this is the "default" sort order that the results will be displayed in.
+The search form also gives the option of "random" sort, which will
+display the search results in random order.
+
+## SEARCHING
+
+The search form that is created by this directive contains the following:
+
+* for each search field, a label, plus either a text input field, or a list of checkboxes with values next to them if the field is also a tagfield.  Note that the lists of checkboxes are initially hidden; one must click on the triangle next to the label to display them.
+* a "sort" toggle. One can select either "default" or "random".
+* A "Search!" button, to trigger the search if needed (see below)
+* A "Reset" button, which will clear all the values.
+
+The searching is dynamic.  As soon as a value is changed, either by tabbing out of the text field, or by selecting or de-selecting a checkbox, the search
+results are updated.  Furthermore, for tagfields, the tagfield lists
+themselves are updated to reflect the current search results.

new plugin "jssearchfield"
diff --git a/doc/plugins/contrib/jssearchfield.mdwn b/doc/plugins/contrib/jssearchfield.mdwn
new file mode 100644
index 0000000..2d41ee2
--- /dev/null
+++ b/doc/plugins/contrib/jssearchfield.mdwn
@@ -0,0 +1,35 @@
+[[!template id=plugin name=jssearchfield author="[[rubykat]]"]]
+[[!tag type/search]]
+IkiWiki::Plugin::jssearchfield - Create a search form to search page field data.
+
+This plugin provides the [[ikiwiki/directive/jssearchfield]] directive.  This
+enables one to search the structured data ("field" values) of multiple pages.
+This uses Javascript for the searching, which means that the entire thing
+is self-contained and does not require a server or CGI access, unlike
+the default IkiWiki search. This means that it can be used in places such
+as ebook readers.  The disadvantage is that because Javascript runs
+in the browser, the searching is only as fast as the machine your browser
+is running on.
+
+Because this uses Javascript, the htmlscrubber must be turned off for any page where the directive is used.
+
+This plugin depends on the [[!iki plugins/contrib/field]] plugin.
+
+## Activate the plugin
+
+    # activate the plugin
+    add_plugins => [qw{goodstuff field jssearchfield ....}],
+
+    # disable scrubbing for search page
+    htmlscrubber_skip => 'mysearchpage',
+
+## PREREQUISITES
+
+    IkiWiki
+    IkiWiki::Plugin::field
+    HTML::Template
+
+## DOWNLOAD
+
+* browse at GitHub: <http://github.com/rubykat/ikiplugins/blob/master/IkiWiki/Plugin/jssearchfield.pm>
+* git repo at git://github.com/rubykat/ikiplugins.git

Clearer (I hope) bug report
diff --git a/doc/bugs/Encoding_problem_in_calendar_plugin.mdwn b/doc/bugs/Encoding_problem_in_calendar_plugin.mdwn
index bf2cad8..2ccc43c 100644
--- a/doc/bugs/Encoding_problem_in_calendar_plugin.mdwn
+++ b/doc/bugs/Encoding_problem_in_calendar_plugin.mdwn
@@ -2,13 +2,13 @@ Hello,
 
 I studied this [[guy's problem|forum/Encoding_problem_in_french_with_ikiwiki-calendar]] and I propose here a (dirty) hack to correct it.
 
-The problem is that in French, for example, "December" is "Décembre" which, because of encoding problems, is rendered as "Décembre".
+Bug summary: when using the [[calendar plugin|plugins/calendar]] in French (`LANG=fr_FR.UTF-8`), "Décembre" (French for "December") is rendered as "Décembre".
 
 I managed to track this problem down to an encoding problem of `POSIX::strftime` in `Ikiwiki/Plugin/calendar.pm`. I used [[this guy's solution|http://www.perlmonks.org/?node_id=857018]] to solve the problem (the diff is printed below).
 
-The problem is that I do not know Perl, encoding is one of the thing I would be happy not to dive into, and it is the first time I contribute to Ikiwiki: I copied and made a few changes to the code I found without understanding it. So I am not sure that my code is neat, or works in every situation. Feel free to improve it!
+The problem is that I do not know Perl, encoding is one of the thing I would be happy not to dive into, and it is the first time I contribute to Ikiwiki: I copied and made a few changes to the code I found without understanding it. So I am not sure that my code is neat, or works in every situation. Feel free to (help me to) improve it!
 
-Cheers,
+Cheers,    
 Louis
 
 

New bug: encoding problem in calendar plugin
diff --git a/doc/bugs/Encoding_problem_in_calendar_plugin.mdwn b/doc/bugs/Encoding_problem_in_calendar_plugin.mdwn
new file mode 100644
index 0000000..bf2cad8
--- /dev/null
+++ b/doc/bugs/Encoding_problem_in_calendar_plugin.mdwn
@@ -0,0 +1,69 @@
+Hello,
+
+I studied this [[guy's problem|forum/Encoding_problem_in_french_with_ikiwiki-calendar]] and I propose here a (dirty) hack to correct it.
+
+The problem is that in French, for example, "December" is "Décembre" which, because of encoding problems, is rendered as "Décembre".
+
+I managed to track this problem down to an encoding problem of `POSIX::strftime` in `Ikiwiki/Plugin/calendar.pm`. I used [[this guy's solution|http://www.perlmonks.org/?node_id=857018]] to solve the problem (the diff is printed below).
+
+The problem is that I do not know Perl, encoding is one of the thing I would be happy not to dive into, and it is the first time I contribute to Ikiwiki: I copied and made a few changes to the code I found without understanding it. So I am not sure that my code is neat, or works in every situation. Feel free to improve it!
+
+Cheers,
+Louis
+
+
+    diff --git a/IkiWiki/Plugin/calendar.pm b/IkiWiki/Plugin/calendar.pm
+    index c7d2b7c..1345939 100644
+    --- a/IkiWiki/Plugin/calendar.pm
+    +++ b/IkiWiki/Plugin/calendar.pm
+    @@ -22,7 +22,14 @@ use warnings;
+     use strict;
+     use IkiWiki 3.00;
+     use Time::Local;
+    -use POSIX ();
+    +
+    +use POSIX qw/setlocale LC_TIME strftime/;
+    +use Encode;
+    +my ($strftime_encoding)= setlocale(LC_TIME)=~m#\.([^@]+)#;
+    +sub strftime_utf8 {
+    +# try to return an utf8 value from strftime
+    +	$strftime_encoding ? Encode::decode($strftime_encoding, &strftime) : &strftime;
+    +}
+     
+     my $time=time;
+     my @now=localtime($time);
+    @@ -123,10 +130,10 @@ sub format_month (@) {
+     	}
+     
+     	# Find out month names for this, next, and previous months
+    -	my $monthabbrev=POSIX::strftime("%b", @monthstart);
+    -	my $monthname=POSIX::strftime("%B", @monthstart);
+    -	my $pmonthname=POSIX::strftime("%B", localtime(timelocal(0,0,0,1,$pmonth-1,$pyear-1900)));
+    -	my $nmonthname=POSIX::strftime("%B", localtime(timelocal(0,0,0,1,$nmonth-1,$nyear-1900)));
+    +	my $monthabbrev=strftime_utf8("%b", @monthstart);
+    +	my $monthname=strftime_utf8("%B", @monthstart);
+    +	my $pmonthname=strftime_utf8("%B", localtime(timelocal(0,0,0,1,$pmonth-1,$pyear-1900)));
+    +	my $nmonthname=strftime_utf8("%B", localtime(timelocal(0,0,0,1,$nmonth-1,$nyear-1900)));
+     
+     	my $archivebase = 'archives';
+     	$archivebase = $config{archivebase} if defined $config{archivebase};
+    @@ -182,7 +189,7 @@ EOF
+     	my %dowabbr;
+     	for my $dow ($week_start_day..$week_start_day+6) {
+     		my @day=localtime(timelocal(0,0,0,$start_day++,$params{month}-1,$params{year}-1900));
+    -		my $downame = POSIX::strftime("%A", @day);
+    +		my $downame = strftime_utf8("%A", @day);
+     		my $dowabbr = substr($downame, 0, 1);
+     		$downame{$dow % 7}=$downame;
+     		$dowabbr{$dow % 7}=$dowabbr;
+    @@ -329,8 +336,8 @@ EOF
+     	for (my $month = 1; $month <= 12; $month++) {
+     		my @day=localtime(timelocal(0,0,0,15,$month-1,$params{year}-1900));
+     		my $murl;
+    -		my $monthname = POSIX::strftime("%B", @day);
+    -		my $monthabbr = POSIX::strftime("%b", @day);
+    +		my $monthname = strftime_utf8("%B", @day);
+    +		my $monthabbr = strftime_utf8("%b", @day);
+     		$calendar.=qq{\t<tr>\n}  if ($month % $params{months_per_row} == 1);
+     		my $tag;
+     		my $mtag=sprintf("%02d", $month);

cleanup
diff --git a/doc/__126__root/testblog.mdwn b/doc/__126__root/testblog.mdwn
deleted file mode 100644
index d4c298b..0000000
--- a/doc/__126__root/testblog.mdwn
+++ /dev/null
@@ -1 +0,0 @@
-hi - main page or so.

diff --git a/doc/__126__root/testblog.mdwn b/doc/__126__root/testblog.mdwn
new file mode 100644
index 0000000..d4c298b
--- /dev/null
+++ b/doc/__126__root/testblog.mdwn
@@ -0,0 +1 @@
+hi - main page or so.

diff --git a/doc/forum/Encoding_problem_in_french_with_ikiwiki-calendar.mdwn b/doc/forum/Encoding_problem_in_french_with_ikiwiki-calendar.mdwn
new file mode 100644
index 0000000..7e21644
--- /dev/null
+++ b/doc/forum/Encoding_problem_in_french_with_ikiwiki-calendar.mdwn
@@ -0,0 +1,17 @@
+Hi!
+
+I'm using the ikiwiki calendar plugin.
+
+My website is in french (locale fr_FR.UTF-8), and calendars that are generated by the plugin makes some encodi$
+
+I don't know how the plugin generate translation for dates, but I've seen that there is no ikiwiki translation$
+
+That's why I suppose (but I'm not sure) that it use date unix command to insert date into the html page, witho$
+
+Could I have forgotten some options to make it nice or not?
+
+Is someone could test it and verify if it works or not?
+
+Thanks.
+
+Zut

Oups
diff --git a/doc/forum.mdwn b/doc/forum.mdwn
index 5722bef..62b62a4 100644
--- a/doc/forum.mdwn
+++ b/doc/forum.mdwn
@@ -1,20 +1,8 @@
-Hi!
+This is a place for questions and discussions that don't have a Discussion
+page fitting enough. Users of ikiwiki can ask questions here.
 
-I'm using the ikiwiki calendar plugin.
-
-My website is in french (locale fr_FR.UTF-8), and calendars that are generated by the plugin makes some encoding problem (with "Février", "Août" and "Décembre".
-
-I don't know how the plugin generate translation for dates, but I've seen that there is no ikiwiki translation file  for this.
-
-That's why I suppose (but I'm not sure) that it use date unix command to insert date into the html page, without replacing specials characters with html code ( "é" by "&eacute;" for example).
-
-Could I have forgotten some options to make it nice or not?
-
-Is someone could test it and verify if it works or not?
-
-Thanks.
-
-Zut
+Note that for more formal bug reports or todo items, you can also edit the
+[[bugs]] and [[todo]] pages.
 
 
 ## Current topics ##

Encoding problem in french with ikiwiki-calendar
diff --git a/doc/forum.mdwn b/doc/forum.mdwn
index 19ca9ed..5722bef 100644
--- a/doc/forum.mdwn
+++ b/doc/forum.mdwn
@@ -1,8 +1,21 @@
-This is a place for questions and discussions that don't have a Discussion
-page fitting enough. Users of ikiwiki can ask questions here.
+Hi!
+
+I'm using the ikiwiki calendar plugin.
+
+My website is in french (locale fr_FR.UTF-8), and calendars that are generated by the plugin makes some encoding problem (with "Février", "Août" and "Décembre".
+
+I don't know how the plugin generate translation for dates, but I've seen that there is no ikiwiki translation file  for this.
+
+That's why I suppose (but I'm not sure) that it use date unix command to insert date into the html page, without replacing specials characters with html code ( "é" by "&eacute;" for example).
+
+Could I have forgotten some options to make it nice or not?
+
+Is someone could test it and verify if it works or not?
+
+Thanks.
+
+Zut
 
-Note that for more formal bug reports or todo items, you can also edit the
-[[bugs]] and [[todo]] pages.
 
 ## Current topics ##
 

diff --git a/doc/plugins/wmd/discussion.mdwn b/doc/plugins/wmd/discussion.mdwn
index 7246f22..b57ef40 100644
--- a/doc/plugins/wmd/discussion.mdwn
+++ b/doc/plugins/wmd/discussion.mdwn
@@ -69,3 +69,5 @@ copy [...]
 >> `this.input = doc.getElementById("editcontent" + postfix);`
 >>
 >> on line 247.  --[[simonraven]]
+
+>>> Well, I re-figured out that I needed a TMPL_VAR FOO in the template(s). --[[simonraven]]

diff --git a/doc/plugins/wmd/discussion.mdwn b/doc/plugins/wmd/discussion.mdwn
index 42af97e..7246f22 100644
--- a/doc/plugins/wmd/discussion.mdwn
+++ b/doc/plugins/wmd/discussion.mdwn
@@ -59,3 +59,13 @@ copy [...]
 > It does not, however, have a markdown to html converter -- for 
 > previewing it has to talk to the server with AJAX.
 > --[[Joey]] 
+
+>> I've got pagedown working on my personal site (simon.kisikew.org) but I'm not sure how
+>> I can inject the relevant &lt;div&gt;'s in the right place. They need to go **above**
+>> the editing &lt;textarea&gt; . (Too bad about the licensing, it's rather nice.)
+>> I had to do one minor change to it to have it inject itself into the page properly,
+>> and that was to make this change in `Markdown.Editor.js`:
+>>
+>> `this.input = doc.getElementById("editcontent" + postfix);`
+>>
+>> on line 247.  --[[simonraven]]

which came first, the chicken or the egg?
diff --git a/doc/todo/multi-thread_ikiwiki.mdwn b/doc/todo/multi-thread_ikiwiki.mdwn
index 3838103..0beea6f 100644
--- a/doc/todo/multi-thread_ikiwiki.mdwn
+++ b/doc/todo/multi-thread_ikiwiki.mdwn
@@ -35,3 +35,32 @@ Disclaimer: I know nothing of the Perl approach to parallel processing.
 > > about meet the benefit of most of the threading/async work.
 > >
 > > --[[tychoish]]
+
+>>> It's at this point that doing profiling for a particular site would come
+>>> in, because it would depend on the site content and how exactly IkiWiki is
+>>> being used as to what the performance bottlenecks would be.  For the
+>>> original poster, it would be image processing.  For me, it tends to be
+>>> PageSpecs, because I have a lot of maps and reports.
+
+>>> But I sincerely don't think that Disk I/O is the main bottleneck, not when
+>>> the original poster mentions CPU usage, and also in my experience, I see
+>>> IkiWiki chewing up 100% CPU usage one CPU, while the others remain idle.  I
+>>> haven't noticed slowdowns due to waiting for disk I/O, whether that be a
+>>> system with HD or SSD storage.
+
+>>> I agree that large sites are probably not the most common use-case, but it
+>>> can be a chicken-and-egg situation with large sites and complete rebuilds,
+>>> since it can often be the case with a large site that rebuilding based on
+>>> dependencies takes *longer* than rebuilding the site from scratch, simply
+>>> because there are so many pages that are interdependent.  It's not always
+>>> the number of pages itself, but how the site is being used.  If IkiWiki is
+>>> used with the absolute minimum number of page-dependencies - that is, no
+>>> maps, no sitemaps, no trails, no tags, no backlinks, no albums - then one
+>>> can have a very large number of pages without having performance problems.
+>>> But when you have a change in PageA affecting PageB which affects PageC,
+>>> PageD, PageE and PageF, then performance can drop off horribly.  And it's a
+>>> trade-off, because having features that interlink pages automatically is
+>>> really nifty ad useful - but they have a price.
+
+>>> I'm not really sure what the best solution is.  Me, I profile my IkiWiki builds and try to tweak performance for them... but there's only so much I can do.
+>>> --[[KathrynAndersen]]

comment to multi-threading discussion
diff --git a/doc/todo/multi-thread_ikiwiki.mdwn b/doc/todo/multi-thread_ikiwiki.mdwn
index 396037f..3838103 100644
--- a/doc/todo/multi-thread_ikiwiki.mdwn
+++ b/doc/todo/multi-thread_ikiwiki.mdwn
@@ -10,3 +10,28 @@ Disclaimer: I know nothing of the Perl approach to parallel processing.
 > I agree that it would be lovely to be able to use multiple processors to speed up rebuilds on big sites (I have a big site myself), but, taking a quick look at what Perl threads entails, and taking into acount what I've seen of the code of IkiWiki, it would take a massive rewrite to make IkiWiki thread-safe - the API would have to be completely rewritten - and then more work again to introduce threading itself.  So my unofficial humble opinion is that it's unlikely to be done.
 > Which is a pity, and I hope I'm mistaken about it.
 > --[[KathrynAndersen]]
+
+> > I have much less experience with the internals of Ikiwiki, much
+> > less Multi-threading perl, but I agree that to make Ikiwiki thread
+> > safe and to make the modifications to really take advantage of the
+> > threads is probably beyond the realm of reasonable
+> > expectations. Having said that, I wonder if there aren't ways to
+> > make Ikiwiki perform better for these big cases where the only
+> > option is to wait for it to grind through everything. Something
+> > along the lines of doing all of the aggregation and dependency
+> > heavy stuff early on, and then doing all of the page rendering
+> > stuff at the end quasi-asynchronously? Or am I way off in the deep
+> > end.
+> >
+> > From a practical perspective, it seems like these massive rebuild
+> > situations represent a really small subset of ikiwiki builds. Most
+> > sites are pretty small, and most sites need full rebuilds very
+> > very infrequently. In that scope, 10 minute rebuilds aren't that
+> > bad seeming. In terms of performance challenges, it's the one page
+> > with 3-5 dependency that takes 10 seconds (say) to rebuild that's
+> > a larger challenge for Ikiwiki as a whole. At the same time, I'd
+> > be willing to bet that performance benefits for these really big
+> > repositories for using fast disks (i.e. SSDs) could probably just
+> > about meet the benefit of most of the threading/async work.
+> >
+> > --[[tychoish]]

unofficial opinion
diff --git a/doc/todo/multi-thread_ikiwiki.mdwn b/doc/todo/multi-thread_ikiwiki.mdwn
index 1494fed..396037f 100644
--- a/doc/todo/multi-thread_ikiwiki.mdwn
+++ b/doc/todo/multi-thread_ikiwiki.mdwn
@@ -6,3 +6,7 @@ Lots of \[[!img ]] (~2200), lots of \[[!teximg ]] (~2700). A complete rebuild ta
 We could use a big machine, with plenty of CPUs. Could some multi-threading support be added to ikiwiki, by forking out all the external heavy  plugins (imagemagick, tex, ...) and/or by processing pages in parallel?
 
 Disclaimer: I know nothing of the Perl approach to parallel processing.
+
+> I agree that it would be lovely to be able to use multiple processors to speed up rebuilds on big sites (I have a big site myself), but, taking a quick look at what Perl threads entails, and taking into acount what I've seen of the code of IkiWiki, it would take a massive rewrite to make IkiWiki thread-safe - the API would have to be completely rewritten - and then more work again to introduce threading itself.  So my unofficial humble opinion is that it's unlikely to be done.
+> Which is a pity, and I hope I'm mistaken about it.
+> --[[KathrynAndersen]]

diff --git a/doc/ikiwikiusers.mdwn b/doc/ikiwikiusers.mdwn
index 1fc4552..bd85d6c 100644
--- a/doc/ikiwikiusers.mdwn
+++ b/doc/ikiwikiusers.mdwn
@@ -164,7 +164,7 @@ Personal sites and blogs
 * [Richard "RichiH" Hartmann](http://richardhartmann.de/blog) - I thought I had added myself a year ago. Oups :)
 * [Jonas Smedegaard](http://dr.jones.dk/) multilingual "classic" website w/ blog
 * [Siri Reiter](http://sirireiter.dk/) portfolio website with a blog (in danish)
-* [L'Altro Wiki](http://laltromondo.dynalias.net/~iki/) Tutorials, reviews, miscellaneus articles in English and Italian, from the IRC network syrolnet.org
+* [L'Altro Wiki](http://laltromondo.dynalias.net/~iki/) Tutorials, reviews, miscellaneus articles in English and Italian.
 * [STUPiD](http://lhzhang.com/)
 * gregoa's [p.r. - political rants](http://info.comodo.priv.at/pr/)
 * [Michael Hammer](http://www.michael-hammer.at/)

Fix wikipedia URL: wikipedia.org, not wikimedia.org
diff --git a/doc/shortcuts.mdwn b/doc/shortcuts.mdwn
index ecd73f5..07210f9 100644
--- a/doc/shortcuts.mdwn
+++ b/doc/shortcuts.mdwn
@@ -15,7 +15,7 @@ This page controls what shortcut links the wiki supports.
 * [[!shortcut name=archive url="http://web.archive.org/*/%S"]]
 * [[!shortcut name=gmap url="https://maps.google.com/maps?q=%s"]]
 * [[!shortcut name=gmsg url="https://groups.google.com/groups?selm=%s"]]
-* [[!shortcut name=wikipedia url="https://en.wikimedia.org/wiki/%s"]]
+* [[!shortcut name=wikipedia url="https://en.wikipedia.org/wiki/%s"]]
 * [[!shortcut name=wikitravel url="https://wikitravel.org/en/%s"]]
 * [[!shortcut name=wiktionary url="https://en.wiktionary.org/wiki/%s"]]
 * [[!shortcut name=debbug url="http://bugs.debian.org/%S" desc="Debian bug #%s"]]

pull request (no functional change, just worried I broke easy merging)
diff --git a/doc/rcs/cvs/discussion.mdwn b/doc/rcs/cvs/discussion.mdwn
index 645b238..2df2c13 100644
--- a/doc/rcs/cvs/discussion.mdwn
+++ b/doc/rcs/cvs/discussion.mdwn
@@ -147,3 +147,15 @@ short and clear as possible. --[[schmonz]]
 > that. --[[Joey]]
 
 >> Done. --[[schmonz]].
+
+----
+
+I'm attempting to bring some polish to this plugin, starting with
+fuller test coverage. In preparation, I've refactored the tests a
+bunch (and shuffled the code a bit) in my branch. I'm worried,
+however, that my misunderstanding of `git rebase` may have made my
+branch harder for you to pull.
+
+Before I go writing a whole swack of test cases, could you merge
+my latest? Through at least ad0e56cdcaaf76bc68d1b5c56e6845307b51c44a
+there should be no functional change. --[[schmonz]]

diff --git a/doc/sandbox/Test_it.mdwn b/doc/sandbox/Test_it.mdwn
new file mode 100644
index 0000000..5478d7a
--- /dev/null
+++ b/doc/sandbox/Test_it.mdwn
@@ -0,0 +1 @@
+Test it just now!

point to my branch, wrap lines, working on test coverage now
diff --git a/doc/rcs/cvs.mdwn b/doc/rcs/cvs.mdwn
index 9beb08e..a0ee5ab 100644
--- a/doc/rcs/cvs.mdwn
+++ b/doc/rcs/cvs.mdwn
@@ -1,13 +1,17 @@
-If you really need to, you can use [[!wikipedia desc="CVS" Concurrent Versions System]]
-with ikiwiki.
+[[!template id=gitbranch branch=schmonz/cvs author="[[schmonz]]"]]
+
+If you really need to, you can use [[!wikipedia desc="CVS" Concurrent
+Versions System]] with ikiwiki.
 
 ### Usage
 7. Install [[!cpan File::chdir]], [[!cpan File::ReadBackwards]],
-[cvsps](http://www.cobite.com/cvsps/), and
-[cvsweb](http://www.freebsd.org/projects/cvsweb.html) or the like.
+   [cvsps](http://www.cobite.com/cvsps/), and
+   [cvsweb](http://www.freebsd.org/projects/cvsweb.html) or the like.
 7. Adjust CVS-related parameters in your setup file.
 
-Consider creating `$HOME/.cvsrc` if you don't have one already; the plugin doesn't need it, but you yourself might. Here's a good general-purpose one:
+Consider creating `$HOME/.cvsrc` if you don't have one already; the
+plugin doesn't need it, but you yourself might. Here's a good
+general-purpose one:
 
     cvs -q
     checkout -P
@@ -17,12 +21,25 @@ Consider creating `$HOME/.cvsrc` if you don't have one already; the plugin doesn
 
 ### Implementation details
 * [[ikiwiki-makerepo]]:
- * creates a repository,
- * imports `$SRCDIR` into top-level module `ikiwiki` (vendor tag IKIWIKI, release tag PRE_CVS),
- * configures the post-commit hook in `CVSROOT/loginfo`.
+    * creates a repository,
+    * imports `$SRCDIR` into top-level module `ikiwiki` (vendor tag
+      IKIWIKI, release tag PRE_CVS),
+    * configures the post-commit hook in `CVSROOT/loginfo`.
 
 ### To do
-* Have `ikiwiki-makerepo` set up NetBSD-like `log_accum` and `commit_prep` scripts that coalesce commits into changesets. Reasons:
-    7. Obviates the need to scrape the repo's complete history to determine the last N changesets. (Repositories without such records can fall back on the `cvsps` and `File::ReadBackwards` code.)
-    7. Arranges for ikiwiki to be run once per changeset, rather than CVS's once per committed file (!), which is a waste at best and bug-inducing at worst. (Currently, on multi-directory commits, only the first directory's changes get mentioned in [[recentchanges|plugins/recentchanges]].)
-* Perhaps prevent web edits from attempting to create `.../CVS/foo.mdwn` (and `.../cvs/foo.mdwn` on case-insensitive filesystems); thanks to the CVS metadata directory, the attempt will fail anyway (and much more confusingly) if we don't.
+* Expand test coverage and fix bugs.
+* Have `ikiwiki-makerepo` set up NetBSD-like `log_accum` and
+  `commit_prep` scripts that coalesce commits into changesets. Reasons:
+    7. Obviates the need to scrape the repo's complete history to
+       determine the last N changesets. (Repositories without such
+       records can fall back on the `cvsps` and `File::ReadBackwards`
+       code.)
+    7. Arranges for ikiwiki to be run once per changeset, rather
+       than CVS's once per committed file (!), which is a waste at
+       best and bug-inducing at worst. (Currently, on multi-directory
+       commits, only the first directory's changes get mentioned
+       in [[recentchanges|plugins/recentchanges]].)
+* Perhaps prevent web edits from attempting to create `.../CVS/foo.mdwn`
+  (and `.../cvs/foo.mdwn` on case-insensitive filesystems); thanks
+  to the CVS metadata directory, the attempt will fail anyway (and
+  much more confusingly) if we don't.

for rcs_remove(), there's no new file
diff --git a/doc/plugins/write.mdwn b/doc/plugins/write.mdwn
index 9a5ca60..dcab041 100644
--- a/doc/plugins/write.mdwn
+++ b/doc/plugins/write.mdwn
@@ -1110,9 +1110,7 @@ to version control; the subdir can be added if so.
 Remove a file. The filename is relative to the root of the srcdir.
 
 Note that this should not commit the removal, it should only prepare for it
-to be committed when `rcs_commit` (or `rcs_commit_staged`) is called. Note
-that the new file may be in a new subdir that is not yet in version
-control; the subdir can be added if so.
+to be committed when `rcs_commit` (or `rcs_commit_staged`) is called.
 
 #### `rcs_rename($$)`
 

comment - index attachments
diff --git a/doc/forum/index_attachments/comment_4._comment b/doc/forum/index_attachments/comment_4._comment
new file mode 100644
index 0000000..1a27262
--- /dev/null
+++ b/doc/forum/index_attachments/comment_4._comment
@@ -0,0 +1,10 @@
+[[!comment format=mdwn
+ username="jerojasro"
+ nickname="jerojasro"
+ subject="RE: comment 1"
+ date="2012-01-21T21:44:00"
+ content="""
+[[Michal]], that's not a bad idea IMO, but we would lose some [[searching
+keywords|ikiwiki/searching]] and would also index structural elements
+(navigation text, and so on)
+"""]]

diff --git a/doc/forum/Run_script_on_markdown_source.mdwn b/doc/forum/Run_script_on_markdown_source.mdwn
new file mode 100644
index 0000000..614815c
--- /dev/null
+++ b/doc/forum/Run_script_on_markdown_source.mdwn
@@ -0,0 +1 @@
+How can I add a button to each wiki page which launches an external application or script with the markdown code of the current page as input?

clean example blog
This reverts commit 1d1447323474a00d4d479fcdfd4daa85a6e0eecf
diff --git "a/doc/examples/blog/posts/\321\204.mdwn" "b/doc/examples/blog/posts/\321\204.mdwn"
deleted file mode 100644
index 89a5511..0000000
--- "a/doc/examples/blog/posts/\321\204.mdwn"
+++ /dev/null
@@ -1 +0,0 @@
-проба пера

oops!
This reverts commit efbae4b0f93e53cf2bbe3e0dcac66895ffc83a0c
diff --git "a/doc/examples/blog/posts/Tec\321\202.html" "b/doc/examples/blog/posts/Tec\321\202.html"
deleted file mode 100644
index 8c922ac..0000000
--- "a/doc/examples/blog/posts/Tec\321\202.html"
+++ /dev/null
@@ -1,3 +0,0 @@
-<h1>Русские идут. Русские пришли. ^_^</h1>
-<p>Всем большой привет!</p>
-<p><img src="http://i.juick.com/photos-512/1719737.jpg" title="test"></p>

some test records
diff --git "a/doc/examples/blog/posts/Tec\321\202.html" "b/doc/examples/blog/posts/Tec\321\202.html"
new file mode 100644
index 0000000..8c922ac
--- /dev/null
+++ "b/doc/examples/blog/posts/Tec\321\202.html"
@@ -0,0 +1,3 @@
+<h1>Русские идут. Русские пришли. ^_^</h1>
+<p>Всем большой привет!</p>
+<p><img src="http://i.juick.com/photos-512/1719737.jpg" title="test"></p>

тест
diff --git "a/doc/examples/blog/posts/\321\204.mdwn" "b/doc/examples/blog/posts/\321\204.mdwn"
new file mode 100644
index 0000000..89a5511
--- /dev/null
+++ "b/doc/examples/blog/posts/\321\204.mdwn"
@@ -0,0 +1 @@
+проба пера

diff --git a/doc/forum/How_to_change_registration_page.mdwn b/doc/forum/How_to_change_registration_page.mdwn
new file mode 100644
index 0000000..f339f71
--- /dev/null
+++ b/doc/forum/How_to_change_registration_page.mdwn
@@ -0,0 +1,9 @@
+Well, I simply don't see it.
+I would like to change the "account registration" page, where it says user, password, repeat password, Account Creation Password, E-Mail.  
+
+I simply want it to ask a question like "Who's your daddy" or "What are we all working on" instead of "Account creation password".
+
+I already grepped through the files of the source which I compiled ikiwiki from - I just can't find it. I'm a noob in cgi, it seems to be somewhat in there, but that could also be totally wrong.
+
+Can you tell me where to look?
+

Added a comment: apache module?
diff --git a/doc/forum/OpenID_not_working___47___where_to_define_wiki__39__s_ID__63__/comment_1_bf1bec748d6ab419276a73a7001024cf._comment b/doc/forum/OpenID_not_working___47___where_to_define_wiki__39__s_ID__63__/comment_1_bf1bec748d6ab419276a73a7001024cf._comment
new file mode 100644
index 0000000..06d2a33
--- /dev/null
+++ b/doc/forum/OpenID_not_working___47___where_to_define_wiki__39__s_ID__63__/comment_1_bf1bec748d6ab419276a73a7001024cf._comment
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawndsaC4GaIBw49WNdbk2Faqfm_mrtQgul8"
+ nickname="Christian"
+ subject="apache module?"
+ date="2012-01-18T15:40:57Z"
+ content="""
+Do I have to install the openid apache module, load it, and configure apache to use my openid? Except that in my case I can get it from the package system, there is a description <a href=\"http://findingscience.com/mod_auth_openid/\">here</a> what I mean. I got a feeling that's it.
+"""]]

removed
diff --git a/doc/forum/OpenID_not_working___47___where_to_define_wiki__39__s_ID__63__/comment_1_8f310c4a92c14a9f7c34cb39f200d895._comment b/doc/forum/OpenID_not_working___47___where_to_define_wiki__39__s_ID__63__/comment_1_8f310c4a92c14a9f7c34cb39f200d895._comment
deleted file mode 100644
index f4de427..0000000
--- a/doc/forum/OpenID_not_working___47___where_to_define_wiki__39__s_ID__63__/comment_1_8f310c4a92c14a9f7c34cb39f200d895._comment
+++ /dev/null
@@ -1,10 +0,0 @@
-[[!comment format=mdwn
- username="https://www.google.com/accounts/o8/id?id=AItOawndsaC4GaIBw49WNdbk2Faqfm_mrtQgul8"
- nickname="Christian"
- subject="apache module?"
- date="2012-01-18T15:39:17Z"
- content="""
-Do I have to install the relevant apache module (e.g. as described <a href=\"http://findingscience.com/mod_auth_openid/\">here</a> ?
-
-
-"""]]

Added a comment: apache module?
diff --git a/doc/forum/OpenID_not_working___47___where_to_define_wiki__39__s_ID__63__/comment_1_8f310c4a92c14a9f7c34cb39f200d895._comment b/doc/forum/OpenID_not_working___47___where_to_define_wiki__39__s_ID__63__/comment_1_8f310c4a92c14a9f7c34cb39f200d895._comment
new file mode 100644
index 0000000..f4de427
--- /dev/null
+++ b/doc/forum/OpenID_not_working___47___where_to_define_wiki__39__s_ID__63__/comment_1_8f310c4a92c14a9f7c34cb39f200d895._comment
@@ -0,0 +1,10 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawndsaC4GaIBw49WNdbk2Faqfm_mrtQgul8"
+ nickname="Christian"
+ subject="apache module?"
+ date="2012-01-18T15:39:17Z"
+ content="""
+Do I have to install the relevant apache module (e.g. as described <a href=\"http://findingscience.com/mod_auth_openid/\">here</a> ?
+
+
+"""]]

diff --git a/doc/forum/OpenID_not_working___47___where_to_define_wiki__39__s_ID__63__.mdwn b/doc/forum/OpenID_not_working___47___where_to_define_wiki__39__s_ID__63__.mdwn
new file mode 100644
index 0000000..e58844b
--- /dev/null
+++ b/doc/forum/OpenID_not_working___47___where_to_define_wiki__39__s_ID__63__.mdwn
@@ -0,0 +1,12 @@
+Hi,
+
+unfortunately, openID is not working at my wiki. I get the error
+
+no_identity_server: The provided URL doesn't declare its OpenID identity server.
+
+I think this is related to the ID of my wiki not being defined right. Where and how do I have to define it? I have used the !meta openid as described on ikiwiki.info (are there two quotes at the end where only one should be (joeyh example) on index.html. 
+
+Somehow I think its not transferred right to the openID provider of the user upon login.
+
+thanks in advance
+chris

response
diff --git a/doc/bugs/ikiwiki_overzealously_honours_locks_when_asked_for_forms.mdwn b/doc/bugs/ikiwiki_overzealously_honours_locks_when_asked_for_forms.mdwn
index 05b4a45..1e74fe8 100644
--- a/doc/bugs/ikiwiki_overzealously_honours_locks_when_asked_for_forms.mdwn
+++ b/doc/bugs/ikiwiki_overzealously_honours_locks_when_asked_for_forms.mdwn
@@ -1 +1,34 @@
 When an `ikiwiki` instance is holding a lock, a web user clicking on "add comment" (for example) will have to wait for the lock to be released.  However, all they are then presented with is a web form.  Perhaps CGI requests that are read-only (such as generating a comment form, or perhaps certain types of edits) should ignore locks? Of course, I'd understand that the submission would need to wait for a lock. — [[Jon]]
+
+> Ikiwiki has what I think of as the Big Wiki Lock (remembering the "Big
+> Kernel Lock"). It takes the exclusive lock before loading any state,
+> to ensure that any changes to that state are made safely.
+> 
+> A few CGI actions that don't need that info loaded do avoid taking the
+> lock.
+> 
+> In the case of showing the comment form, the comments
+> plugin needs CGI session information to be loaded, so it can check if
+> the user is logged in, and so it can add XSRF prevention tokens based on
+> the session ID. (Actually, it might be possible to rely on
+> `CGI::Session`'s own locking of the sessions file, and have a hook that
+> runs with a session but before the indexdb is loaded.)
+> 
+> But, the comment form also needs to load the indexdb, in order to call
+> `check_canedit`, which matches a pagespec, which can need to look things
+> up in the indexdb. (Though the pagespecs that can do that are unlikely
+> to be relevant when posting a comment.)
+> 
+> I've thought about trying to get rid of the Big Wiki Lock from time to
+> time. It's difficult though; if two ikiwikis are both making changes
+> to the stored state, it's hard to see a way to reconcile them. (There
+> could be a daemon that all changes are fed thru using a protocol, but
+> that's really complicated, and it'd almost be better to have a single
+> daemon that just runs ikiwiki; a major architectural change.)
+> 
+> One way that *almost* seems it could work is to have a entry path
+> that loads everything read-only, without a lock. And then in read-only
+> mode, `saveindex` would be an error to run. However, both the commenting
+> code and the page edit code currently have the same entry path for
+> drawing the form as is used for handling the posted form, so they would
+> need to be adapted to separate that into two code paths. --[[Joey]]

Added a comment
diff --git a/doc/forum/index_attachments/comment_3_050e5847641a27e0c14232632f3e700a._comment b/doc/forum/index_attachments/comment_3_050e5847641a27e0c14232632f3e700a._comment
new file mode 100644
index 0000000..b589ae8
--- /dev/null
+++ b/doc/forum/index_attachments/comment_3_050e5847641a27e0c14232632f3e700a._comment
@@ -0,0 +1,10 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawljSQThLsc4vHz0jw1aSR74Dj9K5J_NKqk"
+ nickname="Michal"
+ subject="comment 3"
+ date="2012-01-17T16:45:37Z"
+ content="""
+Maybe it could be sufficient to run a command similar to
+
+    omindex --db /path/to/.ikiwiki/xapian/default --url http://webserver/ikiwiki /path/to/public_html
+"""]]

can the 'add comment' form be generated and returned even if the srcdir is locked?
diff --git a/doc/bugs/ikiwiki_overzealously_honours_locks_when_asked_for_forms.mdwn b/doc/bugs/ikiwiki_overzealously_honours_locks_when_asked_for_forms.mdwn
new file mode 100644
index 0000000..05b4a45
--- /dev/null
+++ b/doc/bugs/ikiwiki_overzealously_honours_locks_when_asked_for_forms.mdwn
@@ -0,0 +1 @@
+When an `ikiwiki` instance is holding a lock, a web user clicking on "add comment" (for example) will have to wait for the lock to be released.  However, all they are then presented with is a web form.  Perhaps CGI requests that are read-only (such as generating a comment form, or perhaps certain types of edits) should ignore locks? Of course, I'd understand that the submission would need to wait for a lock. — [[Jon]]

Added a comment: just my 2 cents
diff --git a/doc/forum/If_there__39__s_no_Windows_ikiwiki__44___how_about_a_WYSIWYG_ikiwiki_editor_for_Windows__63__/comment_4_546771c13ea1b550301586e187d82cb5._comment b/doc/forum/If_there__39__s_no_Windows_ikiwiki__44___how_about_a_WYSIWYG_ikiwiki_editor_for_Windows__63__/comment_4_546771c13ea1b550301586e187d82cb5._comment
new file mode 100644
index 0000000..4724174
--- /dev/null
+++ b/doc/forum/If_there__39__s_no_Windows_ikiwiki__44___how_about_a_WYSIWYG_ikiwiki_editor_for_Windows__63__/comment_4_546771c13ea1b550301586e187d82cb5._comment
@@ -0,0 +1,8 @@
+[[!comment format=mdwn
+ username="https://www.google.com/accounts/o8/id?id=AItOawndsaC4GaIBw49WNdbk2Faqfm_mrtQgul8"
+ nickname="Christian"
+ subject="just my 2 cents"
+ date="2012-01-17T11:10:09Z"
+ content="""
+why?
+"""]]

fix underlay link
diff --git a/doc/todo/submodule_support.mdwn b/doc/todo/submodule_support.mdwn
index 56a11ce..d6a7edb 100644
--- a/doc/todo/submodule_support.mdwn
+++ b/doc/todo/submodule_support.mdwn
@@ -11,5 +11,5 @@ Other people had experience with this? Or other suggestions on how to publish re
 
 > Ikiwiki does not support git submodules. 
 > 
-> You can use the [[ikiwiki/plugin/underlay]] plugin to merge the
+> You can use the [[plugins/underlay]] plugin to merge the
 > contents of other directories into your wiki's source. --[[Joey]]