Accepted upstream: completion-sorting, refresh
authorMyhailo Danylenko <isbear@ukrpost.net>
Tue, 27 Nov 2012 12:06:38 +0200
changeset 58 04cb7d38c438
parent 57 cfa24a16e928
child 59 a7e239972130
Accepted upstream: completion-sorting, refresh
add-offline-message.diff
completion-sorting.diff
enable-separate-build.diff
series
switch-to-experimental.diff
--- a/add-offline-message.diff	Tue Nov 27 01:57:06 2012 +0200
+++ b/add-offline-message.diff	Tue Nov 27 12:06:38 2012 +0200
@@ -1,10 +1,10 @@
 # HG changeset patch
-# Parent 4f3a07b6b0e02c3bccc10a2157e972d9299c7dab
+# Parent 968f7837ae8c7ace05fd464ca5d73c6faee98cd8
 Allow to specify status message, when going offline
 
-diff -r 4f3a07b6b0e0 mcabber/ChangeLog.api
---- a/mcabber/ChangeLog.api	Thu Oct 18 21:49:01 2012 +0300
-+++ b/mcabber/ChangeLog.api	Thu Oct 18 21:49:06 2012 +0300
+diff -r 968f7837ae8c mcabber/ChangeLog.api
+--- a/mcabber/ChangeLog.api	Tue Nov 27 12:03:44 2012 +0200
++++ b/mcabber/ChangeLog.api	Tue Nov 27 12:04:14 2012 +0200
 @@ -1,3 +1,11 @@
 +
 +experimental (38)
@@ -17,9 +17,9 @@
  experimental (37)
  
   * Change branch to "experimental".
-@@ -14,6 +22,13 @@
+@@ -16,6 +24,13 @@
  
-   -- Myhailo Danylenko, 2012-10-18
+   -- Myhailo Danylenko, 2012-10-20
  
 +experimental (36)
 +
@@ -31,18 +31,18 @@
  experimental (35)
  
   * Change branch to "experimental".
-diff -r 4f3a07b6b0e0 mcabber/doc/help/cs/hlp.txt
---- a/mcabber/doc/help/cs/hlp.txt	Thu Oct 18 21:49:01 2012 +0300
-+++ b/mcabber/doc/help/cs/hlp.txt	Thu Oct 18 21:49:06 2012 +0300
+diff -r 968f7837ae8c mcabber/doc/help/cs/hlp.txt
+--- a/mcabber/doc/help/cs/hlp.txt	Tue Nov 27 12:03:44 2012 +0200
++++ b/mcabber/doc/help/cs/hlp.txt	Tue Nov 27 12:04:14 2012 +0200
 @@ -3,4 +3,4 @@
  
  Zobrazí nápovědu k příkazu nebo tématu.
  
 -Dostupné příkazy jsou: add, alias, authorization, bind, buffer, chat_disable, clear, color, connect, del, disconnect, echo, event, group, help, iline, info, module, move, msay, otr, otrpolicy, pgp, quit, rawxml, rename, request, room, roster, say_to, say, screen_refresh, set, source, status_to, status, version.
 +Dostupné příkazy jsou: add, alias, authorization, bind, buffer, chat_disable, clear, color, connect, del, disconnect, echo, event, exit, group, help, iline, info, module, move, msay, otr, otrpolicy, pgp, quit, rawxml, rename, request, room, roster, say_to, say, screen_refresh, set, source, status_to, status, version.
-diff -r 4f3a07b6b0e0 mcabber/doc/help/cs/hlp_disconnect.txt
---- a/mcabber/doc/help/cs/hlp_disconnect.txt	Thu Oct 18 21:49:01 2012 +0300
-+++ b/mcabber/doc/help/cs/hlp_disconnect.txt	Thu Oct 18 21:49:06 2012 +0300
+diff -r 968f7837ae8c mcabber/doc/help/cs/hlp_disconnect.txt
+--- a/mcabber/doc/help/cs/hlp_disconnect.txt	Tue Nov 27 12:03:44 2012 +0200
++++ b/mcabber/doc/help/cs/hlp_disconnect.txt	Tue Nov 27 12:04:14 2012 +0200
 @@ -1,5 +1,6 @@
  
 - /DISCONNECT
@@ -51,27 +51,27 @@
  Ukončí spojení s Jabber serverem.
 +You can specify status message to disconnect with.
  Poznámka: Seznam kontaktů (roster) je přístupný pouze v době, kdy je spojení aktivní. Po odpojení od serveru je proto prázdný.
-diff -r 4f3a07b6b0e0 mcabber/doc/help/cs/hlp_exit.txt
+diff -r 968f7837ae8c mcabber/doc/help/cs/hlp_exit.txt
 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ b/mcabber/doc/help/cs/hlp_exit.txt	Thu Oct 18 21:49:06 2012 +0300
++++ b/mcabber/doc/help/cs/hlp_exit.txt	Tue Nov 27 12:04:14 2012 +0200
 @@ -0,0 +1,5 @@
 +
 + /EXIT [message]
 +
 +Terminate all connections and exit mcabber.
 +This command is the same as /QUIT, but you can specify status message to exit with.
-diff -r 4f3a07b6b0e0 mcabber/doc/help/de/hlp.txt
---- a/mcabber/doc/help/de/hlp.txt	Thu Oct 18 21:49:01 2012 +0300
-+++ b/mcabber/doc/help/de/hlp.txt	Thu Oct 18 21:49:06 2012 +0300
+diff -r 968f7837ae8c mcabber/doc/help/de/hlp.txt
+--- a/mcabber/doc/help/de/hlp.txt	Tue Nov 27 12:03:44 2012 +0200
++++ b/mcabber/doc/help/de/hlp.txt	Tue Nov 27 12:04:14 2012 +0200
 @@ -3,4 +3,4 @@
  
  Zeigt die Hilfe zu einem Befehl oder ein Thema an.
  Wenn kein Argument gegeben ist, wird diese Hilfe angezeigt.
 -Verfügbare Befehle: add, alias, authorization, bind, buffer, chat_disable, clear, color, connect, del, disconnect, echo, event, group, help, iline, info, module, move, msay, otr, otrpolicy, pgp, quit, rawxml, rename, request, room, roster, say_to, say, screen_refresh, set, source, status_to, status, version.
 +Verfügbare Befehle: add, alias, authorization, bind, buffer, chat_disable, clear, color, connect, del, disconnect, echo, event, exit, group, help, iline, info, module, move, msay, otr, otrpolicy, pgp, quit, rawxml, rename, request, room, roster, say_to, say, screen_refresh, set, source, status_to, status, version.
-diff -r 4f3a07b6b0e0 mcabber/doc/help/de/hlp_disconnect.txt
---- a/mcabber/doc/help/de/hlp_disconnect.txt	Thu Oct 18 21:49:01 2012 +0300
-+++ b/mcabber/doc/help/de/hlp_disconnect.txt	Thu Oct 18 21:49:06 2012 +0300
+diff -r 968f7837ae8c mcabber/doc/help/de/hlp_disconnect.txt
+--- a/mcabber/doc/help/de/hlp_disconnect.txt	Tue Nov 27 12:03:44 2012 +0200
++++ b/mcabber/doc/help/de/hlp_disconnect.txt	Tue Nov 27 12:04:14 2012 +0200
 @@ -1,5 +1,6 @@
  
 - /DISCONNECT
@@ -80,27 +80,27 @@
  Die Verbindung zum Jabber Server trennen.
 +You can specify status message to disconnect with.
  Denke daran, dass der Roster nur verfügbar ist wenn man mit dem Jabber Server verbunden ist. Somit ist die Buddyliste auch leer, wenn man sich beim Server abmeldet.
-diff -r 4f3a07b6b0e0 mcabber/doc/help/de/hlp_exit.txt
+diff -r 968f7837ae8c mcabber/doc/help/de/hlp_exit.txt
 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ b/mcabber/doc/help/de/hlp_exit.txt	Thu Oct 18 21:49:06 2012 +0300
++++ b/mcabber/doc/help/de/hlp_exit.txt	Tue Nov 27 12:04:14 2012 +0200
 @@ -0,0 +1,5 @@
 +
 + /EXIT [message]
 +
 +Terminate all connections and exit mcabber.
 +This command is the same as /QUIT, but you can specify status message to exit with.
-diff -r 4f3a07b6b0e0 mcabber/doc/help/en/hlp.txt
---- a/mcabber/doc/help/en/hlp.txt	Thu Oct 18 21:49:01 2012 +0300
-+++ b/mcabber/doc/help/en/hlp.txt	Thu Oct 18 21:49:06 2012 +0300
+diff -r 968f7837ae8c mcabber/doc/help/en/hlp.txt
+--- a/mcabber/doc/help/en/hlp.txt	Tue Nov 27 12:03:44 2012 +0200
++++ b/mcabber/doc/help/en/hlp.txt	Tue Nov 27 12:04:14 2012 +0200
 @@ -3,4 +3,4 @@
  
  Display some help about a command or a topic.
  If no argument provided a usage of this command is printed.
 -Available commands: add, alias, authorization, bind, buffer, chat_disable, clear, color, connect, del, disconnect, echo, event, group, help, iline, info, module, move, msay, otr, otrpolicy, pgp, quit, rawxml, rename, request, room, roster, say_to, say, screen_refresh, set, source, status_to, status, version.
 +Available commands: add, alias, authorization, bind, buffer, chat_disable, clear, color, connect, del, disconnect, echo, event, exit, group, help, iline, info, module, move, msay, otr, otrpolicy, pgp, quit, rawxml, rename, request, room, roster, say_to, say, screen_refresh, set, source, status_to, status, version.
-diff -r 4f3a07b6b0e0 mcabber/doc/help/en/hlp_disconnect.txt
---- a/mcabber/doc/help/en/hlp_disconnect.txt	Thu Oct 18 21:49:01 2012 +0300
-+++ b/mcabber/doc/help/en/hlp_disconnect.txt	Thu Oct 18 21:49:06 2012 +0300
+diff -r 968f7837ae8c mcabber/doc/help/en/hlp_disconnect.txt
+--- a/mcabber/doc/help/en/hlp_disconnect.txt	Tue Nov 27 12:03:44 2012 +0200
++++ b/mcabber/doc/help/en/hlp_disconnect.txt	Tue Nov 27 12:04:14 2012 +0200
 @@ -1,5 +1,6 @@
  
 - /DISCONNECT
@@ -109,27 +109,27 @@
  Terminate the connection to the Jabber server.
 +You can specify status message to disconnect with.
  Note: the roster is only available when the connection to the server is active, so the buddylist is empty when disconnected.
-diff -r 4f3a07b6b0e0 mcabber/doc/help/en/hlp_exit.txt
+diff -r 968f7837ae8c mcabber/doc/help/en/hlp_exit.txt
 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ b/mcabber/doc/help/en/hlp_exit.txt	Thu Oct 18 21:49:06 2012 +0300
++++ b/mcabber/doc/help/en/hlp_exit.txt	Tue Nov 27 12:04:14 2012 +0200
 @@ -0,0 +1,5 @@
 +
 + /EXIT [message]
 +
 +Terminate all connections and exit mcabber.
 +This command is the same as /QUIT, but you can specify status message to exit with.
-diff -r 4f3a07b6b0e0 mcabber/doc/help/fr/hlp.txt
---- a/mcabber/doc/help/fr/hlp.txt	Thu Oct 18 21:49:01 2012 +0300
-+++ b/mcabber/doc/help/fr/hlp.txt	Thu Oct 18 21:49:06 2012 +0300
+diff -r 968f7837ae8c mcabber/doc/help/fr/hlp.txt
+--- a/mcabber/doc/help/fr/hlp.txt	Tue Nov 27 12:03:44 2012 +0200
++++ b/mcabber/doc/help/fr/hlp.txt	Tue Nov 27 12:04:14 2012 +0200
 @@ -2,4 +2,4 @@
   /HELP [commande|+sujet]
  
  Affiche de l'aide sur la commande ou le sujet demandé.
 -Les commandes disponibles sont : add, alias, authorization, bind, buffer, chat_disable, clear, color, connect, del, disconnect, echo, event, group, help, iline, info, module, move, msay, otr, otrpolicy, pgp, quit, rawxml, rename, request, room, roster, say_to, say, screen_refresh, set, source, status_to, status, version.
 +Les commandes disponibles sont : add, alias, authorization, bind, buffer, chat_disable, clear, color, connect, del, disconnect, echo, event, exit, group, help, iline, info, module, move, msay, otr, otrpolicy, pgp, quit, rawxml, rename, request, room, roster, say_to, say, screen_refresh, set, source, status_to, status, version.
-diff -r 4f3a07b6b0e0 mcabber/doc/help/fr/hlp_disconnect.txt
---- a/mcabber/doc/help/fr/hlp_disconnect.txt	Thu Oct 18 21:49:01 2012 +0300
-+++ b/mcabber/doc/help/fr/hlp_disconnect.txt	Thu Oct 18 21:49:06 2012 +0300
+diff -r 968f7837ae8c mcabber/doc/help/fr/hlp_disconnect.txt
+--- a/mcabber/doc/help/fr/hlp_disconnect.txt	Tue Nov 27 12:03:44 2012 +0200
++++ b/mcabber/doc/help/fr/hlp_disconnect.txt	Tue Nov 27 12:04:14 2012 +0200
 @@ -1,5 +1,6 @@
  
 - /DISCONNECT
@@ -138,27 +138,27 @@
  Ferme la connexion au serveur Jabber.
 +You can specify status message to disconnect with.
  Remarque : le roster n'est disponible que lorsque la connexion au serveur estactive, donc la liste de contacts est vide après déconnexion.
-diff -r 4f3a07b6b0e0 mcabber/doc/help/fr/hlp_exit.txt
+diff -r 968f7837ae8c mcabber/doc/help/fr/hlp_exit.txt
 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ b/mcabber/doc/help/fr/hlp_exit.txt	Thu Oct 18 21:49:06 2012 +0300
++++ b/mcabber/doc/help/fr/hlp_exit.txt	Tue Nov 27 12:04:14 2012 +0200
 @@ -0,0 +1,5 @@
 +
 + /EXIT [message]
 +
 +Terminate all connections and exit mcabber.
 +This command is the same as /QUIT, but you can specify status message to exit with.
-diff -r 4f3a07b6b0e0 mcabber/doc/help/it/hlp.txt
---- a/mcabber/doc/help/it/hlp.txt	Thu Oct 18 21:49:01 2012 +0300
-+++ b/mcabber/doc/help/it/hlp.txt	Thu Oct 18 21:49:06 2012 +0300
+diff -r 968f7837ae8c mcabber/doc/help/it/hlp.txt
+--- a/mcabber/doc/help/it/hlp.txt	Tue Nov 27 12:03:44 2012 +0200
++++ b/mcabber/doc/help/it/hlp.txt	Tue Nov 27 12:04:14 2012 +0200
 @@ -3,4 +3,4 @@
  
  Mostra l'help relativo a comando o ad argomento.
  Se non viene specificato alcun argomento, viene visualizzato l'utilizzo del comando corrente.
 -I comandi disponibili sono: add, alias, authorization, bind, buffer, chat_disable, clear, color, connect, del, disconnect, echo, event, group, help, iline, info, module, move, msay, otr, otrpolicy, pgp, quit, rawxml, rename, request, room, roster, say_to, say, screen_refresh, set, source, status_to, status, version.
 +I comandi disponibili sono: add, alias, authorization, bind, buffer, chat_disable, clear, color, connect, del, disconnect, echo, event, exit, group, help, iline, info, module, move, msay, otr, otrpolicy, pgp, quit, rawxml, rename, request, room, roster, say_to, say, screen_refresh, set, source, status_to, status, version.
-diff -r 4f3a07b6b0e0 mcabber/doc/help/it/hlp_disconnect.txt
---- a/mcabber/doc/help/it/hlp_disconnect.txt	Thu Oct 18 21:49:01 2012 +0300
-+++ b/mcabber/doc/help/it/hlp_disconnect.txt	Thu Oct 18 21:49:06 2012 +0300
+diff -r 968f7837ae8c mcabber/doc/help/it/hlp_disconnect.txt
+--- a/mcabber/doc/help/it/hlp_disconnect.txt	Tue Nov 27 12:03:44 2012 +0200
++++ b/mcabber/doc/help/it/hlp_disconnect.txt	Tue Nov 27 12:04:14 2012 +0200
 @@ -1,5 +1,6 @@
  
 - /DISCONNECT
@@ -167,27 +167,27 @@
  Termina la connessione con il serve Jabber.
 +You can specify status message to disconnect with.
  Nota: il roster è disponibile soltanto quando la connessione è attiva, quindi la lista dei contatti è vuota quando si è disconnessi.
-diff -r 4f3a07b6b0e0 mcabber/doc/help/it/hlp_exit.txt
+diff -r 968f7837ae8c mcabber/doc/help/it/hlp_exit.txt
 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ b/mcabber/doc/help/it/hlp_exit.txt	Thu Oct 18 21:49:06 2012 +0300
++++ b/mcabber/doc/help/it/hlp_exit.txt	Tue Nov 27 12:04:14 2012 +0200
 @@ -0,0 +1,5 @@
 +
 + /EXIT [message]
 +
 +Terminate all connections and exit mcabber.
 +This command is the same as /QUIT, but you can specify status message to exit with.
-diff -r 4f3a07b6b0e0 mcabber/doc/help/nl/hlp.txt
---- a/mcabber/doc/help/nl/hlp.txt	Thu Oct 18 21:49:01 2012 +0300
-+++ b/mcabber/doc/help/nl/hlp.txt	Thu Oct 18 21:49:06 2012 +0300
+diff -r 968f7837ae8c mcabber/doc/help/nl/hlp.txt
+--- a/mcabber/doc/help/nl/hlp.txt	Tue Nov 27 12:03:44 2012 +0200
++++ b/mcabber/doc/help/nl/hlp.txt	Tue Nov 27 12:04:14 2012 +0200
 @@ -3,4 +3,4 @@
  
  Toon informatie over een commando of onderwerp.
  Als geen argument is meegegeven, wordt een tekst over het gebruik van dit commando getoond.
 -Beschikbare commando's: add, alias, authorization, bind, buffer, chat_disable, clear, color, connect, del, disconnect, echo, event, group, help, iline, info, module, move, msay, otr, otrpolicy, pgp, quit, rawxml, rename, request, room, roster, say_to, say, screen_refresh, set, source, status_to, status, version.
 +Beschikbare commando's: add, alias, authorization, bind, buffer, chat_disable, clear, color, connect, del, disconnect, echo, event, exit, group, help, iline, info, module, move, msay, otr, otrpolicy, pgp, quit, rawxml, rename, request, room, roster, say_to, say, screen_refresh, set, source, status_to, status, version.
-diff -r 4f3a07b6b0e0 mcabber/doc/help/nl/hlp_disconnect.txt
---- a/mcabber/doc/help/nl/hlp_disconnect.txt	Thu Oct 18 21:49:01 2012 +0300
-+++ b/mcabber/doc/help/nl/hlp_disconnect.txt	Thu Oct 18 21:49:06 2012 +0300
+diff -r 968f7837ae8c mcabber/doc/help/nl/hlp_disconnect.txt
+--- a/mcabber/doc/help/nl/hlp_disconnect.txt	Tue Nov 27 12:03:44 2012 +0200
++++ b/mcabber/doc/help/nl/hlp_disconnect.txt	Tue Nov 27 12:04:14 2012 +0200
 @@ -1,5 +1,6 @@
  
 - /DISCONNECT
@@ -196,27 +196,27 @@
  Beëindig de verbinding met de Jabber server.
 +You can specify status message to disconnect with.
  NB: het Roster is alleen beschikbaar indien er een actieve verbinding met de server bestaat. De buddylijst is dus leeg indien niet verbonden.
-diff -r 4f3a07b6b0e0 mcabber/doc/help/nl/hlp_exit.txt
+diff -r 968f7837ae8c mcabber/doc/help/nl/hlp_exit.txt
 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ b/mcabber/doc/help/nl/hlp_exit.txt	Thu Oct 18 21:49:06 2012 +0300
++++ b/mcabber/doc/help/nl/hlp_exit.txt	Tue Nov 27 12:04:14 2012 +0200
 @@ -0,0 +1,5 @@
 +
 + /EXIT [message]
 +
 +Terminate all connections and exit mcabber.
 +This command is the same as /QUIT, but you can specify status message to exit with.
-diff -r 4f3a07b6b0e0 mcabber/doc/help/pl/hlp.txt
---- a/mcabber/doc/help/pl/hlp.txt	Thu Oct 18 21:49:01 2012 +0300
-+++ b/mcabber/doc/help/pl/hlp.txt	Thu Oct 18 21:49:06 2012 +0300
+diff -r 968f7837ae8c mcabber/doc/help/pl/hlp.txt
+--- a/mcabber/doc/help/pl/hlp.txt	Tue Nov 27 12:03:44 2012 +0200
++++ b/mcabber/doc/help/pl/hlp.txt	Tue Nov 27 12:04:14 2012 +0200
 @@ -3,4 +3,4 @@
  
  Wyświetla pomoc dotyczącą danego polecenia lub tematu.
  Jeśli nie podano żadnego argumentu, zostanie wyświetlona pomoc o sposobie użycia.
 -Dostępne polecenia: add, alias, authorization, bind, buffer, chat_disable, clear, color, connect, del, disconnect, echo, event, group, help, iline, info, module, move, msay, otr, otrpolicy, pgp, quit, rawxml, rename, request, room, roster, say_to, say, screen_refresh, set, source, status_to, status, version.
 +Dostępne polecenia: add, alias, authorization, bind, buffer, chat_disable, clear, color, connect, del, disconnect, echo, event, exit, group, help, iline, info, module, move, msay, otr, otrpolicy, pgp, quit, rawxml, rename, request, room, roster, say_to, say, screen_refresh, set, source, status_to, status, version.
-diff -r 4f3a07b6b0e0 mcabber/doc/help/pl/hlp_disconnect.txt
---- a/mcabber/doc/help/pl/hlp_disconnect.txt	Thu Oct 18 21:49:01 2012 +0300
-+++ b/mcabber/doc/help/pl/hlp_disconnect.txt	Thu Oct 18 21:49:06 2012 +0300
+diff -r 968f7837ae8c mcabber/doc/help/pl/hlp_disconnect.txt
+--- a/mcabber/doc/help/pl/hlp_disconnect.txt	Tue Nov 27 12:03:44 2012 +0200
++++ b/mcabber/doc/help/pl/hlp_disconnect.txt	Tue Nov 27 12:04:14 2012 +0200
 @@ -1,5 +1,6 @@
  
 - /DISCONNECT
@@ -227,27 +227,27 @@
 \ No newline at end of file
 +You can specify status message to disconnect with.
 +Uwaga: roster dostępny jest tylko gdy połączenie do serwera jest aktywne, zatem jeżeli nie jesteś połączony lista kontaktów jest pusta.
-diff -r 4f3a07b6b0e0 mcabber/doc/help/pl/hlp_exit.txt
+diff -r 968f7837ae8c mcabber/doc/help/pl/hlp_exit.txt
 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ b/mcabber/doc/help/pl/hlp_exit.txt	Thu Oct 18 21:49:06 2012 +0300
++++ b/mcabber/doc/help/pl/hlp_exit.txt	Tue Nov 27 12:04:14 2012 +0200
 @@ -0,0 +1,5 @@
 +
 + /EXIT [message]
 +
 +Terminate all connections and exit mcabber.
 +This command is the same as /QUIT, but you can specify status message to exit with.
-diff -r 4f3a07b6b0e0 mcabber/doc/help/ru/hlp.txt
---- a/mcabber/doc/help/ru/hlp.txt	Thu Oct 18 21:49:01 2012 +0300
-+++ b/mcabber/doc/help/ru/hlp.txt	Thu Oct 18 21:49:06 2012 +0300
+diff -r 968f7837ae8c mcabber/doc/help/ru/hlp.txt
+--- a/mcabber/doc/help/ru/hlp.txt	Tue Nov 27 12:03:44 2012 +0200
++++ b/mcabber/doc/help/ru/hlp.txt	Tue Nov 27 12:04:14 2012 +0200
 @@ -3,4 +3,4 @@
  
  Отображает файл помощи о запрошенной команде или топике.
  Если выполнить без аргументов, будут отображены допустимые команды.
 -Допустимые команды: add, alias, authorization, bind, buffer, chat_disable, clear, color, connect, del, disconnect, echo, event, group, help, iline, info, module, move, msay, otr, otrpolicy, pgp, quit, rawxml, rename, request, room, roster, say_to, say, screen_refresh, set, source, status_to, status, version.
 +Допустимые команды: add, alias, authorization, bind, buffer, chat_disable, clear, color, connect, del, disconnect, echo, event, exit, group, help, iline, info, module, move, msay, otr, otrpolicy, pgp, quit, rawxml, rename, request, room, roster, say_to, say, screen_refresh, set, source, status_to, status, version.
-diff -r 4f3a07b6b0e0 mcabber/doc/help/ru/hlp_disconnect.txt
---- a/mcabber/doc/help/ru/hlp_disconnect.txt	Thu Oct 18 21:49:01 2012 +0300
-+++ b/mcabber/doc/help/ru/hlp_disconnect.txt	Thu Oct 18 21:49:06 2012 +0300
+diff -r 968f7837ae8c mcabber/doc/help/ru/hlp_disconnect.txt
+--- a/mcabber/doc/help/ru/hlp_disconnect.txt	Tue Nov 27 12:03:44 2012 +0200
++++ b/mcabber/doc/help/ru/hlp_disconnect.txt	Tue Nov 27 12:04:14 2012 +0200
 @@ -1,5 +1,6 @@
  
 - /DISCONNECT
@@ -256,9 +256,9 @@
  Завершает соединение с Jabber-сервером.
 +Вы можете указать сообщение статуса при выходе.
  Примечание: список контактов доступен только когда соединение с сервером активно, поэтому список контактов пуст при завершении соединения.
-diff -r 4f3a07b6b0e0 mcabber/doc/help/ru/hlp_exit.txt
+diff -r 968f7837ae8c mcabber/doc/help/ru/hlp_exit.txt
 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ b/mcabber/doc/help/ru/hlp_exit.txt	Thu Oct 18 21:49:06 2012 +0300
++++ b/mcabber/doc/help/ru/hlp_exit.txt	Tue Nov 27 12:04:14 2012 +0200
 @@ -0,0 +1,6 @@
 +
 + /EXIT [сообщение]
@@ -266,18 +266,18 @@
 +
 +Эта команда завершает все активные соединения и выходит из mcabber`а.
 +Отличается от /QUIT тем, что позволяет указать сообщение статуса при выходе.
-diff -r 4f3a07b6b0e0 mcabber/doc/help/uk/hlp.txt
---- a/mcabber/doc/help/uk/hlp.txt	Thu Oct 18 21:49:01 2012 +0300
-+++ b/mcabber/doc/help/uk/hlp.txt	Thu Oct 18 21:49:06 2012 +0300
+diff -r 968f7837ae8c mcabber/doc/help/uk/hlp.txt
+--- a/mcabber/doc/help/uk/hlp.txt	Tue Nov 27 12:03:44 2012 +0200
++++ b/mcabber/doc/help/uk/hlp.txt	Tue Nov 27 12:04:14 2012 +0200
 @@ -3,4 +3,4 @@
  
  Друкує допоміжну інформацію про команду або вираз.
  Без аргументу друкує оце повідомлення.
 -Наявні команди: add, alias, authorization, bind, buffer, chat_disable, clear, color, connect, del, disconnect, echo, event, group, help, iline, info, module, move, msay, otr, otrpolicy, pgp, quit, rawxml, rename, request, room, roster, say_to, say, screen_refresh, set, source, status_to, status, version.
 +Наявні команди: add, alias, authorization, bind, buffer, chat_disable, clear, color, connect, del, disconnect, echo, event, exit, group, help, iline, info, module, move, msay, otr, otrpolicy, pgp, quit, rawxml, rename, request, room, roster, say_to, say, screen_refresh, set, source, status_to, status, version.
-diff -r 4f3a07b6b0e0 mcabber/doc/help/uk/hlp_disconnect.txt
---- a/mcabber/doc/help/uk/hlp_disconnect.txt	Thu Oct 18 21:49:01 2012 +0300
-+++ b/mcabber/doc/help/uk/hlp_disconnect.txt	Thu Oct 18 21:49:06 2012 +0300
+diff -r 968f7837ae8c mcabber/doc/help/uk/hlp_disconnect.txt
+--- a/mcabber/doc/help/uk/hlp_disconnect.txt	Tue Nov 27 12:03:44 2012 +0200
++++ b/mcabber/doc/help/uk/hlp_disconnect.txt	Tue Nov 27 12:04:14 2012 +0200
 @@ -1,5 +1,6 @@
  
 - /DISCONNECT
@@ -286,18 +286,18 @@
  Розірвати з'єднання з сервером.
 +Ви можете вказати повідомлення статусу відсутності.
  Майте на увазі, що список контактів зберігається на сервері, отож після від'єднання ви його більше не побачите.
-diff -r 4f3a07b6b0e0 mcabber/doc/help/uk/hlp_exit.txt
+diff -r 968f7837ae8c mcabber/doc/help/uk/hlp_exit.txt
 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ b/mcabber/doc/help/uk/hlp_exit.txt	Thu Oct 18 21:49:06 2012 +0300
++++ b/mcabber/doc/help/uk/hlp_exit.txt	Tue Nov 27 12:04:14 2012 +0200
 @@ -0,0 +1,5 @@
 +
 + /EXIT [повідомлення]
 +
 +Закриває всі з’єднання та завершує мкаббер.
 +Відмінність цієї команди від /QUIT у тому, що ви можете вказати повідомлення статусу відсутності.
-diff -r 4f3a07b6b0e0 mcabber/mcabber/api.h
---- a/mcabber/mcabber/api.h	Thu Oct 18 21:49:01 2012 +0300
-+++ b/mcabber/mcabber/api.h	Thu Oct 18 21:49:06 2012 +0300
+diff -r 968f7837ae8c mcabber/mcabber/api.h
+--- a/mcabber/mcabber/api.h	Tue Nov 27 12:03:44 2012 +0200
++++ b/mcabber/mcabber/api.h	Tue Nov 27 12:04:14 2012 +0200
 @@ -4,8 +4,8 @@
  #include <glib.h>
  #include <mcabber/config.h> // For MCABBER_BRANCH
@@ -309,9 +309,9 @@
  
  #define MCABBER_BRANCH_EXPERIMENTAL 1
  
-diff -r 4f3a07b6b0e0 mcabber/mcabber/commands.c
---- a/mcabber/mcabber/commands.c	Thu Oct 18 21:49:01 2012 +0300
-+++ b/mcabber/mcabber/commands.c	Thu Oct 18 21:49:06 2012 +0300
+diff -r 968f7837ae8c mcabber/mcabber/commands.c
+--- a/mcabber/mcabber/commands.c	Tue Nov 27 12:03:44 2012 +0200
++++ b/mcabber/mcabber/commands.c	Tue Nov 27 12:04:14 2012 +0200
 @@ -94,6 +94,7 @@
  static void do_otrpolicy(char *arg);
  static void do_echo(char *arg);
@@ -354,9 +354,9 @@
 +}
 +
  /* vim: set expandtab cindent cinoptions=>2\:2(0 sw=2 ts=2:  For Vim users... */
-diff -r 4f3a07b6b0e0 mcabber/mcabber/main.c
---- a/mcabber/mcabber/main.c	Thu Oct 18 21:49:01 2012 +0300
-+++ b/mcabber/mcabber/main.c	Thu Oct 18 21:49:06 2012 +0300
+diff -r 968f7837ae8c mcabber/mcabber/main.c
+--- a/mcabber/mcabber/main.c	Tue Nov 27 12:03:44 2012 +0200
++++ b/mcabber/mcabber/main.c	Tue Nov 27 12:04:14 2012 +0200
 @@ -87,7 +87,7 @@
  #ifndef MODULES_ENABLE
    fifo_deinit();
@@ -375,9 +375,9 @@
  #ifdef HAVE_GPGME
    gpg_terminate();
  #endif
-diff -r 4f3a07b6b0e0 mcabber/mcabber/settings.c
---- a/mcabber/mcabber/settings.c	Thu Oct 18 21:49:01 2012 +0300
-+++ b/mcabber/mcabber/settings.c	Thu Oct 18 21:49:06 2012 +0300
+diff -r 968f7837ae8c mcabber/mcabber/settings.c
+--- a/mcabber/mcabber/settings.c	Tue Nov 27 12:03:44 2012 +0200
++++ b/mcabber/mcabber/settings.c	Tue Nov 27 12:04:14 2012 +0200
 @@ -372,7 +372,12 @@
  // - if no message is found, return NULL
  const gchar *settings_get_status_msg(enum imstatus status)
@@ -401,9 +401,9 @@
          break;
    }
    return rstatus;
-diff -r 4f3a07b6b0e0 mcabber/mcabber/xmpp.c
---- a/mcabber/mcabber/xmpp.c	Thu Oct 18 21:49:01 2012 +0300
-+++ b/mcabber/mcabber/xmpp.c	Thu Oct 18 21:49:06 2012 +0300
+diff -r 968f7837ae8c mcabber/mcabber/xmpp.c
+--- a/mcabber/mcabber/xmpp.c	Tue Nov 27 12:03:44 2012 +0200
++++ b/mcabber/mcabber/xmpp.c	Tue Nov 27 12:04:14 2012 +0200
 @@ -884,7 +884,7 @@
  
  static void _try_to_reconnect(void)
@@ -440,9 +440,9 @@
    }
    if (lm_connection_is_open(lconnection))
      lm_connection_close(lconnection, NULL);
-diff -r 4f3a07b6b0e0 mcabber/mcabber/xmpp.h
---- a/mcabber/mcabber/xmpp.h	Thu Oct 18 21:49:01 2012 +0300
-+++ b/mcabber/mcabber/xmpp.h	Thu Oct 18 21:49:06 2012 +0300
+diff -r 968f7837ae8c mcabber/mcabber/xmpp.h
+--- a/mcabber/mcabber/xmpp.h	Tue Nov 27 12:03:44 2012 +0200
++++ b/mcabber/mcabber/xmpp.h	Tue Nov 27 12:04:14 2012 +0200
 @@ -37,7 +37,7 @@
  
  void xmpp_init(void); /* private */
@@ -452,9 +452,9 @@
  gboolean xmpp_is_online(void);
  
  void xmpp_room_join(const char *room, const char *nickname, const char *passwd);
-diff -r 4f3a07b6b0e0 mcabber/mcabberrc.example
---- a/mcabber/mcabberrc.example	Thu Oct 18 21:49:01 2012 +0300
-+++ b/mcabber/mcabberrc.example	Thu Oct 18 21:49:06 2012 +0300
+diff -r 968f7837ae8c mcabber/mcabberrc.example
+--- a/mcabber/mcabberrc.example	Tue Nov 27 12:03:44 2012 +0200
++++ b/mcabber/mcabberrc.example	Tue Nov 27 12:04:14 2012 +0200
 @@ -358,6 +358,9 @@
  #set message_notavail  = I'm not available
  #set message_away      = I'm away
--- a/completion-sorting.diff	Tue Nov 27 01:57:06 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,568 +0,0 @@
-# HG changeset patch
-# Parent 88836b149cfab6e695f70b3c7e52fe8b99b09900
-Make completion sorting order configurable
-
-  * Use allocated plain array for categories
-  * Use callbacks for dynamic completions (private for now)
-  * Add compl_set_flags() to allow user to set completion order
-  * Bump api to 24-24
-
-diff -r 88836b149cfa mcabber/ChangeLog.api
---- a/mcabber/ChangeLog.api	Sat Oct 20 18:02:25 2012 +0300
-+++ b/mcabber/ChangeLog.api	Sat Oct 20 18:27:46 2012 +0300
-@@ -1,3 +1,10 @@
-+dev (24)
-+ * MQ patch completion-sorting.diff
-+ * Change compl_add_category() to accept flags arg
-+ * Define MCABBER_API_HAVE_COMPL_FLAGS
-+
-+  -- Myhailo Danylenko, 2012-10-18
-+
- dev (23)
-  * Changeset 8dc418af3e72
-    Add buddy_(get|set)activeresource() functions
-diff -r 88836b149cfa mcabber/mcabber/api.h
---- a/mcabber/mcabber/api.h	Sat Oct 20 18:02:25 2012 +0300
-+++ b/mcabber/mcabber/api.h	Sat Oct 20 18:27:46 2012 +0300
-@@ -4,12 +4,15 @@
- #include <glib.h>
- #include <mcabber/config.h> // For MCABBER_BRANCH
- 
--#define MCABBER_API_VERSION 23
--#define MCABBER_API_MIN     21
-+#define MCABBER_API_VERSION 24
-+#define MCABBER_API_MIN     24
- 
- #define MCABBER_BRANCH_DEV  1
- 
-+// cmd_add returns gpointer id
- #define MCABBER_API_HAVE_CMD_ID 1
-+// compl_new_category accepts flags argument
-+#define MCABBER_API_HAVE_COMPL_FLAGS 1
- 
- extern const gchar *mcabber_branch;
- extern const guint mcabber_api_version;
-diff -r 88836b149cfa mcabber/mcabber/compl.c
---- a/mcabber/mcabber/compl.c	Sat Oct 20 18:02:25 2012 +0300
-+++ b/mcabber/mcabber/compl.c	Sat Oct 20 18:27:46 2012 +0300
-@@ -2,7 +2,7 @@
-  * compl.c      -- Completion system
-  *
-  * Copyright (C) 2005-2010 Mikael Berthe <mikael@lilotux.net>
-- * Copyright (C) 2009,2010 Myhailo Danylenko <isbear@ukrpost.net>
-+ * Copyright (C) 2009-2012 Myhailo Danylenko <isbear@ukrpost.net>
-  *
-  * This program is free software; you can redistribute it and/or modify
-  * it under the terms of the GNU General Public License as published by
-@@ -47,82 +47,150 @@
-   GSList *next;         // pointer to next completion to try
- } compl;
- 
-+typedef GSList *(*compl_handler_t) (void); // XXX userdata? *dynlist?
-+
- // Category structure
- typedef struct {
--  guint64 flag;
-+  guint flags;
-   GSList *words;
-+  compl_handler_t dynamic;
- } category;
- 
--static GSList *Categories;
-+#define COMPL_CAT_BUILTIN   0x01
-+#define COMPL_CAT_ACTIVE    0x02
-+#define COMPL_CAT_DYNAMIC   0x04
-+#define COMPL_CAT_REVERSE   0x10
-+#define COMPL_CAT_NOSORT    0x20
-+
-+#define COMPL_CAT_USERFLAGS 0x30
-+
- static compl *InputCompl;
-+static category *Categories;
-+static guint num_categories;
- 
--#ifdef MODULES_ENABLE
--static guint64 registered_cats;
-+// Dynamic completions callbacks
-+static GSList *compl_dyn_group (void)
-+{
-+  return compl_list(ROSTER_TYPE_GROUP);
-+}
- 
--static inline void register_builtin_cat(guint c) {
--  registered_cats |= 1UL << (c-1);
-+static GSList *compl_dyn_user (void)
-+{
-+  return compl_list(ROSTER_TYPE_USER);
-+}
-+
-+static GSList *compl_dyn_resource (void)
-+{
-+  return buddy_getresources_locale(NULL);
-+}
-+
-+static GSList *compl_dyn_events (void)
-+{
-+  GSList *compl = evs_geteventslist();
-+  GSList *cel;
-+  for (cel = compl; cel; cel = cel->next)
-+    cel->data = g_strdup(cel->data);
-+  compl = g_slist_append(compl, g_strdup("list"));
-+  return compl;
-+}
-+
-+static inline void register_builtin_cat(guint c, compl_handler_t dynamic) {
-+  Categories[c-1].flags   = COMPL_CAT_BUILTIN | COMPL_CAT_ACTIVE;
-+  Categories[c-1].words   = NULL;
-+  Categories[c-1].dynamic = dynamic;
-+  if (dynamic != NULL) {
-+    Categories[c-1].flags |= COMPL_CAT_DYNAMIC;
-+  }
- }
- 
- void compl_init_system(void)
- {
-+  num_categories = COMPL_MAX_ID;
-+#ifdef MODULES_ENABLE
-+  num_categories = ((num_categories / 16) + 1) * 16;
-+#endif
-+  Categories = g_new0(category, num_categories);
-+
-   // Builtin completion categories:
--  register_builtin_cat(COMPL_CMD);
--  register_builtin_cat(COMPL_JID);
--  register_builtin_cat(COMPL_URLJID);
--  register_builtin_cat(COMPL_NAME);
--  register_builtin_cat(COMPL_STATUS);
--  register_builtin_cat(COMPL_FILENAME);
--  register_builtin_cat(COMPL_ROSTER);
--  register_builtin_cat(COMPL_BUFFER);
--  register_builtin_cat(COMPL_GROUP);
--  register_builtin_cat(COMPL_GROUPNAME);
--  register_builtin_cat(COMPL_MULTILINE);
--  register_builtin_cat(COMPL_ROOM);
--  register_builtin_cat(COMPL_RESOURCE);
--  register_builtin_cat(COMPL_AUTH);
--  register_builtin_cat(COMPL_REQUEST);
--  register_builtin_cat(COMPL_EVENTS);
--  register_builtin_cat(COMPL_EVENTSID);
--  register_builtin_cat(COMPL_PGP);
--  register_builtin_cat(COMPL_COLOR);
--  register_builtin_cat(COMPL_OTR);
--  register_builtin_cat(COMPL_OTRPOLICY);
--  register_builtin_cat(COMPL_MODULE);
-+  register_builtin_cat(COMPL_CMD, NULL);
-+  register_builtin_cat(COMPL_JID, compl_dyn_user);
-+  register_builtin_cat(COMPL_URLJID, NULL);
-+  register_builtin_cat(COMPL_NAME, NULL);
-+  register_builtin_cat(COMPL_STATUS, NULL);
-+  register_builtin_cat(COMPL_FILENAME, NULL);
-+  register_builtin_cat(COMPL_ROSTER, NULL);
-+  register_builtin_cat(COMPL_BUFFER, NULL);
-+  register_builtin_cat(COMPL_GROUP, NULL);
-+  register_builtin_cat(COMPL_GROUPNAME, compl_dyn_group);
-+  register_builtin_cat(COMPL_MULTILINE, NULL);
-+  register_builtin_cat(COMPL_ROOM, NULL);
-+  register_builtin_cat(COMPL_RESOURCE, compl_dyn_resource);
-+  register_builtin_cat(COMPL_AUTH, NULL);
-+  register_builtin_cat(COMPL_REQUEST, NULL);
-+  register_builtin_cat(COMPL_EVENTS, NULL);
-+  register_builtin_cat(COMPL_EVENTSID, compl_dyn_events);
-+  register_builtin_cat(COMPL_PGP, NULL);
-+  register_builtin_cat(COMPL_COLOR, NULL);
-+  register_builtin_cat(COMPL_OTR, NULL);
-+  register_builtin_cat(COMPL_OTRPOLICY, NULL);
-+  register_builtin_cat(COMPL_MODULE, NULL);
- }
- 
--//  compl_new_category()
-+#ifdef MODULES_ENABLE
-+//  compl_new_category(flags)
- // Reserves id for new completion category.
-+// Flags determine word sorting order.
- // Returns 0, if no more categories can be allocated.
--// Note, that user should not make any assumptions about id nature,
--// as it is likely to change in future.
--guint compl_new_category(void)
-+guint compl_new_category(guint flags)
- {
--  const guint maxcat = 8 * sizeof (registered_cats);
--  guint i = 0;
--  while ((registered_cats >> i) & 1 && i < maxcat)
--    i++;
--  if (i >= maxcat)
--    return 0;
--  else {
--    guint64 id = 1 << i;
--    registered_cats |= id;
--    return i+1;
-+  guint i;
-+  for (i = 0; i < num_categories; i++)
-+    if (!(Categories[i].flags & COMPL_CAT_ACTIVE))
-+      break;
-+  if (i >= num_categories ) {
-+    guint j;
-+    if (num_categories > G_MAXUINT - 16) {
-+      scr_log_print(LPRINT_LOGNORM, "Warning: Too many "
-+                    "completion categories!");
-+      return 0;
-+    }
-+    num_categories += 16;
-+    Categories = g_renew(category, Categories, num_categories);
-+    for (j = i+1; j < num_categories; j++)
-+      Categories[j].flags = 0;
-   }
-+  Categories[i].flags = COMPL_CAT_ACTIVE | (flags & COMPL_CAT_USERFLAGS);
-+  Categories[i].words = NULL;
-+  return i+1;
- }
- 
- //  compl_del_category(id)
- // Frees reserved id for category.
- // Note, that for now it not validates its input, so, be careful
- // and specify exactly what you get from compl_new_category.
--void compl_del_category(guint id)
-+void compl_del_category(guint compl)
- {
--  if (!id) {
--    scr_log_print(LPRINT_LOGNORM, "Error: compl_del_category() - "
--                  "Invalid category.");
-+  GSList *wel;
-+
-+  if (!compl) {
-+    scr_log_print(LPRINT_DEBUG, "Error: compl_del_category() - "
-+                                "Invalid category (0).");
-     return;
-   }
--  id--;
--  registered_cats &= ~(1<<id);
-+
-+  compl--;
-+
-+  if ((compl >= num_categories) ||
-+      (Categories[compl].flags & COMPL_CAT_BUILTIN)) {
-+    scr_log_print(LPRINT_DEBUG, "Error: compl_del_category() "
-+                                "Invalid category.");
-+    return;
-+  }
-+
-+  Categories[compl].flags = 0;
-+  for (wel = Categories[compl].words; wel; wel = g_slist_next (wel))
-+    g_free (wel -> data);
-+  g_slist_free (Categories[compl].words);
- }
- #endif
- 
-@@ -136,12 +204,15 @@
- guint new_completion(const char *prefix, GSList *compl_cat, const gchar *suffix)
- {
-   compl *c;
-+  guint  ret_len = 0;
-   GSList *sl_cat;
-   gint (*cmp)(const char *s1, const char *s2, size_t n);
-   size_t len = strlen(prefix);
- 
-   if (InputCompl) { // This should not happen, but hey...
--    cancel_completion();
-+    scr_log_print(LPRINT_DEBUG, "Warning: new_completion() - "
-+                                "Previous completion exists!");
-+    done_completion();
-   }
- 
-   if (settings_opt_get_int("completion_ignore_case"))
-@@ -160,14 +231,15 @@
-           compval = g_strdup_printf("%s%s", word+len, suffix);
-         else
-           compval = g_strdup(word+len);
--        c->list = g_slist_insert_sorted(c->list, compval,
--                                        (GCompareFunc)g_ascii_strcasecmp);
-+        // for a bit of efficiency, will reverse order afterwards
-+        c->list = g_slist_prepend(c->list, compval);
-+        ret_len ++;
-       }
-     }
-   }
--  c->next = c->list;
-+  c->next = c->list = g_slist_reverse (c->list);
-   InputCompl = c;
--  return g_slist_length(c->list);
-+  return ret_len;
- }
- 
- //  done_completion();
-@@ -222,35 +294,46 @@
- 
- /* Categories functions */
- 
-+static gint compl_sort_forward(gconstpointer a, gconstpointer b)
-+{
-+  return g_ascii_strcasecmp((const gchar *)a, (const gchar *)b);
-+}
-+
-+static gint compl_sort_reverse(gconstpointer a, gconstpointer b)
-+{
-+  return -g_ascii_strcasecmp((const gchar *)a, (const gchar *)b);
-+}
-+
-+static gint compl_sort_append(gconstpointer a, gconstpointer b)
-+{
-+  return 1;
-+}
-+
-+static gint compl_sort_prepend(gconstpointer a, gconstpointer b)
-+{
-+  return -1;
-+}
-+
- //  compl_add_category_word(categ, command)
- // Adds a keyword as a possible completion in category categ.
- void compl_add_category_word(guint categ, const gchar *word)
- {
--  guint64 catv;
--  GSList *sl_cat;
--  category *cat;
-   char *nword;
- 
-   if (!categ) {
--    scr_log_print(LPRINT_LOGNORM, "Error: compl_add_category_word() - "
--                  "Invalid category.");
-+    scr_log_print(LPRINT_DEBUG, "Error: compl_add_category_word() - "
-+                  "Invalid category (0).");
-     return;
-   }
- 
-   categ--;
--  catv = 1UL << categ;
- 
--  // Look for category
--  for (sl_cat=Categories; sl_cat; sl_cat = g_slist_next(sl_cat)) {
--    if (catv == ((category*)sl_cat->data)->flag)
--      break;
-+  if ((categ >= num_categories) ||
-+      !(Categories[categ].flags & COMPL_CAT_ACTIVE)) {
-+    scr_log_print(LPRINT_DEBUG, "Error: compl_add_category_word() - "
-+                  "Category does not exist.");
-+    return;
-   }
--  if (!sl_cat) {   // Category not found, let's create it
--    cat = g_new0(category, 1);
--    cat->flag = catv;
--    Categories = g_slist_append(Categories, cat);
--  } else
--    cat = (category*)sl_cat->data;
- 
-   // If word is not space-terminated, we add one trailing space
-   for (nword = (char*)word; *nword; nword++)
-@@ -262,59 +345,64 @@
-     nword = g_strdup(word);
-   }
- 
--  if (g_slist_find_custom(cat->words, nword, (GCompareFunc)g_strcmp0) != NULL)
--    return;
-+  if (g_slist_find_custom(Categories[categ].words, nword,
-+                          (GCompareFunc)g_strcmp0) == NULL) {
-+    guint flags = Categories[categ].flags;
-+    GCompareFunc comparator = compl_sort_forward;
-+    if (flags & COMPL_CAT_NOSORT) {
-+      if (flags & COMPL_CAT_REVERSE)
-+        comparator = compl_sort_prepend;
-+      else
-+        comparator = compl_sort_append;
-+    } else if (flags & COMPL_CAT_REVERSE)
-+      comparator = compl_sort_reverse;
- 
--  cat->words = g_slist_insert_sorted(cat->words, nword,
--                                     (GCompareFunc)g_ascii_strcasecmp);
-+    Categories[categ].words = g_slist_insert_sorted
-+                                  (Categories[categ].words, nword, comparator);
-+  }
- }
- 
- //  compl_del_category_word(categ, command)
- // Removes a keyword from category categ in completion list.
- void compl_del_category_word(guint categ, const gchar *word)
- {
--  guint64 catv;
--  GSList *sl_cat, *sl_elt;
--  category *cat;
-+  GSList *wel;
-   char *nword;
- 
-   if (!categ) {
--    scr_log_print(LPRINT_LOGNORM, "Error: compl_del_category_word() - "
--                  "Invalid category.");
-+    scr_log_print(LPRINT_DEBUG, "Error: compl_del_category_word() - "
-+                  "Invalid category (0).");
-     return;
-   }
- 
-   categ--;
--  catv = 1UL << categ;
- 
--  // Look for category
--  for (sl_cat=Categories; sl_cat; sl_cat = g_slist_next(sl_cat)) {
--    if (catv == ((category*)sl_cat->data)->flag)
--      break;
-+  if ((categ >= num_categories) ||
-+      !(Categories[categ].flags & COMPL_CAT_ACTIVE)) {
-+    scr_log_print(LPRINT_DEBUG, "Error: compl_del_category_word() - "
-+                  "Category does not exist.");
-+    return;
-   }
--  if (!sl_cat) return;   // Category not found, finished!
--
--  cat = (category*)sl_cat->data;
- 
-   // If word is not space-terminated, we add one trailing space
-   for (nword = (char*)word; *nword; nword++)
-     ;
-   if (nword > word) nword--;
--  if (*nword != ' ') {  // Add a space
--    nword = g_strdup_printf("%s ", word);
--  } else {              // word is fine
--    nword = g_strdup(word);
-+  if (*nword != ' ')  // Add a space
-+    word = nword = g_strdup_printf("%s ", word);
-+  else
-+    nword = NULL;
-+
-+  for (wel = Categories[categ].words; wel; wel = g_slist_next (wel)) {
-+    if (!strcasecmp((char*)wel->data, word)) {
-+      g_free(wel->data);
-+      Categories[categ].words = g_slist_delete_link
-+                                (Categories[categ].words, wel);
-+      break; // Only remove first occurence
-+    }
-   }
- 
--  sl_elt = cat->words;
--  while (sl_elt) {
--    if (!strcasecmp((char*)sl_elt->data, nword)) {
--      g_free(sl_elt->data);
--      cat->words = g_slist_delete_link(cat->words, sl_elt);
--      break; // Only remove first occurence
--    }
--    sl_elt = g_slist_next(sl_elt);
--  }
-+  g_free (nword);
- }
- 
- //  compl_get_category_list()
-@@ -323,48 +411,28 @@
- // whole list after use.
- GSList *compl_get_category_list(guint categ, guint *dynlist)
- {
--  guint64 cat_flags;
--  GSList *sl_cat;
--
-   if (!categ) {
--    scr_log_print(LPRINT_LOGNORM, "Error: compl_get_category_list() - "
--                  "Invalid category.");
-+    scr_log_print(LPRINT_DEBUG, "Error: compl_get_category_list() - "
-+                  "Invalid category (0).");
-     return NULL;
-   }
- 
--  *dynlist = FALSE;
--  cat_flags = 1UL << (categ - 1);
-+  categ --;
- 
--  // Look for the category
--  for (sl_cat=Categories; sl_cat; sl_cat = g_slist_next(sl_cat)) {
--    if (cat_flags == ((category*)sl_cat->data)->flag)
--      break;
--  }
--  if (sl_cat)       // Category was found, easy...
--    return ((category*)sl_cat->data)->words;
--
--  // Handle dynamic SLists
--  *dynlist = TRUE;
--  if (categ == COMPL_GROUPNAME) {
--    return compl_list(ROSTER_TYPE_GROUP);
--  }
--  if (categ == COMPL_JID) {
--    return compl_list(ROSTER_TYPE_USER);
--  }
--  if (categ == COMPL_RESOURCE) {
--    return buddy_getresources_locale(NULL);
--  }
--  if (categ == COMPL_EVENTSID) {
--    GSList *compl = evs_geteventslist();
--    GSList *cel;
--    for (cel = compl; cel; cel = cel->next)
--      cel->data = g_strdup(cel->data);
--    compl = g_slist_append(compl, g_strdup("list"));
--    return compl;
-+  if ((categ > num_categories) ||
-+      !(Categories[categ].flags & COMPL_CAT_ACTIVE)) {
-+    scr_log_print(LPRINT_DEBUG, "Error: compl_get_category_list() - "
-+                  "Category does not exist.");
-+    return NULL;
-   }
- 
--  *dynlist = FALSE;
--  return NULL;
-+  if (Categories[categ].flags & COMPL_CAT_DYNAMIC) {
-+    *dynlist = TRUE;
-+    return (*Categories[categ].dynamic) ();
-+  } else {
-+    *dynlist = FALSE;
-+    return Categories[categ].words;
-+  }
- }
- 
- /* vim: set expandtab cindent cinoptions=>2\:2(0 sw=2 ts=2:  For Vim users... */
-diff -r 88836b149cfa mcabber/mcabber/compl.h
---- a/mcabber/mcabber/compl.h	Sat Oct 20 18:02:25 2012 +0300
-+++ b/mcabber/mcabber/compl.h	Sat Oct 20 18:27:46 2012 +0300
-@@ -27,10 +27,18 @@
- #define COMPL_OTR         20
- #define COMPL_OTRPOLICY   21
- #define COMPL_MODULE      22
-+/* private */
-+#define COMPL_MAX_ID      22
-+
-+void compl_init_system(void); /* private */
- 
- #ifdef MODULES_ENABLE
--void  compl_init_system(void);
--guint compl_new_category(void);
-+#define COMPL_FLAGS_SORT     0x00
-+#define COMPL_FLAGS_REVERSE  0x10
-+#define COMPL_FLAGS_APPEND   0x20
-+#define COMPL_FLAGS_PREPEND  0x30
-+
-+guint compl_new_category(guint flags);
- void  compl_del_category(guint id);
- #endif
- 
-diff -r 88836b149cfa mcabber/mcabber/main.c
---- a/mcabber/mcabber/main.c	Sat Oct 20 18:02:25 2012 +0300
-+++ b/mcabber/mcabber/main.c	Sat Oct 20 18:27:46 2012 +0300
-@@ -364,13 +364,13 @@
-   }
- 
-   /* Initialize command system, roster and default key bindings */
-+  compl_init_system();
-   cmd_init();
-   roster_init();
-   settings_init();
-   scr_init_bindings();
-   caps_init();
- #ifdef MODULES_ENABLE
--  compl_init_system();
-   modules_init();
- #endif
-   /* Initialize charset */
-diff -r 88836b149cfa mcabber/modules/beep/beep.c
---- a/mcabber/modules/beep/beep.c	Sat Oct 20 18:02:25 2012 +0300
-+++ b/mcabber/modules/beep/beep.c	Sat Oct 20 18:27:46 2012 +0300
-@@ -89,7 +89,7 @@
- static void beep_init(void)
- {
-   /* Create completions */
--  beep_cid = compl_new_category();
-+  beep_cid = compl_new_category(COMPL_FLAGS_SORT);
-   if (beep_cid) {
-     compl_add_category_word(beep_cid, "enable");
-     compl_add_category_word(beep_cid, "disable");
--- a/enable-separate-build.diff	Tue Nov 27 01:57:06 2012 +0200
+++ b/enable-separate-build.diff	Tue Nov 27 12:06:38 2012 +0200
@@ -1,10 +1,10 @@
 # HG changeset patch
-# Parent e87ced7d1059b787b075da79c3ae0b6477bfccca
+# Parent 8c51c684dd2f9027049cd9e64e708d406ecb79d2
 Enable building from separate directory
 
-diff -r e87ced7d1059 mcabber/doc/guide/Makefile.am
---- a/mcabber/doc/guide/Makefile.am	Mon Nov 26 11:55:22 2012 +0100
-+++ b/mcabber/doc/guide/Makefile.am	Tue Nov 27 01:54:18 2012 +0200
+diff -r 8c51c684dd2f mcabber/doc/guide/Makefile.am
+--- a/mcabber/doc/guide/Makefile.am	Tue Nov 27 10:33:08 2012 +0100
++++ b/mcabber/doc/guide/Makefile.am	Tue Nov 27 12:02:16 2012 +0200
 @@ -1,8 +1,11 @@
 +
  guide:
@@ -21,119 +21,3 @@
  
  clean-guide:
  	rm -f *.aux *.blg *.dvi *.toc *.out *.bbl *.log *.pdf
-diff -r e87ced7d1059 mcabber/hgcset.sh
---- a/mcabber/hgcset.sh	Mon Nov 26 11:55:22 2012 +0100
-+++ b/mcabber/hgcset.sh	Tue Nov 27 01:54:18 2012 +0200
-@@ -1,19 +1,24 @@
- #! /bin/sh
- 
--if [ ! -f logprint.h ]; then
--  echo "You are not in the mcabber directory" >&2
-+srcdir="$1"
-+builddir="$2"
-+
-+if [ ! -f "$srcdir/logprint.h" ]; then
-+  echo "Unable to find mcabber sources!" >&2
-   exit 1
- fi
- 
-+cd "$srcdir"
-+
- if which hg > /dev/null 2>&1; then
-   cs=$(hg id 2> /dev/null | cut -d' ' -f1)
-   if test $? -eq 0; then
-     if [ x"$cs" != x ]; then
--      grep -q "$cs" hgcset.h > /dev/null 2>&1 || \
--        echo "#define HGCSET \"$cs\"" > hgcset.h
-+      grep -q "$cs" "$builddir/hgcset.h" > /dev/null 2>&1 || \
-+        echo "#define HGCSET \"$cs\"" > "$builddir/hgcset.h"
-       exit 0
-     fi
-   fi
- fi
- 
--echo > hgcset.h
-+echo > "$builddir/hgcset.h"
-diff -r e87ced7d1059 mcabber/mcabber/Makefile.am
---- a/mcabber/mcabber/Makefile.am	Mon Nov 26 11:55:22 2012 +0100
-+++ b/mcabber/mcabber/Makefile.am	Tue Nov 27 01:54:18 2012 +0200
-@@ -16,7 +16,8 @@
- LDADD = $(GLIB_LIBS) $(LOUDMOUTH_LIBS) $(GPGME_LIBS) $(LIBOTR_LIBS) \
- 				$(ENCHANT_LIBS) $(LIBIDN_LIBS)
- 
--AM_CPPFLAGS = -I$(top_srcdir) $(GLIB_CFLAGS) $(LOUDMOUTH_CFLAGS) \
-+AM_CPPFLAGS = -I$(top_builddir) -I$(top_srcdir) \
-+				$(GLIB_CFLAGS) $(LOUDMOUTH_CFLAGS) \
- 				$(GPGME_CFLAGS) $(LIBOTR_CFLAGS) \
- 				$(ENCHANT_CFLAGS) $(LIBIDN_CFLAGS)
- 
-@@ -26,7 +27,7 @@
- BUILT_SOURCES = hgcset.h
- 
- hgcset.h:
--	../hgcset.sh
-+	$(top_srcdir)/hgcset.sh "$(top_srcdir)/mcabber" "$(top_builddir)/mcabber"
- 
- .PHONY: hgcset.h
- endif
-@@ -42,7 +43,7 @@
- 			 xmpp_iq.h xmpp_iqrequest.h \
- 			 xmpp_muc.h xmpp_s10n.h \
- 			 caps.h fifo.h help.h modules.h api.h \
--			 $(top_srcdir)/include/config.h
-+			 $(top_builddir)/include/config.h
- 
- if OTR
- mcabberinclude_HEADERS += otr.h nohtml.h
-diff -r e87ced7d1059 mcabber/modules/beep/Makefile.am
---- a/mcabber/modules/beep/Makefile.am	Mon Nov 26 11:55:22 2012 +0100
-+++ b/mcabber/modules/beep/Makefile.am	Tue Nov 27 01:54:18 2012 +0200
-@@ -6,7 +6,8 @@
- libbeep_la_LDFLAGS = -module -avoid-version -shared
- 
- LDADD = $(GLIB_LIBS)
--AM_CPPFLAGS = -I$(top_srcdir) $(GLIB_CFLAGS) $(LOUDMOUTH_CFLAGS) \
-+AM_CPPFLAGS = -I$(top_srcdir) -I$(top_builddir) \
-+			      $(GLIB_CFLAGS) $(LOUDMOUTH_CFLAGS) \
-                               $(GPGME_CFLAGS) $(LIBOTR_CFLAGS) \
-                               $(ENCHANT_CFLAGS)
- 
-diff -r e87ced7d1059 mcabber/modules/fifo/Makefile.am
---- a/mcabber/modules/fifo/Makefile.am	Mon Nov 26 11:55:22 2012 +0100
-+++ b/mcabber/modules/fifo/Makefile.am	Tue Nov 27 01:54:18 2012 +0200
-@@ -5,7 +5,8 @@
- libfifo_la_LDFLAGS = -module -avoid-version -shared
- 
- LDADD = $(GLIB_LIBS)
--AM_CPPFLAGS = -I$(top_srcdir) $(GLIB_CFLAGS) $(LOUDMOUTH_CFLAGS) \
-+AM_CPPFLAGS = -I$(top_srcdir) -I$(top_builddir) \
-+				$(GLIB_CFLAGS) $(LOUDMOUTH_CFLAGS) \
- 				$(GPGME_CFLAGS) $(LIBOTR_CFLAGS) \
- 				$(ENCHANT_CFLAGS)
- endif
-diff -r e87ced7d1059 mcabber/modules/urlregex/Makefile.am
---- a/mcabber/modules/urlregex/Makefile.am	Mon Nov 26 11:55:22 2012 +0100
-+++ b/mcabber/modules/urlregex/Makefile.am	Tue Nov 27 01:54:18 2012 +0200
-@@ -6,7 +6,8 @@
- liburlregex_la_LDFLAGS = -module -avoid-version -shared
- 
- LDADD = $(GLIB_LIBS)
--AM_CPPFLAGS = -I$(top_srcdir) $(GLIB_CFLAGS) $(LOUDMOUTH_CFLAGS) \
-+AM_CPPFLAGS = -I$(top_srcdir) -I$(top_builddir) \
-+			      $(GLIB_CFLAGS) $(LOUDMOUTH_CFLAGS) \
-                               $(GPGME_CFLAGS) $(LIBOTR_CFLAGS) \
-                               $(ENCHANT_CFLAGS)
- 
-diff -r e87ced7d1059 mcabber/modules/xttitle/Makefile.am
---- a/mcabber/modules/xttitle/Makefile.am	Mon Nov 26 11:55:22 2012 +0100
-+++ b/mcabber/modules/xttitle/Makefile.am	Tue Nov 27 01:54:18 2012 +0200
-@@ -6,7 +6,8 @@
- libxttitle_la_LDFLAGS = -module -avoid-version -shared
- 
- LDADD = $(GLIB_LIBS)
--AM_CPPFLAGS = -I$(top_srcdir) $(GLIB_CFLAGS) $(LOUDMOUTH_CFLAGS) \
-+AM_CPPFLAGS = -I$(top_srcdir) -I$(top_builddir) \
-+              $(GLIB_CFLAGS) $(LOUDMOUTH_CFLAGS) \
-               $(GPGME_CFLAGS) $(LIBOTR_CFLAGS) $(ENCHANT_CFLAGS)
- 
- endif
--- a/series	Tue Nov 27 01:57:06 2012 +0200
+++ b/series	Tue Nov 27 12:06:38 2012 +0200
@@ -1,5 +1,4 @@
 enable-separate-build.diff
-completion-sorting.diff
 fix-date-fill.diff
 switch-to-experimental.diff
 separate-extcmd.diff
--- a/switch-to-experimental.diff	Tue Nov 27 01:57:06 2012 +0200
+++ b/switch-to-experimental.diff	Tue Nov 27 12:06:38 2012 +0200
@@ -1,8 +1,8 @@
 [local] Switch to experimental branch and api version
 
-diff -r 84ad372d8137 mcabber/ChangeLog.api
---- a/mcabber/ChangeLog.api	Thu Oct 18 21:48:49 2012 +0300
-+++ b/mcabber/ChangeLog.api	Thu Oct 18 21:48:54 2012 +0300
+diff -r f83dee7bacc8 mcabber/ChangeLog.api
+--- a/mcabber/ChangeLog.api	Tue Nov 27 12:03:05 2012 +0200
++++ b/mcabber/ChangeLog.api	Tue Nov 27 12:03:13 2012 +0200
 @@ -1,3 +1,12 @@
 +experimental (37)
 +
@@ -14,11 +14,11 @@
 +  -- Myhailo Danylenko, 2012-10-18
 +
  dev (24)
-  * MQ patch completion-sorting.diff
-  * Change compl_add_category() to accept flags arg
-@@ -5,6 +14,15 @@
  
-   -- Myhailo Danylenko, 2012-10-18
+  * Changeset 0cb8ea02e472
+@@ -7,6 +16,15 @@
+ 
+   -- Myhailo Danylenko, 2012-10-20
  
 +experimental (35)
 +
@@ -30,9 +30,9 @@
 +  -- Myhailo Danylenko, 2012-04-30
 +
  dev (23)
+ 
   * Changeset 8dc418af3e72
-    Add buddy_(get|set)activeresource() functions
-@@ -23,6 +41,12 @@
+@@ -28,6 +46,12 @@
  
    -- Hermitifier, 2011-10-03
  
@@ -45,9 +45,9 @@
  dev (20)
  
   * Add cmd_set_safe() and cmd_is_safe()
-diff -r 84ad372d8137 mcabber/configure.ac
---- a/mcabber/configure.ac	Thu Oct 18 21:48:49 2012 +0300
-+++ b/mcabber/configure.ac	Thu Oct 18 21:48:54 2012 +0300
+diff -r f83dee7bacc8 mcabber/configure.ac
+--- a/mcabber/configure.ac	Tue Nov 27 12:03:05 2012 +0200
++++ b/mcabber/configure.ac	Tue Nov 27 12:03:13 2012 +0200
 @@ -272,7 +272,7 @@
  AM_CONDITIONAL([INSTALL_HEADERS], [test x$enable_modules != xno])
  
@@ -57,9 +57,9 @@
  AC_DEFINE([MCABBER_VERSION], "AC_PACKAGE_VERSION", [Mcabber version string])
  
  # We need _GNU_SOURCE for strptime() and strcasestr()
-diff -r 84ad372d8137 mcabber/mcabber/api.h
---- a/mcabber/mcabber/api.h	Thu Oct 18 21:48:49 2012 +0300
-+++ b/mcabber/mcabber/api.h	Thu Oct 18 21:48:54 2012 +0300
+diff -r f83dee7bacc8 mcabber/mcabber/api.h
+--- a/mcabber/mcabber/api.h	Tue Nov 27 12:03:05 2012 +0200
++++ b/mcabber/mcabber/api.h	Tue Nov 27 12:03:13 2012 +0200
 @@ -4,10 +4,10 @@
  #include <glib.h>
  #include <mcabber/config.h> // For MCABBER_BRANCH