changeset 2314:0d5660c6b4aa

Update manpage
author Mikael Berthe <mikael@lilotux.net>
date Thu, 11 May 2017 14:32:24 +0200
parents 70f8ae7d690e
children 1cfe6df4f7e6
files mcabber/doc/build mcabber/doc/mcabber.1 mcabber/doc/mcabber.1.html mcabber/doc/mcabber.1.txt
diffstat 4 files changed, 618 insertions(+), 247 deletions(-) [+]
line wrap: on
line diff
--- a/mcabber/doc/build	Fri Apr 21 21:50:16 2017 +0200
+++ b/mcabber/doc/build	Thu May 11 14:32:24 2017 +0200
@@ -2,7 +2,7 @@
 
 set -e -x
 
-asciidoc -b css -d manpage mcabber.1.txt
+asciidoc -b html5 -d manpage mcabber.1.txt
 asciidoc -b docbook -d manpage mcabber.1.txt
 mv mcabber.1 mcabber.1.before
 xmlto man mcabber.1.xml
--- a/mcabber/doc/mcabber.1	Fri Apr 21 21:50:16 2017 +0200
+++ b/mcabber/doc/mcabber.1	Thu May 11 14:32:24 2017 +0200
@@ -1,13 +1,13 @@
 '\" t
 .\"     Title: mcabber
-.\"    Author: [see the "AUTHOR" section]
-.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
-.\"      Date: 09/18/2016
+.\"    Author: Mikael BERTHE <mcabber@lilotux.net>
+.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
+.\"      Date: May 2017
 .\"    Manual: \ \&
 .\"    Source: \ \& 1.0.6-dev
 .\"  Language: English
 .\"
-.TH "MCABBER" "1" "09/18/2016" "v1\&.0\&.6\-dev"
+.TH "MCABBER" "1" "May 2017" "\ \& 1\&.0\&.6\-dev" "\ \&"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
@@ -48,7 +48,6 @@
 .sp -1
 .IP \(bu 2.3
 .\}
-
 \fISASL/SSL/TLS support\fR\&.
 .RE
 .sp
@@ -60,7 +59,6 @@
 .sp -1
 .IP \(bu 2.3
 .\}
-
 \fIMUC support\fR
 (Multi\-User Chat)\&.
 .RE
@@ -73,7 +71,6 @@
 .sp -1
 .IP \(bu 2.3
 .\}
-
 \fIPGP, OTR support\fR
 .RE
 .sp
@@ -85,7 +82,6 @@
 .sp -1
 .IP \(bu 2.3
 .\}
-
 \fIChat States\fR
 support (typing notifications)
 .RE
@@ -98,7 +94,6 @@
 .sp -1
 .IP \(bu 2.3
 .\}
-
 \fIHistory logging:\fR
 If enabled (see the CONFIGURATION FILE section),
 mcabber
@@ -113,7 +108,6 @@
 .sp -1
 .IP \(bu 2.3
 .\}
-
 \fICommands completion:\fR
 If possible,
 mcabber
@@ -128,7 +122,6 @@
 .sp -1
 .IP \(bu 2.3
 .\}
-
 \fIInput line history:\fR
 Any message or command entered is in the input line history and can be reused easily\&.
 .RE
@@ -141,7 +134,6 @@
 .sp -1
 .IP \(bu 2.3
 .\}
-
 \fIExternal actions:\fR
 Some events (like receiving a message) can trigger an external action such as a shell script if you enable it in your configuration file\&. A sample events script ("eventcmd") is provided with
 mcabber
@@ -156,9 +148,7 @@
 .sp -1
 .IP \(bu 2.3
 .\}
-
-\fIModules:\fR
-mcabber
+\fIModules:\fRmcabber
 can load modules (a\&.k\&.a\&. plugins) at runtime that extend its features\&.
 .RE
 .SH "OPTIONS"
@@ -186,7 +176,7 @@
 .sp
 Two status lines surround the log window\&. The bottom status line is the "main status line" and reflects mcabber general status\&. The other line is the "chat status line" and shows the status of the currently selected buddy\&.
 .sp
-To display buddies chat buffers, you will have to enter \fIchat mode\fR\&. You can enter chat mode by pressing enter (unless \fIvi_mode\fR is enabled), and leave chat mode with the ESC key\&. Simply sending a message will also enable chat mode (unless \fIvi_mode\fR is enabled)\&.
+To display buddies chat buffers, you will have to enter \fIchat mode\fR\&. You can enter chat mode by pressing enter (unless \fIvi mode\fR is enabled), and leave chat mode with the ESC key\&. Simply sending a message will also enable chat mode (unless \fIvi mode\fR is enabled)\&.
 .sp
 There are several advantages to the two\-mode implementation: first, it allows accurate "unread" message functionality, as described in the next section; without this, merely scrolling to a specific buddy will "read" the new messages of all buddies in\-between\&. Second, it allows quickly hiding the conversation with a single keystroke\&. Third, it allows jumping between the few buddies with whom you are conversing with the \fI/roster alternate\fR command described in another section, without having to manually scroll back and forth\&.
 .SH "KEYS"
@@ -294,7 +284,7 @@
 Additional key bindings may be specified using the \fI/bind\fR command described in the COMMANDS section\&.
 .SH "VI MODE"
 .sp
-If the \fIvi_mode\fR option is set to \fI1\fR, MCabber accepts a few commands loosely based on those available in \fBvi\fR(1)'s normal mode\&. In this case, chat mode can \fInot\fR be entered by pressing enter, and messages cannot be composed outside of the chat mode\&. The following commands are accepted:
+If the "vi_mode" option is set to 1, mcabber(1) accepts a few commands loosely based on those available in vi(1)\*(Aqs normal mode\&. In this case, chat mode is not entered by pressing enter, and messages cannot be composed outside of the chat mode\&. The following commands are accepted:
 .PP
 A
 .RS 4
@@ -331,14 +321,14 @@
 Enter chat mode\&.
 .RE
 .PP
-[\fIn\fR]j
+[N]j
 .RS 4
-Call "/roster down [\fIn\fR]"\&.
+Call "/roster down [N]"\&.
 .RE
 .PP
-[\fIn\fR]k
+[N]k
 .RS 4
-Call "/roster up [\fIn\fR]"\&.
+Call "/roster up [N]"\&.
 .RE
 .PP
 n
@@ -371,7 +361,7 @@
 Call "/group unfold" for all groups\&.
 .RE
 .PP
-\&''
+\*(Aq\*(Aq
 .RS 4
 Call "/roster alternate"\&.
 .RE
@@ -390,32 +380,27 @@
 .RS 4
 Call "/group toggle" for the current group\&.
 .RE
-.PP
+.sp
 A leading slash enables search mode:
 .PP
-/\fIstring\fR
+/string
 .RS 4
-Call "/roster search \fIstring\fR"\&.
-.RE
-.PP
-A leading colon enabled command-line mode:
-.PP
-:q
-.RS 4
-Call "/quit"\&.
+Call "/roster search string"\&.
 .RE
-.PP
-:\fIn\fR
+.sp
+A leading colon enabled command\-line mode:
+.sp
+.if n \{\
 .RS 4
-Jump to line \fIn\fR in the roster\&.
+.\}
+.nf
+above commands)\&.
+.fi
+.if n \{\
 .RE
-.PP
-:\fIcommand-line\fR
-.RS 4
-Call "/\fIcommand-line\fR" (unless the \fIcommand-line\fR matches one of the above commands)\&.
-.RE
-.PP
-Commands entered with a leading colon and searches are either submitted by pressing enter or aborted by hitting escape\&. In either case, MCabber returns to the normal (non-chat) mode\&. History editing is supported in command-line mode and in search mode\&. In command-line mode, tab completion is supported as well\&.
+.\}
+.sp
+Commands entered with a leading colon and searches are either submitted by pressing enter or aborted by hitting escape\&. In either case, mcabber(1) returns to the normal (non\-chat) mode\&. History editing is supported in command\-line mode and in search mode\&. In command\-line mode, tab completion is supported as well\&.
 .SH "MCABBER\(cqS ROSTER"
 .sp
 The first listed item on the roster is \fI[status]\fR, which keeps a log of everything that appears in the short log window below the main chat area\&. While the log window was designed for showing the latest few elements, the dedicated \fI[status]\fR buffer allows more comfortable viewing of the log, as well as scrolling it in a standard manner\&.
@@ -479,7 +464,7 @@
 .sp
 Examples:
 .PP
-\fI\-\-\- Buds\fR
+\*(Aq \-\-\- Buds\*(Aq
 .RS 4
 This is a group named
 \fIBuds\fR
@@ -490,12 +475,12 @@
 John is online, can see your status, and sent you a message that you did not read yet
 .RE
 .PP
-\fI{?} Sally\fR
+\*(Aq {?} Sally\*(Aq
 .RS 4
 Neither you nor Sally have authorized each other to see your online status
 .RE
 .PP
-\fI{a} Jane\fR
+\*(Aq {a} Jane\*(Aq
 .RS 4
 Jane is away, but she cannot see your online status
 .RE
@@ -1451,7 +1436,7 @@
 
 Please note that this command doesn\(cqt set the default resource for a contact, so if you want to send several messages to a specific resource you will have to use "/say_to" for each message\&.
 
-You can send a message to a specific resource of the currently selected contact by using /say_to ./resourcename message\&.
+You can send a message to a specific resource of the currently selected contact by using /say_to \&./resourcename message\&.
 
 The "\-n" flag turns the message to "normal" type, "\-h" to "headline"\&. "\-\-" can be used to send chat messages beginning with \-n or \-h\&.
 
@@ -1519,6 +1504,7 @@
 .\}
 .nf
 $HOME/\&.mcabber/mcabberrc    Default configuration file
+$HOME/\&.config/mcabber/mcabberrc Alternate location (can use XDG_CONFIG_HOME)
 $HOME/\&.mcabberrc            Configuration file used if no other has been found
 $HOME/\&.mcabber/histo/       Default directory for storing chat history files, if enabled
 /usr/share/mcabber/help/    Default directory for online help files
@@ -1545,6 +1531,12 @@
 Copyright (C) 2005\-2017 Mikael Berthe and others\&.
 .sp
 Free use of this software is granted under the terms of the GNU General Public License (GPL)\&.
+.SH "AUTHOR"
+.PP
+\fBMikael BERTHE\fR <\&mcabber@lilotux\&.net\&>
+.RS 4
+Author.
+.RE
 .SH "NOTES"
 .IP " 1." 4
 Mikael BERTHE
--- a/mcabber/doc/mcabber.1.html	Fri Apr 21 21:50:16 2017 +0200
+++ b/mcabber/doc/mcabber.1.html	Thu May 11 14:32:24 2017 +0200
@@ -1,16 +1,25 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
-    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
+<!DOCTYPE html>
+<html lang="en">
 <head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
-<meta name="generator" content="AsciiDoc 8.5.2" />
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta name="generator" content="AsciiDoc 8.6.9">
 <title>MCABBER(1)</title>
 <style type="text/css">
-/* Debug borders */
-p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {
-/*
-  border: 1px solid red;
-*/
+/* Shared CSS for AsciiDoc xhtml11 and html5 backends */
+
+/* Default font. */
+body {
+  font-family: Georgia,serif;
+}
+
+/* Title font. */
+h1, h2, h3, h4, h5, h6,
+div.title, caption.title,
+thead, p.table.header,
+#toctitle,
+#author, #revnumber, #revdate, #revremark,
+#footer {
+  font-family: Arial,Helvetica,sans-serif;
 }
 
 body {
@@ -35,13 +44,8 @@
   color: #083194;
 }
 
-tt {
-  color: navy;
-}
-
 h1, h2, h3, h4, h5, h6 {
   color: #527bbd;
-  font-family: sans-serif;
   margin-top: 1.2em;
   margin-bottom: 0.5em;
   line-height: 1.3;
@@ -59,9 +63,11 @@
 h3 + * {
   clear: left;
 }
+h5 {
+  font-size: 1.0em;
+}
 
 div.sectionbody {
-  font-family: serif;
   margin-left: 0;
 }
 
@@ -77,45 +83,50 @@
 ul, ol, li > p {
   margin-top: 0;
 }
+ul > li     { color: #aaa; }
+ul > li > * { color: black; }
 
-pre {
+.monospaced, code, pre {
+  font-family: "Courier New", Courier, monospace;
+  font-size: inherit;
+  color: navy;
   padding: 0;
   margin: 0;
 }
+pre {
+  white-space: pre-wrap;
+}
 
-span#author {
+#author {
   color: #527bbd;
-  font-family: sans-serif;
   font-weight: bold;
   font-size: 1.1em;
 }
-span#email {
+#email {
 }
-span#revnumber, span#revdate, span#revremark {
-  font-family: sans-serif;
+#revnumber, #revdate, #revremark {
 }
 
-div#footer {
-  font-family: sans-serif;
+#footer {
   font-size: small;
   border-top: 2px solid silver;
   padding-top: 0.5em;
   margin-top: 4.0em;
 }
-div#footer-text {
+#footer-text {
   float: left;
   padding-bottom: 0.5em;
 }
-div#footer-badges {
+#footer-badges {
   float: right;
   padding-bottom: 0.5em;
 }
 
-div#preamble {
+#preamble {
   margin-top: 1.5em;
   margin-bottom: 1.5em;
 }
-div.tableblock, div.imageblock, div.exampleblock, div.verseblock,
+div.imageblock, div.exampleblock, div.verseblock,
 div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
 div.admonitionblock {
   margin-top: 1.0em;
@@ -135,7 +146,6 @@
 /* Block element titles. */
 div.title, caption.title {
   color: #527bbd;
-  font-family: sans-serif;
   font-weight: bold;
   text-align: left;
   margin-top: 1.0em;
@@ -157,13 +167,15 @@
 
 div.sidebarblock > div.content {
   background: #ffffee;
-  border: 1px solid silver;
+  border: 1px solid #dddddd;
+  border-left: 4px solid #f0f0f0;
   padding: 0.5em;
 }
 
 div.listingblock > div.content {
-  border: 1px solid silver;
-  background: #f4f4f4;
+  border: 1px solid #dddddd;
+  border-left: 5px solid #f0f0f0;
+  background: #f8f8f8;
   padding: 0.5em;
 }
 
@@ -171,8 +183,8 @@
   padding-left: 1.0em;
   margin-left: 1.0em;
   margin-right: 10%;
-  border-left: 5px solid #dddddd;
-  color: #777777;
+  border-left: 5px solid #f0f0f0;
+  color: #888;
 }
 
 div.quoteblock > div.attribution {
@@ -180,8 +192,9 @@
   text-align: right;
 }
 
-div.verseblock > div.content {
-  white-space: pre;
+div.verseblock > pre.content {
+  font-family: inherit;
+  font-size: inherit;
 }
 div.verseblock > div.attribution {
   padding-top: 0.75em;
@@ -211,7 +224,7 @@
 }
 
 div.imageblock div.content { padding-left: 0; }
-span.image img { border-style: none; }
+span.image img { border-style: none; vertical-align: text-bottom; }
 a.image:visited { color: white; }
 
 dl {
@@ -254,35 +267,12 @@
   margin-bottom: 0.1em;
 }
 
-div.tableblock > table {
-  border: 3px solid #527bbd;
-}
-thead, p.table.header {
-  font-family: sans-serif;
-  font-weight: bold;
-}
 tfoot {
   font-weight: bold;
 }
 td > div.verse {
   white-space: pre;
 }
-p.table {
-  margin-top: 0;
-}
-/* Because the table frame attribute is overriden by CSS in most browsers. */
-div.tableblock > table[frame="void"] {
-  border-style: none;
-}
-div.tableblock > table[frame="hsides"] {
-  border-left-style: none;
-  border-right-style: none;
-}
-div.tableblock > table[frame="vsides"] {
-  border-top-style: none;
-  border-bottom-style: none;
-}
-
 
 div.hdlist {
   margin-top: 0.8em;
@@ -339,25 +329,32 @@
   min-width: 100px;
 }
 
+div.colist td {
+  padding-right: 0.5em;
+  padding-bottom: 0.3em;
+  vertical-align: top;
+}
+div.colist td img {
+  margin-top: 0.3em;
+}
 
 @media print {
-  div#footer-badges { display: none; }
+  #footer-badges { display: none; }
 }
 
-div#toc {
+#toc {
   margin-bottom: 2.5em;
 }
 
-div#toctitle {
+#toctitle {
   color: #527bbd;
-  font-family: sans-serif;
   font-size: 1.1em;
   font-weight: bold;
   margin-top: 1.0em;
   margin-bottom: 0.1em;
 }
 
-div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
+div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
   margin-top: 0;
   margin-bottom: 0;
 }
@@ -373,69 +370,173 @@
   margin-left: 6em;
   font-size: 0.9em;
 }
-/* Overrides for manpage documents */
-h1 {
+
+span.aqua { color: aqua; }
+span.black { color: black; }
+span.blue { color: blue; }
+span.fuchsia { color: fuchsia; }
+span.gray { color: gray; }
+span.green { color: green; }
+span.lime { color: lime; }
+span.maroon { color: maroon; }
+span.navy { color: navy; }
+span.olive { color: olive; }
+span.purple { color: purple; }
+span.red { color: red; }
+span.silver { color: silver; }
+span.teal { color: teal; }
+span.white { color: white; }
+span.yellow { color: yellow; }
+
+span.aqua-background { background: aqua; }
+span.black-background { background: black; }
+span.blue-background { background: blue; }
+span.fuchsia-background { background: fuchsia; }
+span.gray-background { background: gray; }
+span.green-background { background: green; }
+span.lime-background { background: lime; }
+span.maroon-background { background: maroon; }
+span.navy-background { background: navy; }
+span.olive-background { background: olive; }
+span.purple-background { background: purple; }
+span.red-background { background: red; }
+span.silver-background { background: silver; }
+span.teal-background { background: teal; }
+span.white-background { background: white; }
+span.yellow-background { background: yellow; }
+
+span.big { font-size: 2em; }
+span.small { font-size: 0.6em; }
+
+span.underline { text-decoration: underline; }
+span.overline { text-decoration: overline; }
+span.line-through { text-decoration: line-through; }
+
+div.unbreakable { page-break-inside: avoid; }
+
+
+/*
+ * xhtml11 specific
+ *
+ * */
+
+div.tableblock {
+  margin-top: 1.0em;
+  margin-bottom: 1.5em;
+}
+div.tableblock > table {
+  border: 3px solid #527bbd;
+}
+thead, p.table.header {
+  font-weight: bold;
+  color: #527bbd;
+}
+p.table {
+  margin-top: 0;
+}
+/* Because the table frame attribute is overriden by CSS in most browsers. */
+div.tableblock > table[frame="void"] {
+  border-style: none;
+}
+div.tableblock > table[frame="hsides"] {
+  border-left-style: none;
+  border-right-style: none;
+}
+div.tableblock > table[frame="vsides"] {
+  border-top-style: none;
+  border-bottom-style: none;
+}
+
+
+/*
+ * html5 specific
+ *
+ * */
+
+table.tableblock {
+  margin-top: 1.0em;
+  margin-bottom: 1.5em;
+}
+thead, p.tableblock.header {
+  font-weight: bold;
+  color: #527bbd;
+}
+p.tableblock {
+  margin-top: 0;
+}
+table.tableblock {
+  border-width: 3px;
+  border-spacing: 0px;
+  border-style: solid;
+  border-color: #527bbd;
+  border-collapse: collapse;
+}
+th.tableblock, td.tableblock {
+  border-width: 1px;
+  padding: 4px;
+  border-style: solid;
+  border-color: #527bbd;
+}
+
+table.tableblock.frame-topbot {
+  border-left-style: hidden;
+  border-right-style: hidden;
+}
+table.tableblock.frame-sides {
+  border-top-style: hidden;
+  border-bottom-style: hidden;
+}
+table.tableblock.frame-none {
+  border-style: hidden;
+}
+
+th.tableblock.halign-left, td.tableblock.halign-left {
+  text-align: left;
+}
+th.tableblock.halign-center, td.tableblock.halign-center {
+  text-align: center;
+}
+th.tableblock.halign-right, td.tableblock.halign-right {
+  text-align: right;
+}
+
+th.tableblock.valign-top, td.tableblock.valign-top {
+  vertical-align: top;
+}
+th.tableblock.valign-middle, td.tableblock.valign-middle {
+  vertical-align: middle;
+}
+th.tableblock.valign-bottom, td.tableblock.valign-bottom {
+  vertical-align: bottom;
+}
+
+
+/*
+ * manpage specific
+ *
+ * */
+
+body.manpage h1 {
   padding-top: 0.5em;
   padding-bottom: 0.5em;
   border-top: 2px solid silver;
   border-bottom: 2px solid silver;
 }
-h2 {
+body.manpage h2 {
   border-style: none;
 }
-div.sectionbody {
-  margin-left: 5%;
+body.manpage div.sectionbody {
+  margin-left: 3em;
 }
 
 @media print {
-  div#toc { display: none; }
-}
-
-/* Workarounds for IE6's broken and incomplete CSS2. */
-
-div.sidebar-content {
-  background: #ffffee;
-  border: 1px solid silver;
-  padding: 0.5em;
-}
-div.sidebar-title, div.image-title {
-  color: #527bbd;
-  font-family: sans-serif;
-  font-weight: bold;
-  margin-top: 0.0em;
-  margin-bottom: 0.5em;
+  body.manpage div#toc { display: none; }
 }
 
-div.listingblock div.content {
-  border: 1px solid silver;
-  background: #f4f4f4;
-  padding: 0.5em;
-}
 
-div.quoteblock-attribution {
-  padding-top: 0.5em;
-  text-align: right;
-}
-
-div.verseblock-content {
-  white-space: pre;
-}
-div.verseblock-attribution {
-  padding-top: 0.75em;
-  text-align: left;
-}
-
-div.exampleblock-content {
-  border-left: 3px solid #dddddd;
-  padding-left: 0.5em;
-}
-
-/* IE6 sets dynamically generated links as visited. */
-div#toc a:visited { color: blue; }
 </style>
 <script type="text/javascript">
 /*<![CDATA[*/
-window.onload = function(){asciidoc.footnotes();}
 var asciidoc = {  // Namespace.
 
 /////////////////////////////////////////////////////////////////////
@@ -477,7 +578,7 @@
 
   function tocEntries(el, toclevels) {
     var result = new Array;
-    var re = new RegExp('[hH]([2-'+(toclevels+1)+'])');
+    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
     // Function that scans the DOM tree for header elements (the DOM2
     // nodeIterator API would be a better technique but not supported by all
     // browsers).
@@ -497,6 +598,25 @@
   }
 
   var toc = document.getElementById("toc");
+  if (!toc) {
+    return;
+  }
+
+  // Delete existing TOC entries in case we're reloading the TOC.
+  var tocEntriesToRemove = [];
+  var i;
+  for (i = 0; i < toc.childNodes.length; i++) {
+    var entry = toc.childNodes[i];
+    if (entry.nodeName.toLowerCase() == 'div'
+     && entry.getAttribute("class")
+     && entry.getAttribute("class").match(/^toclevel/))
+      tocEntriesToRemove.push(entry);
+  }
+  for (i = 0; i < tocEntriesToRemove.length; i++) {
+    toc.removeChild(tocEntriesToRemove[i]);
+  }
+
+  // Rebuild TOC entries.
   var entries = tocEntries(document.getElementById("content"), toclevels);
   for (var i = 0; i < entries.length; ++i) {
     var entry = entries[i];
@@ -524,24 +644,44 @@
  */
 
 footnotes: function () {
+  // Delete existing footnote entries in case we're reloading the footnodes.
+  var i;
+  var noteholder = document.getElementById("footnotes");
+  if (!noteholder) {
+    return;
+  }
+  var entriesToRemove = [];
+  for (i = 0; i < noteholder.childNodes.length; i++) {
+    var entry = noteholder.childNodes[i];
+    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
+      entriesToRemove.push(entry);
+  }
+  for (i = 0; i < entriesToRemove.length; i++) {
+    noteholder.removeChild(entriesToRemove[i]);
+  }
+
+  // Rebuild footnote entries.
   var cont = document.getElementById("content");
-  var noteholder = document.getElementById("footnotes");
   var spans = cont.getElementsByTagName("span");
   var refs = {};
   var n = 0;
   for (i=0; i<spans.length; i++) {
     if (spans[i].className == "footnote") {
       n++;
-      // Use [\s\S] in place of . so multi-line matches work.
-      // Because JavaScript has no s (dotall) regex flag.
-      note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
+      var note = spans[i].getAttribute("data-note");
+      if (!note) {
+        // Use [\s\S] in place of . so multi-line matches work.
+        // Because JavaScript has no s (dotall) regex flag.
+        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
+        spans[i].innerHTML =
+          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
+          "' title='View footnote' class='footnote'>" + n + "</a>]";
+        spans[i].setAttribute("data-note", note);
+      }
       noteholder.innerHTML +=
         "<div class='footnote' id='_footnote_" + n + "'>" +
         "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
         n + "</a>. " + note + "</div>";
-      spans[i].innerHTML =
-        "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
-        "' title='View footnote' class='footnote'>" + n + "</a>]";
       var id =spans[i].getAttribute("id");
       if (id != null) refs["#"+id] = n;
     }
@@ -561,13 +701,36 @@
       }
     }
   }
+},
+
+install: function(toclevels) {
+  var timerId;
+
+  function reinstall() {
+    asciidoc.footnotes();
+    if (toclevels) {
+      asciidoc.toc(toclevels);
+    }
+  }
+
+  function reinstallAndRemoveTimer() {
+    clearInterval(timerId);
+    reinstall();
+  }
+
+  timerId = setInterval(reinstall, 500);
+  if (document.addEventListener)
+    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
+  else
+    window.onload = reinstallAndRemoveTimer;
 }
 
 }
+asciidoc.install();
 /*]]>*/
 </script>
 </head>
-<body>
+<body class="manpage">
 <div id="header">
 <h1>
 MCABBER(1) Manual Page
@@ -580,18 +743,21 @@
 </div>
 </div>
 <div id="content">
+<div class="sect1">
 <h2 id="_synopsis">SYNOPSIS</h2>
 <div class="sectionbody">
 <div class="paragraph"><p><em>mcabber</em> [ -h | -V | -f configfile ]</p></div>
 </div>
+</div>
+<div class="sect1">
 <h2 id="_description">DESCRIPTION</h2>
 <div class="sectionbody">
-<div class="paragraph"><p><tt>mcabber(1)</tt> is a small Jabber (XMPP) console client.<br />
+<div class="paragraph"><p><span class="monospaced">mcabber(1)</span> is a small Jabber (XMPP) console client.<br>
 For now it needs a configuration file to start, so please copy the sample
 mcabberrc file and adapt your connection settings.</p></div>
 <div class="paragraph"><p>You also need to have an existing Jabber account to use this software, as
 it cannot (un)register accounts yet.</p></div>
-<div class="paragraph"><p>Here are some of the features of <tt>mcabber</tt>:</p></div>
+<div class="paragraph"><p>Here are some of the features of <span class="monospaced">mcabber</span>:</p></div>
 <div class="ulist"><ul>
 <li>
 <p>
@@ -616,12 +782,12 @@
 <li>
 <p>
 <em>History logging:</em>  If enabled (see the CONFIGURATION FILE section),
-  <tt>mcabber</tt> can save discussions to text history log files.
+  <span class="monospaced">mcabber</span> can save discussions to text history log files.
 </p>
 </li>
 <li>
 <p>
-<em>Commands completion:</em>  If possible, <tt>mcabber</tt> will try to complete your
+<em>Commands completion:</em>  If possible, <span class="monospaced">mcabber</span> will try to complete your
   command line if you hit the Tab key.
 </p>
 </li>
@@ -636,17 +802,19 @@
 <em>External actions:</em>  Some events (like receiving a message) can trigger an
   external action such as a shell script if you enable it in your
   configuration file.  A sample events script ("eventcmd") is provided with
-  <tt>mcabber</tt> source code, in the contrib directory.
+  <span class="monospaced">mcabber</span> source code, in the contrib directory.
 </p>
 </li>
 <li>
 <p>
-<em>Modules:</em>  <tt>mcabber</tt> can load modules (a.k.a. plugins) at runtime that
+<em>Modules:</em>  <span class="monospaced">mcabber</span> can load modules (a.k.a. plugins) at runtime that
   extend its features.
 </p>
 </li>
 </ul></div>
 </div>
+</div>
+<div class="sect1">
 <h2 id="_options">OPTIONS</h2>
 <div class="sectionbody">
 <div class="dlist"><dl>
@@ -663,7 +831,7 @@
 </dt>
 <dd>
 <p>
-        Displays <tt>mcabber</tt> version and compile-time definitions.
+        Displays <span class="monospaced">mcabber</span> version and compile-time definitions.
 </p>
 </dd>
 <dt class="hdlist1">
@@ -676,9 +844,11 @@
 </dd>
 </dl></div>
 </div>
+</div>
+<div class="sect1">
 <h2 id="_windows_panes">WINDOWS/PANES</h2>
 <div class="sectionbody">
-<div class="paragraph"><p>The <tt>mcabber(1)</tt> screen is divided into 4 regions.
+<div class="paragraph"><p>The <span class="monospaced">mcabber(1)</span> screen is divided into 4 regions.
 The <em>roster</em>, alias <em>buddylist</em>, is on the left.  The <em>chat window</em>, or chat
 buffer, is on the right.  The <em>input line</em> lies at the bottom of the screen,
 under a small <em>log window</em>.</p></div>
@@ -687,8 +857,9 @@
 is the "chat status line" and shows the status of the currently selected
 buddy.</p></div>
 <div class="paragraph"><p>To display buddies chat buffers, you will have to enter <em>chat mode</em>.
-You can enter chat mode by pressing enter, and leave chat mode with the ESC
-key.  Simply sending a message will also enable chat mode.</p></div>
+You can enter chat mode by pressing enter (unless <em>vi mode</em> is enabled), and
+leave chat mode with the ESC key.  Simply sending a message will also enable
+chat mode (unless <em>vi mode</em> is enabled).</p></div>
 <div class="paragraph"><p>There are several advantages to the two-mode implementation: first, it allows
 accurate "unread" message functionality, as described in the next section;
 without this, merely scrolling to a specific buddy will "read" the new
@@ -698,6 +869,8 @@
 command described in another section, without having to manually scroll
 back and forth.</p></div>
 </div>
+</div>
+<div class="sect1">
 <h2 id="_keys">KEYS</h2>
 <div class="sectionbody">
 <div class="paragraph"><p>Text typing occurs in the <em>input line</em>; basic operations are supported
@@ -860,6 +1033,192 @@
 <div class="paragraph"><p>Additional key bindings may be specified using the <em>/bind</em> command described
 in the COMMANDS section.</p></div>
 </div>
+</div>
+<div class="sect1">
+<h2 id="_vi_mode">VI MODE</h2>
+<div class="sectionbody">
+<div class="paragraph"><p>If the "vi_mode" option is set to 1, <span class="monospaced">mcabber(1)</span> accepts a few commands
+loosely based on those available in <span class="monospaced">vi(1)</span>'s normal mode.  In this case, chat
+mode is not entered by pressing enter, and messages cannot be composed outside
+of the chat mode.  The following commands are accepted:</p></div>
+<div class="dlist"><dl>
+<dt class="hdlist1">
+A
+</dt>
+<dd>
+<p>
+Call "/roster unread_first".
+</p>
+</dd>
+<dt class="hdlist1">
+a
+</dt>
+<dd>
+<p>
+Call "/roster unread_next".
+</p>
+</dd>
+<dt class="hdlist1">
+F
+</dt>
+<dd>
+<p>
+Call "/roster group_prev".
+</p>
+</dd>
+<dt class="hdlist1">
+f
+</dt>
+<dd>
+<p>
+Call "/roster group_next".
+</p>
+</dd>
+<dt class="hdlist1">
+G
+</dt>
+<dd>
+<p>
+Call "/roster bottom".
+</p>
+</dd>
+<dt class="hdlist1">
+gg
+</dt>
+<dd>
+<p>
+Call "/roster top".
+</p>
+</dd>
+<dt class="hdlist1">
+i
+</dt>
+<dd>
+<p>
+Enter chat mode.
+</p>
+</dd>
+<dt class="hdlist1">
+[N]j
+</dt>
+<dd>
+<p>
+Call "/roster down [N]".
+</p>
+</dd>
+<dt class="hdlist1">
+[N]k
+</dt>
+<dd>
+<p>
+Call "/roster up [N]".
+</p>
+</dd>
+<dt class="hdlist1">
+n
+</dt>
+<dd>
+<p>
+Repeat the previous search (if any).
+</p>
+</dd>
+<dt class="hdlist1">
+O
+</dt>
+<dd>
+<p>
+Call "/roster unread_first" and open chat window.
+</p>
+</dd>
+<dt class="hdlist1">
+o
+</dt>
+<dd>
+<p>
+Call "/roster unread_next" and open chat window.
+</p>
+</dd>
+<dt class="hdlist1">
+ZZ
+</dt>
+<dd>
+<p>
+Call "/quit".
+</p>
+</dd>
+<dt class="hdlist1">
+zM
+</dt>
+<dd>
+<p>
+Call "/group fold" for all groups.
+</p>
+</dd>
+<dt class="hdlist1">
+zR
+</dt>
+<dd>
+<p>
+Call "/group unfold" for all groups.
+</p>
+</dd>
+<dt class="hdlist1">
+''
+</dt>
+<dd>
+<p>
+Call "/roster alternate".
+</p>
+</dd>
+<dt class="hdlist1">
+!
+</dt>
+<dd>
+<p>
+Toggle attention flag for current buddy.
+</p>
+</dd>
+<dt class="hdlist1">
+#
+</dt>
+<dd>
+<p>
+Toggle unread messages flag for current buddy.
+</p>
+</dd>
+<dt class="hdlist1">
+&lt;Space&gt;
+</dt>
+<dd>
+<p>
+Call "/group toggle" for the current group.
+</p>
+</dd>
+</dl></div>
+<div class="paragraph"><p>A leading slash enables search mode:</p></div>
+<div class="dlist"><dl>
+<dt class="hdlist1">
+/string
+</dt>
+<dd>
+<p>
+Call "/roster search string".
+</p>
+</dd>
+</dl></div>
+<div class="paragraph"><p>A leading colon enabled command-line mode:</p></div>
+<div class="literalblock">
+<div class="content monospaced">
+<pre>above commands).</pre>
+</div></div>
+<div class="paragraph"><p>Commands entered with a leading colon and searches are either submitted by
+pressing enter or aborted by hitting escape.  In either case, <span class="monospaced">mcabber(1)</span>
+returns to the normal (non-chat) mode.  History editing is supported in
+command-line mode and in search mode.  In command-line mode, tab completion is
+supported as well.</p></div>
+</div>
+</div>
+<div class="sect1">
 <h2 id="_mcabber_8217_s_roster">MCABBER&#8217;S ROSTER</h2>
 <div class="sectionbody">
 <div class="paragraph"><p>The first listed item on the roster is <em>[status]</em>, which keeps a log of
@@ -978,7 +1337,7 @@
 </p>
 </dd>
 <dt class="hdlist1">
-<em> {?} Sally</em>
+' {?} Sally'
 </dt>
 <dd>
 <p>
@@ -986,7 +1345,7 @@
 </p>
 </dd>
 <dt class="hdlist1">
-<em> {a} Jane</em>
+' {a} Jane'
 </dt>
 <dd>
 <p>
@@ -1003,11 +1362,15 @@
 </dd>
 </dl></div>
 </div>
+</div>
+<div class="sect1">
 <h2 id="_commands">COMMANDS</h2>
 <div class="sectionbody">
-<div class="paragraph"><p>Please refer to the online help (command /help), it is probably more up-to-date than this manpage.  Furthermore, help files have been translated into several languages.<br />
-You will find an overview of the <tt>mcabber</tt> commands in this manual.</p></div>
+<div class="paragraph"><p>Please refer to the online help (command /help), it is probably more up-to-date than this manpage.  Furthermore, help files have been translated into several languages.<br>
+You will find an overview of the <span class="monospaced">mcabber</span> commands in this manual.</p></div>
 </div>
+</div>
+<div class="sect1">
 <h2 id="_commands_related_to_mcabber">COMMANDS RELATED TO MCABBER</h2>
 <div class="sectionbody">
 <div class="dlist"><dl>
@@ -1027,8 +1390,8 @@
 Add to our roster "jid" as "nickname"
 </p>
 <div class="literalblock">
-<div class="content">
-<pre><tt>Example: "/add somebody@jabber.server.com Somebody"</tt></pre>
+<div class="content monospaced">
+<pre>Example: "/add somebody@jabber.server.com Somebody"</pre>
 </div></div>
 </dd>
 </dl></div>
@@ -1038,7 +1401,7 @@
 </dt>
 <dd>
 <p>
-        This command let you to add aliases which can simplify sophisticated commands.<br />
+        This command let you to add aliases which can simplify sophisticated commands.<br>
         You can manage your aliases by:
 </p>
 <div class="dlist"><dl>
@@ -1074,8 +1437,8 @@
 Set alias called "name" with value "command line"
 </p>
 <div class="literalblock">
-<div class="content">
-<pre><tt>Example: "/alias away = status away"</tt></pre>
+<div class="content monospaced">
+<pre>Example: "/alias away = status away"</pre>
 </div></div>
 </dd>
 </dl></div>
@@ -1085,7 +1448,7 @@
 </dt>
 <dd>
 <p>
-        This command manages presence subscriptions: it allows you to request presence subscriptions from others on your roster, and allows you to control who receives your presence notifications.<br />
+        This command manages presence subscriptions: it allows you to request presence subscriptions from others on your roster, and allows you to control who receives your presence notifications.<br>
         If no JID is provided, the currently-selected buddy is used.
 </p>
 <div class="dlist"><dl>
@@ -1128,7 +1491,7 @@
 </dt>
 <dd>
 <p>
-        Bind the command to the key given as "keycode".  To examine which keys are currently not used look at <tt>mcabber</tt> log window and press examined key.  For example: "Unknown key=265" means that you can bind some command to key #265.
+        Bind the command to the key given as "keycode".  To examine which keys are currently not used look at <span class="monospaced">mcabber</span> log window and press examined key.  For example: "Unknown key=265" means that you can bind some command to key #265.
 </p>
 <div class="dlist"><dl>
 <dt class="hdlist1">
@@ -1163,10 +1526,10 @@
 Bind "command line" to the key with code "keycode"
 </p>
 <div class="literalblock">
-<div class="content">
-<pre><tt>Example: "/bind 265 = status away" (265 is F1). +
+<div class="content monospaced">
+<pre>Example: "/bind 265 = status away" (265 is F1). +
 Note: keycodes can be different depending on your ncurses configuration. +
-Tip: aliases also can be used instead of commands.</tt></pre>
+Tip: aliases also can be used instead of commands.</pre>
 </div></div>
 </dd>
 </dl></div>
@@ -1331,7 +1694,7 @@
 </dt>
 <dd>
 <p>
-        Disable chat mode.<br />
+        Disable chat mode.<br>
         With --show-roster, the fullscreen mode will be disabled.
 </p>
 </dd>
@@ -1412,7 +1775,7 @@
 </dt>
 <dd>
 <p>
-        Terminate the connection to the Jabber server.<br />
+        Terminate the connection to the Jabber server.<br>
         Note: the roster is only available when the connection to the server is active, so the buddylist is empty when disconnected.
 </p>
 </dd>
@@ -1432,8 +1795,8 @@
 </dt>
 <dd>
 <p>
-        Tell mcabber what to do about pending events.<br />
-        If the first parameter is <em>*</em>, the command will apply to all queued events.<br />
+        Tell mcabber what to do about pending events.<br>
+        If the first parameter is <em>*</em>, the command will apply to all queued events.<br>
         Event-specific arguments will be interpreted on event-to event basis.  The only built-in case, when argument is used is MUC invitation reject - argument, if present, will be interpreted as reject reason.
 </p>
 <div class="dlist"><dl>
@@ -1510,7 +1873,7 @@
 </dt>
 <dd>
 <p>
-        Display help for command "command" or topic "topic".<br />
+        Display help for command "command" or topic "topic".<br>
         Example: "/help buffer"
 </p>
 </dd>
@@ -1753,7 +2116,7 @@
 </dt>
 <dd>
 <p>
-        Display info on the selected entry (user, agent, group&#8230;).<br />
+        Display info on the selected entry (user, agent, group&#8230;).<br>
         For users, resources are displayed with the status, priority and status message (if available) of each resource.
 </p>
 </dd>
@@ -1810,7 +2173,7 @@
 </dt>
 <dd>
 <p>
-        Move the current buddy to the requested group.  If no group is specified, then the buddy is moved to the default group.  If the group "groupname" doesn&#8217;t exist, it is created.<br />
+        Move the current buddy to the requested group.  If no group is specified, then the buddy is moved to the default group.  If the group "groupname" doesn&#8217;t exist, it is created.<br>
         Tip: if the chatmode is enabled, you can use "/roster alternate" to jump to the moved buddy.
 </p>
 </dd>
@@ -1819,10 +2182,10 @@
 </dt>
 <dd>
 <p>
-        Send a multi-line message.  To write a single message with several lines, the <em>multi-line mode</em> should be used.<br />
-        In multi-line mode, each line (except command lines) typed in the input line will be added to the multi-line message.  Once the message is finished, it can be sent to the current selected buddy with the "/msay send" command.<br />
-        The <em>begin</em> subcommand enables multi-line mode.  Note that it allows a message subject to be specified.<br />
-        The <em>verbatim</em> multi-line mode disables commands, so that it is possible to enter lines starting with a slash.  Only the "/msay" command (with send or abort parameters) can be used to exit verbatim mode.<br />
+        Send a multi-line message.  To write a single message with several lines, the <em>multi-line mode</em> should be used.<br>
+        In multi-line mode, each line (except command lines) typed in the input line will be added to the multi-line message.  Once the message is finished, it can be sent to the current selected buddy with the "/msay send" command.<br>
+        The <em>begin</em> subcommand enables multi-line mode.  Note that it allows a message subject to be specified.<br>
+        The <em>verbatim</em> multi-line mode disables commands, so that it is possible to enter lines starting with a slash.  Only the "/msay" command (with send or abort parameters) can be used to exit verbatim mode.<br>
         The <em>toggle</em> subcommand can be bound to a key to use the multi-line mode quickly (for example, "bind M13 = msay toggle" to switch using the Meta-Enter combination).
 </p>
 <div class="dlist"><dl>
@@ -1874,8 +2237,8 @@
 Leave multi-line mode without sending the message
 </p>
 <div class="literalblock">
-<div class="content">
-<pre><tt>The -n or -h flags turn the message to "normal" or "headline" accordingly, as opposed to default "chat" message.</tt></pre>
+<div class="content monospaced">
+<pre>The -n or -h flags turn the message to "normal" or "headline" accordingly, as opposed to default "chat" message.</pre>
 </div></div>
 </dd>
 </dl></div>
@@ -2003,7 +2366,7 @@
 </dt>
 <dd>
 <p>
-        This command manipulates PGP settings for the specified jid (by default the currently selected contact).<br />
+        This command manipulates PGP settings for the specified jid (by default the currently selected contact).<br>
         Please note that PGP encryption won&#8217;t be used if no remote PGP support is detected, even if PGP is enabled with this command.  You can force PGP encryption with the "force" subcommand.
 </p>
 <div class="dlist"><dl>
@@ -2024,7 +2387,7 @@
 </p>
 </dd>
 <dt class="hdlist1">
-<em style="color:+|-;">force</em> [jid]
+<em><span class="+|-">force</span></em> [jid]
 </dt>
 <dd>
 <p>
@@ -2062,10 +2425,10 @@
 </dt>
 <dd>
 <p>
-        Send "string" (raw XML format) to the Jabber server.<br />
-        No check is done on the string provided.<br />
+        Send "string" (raw XML format) to the Jabber server.<br>
+        No check is done on the string provided.<br>
         BEWARE!
-        Use this only if you know what you are doing, or you could terminate the connection.<br />
+        Use this only if you know what you are doing, or you could terminate the connection.<br>
         Example: "/rawxml send &lt;presence&gt;&lt;show&gt;away&lt;/show&gt;&lt;/presence&gt;"
 </p>
 </dd>
@@ -2313,7 +2676,7 @@
 </dt>
 <dd>
 <p>
-        The <em>roster</em> command manipulates the roster/buddylist.<br />
+        The <em>roster</em> command manipulates the roster/buddylist.<br>
         Here are the available parameters:
 </p>
 <div class="dlist"><dl>
@@ -2492,7 +2855,7 @@
 </dt>
 <dd>
 <p>
-        Send the "text" message to the currently selected buddy.  It can be useful if you want to send a message beginning with a slash, for example.<br />
+        Send the "text" message to the currently selected buddy.  It can be useful if you want to send a message beginning with a slash, for example.<br>
         The "-n" flag turns the message to "normal" type, "-h" to "headline".  "--" can be used to send chat message beginning with -n or -h.
 </p>
 </dd>
@@ -2501,11 +2864,11 @@
 </dt>
 <dd>
 <p>
-        Send the "text" message to the specified jid.<br />
-        Please note that this command doesn&#8217;t set the default resource for a contact, so if you want to send several messages to a specific resource you will have to use "/say_to" for each message.<br />
-        You can send a message to a specific resource of the currently selected contact by using /say_to ./resourcename message.<br />
-        The "-n" flag turns the message to "normal" type, "-h" to "headline".  "--" can be used to send chat messages beginning with -n or -h.<br />
-        When "-q" is used, the message will be sent in the background and will not change the current active window.<br />
+        Send the "text" message to the specified jid.<br>
+        Please note that this command doesn&#8217;t set the default resource for a contact, so if you want to send several messages to a specific resource you will have to use "/say_to" for each message.<br>
+        You can send a message to a specific resource of the currently selected contact by using /say_to ./resourcename message.<br>
+        The "-n" flag turns the message to "normal" type, "-h" to "headline".  "--" can be used to send chat messages beginning with -n or -h.<br>
+        When "-q" is used, the message will be sent in the background and will not change the current active window.<br>
         A text file can be provided with the "-f" switch (in which case there&#8217;s no need to pass a text argument after the jid, of course).
 </p>
 </dd>
@@ -2522,7 +2885,7 @@
 </dt>
 <dd>
 <p>
-        Display or set an option value.<br />
+        Display or set an option value.<br>
         Without arguments prints a list of all set options with their values
 </p>
 </dd>
@@ -2542,11 +2905,11 @@
 </dt>
 <dd>
 <p>
-        Show or set the current status.<br />
-        If no status is specified, display the current status.<br />
-        If a status message is specified, it will overrride the message* variables (these variables can be set in the configuration file).<br />
-        If no relevant message* variable is set and no status message provided, the current status message is kept.<br />
-        If StatusMessage is "-", the current status message is cleared.<br />
+        Show or set the current status.<br>
+        If no status is specified, display the current status.<br>
+        If a status message is specified, it will overrride the message* variables (these variables can be set in the configuration file).<br>
+        If no relevant message* variable is set and no status message provided, the current status message is kept.<br>
+        If StatusMessage is "-", the current status message is cleared.<br>
         With the "/status message" command, mcabber will update the message while preserving the status.
 </p>
 </dd>
@@ -2558,9 +2921,9 @@
 </dt>
 <dd>
 <p>
-        Send the requested status to the specified Jabber user.<br />
-        If the specified jid is ".", the current buddy is used.<br />
-        Note: this status will be overridden by subsequent "/status" commands.  If you are using the auto-away feature, the status will overridden too.<br />
+        Send the requested status to the specified Jabber user.<br>
+        If the specified jid is ".", the current buddy is used.<br>
+        Note: this status will be overridden by subsequent "/status" commands.  If you are using the auto-away feature, the status will overridden too.<br>
         Note: The jid can include a resource (i.e. user@server/resource).
 </p>
 </dd>
@@ -2574,50 +2937,65 @@
 </dd>
 </dl></div>
 </div>
+</div>
+<div class="sect1">
 <h2 id="_configuration_file">CONFIGURATION FILE</h2>
 <div class="sectionbody">
 <div class="paragraph"><p>See the provided sample configuration file, which should be self-documenting.</p></div>
 </div>
+</div>
+<div class="sect1">
 <h2 id="_files">FILES</h2>
 <div class="sectionbody">
-<div class="paragraph"><p>The following files can be used by <tt>mcabber(1)</tt>:</p></div>
+<div class="paragraph"><p>The following files can be used by <span class="monospaced">mcabber(1)</span>:</p></div>
 <div class="literalblock">
-<div class="content">
-<pre><tt>$HOME/.mcabber/mcabberrc    Default configuration file
+<div class="content monospaced">
+<pre>$HOME/.mcabber/mcabberrc    Default configuration file
+$HOME/.config/mcabber/mcabberrc Alternate location (can use XDG_CONFIG_HOME)
 $HOME/.mcabberrc            Configuration file used if no other has been found
 $HOME/.mcabber/histo/       Default directory for storing chat history files, if enabled
 /usr/share/mcabber/help/    Default directory for online help files
-/usr/lib/mcabber/           Default directory for modules</tt></pre>
+/usr/lib/mcabber/           Default directory for modules</pre>
 </div></div>
 </div>
+</div>
+<div class="sect1">
 <h2 id="_bugs">BUGS</h2>
 <div class="sectionbody">
-<div class="paragraph"><p>Certainly.  Please tell me if you find one!  :-)<br />
+<div class="paragraph"><p>Certainly.  Please tell me if you find one!  :-)<br>
 Please visit our website to find out about the MUC room and the bug tracker.</p></div>
 </div>
+</div>
+<div class="sect1">
 <h2 id="_author">AUTHOR</h2>
 <div class="sectionbody">
 <div class="paragraph"><p>Written by <a href="mailto:mikael@lilotux.net">Mikael BERTHE</a> and others
-(see AUTHORS file).<br /></p></div>
+(see AUTHORS file).<br></p></div>
 </div>
+</div>
+<div class="sect1">
 <h2 id="_resources">RESOURCES</h2>
 <div class="sectionbody">
-<div class="paragraph"><p><a href="http://mcabber.com/">Main web site</a><br />
-<a href="http://wiki.mcabber.com/">Official wiki</a><br />
-<a href="xmpp:mcabber@conf.lilotux.net">MCabber MUC room</a></p></div>
+<div class="paragraph"><p><a href="http://mcabber.com/">Main web site</a><br>
+<a href="http://wiki.mcabber.com/">Official wiki</a><br>
+xmpp://mcabber@conf.lilotux.net[MCabber MUC room]</p></div>
 </div>
+</div>
+<div class="sect1">
 <h2 id="_copying">COPYING</h2>
 <div class="sectionbody">
-<div class="paragraph"><p>Copyright (C) 2005-2017 Mikael Berthe and others.<br /></p></div>
+<div class="paragraph"><p>Copyright (C) 2005-2017 Mikael Berthe and others.<br></p></div>
 <div class="paragraph"><p>Free use of this software is granted under the terms of the GNU General Public
 License (GPL).</p></div>
 </div>
 </div>
-<div id="footnotes"><hr /></div>
+</div>
+<div id="footnotes"><hr></div>
 <div id="footer">
 <div id="footer-text">
-Version 1.0.6-dev<br />
-Last updated 2016-09-17 20:57:35 CEST
+Version 1.0.6-dev<br>
+Last updated
+ 2017-05-11 14:20:41 CEST
 </div>
 </div>
 </body>
--- a/mcabber/doc/mcabber.1.txt	Fri Apr 21 21:50:16 2017 +0200
+++ b/mcabber/doc/mcabber.1.txt	Thu May 11 14:32:24 2017 +0200
@@ -1,7 +1,7 @@
 MCABBER(1)
 ===========
 Mikael BERTHE <mcabber@lilotux.net>
-v1.0.6-dev, January 2017
+v1.0.6-dev, May 2017
 
 NAME
 ----
@@ -118,7 +118,7 @@
 
 VI MODE
 -------
-If the 'vi_mode' option is set to 1, `mcabber(1)` accepts a few commands
+If the "vi_mode" option is set to 1, `mcabber(1)` accepts a few commands
 loosely based on those available in `vi(1)`'s normal mode.  In this case, chat
 mode is not entered by pressing enter, and messages cannot be composed outside
 of the chat mode.  The following commands are accepted:
@@ -130,28 +130,28 @@
 G::             Call "/roster bottom".
 gg::            Call "/roster top".
 i::             Enter chat mode.
-['n']j::        Call "/roster down ['n']".
-['n']k::        Call "/roster up ['n']".
+[N]j::          Call "/roster down [N]".
+[N]k::          Call "/roster up [N]".
 n::             Repeat the previous search (if any).
 O::             Call "/roster unread_first" and open chat window.
 o::             Call "/roster unread_next" and open chat window.
 ZZ::            Call "/quit".
 zM::            Call "/group fold" for all groups.
 zR::            Call "/group unfold" for all groups.
-\''::           Call "/roster alternate".
+''::           Call "/roster alternate".
 !::             Toggle attention flag for current buddy.
 #::             Toggle unread messages flag for current buddy.
 <Space>::       Call "/group toggle" for the current group.
 
 A leading slash enables search mode:
 
-/'string'::     Call "/roster search 'string'".
+/string::     Call "/roster search string".
 
 A leading colon enabled command-line mode:
 
 :q::            Call "/quit".
-:'n'::          Jump to line 'n' in the roster.
-:'cmd-line'::   Call "/'cmd-line'" (unless the 'cmd-line' matches one of the
+:N::            Jump to line N in the roster.
+:CMD-LINE::     Call "/CMD-LINE" (unless the CMD-LINE matches one of the
                 above commands).
 
 Commands entered with a leading colon and searches are either submitted by
@@ -565,6 +565,7 @@
 The following files can be used by `mcabber(1)`:
 
     $HOME/.mcabber/mcabberrc    Default configuration file
+    $HOME/.config/mcabber/mcabberrc Alternate location (can use XDG_CONFIG_HOME)
     $HOME/.mcabberrc            Configuration file used if no other has been found
     $HOME/.mcabber/histo/       Default directory for storing chat history files, if enabled
     /usr/share/mcabber/help/    Default directory for online help files