[cmdopts] Convert /rename and /move, add params for automation
authorMyhailo Danylenko <isbear@ukrpost.net>
Wed, 27 Feb 2013 03:22:28 +0200
changeset 72 99d64d6ebe89
parent 71 2bdd3252d918
child 73 feae79fcc408
[cmdopts] Convert /rename and /move, add params for automation
cmdopts.diff
--- a/cmdopts.diff	Tue Feb 26 23:51:38 2013 +0200
+++ b/cmdopts.diff	Wed Feb 27 03:22:28 2013 +0200
@@ -20,10 +20,15 @@
     * scr_multi* now store multiline in utf8
   * /buffer uses parser
     * fix help for /buffer date
+  * /rename uses parser
+    * -r(--reset) instead of '-'
+    * -j(--jid), -g(--group), -n(--name)
+  * /move uses parser
+    * -j(--jid), -n(--name)
 
 diff -r 92fa48ef53c9 mcabber/doc/help/cs/hlp_buffer.txt
 --- a/mcabber/doc/help/cs/hlp_buffer.txt	Sun Jan 27 00:40:37 2013 +0200
-+++ b/mcabber/doc/help/cs/hlp_buffer.txt	Tue Feb 26 23:50:10 2013 +0200
++++ b/mcabber/doc/help/cs/hlp_buffer.txt	Wed Feb 27 03:19:07 2013 +0200
 @@ -25,7 +25,7 @@
   Přesune se o [n] řádků nahoru (výchozí: polovina obrazovky).
  /buffer down [n]
@@ -35,16 +40,39 @@
   Přesune se na procentuální pozici n%.
 diff -r 92fa48ef53c9 mcabber/doc/help/cs/hlp_del.txt
 --- a/mcabber/doc/help/cs/hlp_del.txt	Sun Jan 27 00:40:37 2013 +0200
-+++ b/mcabber/doc/help/cs/hlp_del.txt	Tue Feb 26 23:50:10 2013 +0200
++++ b/mcabber/doc/help/cs/hlp_del.txt	Wed Feb 27 03:19:07 2013 +0200
 @@ -1,4 +1,4 @@
  
 - /DEL
 + /DEL [-n|--dryrun] [jid]
  
  Smaže aktuální kontakt ze seznamu kontaktů (rosteru) a zruší povolení oznamování o stavu daného kontaktu (autorizaci) na obou stranách.
+diff -r 92fa48ef53c9 mcabber/doc/help/cs/hlp_move.txt
+--- a/mcabber/doc/help/cs/hlp_move.txt	Sun Jan 27 00:40:37 2013 +0200
++++ b/mcabber/doc/help/cs/hlp_move.txt	Wed Feb 27 03:19:07 2013 +0200
+@@ -1,5 +1,6 @@
+ 
+- /MOVE [skupina]
++ /MOVE [-j|--jid jid] [-n|--name name] [skupina]
+ 
+ Přesune aktuální kontakt do požadované skupiny. Není-li skupina zadána, přesune se kontakt do výchozí skupiny. Pokud skupina neexistuje, automaticky se založí.
++You can select other buddy that current using options --jid and --name.
+ Tip: V módu rozhovoru lze použít "/roster alternate" pro skok na přesunutý kontakt.
+diff -r 92fa48ef53c9 mcabber/doc/help/cs/hlp_rename.txt
+--- a/mcabber/doc/help/cs/hlp_rename.txt	Sun Jan 27 00:40:37 2013 +0200
++++ b/mcabber/doc/help/cs/hlp_rename.txt	Wed Feb 27 03:19:07 2013 +0200
+@@ -1,4 +1,6 @@
+ 
+- /RENAME jméno
++ /RENAME [-r|--reset] [-j|--jid jid] [-g|--group name] [-n|--name name] jméno
+ 
+-Přejmenuje aktuálního uživatele nebo skupinu na 'jméno'. Je-li 'jméno' znak '-', dané jméno se odstraní ze seznamu kontaktů (rosteru) a zobrazí se 'jid'.
++Přejmenuje aktuálního uživatele nebo skupinu na 'jméno'.
++If --reset is specified, "newname" is ignored and name will be reset to default - jid or username.
++Optionally you can use one of --jid, --group or --name to select object, different from current.
 diff -r 92fa48ef53c9 mcabber/doc/help/de/hlp_buffer.txt
 --- a/mcabber/doc/help/de/hlp_buffer.txt	Sun Jan 27 00:40:37 2013 +0200
-+++ b/mcabber/doc/help/de/hlp_buffer.txt	Tue Feb 26 23:50:10 2013 +0200
++++ b/mcabber/doc/help/de/hlp_buffer.txt	Wed Feb 27 03:19:07 2013 +0200
 @@ -25,7 +25,7 @@
   Scrollt den Puffer um n Zeilen hoch. Gibt man keine Zahl an, scrollt er um einen halben Bildschirm
  /buffer down [n]
@@ -56,16 +84,40 @@
   Springe zur Position "n" im Chatpuffer
 diff -r 92fa48ef53c9 mcabber/doc/help/de/hlp_del.txt
 --- a/mcabber/doc/help/de/hlp_del.txt	Sun Jan 27 00:40:37 2013 +0200
-+++ b/mcabber/doc/help/de/hlp_del.txt	Tue Feb 26 23:50:10 2013 +0200
++++ b/mcabber/doc/help/de/hlp_del.txt	Wed Feb 27 03:19:07 2013 +0200
 @@ -1,4 +1,4 @@
  
 - /DEL
 + /DEL [-n|--dryrun] [jid]
  
  Löscht den gerade ausgewählten Buddy vom Roster. Außerdem werden die automatischen Presence Benachrichtigungen vom/zum Buddy gestoppt.
+diff -r 92fa48ef53c9 mcabber/doc/help/de/hlp_move.txt
+--- a/mcabber/doc/help/de/hlp_move.txt	Sun Jan 27 00:40:37 2013 +0200
++++ b/mcabber/doc/help/de/hlp_move.txt	Wed Feb 27 03:19:07 2013 +0200
+@@ -1,6 +1,7 @@
+ 
+- /MOVE [groupname]
++ /MOVE [-j|--jid jid] [-n|--name name] [groupname]
+ 
+ Verschiebt den ausgewählten Buddy zu der Gruppe "groupname". Wenn keine Gruppe angegeben wurde, wird der Buddy zur Standardgruppe verschoben. Wenn die Gruppe "groupname" nicht existiert, wird sie erst erschaffen.
++You can select other buddy that current using options --jid and --name.
+ 
+ Tipp: Wenn der Chatmodus aktiviert ist, kannst du "/roster alternate" benutzen um zu dem gerade bewegten Buddy zu springen.
+diff -r 92fa48ef53c9 mcabber/doc/help/de/hlp_rename.txt
+--- a/mcabber/doc/help/de/hlp_rename.txt	Sun Jan 27 00:40:37 2013 +0200
++++ b/mcabber/doc/help/de/hlp_rename.txt	Wed Feb 27 03:19:07 2013 +0200
+@@ -1,4 +1,6 @@
+ 
+- /RENAME name
++ /RENAME [-r|--reset] [-j|--jid jid] [-g|--group name] [-n|--name name] newname
+ 
+-Setzt den Namen des gerade ausgewählten Buddys bzw. der ausgewählten Gruppe auf "name". Wenn "name" - ist, so wird der Name vom Roster entfernt (mcabber wird in diesem Falle die JID bzw. den username anzeigen)
++Setzt den Namen des gerade ausgewählten Buddys bzw. der ausgewählten Gruppe auf "name".
++If --reset is specified, "newname" is ignored and name will be reset to default - jid or username.
++Optionally you can use one of --jid, --group or --name to select object, different from current.
 diff -r 92fa48ef53c9 mcabber/doc/help/en/hlp_buffer.txt
 --- a/mcabber/doc/help/en/hlp_buffer.txt	Sun Jan 27 00:40:37 2013 +0200
-+++ b/mcabber/doc/help/en/hlp_buffer.txt	Tue Feb 26 23:50:10 2013 +0200
++++ b/mcabber/doc/help/en/hlp_buffer.txt	Wed Feb 27 03:19:07 2013 +0200
 @@ -25,7 +25,7 @@
   Scroll the buffer up [n] lines (default: half a screen)
  /buffer down [n]
@@ -77,7 +129,7 @@
   Jump to position %n of the buddy chat buffer
 diff -r 92fa48ef53c9 mcabber/doc/help/en/hlp_del.txt
 --- a/mcabber/doc/help/en/hlp_del.txt	Sun Jan 27 00:40:37 2013 +0200
-+++ b/mcabber/doc/help/en/hlp_del.txt	Tue Feb 26 23:50:10 2013 +0200
++++ b/mcabber/doc/help/en/hlp_del.txt	Wed Feb 27 03:19:07 2013 +0200
 @@ -1,4 +1,4 @@
  
 - /DEL
@@ -85,9 +137,32 @@
  
 -Delete the current buddy from our roster, unsubscribe from its presence notification and unsubscribe it from ours.
 +Delete the current buddy or one, specified with [jid] from our roster, unsubscribe from its presence notification and unsubscribe it from ours.
+diff -r 92fa48ef53c9 mcabber/doc/help/en/hlp_move.txt
+--- a/mcabber/doc/help/en/hlp_move.txt	Sun Jan 27 00:40:37 2013 +0200
++++ b/mcabber/doc/help/en/hlp_move.txt	Wed Feb 27 03:19:07 2013 +0200
+@@ -1,5 +1,6 @@
+ 
+- /MOVE [groupname]
++ /MOVE [-j|--jid jid] [-n|--name name] [groupname]
+ 
+ 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't exist, it is created.
++You can select other buddy that current using options --jid and --name.
+ Tip: if the chatmode is enabled, you can use "/roster alternate" to jump to the moved buddy.
+diff -r 92fa48ef53c9 mcabber/doc/help/en/hlp_rename.txt
+--- a/mcabber/doc/help/en/hlp_rename.txt	Sun Jan 27 00:40:37 2013 +0200
++++ b/mcabber/doc/help/en/hlp_rename.txt	Wed Feb 27 03:19:07 2013 +0200
+@@ -1,4 +1,6 @@
+ 
+- /RENAME name
++ /RENAME [-r|--reset] [-j|--jid jid] [-g|--group name] [-n|--name name] newname
+ 
+-Rename the current buddy or group to the given "name".  If "name" is -, the name is removed from the roster (and mcabber will display the JID or username).
++Rename the current buddy or group to the given "newname".
++If --reset is specified, "newname" is ignored and name will be reset to default - jid or username.
++Optionally you can use one of --jid, --group or --name to select object, different from current.
 diff -r 92fa48ef53c9 mcabber/doc/help/fr/hlp_buffer.txt
 --- a/mcabber/doc/help/fr/hlp_buffer.txt	Sun Jan 27 00:40:37 2013 +0200
-+++ b/mcabber/doc/help/fr/hlp_buffer.txt	Tue Feb 26 23:50:10 2013 +0200
++++ b/mcabber/doc/help/fr/hlp_buffer.txt	Wed Feb 27 03:19:07 2013 +0200
 @@ -25,7 +25,7 @@
   Défile vers le haut de [n] lignes (par défaut un demi écran)
  /buffer down [n]
@@ -99,16 +174,39 @@
   Va à la position n% du tampon
 diff -r 92fa48ef53c9 mcabber/doc/help/fr/hlp_del.txt
 --- a/mcabber/doc/help/fr/hlp_del.txt	Sun Jan 27 00:40:37 2013 +0200
-+++ b/mcabber/doc/help/fr/hlp_del.txt	Tue Feb 26 23:50:10 2013 +0200
++++ b/mcabber/doc/help/fr/hlp_del.txt	Wed Feb 27 03:19:07 2013 +0200
 @@ -1,4 +1,4 @@
  
 - /DEL
 + /DEL [-n|--dryrun] [jid]
  
  Supprime le contact sélectionné du roster, supprime notre abonnement à ses notifications de présence et supprime son abonnement aux nôtres.
+diff -r 92fa48ef53c9 mcabber/doc/help/fr/hlp_move.txt
+--- a/mcabber/doc/help/fr/hlp_move.txt	Sun Jan 27 00:40:37 2013 +0200
++++ b/mcabber/doc/help/fr/hlp_move.txt	Wed Feb 27 03:19:07 2013 +0200
+@@ -1,5 +1,6 @@
+ 
+- /MOVE [groupname]
++ /MOVE [-j|--jid jid] [-n|--name name] [groupname]
+ 
+ Déplace le contact sélectionné vers le groupe spécifié. Si aucun groupe n'est donné, le contact est déplacé vers le groupe par défaut. Si le groupe "groupname" n'existe pas, il est créé.
++You can select other buddy that current using options --jid and --name.
+ Astuce : si le mode discussion (chatmode) est activé, vous pouvez utiliser "/roster alternate" pour vous positionner sur le contact que vous venez de déplacer.
+diff -r 92fa48ef53c9 mcabber/doc/help/fr/hlp_rename.txt
+--- a/mcabber/doc/help/fr/hlp_rename.txt	Sun Jan 27 00:40:37 2013 +0200
++++ b/mcabber/doc/help/fr/hlp_rename.txt	Wed Feb 27 03:19:07 2013 +0200
+@@ -1,4 +1,6 @@
+ 
+- /RENAME nom
++ /RENAME [-r|--reset] [-j|--jid jid] [-g|--group name] [-n|--name name] nom
+ 
+-Renomme le contact/groupe sélectionné avec le "nom" spécifié. Si le nom est «-», le nom est supprimé du roster (et mcabber affichera le JID ou le nom d'utilisateur).
++Renomme le contact/groupe sélectionné avec le "nom" spécifié.
++If --reset is specified, "newname" is ignored and name will be reset to default - jid or username.
++Optionally you can use one of --jid, --group or --name to select object, different from current.
 diff -r 92fa48ef53c9 mcabber/doc/help/it/hlp_buffer.txt
 --- a/mcabber/doc/help/it/hlp_buffer.txt	Sun Jan 27 00:40:37 2013 +0200
-+++ b/mcabber/doc/help/it/hlp_buffer.txt	Tue Feb 26 23:50:10 2013 +0200
++++ b/mcabber/doc/help/it/hlp_buffer.txt	Wed Feb 27 03:19:07 2013 +0200
 @@ -25,7 +25,7 @@
   Fa scorrere indietro il buffer di [n] linee (default: metà schermo)
  /buffer down [n]
@@ -120,16 +218,39 @@
   Salta alla posizione %n del buffer di chat corrente
 diff -r 92fa48ef53c9 mcabber/doc/help/it/hlp_del.txt
 --- a/mcabber/doc/help/it/hlp_del.txt	Sun Jan 27 00:40:37 2013 +0200
-+++ b/mcabber/doc/help/it/hlp_del.txt	Tue Feb 26 23:50:10 2013 +0200
++++ b/mcabber/doc/help/it/hlp_del.txt	Wed Feb 27 03:19:07 2013 +0200
 @@ -1,4 +1,4 @@
  
 - /DEL
 + /DEL [-n|--dryrun] [jid]
  
  Elimina il contatto corrente dal roster, cancellando la sottoscrizione alle reciproche notifiche della propria presenza.
+diff -r 92fa48ef53c9 mcabber/doc/help/it/hlp_move.txt
+--- a/mcabber/doc/help/it/hlp_move.txt	Sun Jan 27 00:40:37 2013 +0200
++++ b/mcabber/doc/help/it/hlp_move.txt	Wed Feb 27 03:19:07 2013 +0200
+@@ -1,5 +1,6 @@
+ 
+- /MOVE [gruppo]
++ /MOVE [-j|--jid jid] [-n|--name name] [grouppo]
+ 
+ Muove il contatto corrente nel gruppo richiesto. Se non viene specificato alcun gruppo, il contatto viene spostato nel gruppo si default. Se il gruppo "gruppo" non esiste, viene creato.
++You can select other buddy that current using options --jid and --name.
+ Trucco: se la modalità chat è abilitata, puoi usare "/roster alternate" per spostarti sul contatto appena mosso.
+diff -r 92fa48ef53c9 mcabber/doc/help/it/hlp_rename.txt
+--- a/mcabber/doc/help/it/hlp_rename.txt	Sun Jan 27 00:40:37 2013 +0200
++++ b/mcabber/doc/help/it/hlp_rename.txt	Wed Feb 27 03:19:07 2013 +0200
+@@ -1,4 +1,6 @@
+ 
+- /RENAME nome
++ /RENAME [-r|--reset] [-j|--jid jid] [-g|--group name] [-n|--name name] nome
+ 
+-Rinomina il contatto od il gruppo correnti usando "nome". Se si specifica - come "nome", il nome viene rimosso dal roster, ed al suo posto verranno visulizzati il JID o lo username.
++Rinomina il contatto od il gruppo correnti usando "nome".
++If --reset is specified, "newname" is ignored and name will be reset to default - jid or username.
++Optionally you can use one of --jid, --group or --name to select object, different from current.
 diff -r 92fa48ef53c9 mcabber/doc/help/nl/hlp_buffer.txt
 --- a/mcabber/doc/help/nl/hlp_buffer.txt	Sun Jan 27 00:40:37 2013 +0200
-+++ b/mcabber/doc/help/nl/hlp_buffer.txt	Tue Feb 26 23:50:10 2013 +0200
++++ b/mcabber/doc/help/nl/hlp_buffer.txt	Wed Feb 27 03:19:07 2013 +0200
 @@ -25,7 +25,7 @@
   Scroll de buffer [n] regels omhoog (standaard: een half scherm)
  /buffer down [n]
@@ -141,25 +262,71 @@
   Spring naar positie %n in de buddy chat buffer
 diff -r 92fa48ef53c9 mcabber/doc/help/nl/hlp_del.txt
 --- a/mcabber/doc/help/nl/hlp_del.txt	Sun Jan 27 00:40:37 2013 +0200
-+++ b/mcabber/doc/help/nl/hlp_del.txt	Tue Feb 26 23:50:10 2013 +0200
++++ b/mcabber/doc/help/nl/hlp_del.txt	Wed Feb 27 03:19:07 2013 +0200
 @@ -1,4 +1,4 @@
  
 - /DEL
 + /DEL [-n|--dryrun] [jid]
  
  Verwijder de actieve buddy uit ons roster, en zet het wederzijds toezenden van status veranderingen stop.
+diff -r 92fa48ef53c9 mcabber/doc/help/nl/hlp_move.txt
+--- a/mcabber/doc/help/nl/hlp_move.txt	Sun Jan 27 00:40:37 2013 +0200
++++ b/mcabber/doc/help/nl/hlp_move.txt	Wed Feb 27 03:19:07 2013 +0200
+@@ -1,5 +1,6 @@
+ 
+- /MOVE [groepsnaam]
++ /MOVE [-j|--jid jid] [-n|--name name] [groepsnaam]
+ 
+ Verplaats de actieve buddy naar de aangegeven groep.  Indien geen groep werd gespecificeerd wordt buddy verplaatst naar de standaard groep.  Indien de groep "groepsnaam" niet bestaat, wordt die eerst aangemaakt.
++You can select other buddy that current using options --jid and --name.
+ Tip: indien chatmode actief is, kun je "/roster alternate" gebruiken om direct naar de verplaatste buddy te springen.
+diff -r 92fa48ef53c9 mcabber/doc/help/nl/hlp_rename.txt
+--- a/mcabber/doc/help/nl/hlp_rename.txt	Sun Jan 27 00:40:37 2013 +0200
++++ b/mcabber/doc/help/nl/hlp_rename.txt	Wed Feb 27 03:19:07 2013 +0200
+@@ -1,4 +1,6 @@
+ 
+- /RENAME naam
++ /RENAME [-r|--reset] [-j|--jid jid] [-g|--group name] [-n|--name name] naam
+ 
+-Hernoem de actieve buddy of groep in de aangegeven "naam". Indien '-' wordt gebruikt als 'naam', wordt die uit het roster verwijderd (en mcabber zal vervolgens de JID of gebruikersnaam tonen).
++Hernoem de actieve buddy of groep in de aangegeven "naam".
++If --reset is specified, "newname" is ignored and name will be reset to default - jid or username.
++Optionally you can use one of --jid, --group or --name to select object, different from current.
 diff -r 92fa48ef53c9 mcabber/doc/help/pl/hlp_del.txt
 --- a/mcabber/doc/help/pl/hlp_del.txt	Sun Jan 27 00:40:37 2013 +0200
-+++ b/mcabber/doc/help/pl/hlp_del.txt	Tue Feb 26 23:50:10 2013 +0200
++++ b/mcabber/doc/help/pl/hlp_del.txt	Wed Feb 27 03:19:07 2013 +0200
 @@ -1,4 +1,4 @@
  
 - /DEL
 + /DEL [-n|--dryrun] [jid]
  
  Usuwa aktualnie zaznaczoną osobę z rostera, usuwa subskrypcję powiadomienia dostępności u danej osoby oraz u nas.
+diff -r 92fa48ef53c9 mcabber/doc/help/pl/hlp_move.txt
+--- a/mcabber/doc/help/pl/hlp_move.txt	Sun Jan 27 00:40:37 2013 +0200
++++ b/mcabber/doc/help/pl/hlp_move.txt	Wed Feb 27 03:19:07 2013 +0200
+@@ -1,5 +1,6 @@
+ 
+- /MOVE [nazwa grupy]
++ /MOVE [-j|--jid jid] [-n|--name name] [nazwa grupy]
+ 
+ Przenosi aktualną osobę do grupy "nazwa grupy".  Jeśli nie podano nazwy grupy, wtedy osoba jest przenoszona do grupy domyślnej.  Jeśli grupa "nazwa grupy" nie istnieje, zostaje utworzona.
++You can select other buddy that current using options --jid and --name.
+ Podpowiedź: jeśli jest włączony tryb czatu, możesz użyć "/roster alternate" aby skoczyć do przeniesionej osoby.
+diff -r 92fa48ef53c9 mcabber/doc/help/pl/hlp_rename.txt
+--- a/mcabber/doc/help/pl/hlp_rename.txt	Sun Jan 27 00:40:37 2013 +0200
++++ b/mcabber/doc/help/pl/hlp_rename.txt	Wed Feb 27 03:19:07 2013 +0200
+@@ -1,4 +1,6 @@
+ 
+- /RENAME nazwa
++ /RENAME [-r|--reset] [-j|--jid jid] [-g|--group name] [-n|--name name] nazwa
+ 
+-Zmienia nazwę aktualnej osoby lub grupy na "nazwa". Jeżeli jako argument polecenia zostanie podany "-" wcześniejsza nazwa zostanie usunięta z listy kontaktów (mcabber będzie wyświetlał JID lub nazwę użytkownika). 
++Zmienia nazwę aktualnej osoby lub grupy na "nazwa". 
++If --reset is specified, "newname" is ignored and name will be reset to default - jid or username.
++Optionally you can use one of --jid, --group or --name to select object, different from current.
 diff -r 92fa48ef53c9 mcabber/doc/help/ru/hlp_buffer.txt
 --- a/mcabber/doc/help/ru/hlp_buffer.txt	Sun Jan 27 00:40:37 2013 +0200
-+++ b/mcabber/doc/help/ru/hlp_buffer.txt	Tue Feb 26 23:50:10 2013 +0200
++++ b/mcabber/doc/help/ru/hlp_buffer.txt	Wed Feb 27 03:19:07 2013 +0200
 @@ -25,7 +25,7 @@
   Перемещает на [n] строк вверх в буфере (истории переписки) (по умолчанию: половина экрана)
  /buffer down [n]
@@ -171,7 +338,7 @@
   Перемещает на позицию %n в текущем буфере (истории переписки)
 diff -r 92fa48ef53c9 mcabber/doc/help/ru/hlp_del.txt
 --- a/mcabber/doc/help/ru/hlp_del.txt	Sun Jan 27 00:40:37 2013 +0200
-+++ b/mcabber/doc/help/ru/hlp_del.txt	Tue Feb 26 23:50:10 2013 +0200
++++ b/mcabber/doc/help/ru/hlp_del.txt	Wed Feb 27 03:19:07 2013 +0200
 @@ -1,4 +1,4 @@
  
 - /DEL
@@ -179,9 +346,33 @@
  
 -Удаляет текущего пользователя из списка контактов, отключает уведомления о его статусе и отключает уведомления пользователя о вашем статусе.
 +Удаляет текущего пользователя (или указанного с помощью jid) из списка контактов, отключает уведомления о его статусе и отключает уведомление пользователя о вашем статусе.
+diff -r 92fa48ef53c9 mcabber/doc/help/ru/hlp_move.txt
+--- a/mcabber/doc/help/ru/hlp_move.txt	Sun Jan 27 00:40:37 2013 +0200
++++ b/mcabber/doc/help/ru/hlp_move.txt	Wed Feb 27 03:19:07 2013 +0200
+@@ -1,6 +1,7 @@
+ 
+- /MOVE [groupname]
++ /MOVE [-j|--jid jid] [-n|--name name] [groupname]
+ 
+ Перемещает пользователя в определенную группу. Если группа не указана, пользователь перещается в группу по умолчанию (default group). Если группа "groupname" не создана, она автоматически создается.
++С помощью параметров --jid и --name можно перемещать контакты, отличные от текущего.
+ Полезно: Если включен режим чата (chatmode), Вы можете использовать "/roster alternate" для перехода к перемещенному пользователю.
+ 
+diff -r 92fa48ef53c9 mcabber/doc/help/ru/hlp_rename.txt
+--- a/mcabber/doc/help/ru/hlp_rename.txt	Sun Jan 27 00:40:37 2013 +0200
++++ b/mcabber/doc/help/ru/hlp_rename.txt	Wed Feb 27 03:19:07 2013 +0200
+@@ -1,4 +1,6 @@
+ 
+- /RENAME name
++ /RENAME [-r|--reset] [-j|--jid jid] [-g|--group name] [-n|--name name] newname
+ 
+- Переименовывает текущего пользователя или группу в заданное имя "name". Если заданное имя имеет значение "-", то заданное ранее имя текущего пользователя или группы удаляется из списка контактов (mcabber будет отображать JID или имя пользователя по умолчанию).
++Переименовывает текущего пользователя или группу в заданное имя "newname".
++Если указан параметр --reset, "newname" игнорируется, а имя сбрасывается (mcabber будет отображать JID или имя пользователя по умолчанию).
++Для указания обьекта, отличного от текущего, можно использовать опции --jid, --group и --name.
 diff -r 92fa48ef53c9 mcabber/doc/help/uk/hlp_buffer.txt
 --- a/mcabber/doc/help/uk/hlp_buffer.txt	Sun Jan 27 00:40:37 2013 +0200
-+++ b/mcabber/doc/help/uk/hlp_buffer.txt	Tue Feb 26 23:50:10 2013 +0200
++++ b/mcabber/doc/help/uk/hlp_buffer.txt	Wed Feb 27 03:19:07 2013 +0200
 @@ -25,7 +25,7 @@
   Посунути буфер вверх на n рядків (якщо не вказано - пів екрану).
  /buffer down [n]
@@ -193,7 +384,7 @@
   Перейти до вказаної у процентах позиції.
 diff -r 92fa48ef53c9 mcabber/doc/help/uk/hlp_del.txt
 --- a/mcabber/doc/help/uk/hlp_del.txt	Sun Jan 27 00:40:37 2013 +0200
-+++ b/mcabber/doc/help/uk/hlp_del.txt	Tue Feb 26 23:50:10 2013 +0200
++++ b/mcabber/doc/help/uk/hlp_del.txt	Wed Feb 27 03:19:07 2013 +0200
 @@ -1,4 +1,4 @@
  
 - /DEL
@@ -201,9 +392,32 @@
  
 -Потерти поточний контакт зі списку. На додачу відписатися від його повідомлень про статус і відписати його від ваших.
 +Потерти поточний контакт (або контакт, що має вказаний jid) зі списку. Також відписатися від його сповіщень про статус і відписати його від ваших.
+diff -r 92fa48ef53c9 mcabber/doc/help/uk/hlp_move.txt
+--- a/mcabber/doc/help/uk/hlp_move.txt	Sun Jan 27 00:40:37 2013 +0200
++++ b/mcabber/doc/help/uk/hlp_move.txt	Wed Feb 27 03:19:07 2013 +0200
+@@ -1,5 +1,6 @@
+ 
+- /MOVE [група]
++ /MOVE [-j|--jid jid] [-n|--name ім’я] [група]
+ 
+-Переносить поточний контакт до вказаної групи. Якщо групу не вказати контакт опиниться у головній групі. Якщо група не існує, її буде створено.
++Переносить поточний контакт до вказаної групи. Якщо групу не вказати контакт опиниться у головній групі. Якщо групи не існує, її буде створено.
++За допомогою опцій --jid та --name можна перемістити контакт, відмінний від поточного.
+ Примітка: в режимі розмови можна використати "/roster alternate", щоб перейти до нового місця контакту контакту.
+diff -r 92fa48ef53c9 mcabber/doc/help/uk/hlp_rename.txt
+--- a/mcabber/doc/help/uk/hlp_rename.txt	Sun Jan 27 00:40:37 2013 +0200
++++ b/mcabber/doc/help/uk/hlp_rename.txt	Wed Feb 27 03:19:07 2013 +0200
+@@ -1,4 +1,6 @@
+ 
+- /RENAME ім'я
++ /RENAME [-r|--reset] [-j|--jid jid] [-g|--group ім’я] [-n|--name ім’я] нове ім’я
+ 
+ Змінює прізвисько поточного контакту або назву групи.
++За допомогою параметра --reset можна повернути контакту типову назву. При цьому нове ім’я (якщо вказане) ігнорується.
++Опції --jid, --group та --name дозволяють перейменовувати об’єкти, відмінні від поточного.
 diff -r 92fa48ef53c9 mcabber/mcabber/commands.c
 --- a/mcabber/mcabber/commands.c	Sun Jan 27 00:40:37 2013 +0200
-+++ b/mcabber/mcabber/commands.c	Tue Feb 26 23:50:10 2013 +0200
++++ b/mcabber/mcabber/commands.c	Wed Feb 27 03:19:07 2013 +0200
 @@ -502,7 +502,9 @@
    if (!iscmd && scr_get_multimode() == 2
        && (strncasecmp(xpline, mkcmdstr("msay "), strlen(mkcmdstr("msay "))))) {
@@ -1933,7 +2147,265 @@
          enum imrole role = buddy_getrole(bud, p_res->data);
          enum imaffiliation affil = buddy_getaffil(bud, p_res->data);
  
-@@ -2874,7 +3019,7 @@
+@@ -2145,16 +2290,69 @@
+ 
+ static void do_rename(char *arg)
+ {
++  cmdopts_t options = {
++    "rename",
++    (cmdopt_t[4]){
++      { CMDOPT_SWITCH, 'r', "reset", { .swc = 0 } },
++      { 0,             'n', "name",  { .opt = NULL } },
++      { 0,             'g', "group", { .opt = NULL } },
++      { CMDOPT_LAST,   'j', "jid",   { .opt = "." } },
++    },
++    (cmdarg_t[1]){
++      { CMDOPT_CATCHALL | CMDOPT_LAST, { .arg = NULL } }, // new name
++    },
++    NULL,
++  };
+   gpointer bud;
+   const char *bjid, *group;
+   guint type, on_srv;
+   char *newname, *p;
+-  char *name_utf8;
+-
+-  if (!current_buddy)
++  gboolean reset;
++  enum findwhat srchwhat = jidsearch;
++  guint         srchtype = ROSTER_TYPE_USER | ROSTER_TYPE_ROOM | ROSTER_TYPE_AGENT;
++  gchar        *srchterm;
++
++  if (cmdopts_parse(arg, &options))
+     return;
+-  bud = BUDDATA(current_buddy);
+-
++
++  reset   = options.opts[0].value.swc;
++  newname = options.args[0].value.arg;
++
++  if (options.opts[1].value.opt) { // n
++    srchwhat = namesearch;
++    srchtype |= ROSTER_TYPE_GROUP;
++    srchterm = options.opts[1].value.opt;
++  } else if (options.opts[2].value.opt) { // g
++    srchwhat = namesearch;
++    srchtype = ROSTER_TYPE_GROUP;
++    srchterm = options.opts[2].value.opt;
++  } else
++    srchterm = options.opts[3].value.opt;
++
++  if (!*srchterm || !strcmp(srchterm, ".")) {
++    if (!current_buddy) {
++      cmdopts_free(&options);
++      return;
++    }
++    bud = BUDDATA(current_buddy);
++    if (srchtype == ROSTER_TYPE_GROUP)
++      bud = buddy_getgroup(bud);
++  } else {
++    GSList *found;
++    if (srchwhat == jidsearch && check_jid_syntax(srchterm)) {
++      scr_log_print(LPRINT_NORMAL, "You must specify a valid jid!");
++      cmdopts_free(&options);
++      return;
++    }
++    found = roster_find(srchterm, srchwhat, srchtype);
++    if (!found) {
++      scr_log_print(LPRINT_NORMAL, "Can't find <%s>!", srchterm);
++      cmdopts_free(&options);
++      return;
++    }
++    bud = found -> data;
++  }
++    
+   bjid   = buddy_getjid(bud);
+   group  = buddy_getgroupname(bud);
+   type   = buddy_gettype(bud);
+@@ -2162,11 +2360,13 @@
+ 
+   if (type & ROSTER_TYPE_SPECIAL) {
+     scr_LogPrint(LPRINT_NORMAL, "You can't rename this item.");
++    cmdopts_free(&options);
+     return;
+   }
+ 
+-  if (!*arg && !(type & ROSTER_TYPE_GROUP)) {
++  if (!*newname && !reset) {
+     scr_LogPrint(LPRINT_NORMAL, "Please specify a new name.");
++    cmdopts_free(&options);
+     return;
+   }
+ 
+@@ -2181,90 +2381,117 @@
+   //  }
+   //}
+ 
+-  newname = g_strdup(arg);
+   // Remove trailing space
+   for (p = newname; *p; p++) ;
+   while (p > newname && *p == ' ') *p = 0;
+ 
+-  strip_arg_special_chars(newname);
+-
+-  name_utf8 = to_utf8(newname);
+-
+   if (type & ROSTER_TYPE_GROUP) {
+     // Rename a whole group
+-    foreach_group_member(bud, &move_group_member, name_utf8);
++    foreach_group_member(bud, &move_group_member, newname);
+     // Let's jump to the previous buddy, because this group name should
+     // disappear when we receive the server answer.
+     scr_roster_up_down(-1, 1);
+   } else {
+     // Rename a single buddy
+-    guint del_name = 0;
+-    if (!*newname || !strcmp(arg, "-"))
+-      del_name = TRUE;
+     if (on_srv) {
+-      /* We do not rename the buddy right now because the server could reject
+-       * the request.  Let's wait for the server answer.
+-       */
+-      xmpp_updatebuddy(bjid, (del_name ? NULL : name_utf8),
++      // We do not rename the buddy right now because the server could reject
++      // the request.  Let's wait for the server answer.
++      xmpp_updatebuddy(bjid, (reset ? NULL : newname),
+                        group && *group ? group : NULL);
+     } else {
+       // This is a local item, we rename it without adding to roster.
+-      buddy_setname(bud, (del_name ? (char*)bjid : name_utf8));
++      buddy_setname(bud, (reset ? (char*)bjid : newname));
+       if ((type & ROSTER_TYPE_ROOM) && xmpp_is_bookmarked(bjid) &&
+           settings_opt_get_int("muc_bookmark_autoupdate"))
+         room_bookmark(bud, NULL);
+     }
+   }
+ 
+-  g_free(name_utf8);
+-  g_free(newname);
++  cmdopts_free(&options);
+   update_roster = TRUE;
+ }
+ 
+ static void do_move(char *arg)
+ {
++  cmdopts_t options = {
++    "move",
++    (cmdopt_t[4]){
++      { 0,           'n', "name", { .opt = NULL } },
++      { CMDOPT_LAST, 'j', "jid",  { .opt = "." } },
++    },
++    (cmdarg_t[1]){
++      { CMDOPT_CATCHALL | CMDOPT_LAST, { .arg = "" } }, // new group name
++    },
++    NULL,
++  };
+   gpointer bud;
+   const char *bjid, *name, *oldgroupname;
+   guint type, on_srv;
+   char *newgroupname, *p;
+-  char *group_utf8;
+-
+-  if (!current_buddy)
++  enum findwhat srchwhat = jidsearch;
++  gchar        *srchterm;
++
++  if (cmdopts_parse(arg, &options))
+     return;
+-  bud = BUDDATA(current_buddy);
++
++  newgroupname = options.args[0].value.arg;
++
++  if (options.opts[0].value.opt) { // n
++    srchwhat = namesearch;
++    srchterm = options.opts[0].value.opt;
++  } else
++    srchterm = options.opts[1].value.opt;
++
++  if (!*srchterm || !strcmp(srchterm, ".")) {
++    if (!current_buddy) {
++      cmdopts_free(&options);
++      return;
++    }
++    bud = BUDDATA(current_buddy);
++  } else {
++    GSList *found;
++    if (srchwhat == jidsearch && check_jid_syntax(srchterm)) {
++      scr_log_print(LPRINT_NORMAL, "You must specify a valid jid!");
++      cmdopts_free(&options);
++      return;
++    }
++    found = roster_find(srchterm, srchwhat, ROSTER_TYPE_USER |
++                        ROSTER_TYPE_ROOM | ROSTER_TYPE_AGENT);
++    if (!found) {
++      scr_log_print(LPRINT_NORMAL, "Can't find <%s>!", srchterm);
++      cmdopts_free(&options);
++      return;
++    }
++    bud = found -> data;
++  }
+ 
+   bjid = buddy_getjid(bud);
+   name = buddy_getname(bud);
+   type = buddy_gettype(bud);
+   on_srv = buddy_getonserverflag(bud);
+-
+   oldgroupname = buddy_getgroupname(bud);
+ 
+   if (type & ROSTER_TYPE_GROUP) {
+     scr_LogPrint(LPRINT_NORMAL, "You can't move groups!");
++    cmdopts_free(&options);
+     return;
+   }
+   if (type & ROSTER_TYPE_SPECIAL) {
+     scr_LogPrint(LPRINT_NORMAL, "You can't move this item.");
++    cmdopts_free(&options);
+     return;
+   }
+ 
+-  newgroupname = g_strdup(arg);
+   // Remove trailing space
+   for (p = newgroupname; *p; p++) ;
+   while (p > newgroupname && *p == ' ') *p-- = 0;
+ 
+-  strip_arg_special_chars(newgroupname);
+-
+-  group_utf8 = to_utf8(newgroupname);
+-  if (strcmp(oldgroupname, group_utf8)) {
++  if (strcmp(oldgroupname, newgroupname)) {
+     if (on_srv) {
+-      xmpp_updatebuddy(bjid, name, *group_utf8 ? group_utf8 : NULL);
++      xmpp_updatebuddy(bjid, name, *newgroupname ? newgroupname : NULL);
+       scr_roster_up_down(-1, 1);
+-
+-      /* We do not move the buddy right now because the server could reject
+-       * the request.  Let's wait for the server answer.
+-       */
++      // We do not move the buddy right now because the server could reject
++      // the request.  Let's wait for the server answer.
+     } else {
+       // This is a local item, we move it without adding to roster.
+       guint msgflag;
+@@ -2276,7 +2503,7 @@
+       msgflag = buddy_getflags(bud) & ROSTER_FLAG_MSG;
+       if (msgflag)
+         roster_msg_setflag(bjid, FALSE, FALSE);
+-      buddy_setgroup(bud, group_utf8);
++      buddy_setgroup(bud, newgroupname);
+       if (msgflag)
+         roster_msg_setflag(bjid, FALSE, TRUE);
+       if ((type & ROSTER_TYPE_ROOM) && xmpp_is_bookmarked(bjid) &&
+@@ -2285,8 +2512,7 @@
+     }
+   }
+ 
+-  g_free(group_utf8);
+-  g_free(newgroupname);
++  cmdopts_free(&options);
+   update_roster = TRUE;
+ }
+ 
+@@ -2874,7 +3100,7 @@
    fjid_utf8 = g_strdup_printf("%s/%s", buddy_getjid(bud), nick_utf8);
    g_free (nick_utf8);
    msg = to_utf8(arg);
@@ -1942,7 +2414,7 @@
    g_free(fjid_utf8);
    g_free(msg);
    free_arg_lst(paramlst);
-@@ -3347,7 +3492,7 @@
+@@ -3347,7 +3573,7 @@
        cmd_room_leave(bud, arg);
    } else if (!strcasecmp(subcmd, "names"))  {
      if ((arg = check_room_subcommand(arg, FALSE, bud)) != NULL)
@@ -1953,7 +2425,7 @@
        room_nick(bud, arg);
 diff -r 92fa48ef53c9 mcabber/mcabber/commands.h
 --- a/mcabber/mcabber/commands.h	Sun Jan 27 00:40:37 2013 +0200
-+++ b/mcabber/mcabber/commands.h	Tue Feb 26 23:50:10 2013 +0200
++++ b/mcabber/mcabber/commands.h	Wed Feb 27 03:19:07 2013 +0200
 @@ -14,6 +14,12 @@
    gpointer userdata;
  } cmd;
@@ -1981,7 +2453,7 @@
  
 diff -r 92fa48ef53c9 mcabber/mcabber/roster.c
 --- a/mcabber/mcabber/roster.c	Sun Jan 27 00:40:37 2013 +0200
-+++ b/mcabber/mcabber/roster.c	Tue Feb 26 23:50:10 2013 +0200
++++ b/mcabber/mcabber/roster.c	Wed Feb 27 03:19:07 2013 +0200
 @@ -1586,13 +1586,14 @@
  // Look for a buddy whose name or jid contains string.
  // Search begins at current_buddy; if no match is found in the the buddylist,
@@ -2022,7 +2494,7 @@
      }
 diff -r 92fa48ef53c9 mcabber/mcabber/utils.c
 --- a/mcabber/mcabber/utils.c	Sun Jan 27 00:40:37 2013 +0200
-+++ b/mcabber/mcabber/utils.c	Tue Feb 26 23:50:10 2013 +0200
++++ b/mcabber/mcabber/utils.c	Wed Feb 27 03:19:07 2013 +0200
 @@ -555,6 +555,318 @@
      *str = tolower(*str);
  }
@@ -2344,7 +2816,7 @@
  // Only quotes need a backslash
 diff -r 92fa48ef53c9 mcabber/mcabber/utils.h
 --- a/mcabber/mcabber/utils.h	Sun Jan 27 00:40:37 2013 +0200
-+++ b/mcabber/mcabber/utils.h	Tue Feb 26 23:50:10 2013 +0200
++++ b/mcabber/mcabber/utils.h	Wed Feb 27 03:19:07 2013 +0200
 @@ -43,6 +43,97 @@
  char **split_arg(const char *arg, unsigned int n, int dontstriplast);
  void free_arg_lst(char **arglst);
@@ -2445,7 +2917,7 @@
  char *ut_unescape_tabs_cr(const char *text);
 diff -r 92fa48ef53c9 mcabber/mcabber/xmpp_iq.c
 --- a/mcabber/mcabber/xmpp_iq.c	Sun Jan 27 00:40:37 2013 +0200
-+++ b/mcabber/mcabber/xmpp_iq.c	Tue Feb 26 23:50:10 2013 +0200
++++ b/mcabber/mcabber/xmpp_iq.c	Wed Feb 27 03:19:07 2013 +0200
 @@ -289,10 +289,7 @@
        if (value) {
          for (s = adhoc_status_list; !s->name || strcmp(s->name, value); s++);