summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastien Helleu <flashcode@flashtux.org>2005-07-16 11:14:47 +0000
committerSebastien Helleu <flashcode@flashtux.org>2005-07-16 11:14:47 +0000
commita68a1f81928d4a252b4fd8ed5a3b35fc198b68f8 (patch)
tree8b5d2fafe218633bf2b9b49ceab00d89ce857a0c
parent930c40eae14219e0f8f39967aa079889d2fb623f (diff)
downloadweechat-a68a1f81928d4a252b4fd8ed5a3b35fc198b68f8.zip
Added alt-k key to grab a key and insert result into input buffer
-rw-r--r--ChangeLog5
-rw-r--r--po/es.po106
-rw-r--r--po/fr.po106
-rw-r--r--po/weechat.pot104
-rw-r--r--src/common/completion.c3
-rw-r--r--src/common/fifo.c2
-rw-r--r--src/gui/curses/gui-input.c43
-rw-r--r--src/gui/gui-common.c450
-rw-r--r--src/gui/gui-keyboard.c35
-rw-r--r--src/gui/gui.h12
-rw-r--r--weechat/ChangeLog5
-rw-r--r--weechat/po/es.po106
-rw-r--r--weechat/po/fr.po106
-rw-r--r--weechat/po/weechat.pot104
-rw-r--r--weechat/src/common/completion.c3
-rw-r--r--weechat/src/common/fifo.c2
-rw-r--r--weechat/src/gui/curses/gui-input.c43
-rw-r--r--weechat/src/gui/gui-common.c450
-rw-r--r--weechat/src/gui/gui-keyboard.c35
-rw-r--r--weechat/src/gui/gui.h12
20 files changed, 1000 insertions, 732 deletions
diff --git a/ChangeLog b/ChangeLog
index 288096021..d03a74624 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,7 +1,7 @@
WeeChat - Wee Enhanced Environment for Chat
===========================================
-ChangeLog - 2005-07-14
+ChangeLog - 2005-07-16
Version 0.1.4 (under dev!):
@@ -15,7 +15,8 @@ Version 0.1.4 (under dev!):
* topic completion now decodes UTF-8 string
* fixed bug with IRC URL on command line (irc://)
* new keyboard management: keys are setup in config file, new command
- /key was added and some new default keys were added
+ /key was added and some new default keys were added, alt-k key is
+ used to grab key (useful for /key command)
* added seconds in infobar time (optional thanks to new setting)
* fixed some curses refreshs
* channels auto-prefixed by "#" (if no prefix found) for /join command
diff --git a/po/es.po b/po/es.po
index 3da29d36c..b07946241 100644
--- a/po/es.po
+++ b/po/es.po
@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat 0.1.4-cvs\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2005-07-13 19:29+0200\n"
-"PO-Revision-Date: 2005-07-13 19:30+0200\n"
+"POT-Creation-Date: 2005-07-16 13:11+0200\n"
+"PO-Revision-Date: 2005-07-16 13:12+0200\n"
"Last-Translator: Roberto González Cardenete <robert.glez@gmail.com>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
"MIME-Version: 1.0\n"
@@ -2119,7 +2119,7 @@ msgstr ""
"%s no ha sido posible añadir el manejador para el mensaje \"%s\" (memoria "
"insuficiente)\n"
-#: src/gui/curses/gui-input.c:300
+#: src/gui/curses/gui-input.c:337
#, c-format
msgid "%s lag is high, disconnecting from server...\n"
msgstr "%s el lag (retraso) es alto, desconectando del servidor...\n"
@@ -2140,44 +2140,44 @@ msgstr "MB"
msgid "Gb"
msgstr "GB"
-#: src/gui/curses/gui-display.c:1116
+#: src/gui/curses/gui-display.c:1119
msgid "(away)"
msgstr "(ausente)"
-#: src/gui/curses/gui-display.c:1233
+#: src/gui/curses/gui-display.c:1236
msgid "[not connected]"
msgstr "[no conectado]"
-#: src/gui/curses/gui-display.c:1249
+#: src/gui/curses/gui-display.c:1252
msgid "Act: "
msgstr "Act: "
-#: src/gui/curses/gui-display.c:1302
+#: src/gui/curses/gui-display.c:1305
#, c-format
msgid "Lag: %.1f"
msgstr "Lag: %.1f"
-#: src/gui/curses/gui-display.c:1323
+#: src/gui/curses/gui-display.c:1326
msgid "-MORE-"
msgstr "-MÁS-"
-#: src/gui/curses/gui-display.c:1563
+#: src/gui/curses/gui-display.c:1565
msgid " [A] Accept"
msgstr " [A] Aceptar"
-#: src/gui/curses/gui-display.c:1564 src/gui/curses/gui-display.c:1568
+#: src/gui/curses/gui-display.c:1566 src/gui/curses/gui-display.c:1570
msgid " [C] Cancel"
msgstr " [C] Cancelar"
-#: src/gui/curses/gui-display.c:1573
+#: src/gui/curses/gui-display.c:1575
msgid " [R] Remove"
msgstr " [R] Eliminar"
-#: src/gui/curses/gui-display.c:1577
+#: src/gui/curses/gui-display.c:1579
msgid " [P] Purge old DCC"
msgstr " [P] Purgar los viejos DCC"
-#: src/gui/curses/gui-display.c:1578
+#: src/gui/curses/gui-display.c:1580
msgid " [Q] Close DCC view"
msgstr " [Q] Cerrar la vista DCC"
@@ -2185,159 +2185,163 @@ msgstr " [Q] Cerrar la vista DCC"
msgid "server"
msgstr "servidor"
-#: src/gui/gui-common.c:334
+#: src/gui/gui-common.c:340
msgid "Not enough memory for infobar message\n"
msgstr "No hay suficiente memoria para el mensaje de la barra de información\n"
-#: src/gui/gui-common.c:509
+#: src/gui/gui-common.c:515
msgid "Not enough memory for new line\n"
msgstr "No hay suficiente memoria para una nueva línea\n"
-#: src/gui/gui-common.c:552
+#: src/gui/gui-common.c:558
msgid "Not enough memory for new message\n"
msgstr "No hay suficiente memoria para el mensaje de la barra de información\n"
-#: src/gui/gui-keyboard.c:43
+#: src/gui/gui-keyboard.c:45
msgid "terminate line"
msgstr "terminar línea"
-#: src/gui/gui-keyboard.c:45
+#: src/gui/gui-keyboard.c:47
msgid "complete word"
msgstr "completar palabra"
-#: src/gui/gui-keyboard.c:47
+#: src/gui/gui-keyboard.c:49
msgid "delete previous char"
msgstr "borrar el carácter anterior"
-#: src/gui/gui-keyboard.c:49
+#: src/gui/gui-keyboard.c:51
msgid "delete next char"
msgstr "borrar el carácter siguiente"
-#: src/gui/gui-keyboard.c:51
+#: src/gui/gui-keyboard.c:53
msgid "delete until end of line"
msgstr "borrar hasta fin de línea"
-#: src/gui/gui-keyboard.c:53
+#: src/gui/gui-keyboard.c:55
msgid "delete until beginning of line"
msgstr "borrar hasta principio de línea"
-#: src/gui/gui-keyboard.c:55
+#: src/gui/gui-keyboard.c:57
msgid "delete entire line"
msgstr "borrar línea entera"
-#: src/gui/gui-keyboard.c:57
+#: src/gui/gui-keyboard.c:59
msgid "delete previous word"
msgstr "borrar la palabra anterior"
-#: src/gui/gui-keyboard.c:59
+#: src/gui/gui-keyboard.c:61
msgid "delete next word"
msgstr "borrar la palabra siguiente"
-#: src/gui/gui-keyboard.c:61
+#: src/gui/gui-keyboard.c:63
msgid "paste current clipboard content"
msgstr ""
-#: src/gui/gui-keyboard.c:63
+#: src/gui/gui-keyboard.c:65
msgid "transpose chars"
msgstr ""
-#: src/gui/gui-keyboard.c:65
+#: src/gui/gui-keyboard.c:67
msgid "go to beginning of line"
msgstr "ir al principio de línea"
-#: src/gui/gui-keyboard.c:67
+#: src/gui/gui-keyboard.c:69
msgid "go to end of line"
msgstr "ir al final de línea"
-#: src/gui/gui-keyboard.c:69
+#: src/gui/gui-keyboard.c:71
msgid "move one char left"
msgstr "mover un carácter a la izquierda"
-#: src/gui/gui-keyboard.c:71
+#: src/gui/gui-keyboard.c:73
msgid "move to previous word"
msgstr "mover a la palabra anterior"
-#: src/gui/gui-keyboard.c:73
+#: src/gui/gui-keyboard.c:75
msgid "move one char right"
msgstr "mover un carácter a la derecha"
-#: src/gui/gui-keyboard.c:75
+#: src/gui/gui-keyboard.c:77
msgid "move to next word"
msgstr "mover a la palabra siguiente"
-#: src/gui/gui-keyboard.c:77
+#: src/gui/gui-keyboard.c:79
msgid "call previous command in history"
msgstr "llamar al comando anterior en el historial"
-#: src/gui/gui-keyboard.c:79
+#: src/gui/gui-keyboard.c:81
msgid "call next command in history"
msgstr "llamar al comando siguiente en el historial"
-#: src/gui/gui-keyboard.c:81
+#: src/gui/gui-keyboard.c:83
msgid "scroll one page up"
msgstr "desplazarse una página hacia arriba"
-#: src/gui/gui-keyboard.c:83
+#: src/gui/gui-keyboard.c:85
msgid "scroll one page down"
msgstr "desplazarse una página hacia abajo"
-#: src/gui/gui-keyboard.c:85
+#: src/gui/gui-keyboard.c:87
msgid "clear infobar"
msgstr "limpiar barra de información"
-#: src/gui/gui-keyboard.c:87
+#: src/gui/gui-keyboard.c:89
msgid "scroll nicklist one page up"
msgstr "desplazar la lista de nicks una página hacia arriba"
-#: src/gui/gui-keyboard.c:89
+#: src/gui/gui-keyboard.c:91
msgid "scroll nicklist one page down"
msgstr "desplazar la lista de nicks una página hacia abajo"
-#: src/gui/gui-keyboard.c:91
+#: src/gui/gui-keyboard.c:93
msgid "display beginning of nicklist"
msgstr "mostrar el principio de la lista de nicks"
-#: src/gui/gui-keyboard.c:93
+#: src/gui/gui-keyboard.c:95
msgid "display end of nicklist"
msgstr "mostrar el final de la lista de nicks"
-#: src/gui/gui-keyboard.c:95
+#: src/gui/gui-keyboard.c:97
msgid "refresh screen"
msgstr "recargar la pantalla"
-#: src/gui/gui-keyboard.c:97
+#: src/gui/gui-keyboard.c:99
msgid "jump to buffer with activity"
msgstr "saltar al búfer con actividad"
-#: src/gui/gui-keyboard.c:99
+#: src/gui/gui-keyboard.c:101
msgid "jump to DCC buffer"
msgstr "saltar al búfer DCC"
-#: src/gui/gui-keyboard.c:101
+#: src/gui/gui-keyboard.c:103
msgid "jump to server buffer"
msgstr "saltar al búfer servidor"
-#: src/gui/gui-keyboard.c:103
+#: src/gui/gui-keyboard.c:105
msgid "jump to next server"
msgstr "saltar al servidor siguiente"
-#: src/gui/gui-keyboard.c:105
+#: src/gui/gui-keyboard.c:107
msgid "clear hotlist"
msgstr "limpiar hotlist"
-#: src/gui/gui-keyboard.c:403 src/common/command.c:1471
+#: src/gui/gui-keyboard.c:109
+msgid "grab a key"
+msgstr ""
+
+#: src/gui/gui-keyboard.c:420 src/common/command.c:1471
#, c-format
msgid "%s unable to bind key \"%s\"\n"
msgstr "%s No ha sido posible atar la clave \"%s\"\n"
-#: src/gui/gui-keyboard.c:414
+#: src/gui/gui-keyboard.c:431
#, c-format
msgid "%s unable to bind key \"%s\" (invalid function name: \"%s\")\n"
msgstr ""
"%s No ha sido posible atar la clave \"%s\" (nombre de función inválido: \"%s"
"\")\n"
-#: src/gui/gui-keyboard.c:427
+#: src/gui/gui-keyboard.c:444
#, c-format
msgid "%s not enough memory for key binding\n"
msgstr "%s no hay suficiente memoria para atar la clave\n"
diff --git a/po/fr.po b/po/fr.po
index bd5067dc8..4b083b0d6 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat 0.1.4-cvs\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2005-07-13 19:29+0200\n"
-"PO-Revision-Date: 2005-07-13 19:32+0200\n"
+"POT-Creation-Date: 2005-07-16 13:11+0200\n"
+"PO-Revision-Date: 2005-07-16 13:11+0200\n"
"Last-Translator: FlashCode <flashcode@flashtux.org>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
"MIME-Version: 1.0\n"
@@ -2119,7 +2119,7 @@ msgstr ""
"%s impossible d'ajouter la fonction pour le message \"%s\" (mémoire "
"insuffisante)\n"
-#: src/gui/curses/gui-input.c:300
+#: src/gui/curses/gui-input.c:337
#, c-format
msgid "%s lag is high, disconnecting from server...\n"
msgstr "%s le lag est élevé, déconnexion du serveur...\n"
@@ -2140,44 +2140,44 @@ msgstr "Mo"
msgid "Gb"
msgstr "Go"
-#: src/gui/curses/gui-display.c:1116
+#: src/gui/curses/gui-display.c:1119
msgid "(away)"
msgstr "(absent)"
-#: src/gui/curses/gui-display.c:1233
+#: src/gui/curses/gui-display.c:1236
msgid "[not connected]"
msgstr "[non connecté]"
-#: src/gui/curses/gui-display.c:1249
+#: src/gui/curses/gui-display.c:1252
msgid "Act: "
msgstr "Act: "
-#: src/gui/curses/gui-display.c:1302
+#: src/gui/curses/gui-display.c:1305
#, c-format
msgid "Lag: %.1f"
msgstr "Lag: %.1f"
-#: src/gui/curses/gui-display.c:1323
+#: src/gui/curses/gui-display.c:1326
msgid "-MORE-"
msgstr "-PLUS-"
-#: src/gui/curses/gui-display.c:1563
+#: src/gui/curses/gui-display.c:1565
msgid " [A] Accept"
msgstr " [A] Accepter"
-#: src/gui/curses/gui-display.c:1564 src/gui/curses/gui-display.c:1568
+#: src/gui/curses/gui-display.c:1566 src/gui/curses/gui-display.c:1570
msgid " [C] Cancel"
msgstr " [C] Annuler"
-#: src/gui/curses/gui-display.c:1573
+#: src/gui/curses/gui-display.c:1575
msgid " [R] Remove"
msgstr " [R] Retirer"
-#: src/gui/curses/gui-display.c:1577
+#: src/gui/curses/gui-display.c:1579
msgid " [P] Purge old DCC"
msgstr " [P] Purger anciens DCC"
-#: src/gui/curses/gui-display.c:1578
+#: src/gui/curses/gui-display.c:1580
msgid " [Q] Close DCC view"
msgstr " [Q] Fermer la vue DCC"
@@ -2185,158 +2185,162 @@ msgstr " [Q] Fermer la vue DCC"
msgid "server"
msgstr "serveur"
-#: src/gui/gui-common.c:334
+#: src/gui/gui-common.c:340
msgid "Not enough memory for infobar message\n"
msgstr "Pas assez de mémoire pour un message de la barre d'infos\n"
-#: src/gui/gui-common.c:509
+#: src/gui/gui-common.c:515
msgid "Not enough memory for new line\n"
msgstr "Pas assez de mémoire pour une nouvelle ligne !\n"
-#: src/gui/gui-common.c:552
+#: src/gui/gui-common.c:558
msgid "Not enough memory for new message\n"
msgstr "Pas assez de mémoire pour un message de la barre d'infos\n"
-#: src/gui/gui-keyboard.c:43
+#: src/gui/gui-keyboard.c:45
msgid "terminate line"
msgstr "terminer la ligne"
-#: src/gui/gui-keyboard.c:45
+#: src/gui/gui-keyboard.c:47
msgid "complete word"
msgstr "compléter le mot"
-#: src/gui/gui-keyboard.c:47
+#: src/gui/gui-keyboard.c:49
msgid "delete previous char"
msgstr "effacer le caractère précédent"
-#: src/gui/gui-keyboard.c:49
+#: src/gui/gui-keyboard.c:51
msgid "delete next char"
msgstr "effacer le caractère suivant"
-#: src/gui/gui-keyboard.c:51
+#: src/gui/gui-keyboard.c:53
msgid "delete until end of line"
msgstr "effacer jusqu'à la fin de la ligne"
-#: src/gui/gui-keyboard.c:53
+#: src/gui/gui-keyboard.c:55
msgid "delete until beginning of line"
msgstr "effacer jusqu'au début de la ligne"
-#: src/gui/gui-keyboard.c:55
+#: src/gui/gui-keyboard.c:57
msgid "delete entire line"
msgstr "effacer la ligne entière"
-#: src/gui/gui-keyboard.c:57
+#: src/gui/gui-keyboard.c:59
msgid "delete previous word"
msgstr "effacer le mot précédent"
-#: src/gui/gui-keyboard.c:59
+#: src/gui/gui-keyboard.c:61
msgid "delete next word"
msgstr "effacer le mot suivant"
-#: src/gui/gui-keyboard.c:61
+#: src/gui/gui-keyboard.c:63
msgid "paste current clipboard content"
msgstr "coller le contenu du presse-papier"
-#: src/gui/gui-keyboard.c:63
+#: src/gui/gui-keyboard.c:65
msgid "transpose chars"
msgstr "inverser les caractères"
-#: src/gui/gui-keyboard.c:65
+#: src/gui/gui-keyboard.c:67
msgid "go to beginning of line"
msgstr "aller au début de la ligne"
-#: src/gui/gui-keyboard.c:67
+#: src/gui/gui-keyboard.c:69
msgid "go to end of line"
msgstr "aller à la fin de la ligne"
-#: src/gui/gui-keyboard.c:69
+#: src/gui/gui-keyboard.c:71
msgid "move one char left"
msgstr "se déplacer d'un caractère à gauche"
-#: src/gui/gui-keyboard.c:71
+#: src/gui/gui-keyboard.c:73
msgid "move to previous word"
msgstr "se déplacer au mot précédent"
-#: src/gui/gui-keyboard.c:73
+#: src/gui/gui-keyboard.c:75
msgid "move one char right"
msgstr "se déplacer d'un caractère à droite"
-#: src/gui/gui-keyboard.c:75
+#: src/gui/gui-keyboard.c:77
msgid "move to next word"
msgstr "se déplacer au mot suivant"
-#: src/gui/gui-keyboard.c:77
+#: src/gui/gui-keyboard.c:79
msgid "call previous command in history"
msgstr "appeler la commande précédente dans l'historique"
-#: src/gui/gui-keyboard.c:79
+#: src/gui/gui-keyboard.c:81
msgid "call next command in history"
msgstr "appeler la commande suivante dans l'historique"
-#: src/gui/gui-keyboard.c:81
+#: src/gui/gui-keyboard.c:83
msgid "scroll one page up"
msgstr "faire défiler d'une page vers le haut"
-#: src/gui/gui-keyboard.c:83
+#: src/gui/gui-keyboard.c:85
msgid "scroll one page down"
msgstr "faire défiler d'une page vers le bas"
-#: src/gui/gui-keyboard.c:85
+#: src/gui/gui-keyboard.c:87
msgid "clear infobar"
msgstr "effacer la barre d'infos"
-#: src/gui/gui-keyboard.c:87
+#: src/gui/gui-keyboard.c:89
msgid "scroll nicklist one page up"
msgstr "faire défiler la liste des pseudos d'une page vers le haut"
-#: src/gui/gui-keyboard.c:89
+#: src/gui/gui-keyboard.c:91
msgid "scroll nicklist one page down"
msgstr "faire défiler la liste des pseudos d'une page vers le bas"
-#: src/gui/gui-keyboard.c:91
+#: src/gui/gui-keyboard.c:93
msgid "display beginning of nicklist"
msgstr "afficher le début de la liste des pseudos"
-#: src/gui/gui-keyboard.c:93
+#: src/gui/gui-keyboard.c:95
msgid "display end of nicklist"
msgstr "afficher la fin de la liste des pseudos"
-#: src/gui/gui-keyboard.c:95
+#: src/gui/gui-keyboard.c:97
msgid "refresh screen"
msgstr "rafraichir l'écran"
-#: src/gui/gui-keyboard.c:97
+#: src/gui/gui-keyboard.c:99
msgid "jump to buffer with activity"
msgstr "sauter au tampon avec de l'activité"
-#: src/gui/gui-keyboard.c:99
+#: src/gui/gui-keyboard.c:101
msgid "jump to DCC buffer"
msgstr "sauter au tampon DCC"
-#: src/gui/gui-keyboard.c:101
+#: src/gui/gui-keyboard.c:103
msgid "jump to server buffer"
msgstr "sauter au tampon du serveur"
-#: src/gui/gui-keyboard.c:103
+#: src/gui/gui-keyboard.c:105
msgid "jump to next server"
msgstr "sauter au prochain serveur"
-#: src/gui/gui-keyboard.c:105
+#: src/gui/gui-keyboard.c:107
msgid "clear hotlist"
msgstr "effacer la liste d'activité"
-#: src/gui/gui-keyboard.c:403 src/common/command.c:1471
+#: src/gui/gui-keyboard.c:109
+msgid "grab a key"
+msgstr "capturer une touche"
+
+#: src/gui/gui-keyboard.c:420 src/common/command.c:1471
#, c-format
msgid "%s unable to bind key \"%s\"\n"
msgstr "%s impossible de créer la touche \"%s\"\n"
-#: src/gui/gui-keyboard.c:414
+#: src/gui/gui-keyboard.c:431
#, c-format
msgid "%s unable to bind key \"%s\" (invalid function name: \"%s\")\n"
msgstr ""
"%s impossible de créer la touche \"%s\" (nom fonction incorrect: \"%s\")\n"
-#: src/gui/gui-keyboard.c:427
+#: src/gui/gui-keyboard.c:444
#, c-format
msgid "%s not enough memory for key binding\n"
msgstr "%s pas assez de mémoire pour la touche\n"
diff --git a/po/weechat.pot b/po/weechat.pot
index 898abe756..635f6259e 100644
--- a/po/weechat.pot
+++ b/po/weechat.pot
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2005-07-13 19:29+0200\n"
+"POT-Creation-Date: 2005-07-16 13:11+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -1984,7 +1984,7 @@ msgstr ""
msgid "%s unable to add handler for \"%s\" message (not enough memory)\n"
msgstr ""
-#: src/gui/curses/gui-input.c:300
+#: src/gui/curses/gui-input.c:337
#, c-format
msgid "%s lag is high, disconnecting from server...\n"
msgstr ""
@@ -2005,44 +2005,44 @@ msgstr ""
msgid "Gb"
msgstr ""
-#: src/gui/curses/gui-display.c:1116
+#: src/gui/curses/gui-display.c:1119
msgid "(away)"
msgstr ""
-#: src/gui/curses/gui-display.c:1233
+#: src/gui/curses/gui-display.c:1236
msgid "[not connected]"
msgstr ""
-#: src/gui/curses/gui-display.c:1249
+#: src/gui/curses/gui-display.c:1252
msgid "Act: "
msgstr ""
-#: src/gui/curses/gui-display.c:1302
+#: src/gui/curses/gui-display.c:1305
#, c-format
msgid "Lag: %.1f"
msgstr ""
-#: src/gui/curses/gui-display.c:1323
+#: src/gui/curses/gui-display.c:1326
msgid "-MORE-"
msgstr ""
-#: src/gui/curses/gui-display.c:1563
+#: src/gui/curses/gui-display.c:1565
msgid " [A] Accept"
msgstr ""
-#: src/gui/curses/gui-display.c:1564 src/gui/curses/gui-display.c:1568
+#: src/gui/curses/gui-display.c:1566 src/gui/curses/gui-display.c:1570
msgid " [C] Cancel"
msgstr ""
-#: src/gui/curses/gui-display.c:1573
+#: src/gui/curses/gui-display.c:1575
msgid " [R] Remove"
msgstr ""
-#: src/gui/curses/gui-display.c:1577
+#: src/gui/curses/gui-display.c:1579
msgid " [P] Purge old DCC"
msgstr ""
-#: src/gui/curses/gui-display.c:1578
+#: src/gui/curses/gui-display.c:1580
msgid " [Q] Close DCC view"
msgstr ""
@@ -2050,157 +2050,161 @@ msgstr ""
msgid "server"
msgstr ""
-#: src/gui/gui-common.c:334
+#: src/gui/gui-common.c:340
msgid "Not enough memory for infobar message\n"
msgstr ""
-#: src/gui/gui-common.c:509
+#: src/gui/gui-common.c:515
msgid "Not enough memory for new line\n"
msgstr ""
-#: src/gui/gui-common.c:552
+#: src/gui/gui-common.c:558
msgid "Not enough memory for new message\n"
msgstr ""
-#: src/gui/gui-keyboard.c:43
+#: src/gui/gui-keyboard.c:45
msgid "terminate line"
msgstr ""
-#: src/gui/gui-keyboard.c:45
+#: src/gui/gui-keyboard.c:47
msgid "complete word"
msgstr ""
-#: src/gui/gui-keyboard.c:47
+#: src/gui/gui-keyboard.c:49
msgid "delete previous char"
msgstr ""
-#: src/gui/gui-keyboard.c:49
+#: src/gui/gui-keyboard.c:51
msgid "delete next char"
msgstr ""
-#: src/gui/gui-keyboard.c:51
+#: src/gui/gui-keyboard.c:53
msgid "delete until end of line"
msgstr ""
-#: src/gui/gui-keyboard.c:53
+#: src/gui/gui-keyboard.c:55
msgid "delete until beginning of line"
msgstr ""
-#: src/gui/gui-keyboard.c:55
+#: src/gui/gui-keyboard.c:57
msgid "delete entire line"
msgstr ""
-#: src/gui/gui-keyboard.c:57
+#: src/gui/gui-keyboard.c:59
msgid "delete previous word"
msgstr ""
-#: src/gui/gui-keyboard.c:59
+#: src/gui/gui-keyboard.c:61
msgid "delete next word"
msgstr ""
-#: src/gui/gui-keyboard.c:61
+#: src/gui/gui-keyboard.c:63
msgid "paste current clipboard content"
msgstr ""
-#: src/gui/gui-keyboard.c:63
+#: src/gui/gui-keyboard.c:65
msgid "transpose chars"
msgstr ""
-#: src/gui/gui-keyboard.c:65
+#: src/gui/gui-keyboard.c:67
msgid "go to beginning of line"
msgstr ""
-#: src/gui/gui-keyboard.c:67
+#: src/gui/gui-keyboard.c:69
msgid "go to end of line"
msgstr ""
-#: src/gui/gui-keyboard.c:69
+#: src/gui/gui-keyboard.c:71
msgid "move one char left"
msgstr ""
-#: src/gui/gui-keyboard.c:71
+#: src/gui/gui-keyboard.c:73
msgid "move to previous word"
msgstr ""
-#: src/gui/gui-keyboard.c:73
+#: src/gui/gui-keyboard.c:75
msgid "move one char right"
msgstr ""
-#: src/gui/gui-keyboard.c:75
+#: src/gui/gui-keyboard.c:77
msgid "move to next word"
msgstr ""
-#: src/gui/gui-keyboard.c:77
+#: src/gui/gui-keyboard.c:79
msgid "call previous command in history"
msgstr ""
-#: src/gui/gui-keyboard.c:79
+#: src/gui/gui-keyboard.c:81
msgid "call next command in history"
msgstr ""
-#: src/gui/gui-keyboard.c:81
+#: src/gui/gui-keyboard.c:83
msgid "scroll one page up"
msgstr ""
-#: src/gui/gui-keyboard.c:83
+#: src/gui/gui-keyboard.c:85
msgid "scroll one page down"
msgstr ""
-#: src/gui/gui-keyboard.c:85
+#: src/gui/gui-keyboard.c:87
msgid "clear infobar"
msgstr ""
-#: src/gui/gui-keyboard.c:87
+#: src/gui/gui-keyboard.c:89
msgid "scroll nicklist one page up"
msgstr ""
-#: src/gui/gui-keyboard.c:89
+#: src/gui/gui-keyboard.c:91
msgid "scroll nicklist one page down"
msgstr ""
-#: src/gui/gui-keyboard.c:91
+#: src/gui/gui-keyboard.c:93
msgid "display beginning of nicklist"
msgstr ""
-#: src/gui/gui-keyboard.c:93
+#: src/gui/gui-keyboard.c:95
msgid "display end of nicklist"
msgstr ""
-#: src/gui/gui-keyboard.c:95
+#: src/gui/gui-keyboard.c:97
msgid "refresh screen"
msgstr ""
-#: src/gui/gui-keyboard.c:97
+#: src/gui/gui-keyboard.c:99
msgid "jump to buffer with activity"
msgstr ""
-#: src/gui/gui-keyboard.c:99
+#: src/gui/gui-keyboard.c:101
msgid "jump to DCC buffer"
msgstr ""
-#: src/gui/gui-keyboard.c:101
+#: src/gui/gui-keyboard.c:103
msgid "jump to server buffer"
msgstr ""
-#: src/gui/gui-keyboard.c:103
+#: src/gui/gui-keyboard.c:105
msgid "jump to next server"
msgstr ""
-#: src/gui/gui-keyboard.c:105
+#: src/gui/gui-keyboard.c:107
msgid "clear hotlist"
msgstr ""
-#: src/gui/gui-keyboard.c:403 src/common/command.c:1471
+#: src/gui/gui-keyboard.c:109
+msgid "grab a key"
+msgstr ""
+
+#: src/gui/gui-keyboard.c:420 src/common/command.c:1471
#, c-format
msgid "%s unable to bind key \"%s\"\n"
msgstr ""
-#: src/gui/gui-keyboard.c:414
+#: src/gui/gui-keyboard.c:431
#, c-format
msgid "%s unable to bind key \"%s\" (invalid function name: \"%s\")\n"
msgstr ""
-#: src/gui/gui-keyboard.c:427
+#: src/gui/gui-keyboard.c:444
#, c-format
msgid "%s not enough memory for key binding\n"
msgstr ""
diff --git a/src/common/completion.c b/src/common/completion.c
index 6bb452d20..a27605f6f 100644
--- a/src/common/completion.c
+++ b/src/common/completion.c
@@ -206,9 +206,6 @@ completion_build_list (t_completion *completion, void *channel)
{
weelist_add (&completion->completion_list,
&completion->last_completion,
- "bind");
- weelist_add (&completion->completion_list,
- &completion->last_completion,
"unbind");
weelist_add (&completion->completion_list,
&completion->last_completion,
diff --git a/src/common/fifo.c b/src/common/fifo.c
index ec9ff701e..440f52536 100644
--- a/src/common/fifo.c
+++ b/src/common/fifo.c
@@ -112,7 +112,7 @@ fifo_exec (char *text)
if (text[0] == '*')
{
pos_msg = text + 1;
- ptr_buffer = (gui_current_window->buffer->dcc) ? gui_buffers : gui_current_window->buffer;
+ ptr_buffer = (gui_current_window->buffer->has_input) ? gui_current_window->buffer : gui_buffers;
ptr_server = SERVER(ptr_buffer);
}
else
diff --git a/src/gui/curses/gui-input.c b/src/gui/curses/gui-input.c
index 965ad71b4..7f4d932cd 100644
--- a/src/gui/curses/gui-input.c
+++ b/src/gui/curses/gui-input.c
@@ -92,9 +92,10 @@ gui_input_default_key_bindings ()
gui_key_bind ( /* ^right */ "meta-Oc", "next_word");
gui_key_bind ( /* m-h */ "meta-h", "hotlist_clear");
gui_key_bind ( /* m-j,m-d */ "meta-jmeta-d", "jump_dcc");
- gui_key_bind ( /* m-r */ "meta-r", "delete_line");
gui_key_bind ( /* m-j,m-s */ "meta-jmeta-s", "jump_server");
gui_key_bind ( /* m-j,m-x */ "meta-jmeta-x", "jump_next_server");
+ gui_key_bind ( /* m-k */ "meta-k", "grab_key");
+ gui_key_bind ( /* m-r */ "meta-r", "delete_line");
/* keys binded with commands */
gui_key_bind ( /* m-left */ "meta-meta2-D", "/buffer -1");
@@ -124,6 +125,35 @@ gui_input_default_key_bindings ()
}
/*
+ * gui_input_grab_end: insert grabbed key in input buffer
+ */
+
+void
+gui_input_grab_end ()
+{
+ char *expanded_key;
+
+ /* get expanded name (for example: ^U => ctrl-u) */
+ expanded_key = gui_key_get_expanded_name (gui_key_buffer);
+
+ if (expanded_key)
+ {
+ if (gui_current_window->buffer->has_input)
+ {
+ gui_input_insert_string (expanded_key, -1);
+ gui_current_window->buffer->input_buffer_pos += strlen (expanded_key);
+ gui_draw_buffer_input (gui_current_window->buffer, 1);
+ }
+ free (expanded_key);
+ }
+
+ /* end grab mode */
+ gui_key_grab = 0;
+ gui_key_grab_count = 0;
+ gui_key_buffer[0] = '\0';
+}
+
+/*
* gui_input_read: read keyboard chars
*/
@@ -138,10 +168,17 @@ gui_input_read ()
to read also socket & co */
while (i < 8)
{
+ if (gui_key_grab && (gui_key_grab_count > 10))
+ gui_input_grab_end ();
+
key = getch ();
if (key == ERR)
+ {
+ if (gui_key_grab && (gui_key_grab_count > 0))
+ gui_input_grab_end ();
break;
+ }
if (key == KEY_RESIZE)
{
@@ -176,11 +213,11 @@ gui_input_read ()
}
}
- if (strcmp (key_str, "^") == 0)
+ /*if (strcmp (key_str, "^") == 0)
{
key_str[1] = '^';
key_str[2] = '\0';
- }
+ }*/
/*gui_printf (gui_current_window->buffer, "gui_input_read: key = %s (%d)\n", key_str, key);*/
diff --git a/src/gui/gui-common.c b/src/gui/gui-common.c
index 0d28ae824..78d898608 100644
--- a/src/gui/gui-common.c
+++ b/src/gui/gui-common.c
@@ -201,9 +201,15 @@ gui_buffer_new (t_gui_window *window, void *server, void *channel, int dcc,
log_start (new_buffer);
/* init input buffer */
- new_buffer->input_buffer_alloc = INPUT_BUFFER_BLOCK_SIZE;
- new_buffer->input_buffer = (char *) malloc (INPUT_BUFFER_BLOCK_SIZE);
- new_buffer->input_buffer[0] = '\0';
+ new_buffer->has_input = (new_buffer->dcc) ? 0 : 1;
+ if (new_buffer->has_input)
+ {
+ new_buffer->input_buffer_alloc = INPUT_BUFFER_BLOCK_SIZE;
+ new_buffer->input_buffer = (char *) malloc (INPUT_BUFFER_BLOCK_SIZE);
+ new_buffer->input_buffer[0] = '\0';
+ }
+ else
+ new_buffer->input_buffer = NULL;
new_buffer->input_buffer_size = 0;
new_buffer->input_buffer_pos = 0;
new_buffer->input_buffer_1st_display = 0;
@@ -565,40 +571,88 @@ gui_input_optimize_buffer_size (t_gui_buffer *buffer)
{
int optimal_size;
- optimal_size = ((buffer->input_buffer_size / INPUT_BUFFER_BLOCK_SIZE) *
- INPUT_BUFFER_BLOCK_SIZE) + INPUT_BUFFER_BLOCK_SIZE;
- if (buffer->input_buffer_alloc != optimal_size)
+ if (buffer->has_input)
{
- buffer->input_buffer_alloc = optimal_size;
- buffer->input_buffer = realloc (buffer->input_buffer, optimal_size);
+ optimal_size = ((buffer->input_buffer_size / INPUT_BUFFER_BLOCK_SIZE) *
+ INPUT_BUFFER_BLOCK_SIZE) + INPUT_BUFFER_BLOCK_SIZE;
+ if (buffer->input_buffer_alloc != optimal_size)
+ {
+ buffer->input_buffer_alloc = optimal_size;
+ buffer->input_buffer = realloc (buffer->input_buffer, optimal_size);
+ }
}
}
/*
- * gui_input_insert_string: insert a string into the input buffer
+ * gui_input_clipboard_copy: copy string into clipboard
*/
void
-gui_input_insert_string (char *string, int pos)
+gui_input_clipboard_copy (char *buffer, int size)
{
- int i, start, end, length;
+ if (size <= 0)
+ return;
- length = strlen (string);
+ if (gui_input_clipboard != NULL)
+ free(gui_input_clipboard);
- /* increase buffer size */
- gui_current_window->buffer->input_buffer_size += length;
- gui_input_optimize_buffer_size (gui_current_window->buffer);
- gui_current_window->buffer->input_buffer[gui_current_window->buffer->input_buffer_size] = '\0';
+ gui_input_clipboard = (char *) malloc( (size + 1) * sizeof(*gui_input_clipboard));
- /* move end of string to the right */
- start = pos + length;
- end = gui_current_window->buffer->input_buffer_size - 1;
- for (i = end; i >= start; i--)
- gui_current_window->buffer->input_buffer[i] =
- gui_current_window->buffer->input_buffer[i - length];
+ if (gui_input_clipboard)
+ {
+ memcpy(gui_input_clipboard, buffer, size);
+ gui_input_clipboard[size] = '\0';
+ }
+}
+
+/*
+ * gui_input_clipboard_paste: paste clipboard at cursor pos in input line
+ */
+
+void
+gui_input_clipboard_paste ()
+{
+ if (gui_current_window->buffer->has_input && gui_input_clipboard)
+ {
+ gui_input_insert_string (gui_input_clipboard, gui_current_window->buffer->input_buffer_pos);
+ gui_current_window->buffer->input_buffer_pos += strlen (gui_input_clipboard);
+ gui_draw_buffer_input (gui_current_window->buffer, 0);
+ gui_current_window->buffer->completion.position = -1;
+ }
+}
+
+/*
+ * gui_input_insert_string: insert a string into the input buffer
+ * if pos == -1, string is inserted at cursor position
+ */
+
+void
+gui_input_insert_string (char *string, int pos)
+{
+ int i, start, end, length;
- /* insert new string */
- strncpy (gui_current_window->buffer->input_buffer + pos, string, length);
+ if (gui_current_window->buffer->has_input)
+ {
+ if (pos == -1)
+ pos = gui_current_window->buffer->input_buffer_pos;
+
+ length = strlen (string);
+
+ /* increase buffer size */
+ gui_current_window->buffer->input_buffer_size += length;
+ gui_input_optimize_buffer_size (gui_current_window->buffer);
+ gui_current_window->buffer->input_buffer[gui_current_window->buffer->input_buffer_size] = '\0';
+
+ /* move end of string to the right */
+ start = pos + length;
+ end = gui_current_window->buffer->input_buffer_size - 1;
+ for (i = end; i >= start; i--)
+ gui_current_window->buffer->input_buffer[i] =
+ gui_current_window->buffer->input_buffer[i - length];
+
+ /* insert new string */
+ strncpy (gui_current_window->buffer->input_buffer + pos, string, length);
+ }
}
/*
@@ -683,7 +737,7 @@ gui_input_insert_char (int key)
break;
}
}
- else
+ else if (gui_current_window->buffer->has_input)
{
/*gui_printf (gui_current_window->buffer,
"[Debug] key pressed = %d, hex = %02X, octal = %o\n", key, key, key);*/
@@ -707,7 +761,7 @@ gui_input_return ()
{
t_gui_buffer *ptr_buffer;
- if (!gui_current_window->buffer->dcc)
+ if (gui_current_window->buffer->has_input)
{
if (gui_current_window->buffer->input_buffer_size > 0)
{
@@ -740,7 +794,7 @@ gui_input_tab ()
{
int i;
- if (!gui_current_window->buffer->dcc)
+ if (gui_current_window->buffer->has_input)
{
completion_search (&(gui_current_window->buffer->completion),
CHANNEL(gui_current_window->buffer),
@@ -837,7 +891,7 @@ gui_input_backspace ()
{
int i;
- if (!gui_current_window->buffer->dcc)
+ if (gui_current_window->buffer->has_input)
{
if (gui_current_window->buffer->input_buffer_pos > 0)
{
@@ -867,7 +921,7 @@ gui_input_delete ()
{
int i;
- if (!gui_current_window->buffer->dcc)
+ if (gui_current_window->buffer->has_input)
{
if (gui_current_window->buffer->input_buffer_pos <
gui_current_window->buffer->input_buffer_size)
@@ -897,46 +951,49 @@ gui_input_delete_previous_word ()
{
int i, j, num_char_deleted, num_char_end;
- if (gui_current_window->buffer->input_buffer_pos > 0)
+ if (gui_current_window->buffer->has_input)
{
- i = gui_current_window->buffer->input_buffer_pos - 1;
- while ((i >= 0) &&
- (gui_current_window->buffer->input_buffer[i] == ' '))
- i--;
- if (i >= 0)
+ if (gui_current_window->buffer->input_buffer_pos > 0)
{
+ i = gui_current_window->buffer->input_buffer_pos - 1;
while ((i >= 0) &&
- (gui_current_window->buffer->input_buffer[i] != ' '))
+ (gui_current_window->buffer->input_buffer[i] == ' '))
i--;
if (i >= 0)
{
while ((i >= 0) &&
- (gui_current_window->buffer->input_buffer[i] == ' '))
+ (gui_current_window->buffer->input_buffer[i] != ' '))
i--;
+ if (i >= 0)
+ {
+ while ((i >= 0) &&
+ (gui_current_window->buffer->input_buffer[i] == ' '))
+ i--;
+ }
}
- }
-
- if (i >= 0)
+
+ if (i >= 0)
+ i++;
i++;
- i++;
- num_char_deleted = gui_current_window->buffer->input_buffer_pos - i;
- num_char_end = gui_current_window->buffer->input_buffer_size -
- gui_current_window->buffer->input_buffer_pos;
-
- gui_input_clipboard_copy(gui_current_window->buffer->input_buffer +
- gui_current_window->buffer->input_buffer_pos - num_char_deleted,
- num_char_deleted);
-
- for (j = 0; j < num_char_end; j++)
- gui_current_window->buffer->input_buffer[i + j] =
- gui_current_window->buffer->input_buffer[gui_current_window->buffer->input_buffer_pos + j];
-
- gui_current_window->buffer->input_buffer_size -= num_char_deleted;
- gui_current_window->buffer->input_buffer[gui_current_window->buffer->input_buffer_size] = '\0';
- gui_current_window->buffer->input_buffer_pos = i;
- gui_draw_buffer_input (gui_current_window->buffer, 0);
- gui_input_optimize_buffer_size (gui_current_window->buffer);
- gui_current_window->buffer->completion.position = -1;
+ num_char_deleted = gui_current_window->buffer->input_buffer_pos - i;
+ num_char_end = gui_current_window->buffer->input_buffer_size -
+ gui_current_window->buffer->input_buffer_pos;
+
+ gui_input_clipboard_copy(gui_current_window->buffer->input_buffer +
+ gui_current_window->buffer->input_buffer_pos - num_char_deleted,
+ num_char_deleted);
+
+ for (j = 0; j < num_char_end; j++)
+ gui_current_window->buffer->input_buffer[i + j] =
+ gui_current_window->buffer->input_buffer[gui_current_window->buffer->input_buffer_pos + j];
+
+ gui_current_window->buffer->input_buffer_size -= num_char_deleted;
+ gui_current_window->buffer->input_buffer[gui_current_window->buffer->input_buffer_size] = '\0';
+ gui_current_window->buffer->input_buffer_pos = i;
+ gui_draw_buffer_input (gui_current_window->buffer, 0);
+ gui_input_optimize_buffer_size (gui_current_window->buffer);
+ gui_current_window->buffer->completion.position = -1;
+ }
}
}
@@ -949,28 +1006,31 @@ gui_input_delete_next_word ()
{
int i, j, num_char_deleted;
- i = gui_current_window->buffer->input_buffer_pos;
- while (i < gui_current_window->buffer->input_buffer_size)
+ if (gui_current_window->buffer->has_input)
{
- if ((gui_current_window->buffer->input_buffer[i] == ' ')
- && i != gui_current_window->buffer->input_buffer_pos)
- break;
- i++;
+ i = gui_current_window->buffer->input_buffer_pos;
+ while (i < gui_current_window->buffer->input_buffer_size)
+ {
+ if ((gui_current_window->buffer->input_buffer[i] == ' ')
+ && i != gui_current_window->buffer->input_buffer_pos)
+ break;
+ i++;
+ }
+ num_char_deleted = i - gui_current_window->buffer->input_buffer_pos;
+
+ gui_input_clipboard_copy(gui_current_window->buffer->input_buffer +
+ gui_current_window->buffer->input_buffer_pos, num_char_deleted);
+
+ for (j = i; j < gui_current_window->buffer->input_buffer_size; j++)
+ gui_current_window->buffer->input_buffer[j - num_char_deleted] =
+ gui_current_window->buffer->input_buffer[j];
+
+ gui_current_window->buffer->input_buffer_size -= num_char_deleted;
+ gui_current_window->buffer->input_buffer[gui_current_window->buffer->input_buffer_size] = '\0';
+ gui_draw_buffer_input (gui_current_window->buffer, 0);
+ gui_input_optimize_buffer_size (gui_current_window->buffer);
+ gui_current_window->buffer->completion.position = -1;
}
- num_char_deleted = i - gui_current_window->buffer->input_buffer_pos;
-
- gui_input_clipboard_copy(gui_current_window->buffer->input_buffer +
- gui_current_window->buffer->input_buffer_pos, num_char_deleted);
-
- for (j = i; j < gui_current_window->buffer->input_buffer_size; j++)
- gui_current_window->buffer->input_buffer[j - num_char_deleted] =
- gui_current_window->buffer->input_buffer[j];
-
- gui_current_window->buffer->input_buffer_size -= num_char_deleted;
- gui_current_window->buffer->input_buffer[gui_current_window->buffer->input_buffer_size] = '\0';
- gui_draw_buffer_input (gui_current_window->buffer, 0);
- gui_input_optimize_buffer_size (gui_current_window->buffer);
- gui_current_window->buffer->completion.position = -1;
}
/*
@@ -980,25 +1040,28 @@ gui_input_delete_next_word ()
void
gui_input_delete_begin_of_line ()
{
- if (gui_current_window->buffer->input_buffer_pos > 0)
+ int i;
+
+ if (gui_current_window->buffer->has_input)
{
- int i;
-
- gui_input_clipboard_copy(gui_current_window->buffer->input_buffer,
- gui_current_window->buffer->input_buffer_pos);
-
- for (i = gui_current_window->buffer->input_buffer_pos;
- i < gui_current_window->buffer->input_buffer_size; i++)
- gui_current_window->buffer->input_buffer[i - gui_current_window->buffer->input_buffer_pos] =
- gui_current_window->buffer->input_buffer[i];
-
- gui_current_window->buffer->input_buffer_size -=
- gui_current_window->buffer->input_buffer_pos;
- gui_current_window->buffer->input_buffer[gui_current_window->buffer->input_buffer_size] = '\0';
- gui_current_window->buffer->input_buffer_pos = 0;
- gui_draw_buffer_input (gui_current_window->buffer, 0);
- gui_input_optimize_buffer_size (gui_current_window->buffer);
- gui_current_window->buffer->completion.position = -1;
+ if (gui_current_window->buffer->input_buffer_pos > 0)
+ {
+ gui_input_clipboard_copy (gui_current_window->buffer->input_buffer,
+ gui_current_window->buffer->input_buffer_pos);
+
+ for (i = gui_current_window->buffer->input_buffer_pos;
+ i < gui_current_window->buffer->input_buffer_size; i++)
+ gui_current_window->buffer->input_buffer[i - gui_current_window->buffer->input_buffer_pos] =
+ gui_current_window->buffer->input_buffer[i];
+
+ gui_current_window->buffer->input_buffer_size -=
+ gui_current_window->buffer->input_buffer_pos;
+ gui_current_window->buffer->input_buffer[gui_current_window->buffer->input_buffer_size] = '\0';
+ gui_current_window->buffer->input_buffer_pos = 0;
+ gui_draw_buffer_input (gui_current_window->buffer, 0);
+ gui_input_optimize_buffer_size (gui_current_window->buffer);
+ gui_current_window->buffer->completion.position = -1;
+ }
}
}
@@ -1009,16 +1072,19 @@ gui_input_delete_begin_of_line ()
void
gui_input_delete_end_of_line ()
{
- gui_input_clipboard_copy(gui_current_window->buffer->input_buffer +
- gui_current_window->buffer->input_buffer_pos,
- gui_current_window->buffer->input_buffer_size -
- gui_current_window->buffer->input_buffer_pos);
- gui_current_window->buffer->input_buffer[gui_current_window->buffer->input_buffer_pos] = ' ';
- gui_current_window->buffer->input_buffer_size = gui_current_window->buffer->input_buffer_pos ;
- gui_current_window->buffer->input_buffer[gui_current_window->buffer->input_buffer_size] = '\0';
- gui_draw_buffer_input (gui_current_window->buffer, 0);
- gui_input_optimize_buffer_size (gui_current_window->buffer);
- gui_current_window->buffer->completion.position = -1;
+ if (gui_current_window->buffer->has_input)
+ {
+ gui_input_clipboard_copy(gui_current_window->buffer->input_buffer +
+ gui_current_window->buffer->input_buffer_pos,
+ gui_current_window->buffer->input_buffer_size -
+ gui_current_window->buffer->input_buffer_pos);
+ gui_current_window->buffer->input_buffer[gui_current_window->buffer->input_buffer_pos] = ' ';
+ gui_current_window->buffer->input_buffer_size = gui_current_window->buffer->input_buffer_pos ;
+ gui_current_window->buffer->input_buffer[gui_current_window->buffer->input_buffer_size] = '\0';
+ gui_draw_buffer_input (gui_current_window->buffer, 0);
+ gui_input_optimize_buffer_size (gui_current_window->buffer);
+ gui_current_window->buffer->completion.position = -1;
+ }
}
/*
@@ -1028,12 +1094,15 @@ gui_input_delete_end_of_line ()
void
gui_input_delete_line ()
{
- gui_current_window->buffer->input_buffer[0] = '\0';
- gui_current_window->buffer->input_buffer_size = 0;
- gui_current_window->buffer->input_buffer_pos = 0;
- gui_draw_buffer_input (gui_current_window->buffer, 0);
- gui_input_optimize_buffer_size (gui_current_window->buffer);
- gui_current_window->buffer->completion.position = -1;
+ if (gui_current_window->buffer->has_input)
+ {
+ gui_current_window->buffer->input_buffer[0] = '\0';
+ gui_current_window->buffer->input_buffer_size = 0;
+ gui_current_window->buffer->input_buffer_pos = 0;
+ gui_draw_buffer_input (gui_current_window->buffer, 0);
+ gui_input_optimize_buffer_size (gui_current_window->buffer);
+ gui_current_window->buffer->completion.position = -1;
+ }
}
/*
@@ -1046,59 +1115,24 @@ gui_input_transpose_chars ()
char buf;
int curpos;
- if (gui_current_window->buffer->input_buffer_pos > 0)
- {
- curpos = gui_current_window->buffer->input_buffer_pos;
- if (curpos == gui_current_window->buffer->input_buffer_size)
- curpos--;
- else
- gui_current_window->buffer->input_buffer_pos++;
-
- buf = gui_current_window->buffer->input_buffer[curpos];
- gui_current_window->buffer->input_buffer[curpos] =
- gui_current_window->buffer->input_buffer[curpos-1];
- gui_current_window->buffer->input_buffer[curpos-1] = buf;
-
- gui_draw_buffer_input (gui_current_window->buffer, 0);
- gui_current_window->buffer->completion.position = -1;
- }
-}
-
-/*
- * gui_input_clipboard_paste: paste clipboard at cursor pos in input line
- */
-
-void
-gui_input_clipboard_paste ()
-{
- if (gui_input_clipboard)
- {
- gui_input_insert_string(gui_input_clipboard, gui_current_window->buffer->input_buffer_pos);
- gui_current_window->buffer->input_buffer_pos += strlen(gui_input_clipboard);
- gui_draw_buffer_input (gui_current_window->buffer, 0);
- gui_current_window->buffer->completion.position = -1;
- }
-}
-
-/*
- * gui_input_clipboard_copy: copy string into clipboard
- */
-
-void
-gui_input_clipboard_copy (char *buffer, int size)
-{
- if (size <= 0)
- return;
-
- if (gui_input_clipboard != NULL)
- free(gui_input_clipboard);
-
- gui_input_clipboard = (char *) malloc( (size + 1) * sizeof(*gui_input_clipboard));
-
- if (gui_input_clipboard)
+ if (gui_current_window->buffer->has_input)
{
- memcpy(gui_input_clipboard, buffer, size);
- gui_input_clipboard[size] = '\0';
+ if (gui_current_window->buffer->input_buffer_pos > 0)
+ {
+ curpos = gui_current_window->buffer->input_buffer_pos;
+ if (curpos == gui_current_window->buffer->input_buffer_size)
+ curpos--;
+ else
+ gui_current_window->buffer->input_buffer_pos++;
+
+ buf = gui_current_window->buffer->input_buffer[curpos];
+ gui_current_window->buffer->input_buffer[curpos] =
+ gui_current_window->buffer->input_buffer[curpos-1];
+ gui_current_window->buffer->input_buffer[curpos-1] = buf;
+
+ gui_draw_buffer_input (gui_current_window->buffer, 0);
+ gui_current_window->buffer->completion.position = -1;
+ }
}
}
@@ -1109,7 +1143,7 @@ gui_input_clipboard_copy (char *buffer, int size)
void
gui_input_home ()
{
- if (!gui_current_window->buffer->dcc)
+ if (gui_current_window->buffer->has_input)
{
if (gui_current_window->buffer->input_buffer_pos > 0)
{
@@ -1126,7 +1160,7 @@ gui_input_home ()
void
gui_input_end ()
{
- if (!gui_current_window->buffer->dcc)
+ if (gui_current_window->buffer->has_input)
{
if (gui_current_window->buffer->input_buffer_pos <
gui_current_window->buffer->input_buffer_size)
@@ -1145,7 +1179,7 @@ gui_input_end ()
void
gui_input_left ()
{
- if (!gui_current_window->buffer->dcc)
+ if (gui_current_window->buffer->has_input)
{
if (gui_current_window->buffer->input_buffer_pos > 0)
{
@@ -1164,22 +1198,25 @@ gui_input_previous_word ()
{
int i;
- if (gui_current_window->buffer->input_buffer_pos > 0)
+ if (gui_current_window->buffer->has_input)
{
- i = gui_current_window->buffer->input_buffer_pos - 1;
- while ((i >= 0) &&
- (gui_current_window->buffer->input_buffer[i] == ' '))
- i--;
- if (i < 0)
- gui_current_window->buffer->input_buffer_pos = 0;
- else
+ if (gui_current_window->buffer->input_buffer_pos > 0)
{
+ i = gui_current_window->buffer->input_buffer_pos - 1;
while ((i >= 0) &&
- (gui_current_window->buffer->input_buffer[i] != ' '))
+ (gui_current_window->buffer->input_buffer[i] == ' '))
i--;
- gui_current_window->buffer->input_buffer_pos = i + 1;
+ if (i < 0)
+ gui_current_window->buffer->input_buffer_pos = 0;
+ else
+ {
+ while ((i >= 0) &&
+ (gui_current_window->buffer->input_buffer[i] != ' '))
+ i--;
+ gui_current_window->buffer->input_buffer_pos = i + 1;
+ }
+ gui_draw_buffer_input (gui_current_window->buffer, 0);
}
- gui_draw_buffer_input (gui_current_window->buffer, 0);
}
}
@@ -1190,7 +1227,7 @@ gui_input_previous_word ()
void
gui_input_right ()
{
- if (!gui_current_window->buffer->dcc)
+ if (gui_current_window->buffer->has_input)
{
if (gui_current_window->buffer->input_buffer_pos <
gui_current_window->buffer->input_buffer_size)
@@ -1210,28 +1247,31 @@ gui_input_next_word ()
{
int i;
- if (gui_current_window->buffer->input_buffer_pos <
- gui_current_window->buffer->input_buffer_size + 1)
+ if (gui_current_window->buffer->has_input)
{
- i = gui_current_window->buffer->input_buffer_pos;
- while ((i <= gui_current_window->buffer->input_buffer_size) &&
- (gui_current_window->buffer->input_buffer[i] == ' '))
- i++;
- if (i > gui_current_window->buffer->input_buffer_size)
- gui_current_window->buffer->input_buffer_pos = i - 1;
- else
+ if (gui_current_window->buffer->input_buffer_pos <
+ gui_current_window->buffer->input_buffer_size + 1)
{
+ i = gui_current_window->buffer->input_buffer_pos;
while ((i <= gui_current_window->buffer->input_buffer_size) &&
- (gui_current_window->buffer->input_buffer[i] != ' '))
+ (gui_current_window->buffer->input_buffer[i] == ' '))
i++;
if (i > gui_current_window->buffer->input_buffer_size)
- gui_current_window->buffer->input_buffer_pos =
- gui_current_window->buffer->input_buffer_size;
+ gui_current_window->buffer->input_buffer_pos = i - 1;
else
- gui_current_window->buffer->input_buffer_pos = i;
-
+ {
+ while ((i <= gui_current_window->buffer->input_buffer_size) &&
+ (gui_current_window->buffer->input_buffer[i] != ' '))
+ i++;
+ if (i > gui_current_window->buffer->input_buffer_size)
+ gui_current_window->buffer->input_buffer_pos =
+ gui_current_window->buffer->input_buffer_size;
+ else
+ gui_current_window->buffer->input_buffer_pos = i;
+
+ }
+ gui_draw_buffer_input (gui_current_window->buffer, 0);
}
- gui_draw_buffer_input (gui_current_window->buffer, 0);
}
}
@@ -1260,7 +1300,7 @@ gui_input_up ()
}
}
}
- else
+ else if (gui_current_window->buffer->has_input)
{
if (gui_current_window->buffer->ptr_history)
{
@@ -1323,7 +1363,7 @@ gui_input_down ()
}
}
}
- else
+ else if (gui_current_window->buffer->has_input)
{
if (gui_current_window->buffer->ptr_history)
{
@@ -1400,7 +1440,7 @@ gui_input_jump_dcc ()
void
gui_input_jump_server ()
{
- if (!gui_current_window->buffer->dcc)
+ if (SERVER(gui_current_window->buffer))
{
if (SERVER(gui_current_window->buffer)->buffer !=
gui_current_window->buffer)
@@ -1422,7 +1462,7 @@ gui_input_jump_next_server ()
t_irc_server *ptr_server;
t_gui_buffer *ptr_buffer;
- if (!gui_current_window->buffer->dcc)
+ if (SERVER(gui_current_window->buffer))
{
ptr_server = SERVER(gui_current_window->buffer)->next_server;
if (!ptr_server)
@@ -1471,6 +1511,17 @@ gui_input_infobar_clear ()
}
/*
+ * gui_input_grab_key: init "grab key mode" (next key will be inserted into input buffer)
+ */
+
+void
+gui_input_grab_key ()
+{
+ if (gui_current_window->buffer->has_input)
+ gui_key_init_grab ();
+}
+
+/*
* gui_switch_to_previous_buffer: switch to previous buffer
*/
@@ -1740,6 +1791,7 @@ gui_buffer_print_log (t_gui_buffer *buffer)
wee_log_printf (" notify_level . . . . : %d\n", buffer->notify_level);
wee_log_printf (" log_filename . . . . : '%s'\n", buffer->log_filename);
wee_log_printf (" log_file . . . . . . : 0x%X\n", buffer->log_file);
+ wee_log_printf (" has_input. . . . . . : %d\n", buffer->has_input);
wee_log_printf (" input_buffer . . . . : '%s'\n", buffer->input_buffer);
wee_log_printf (" input_buffer_alloc . : %d\n", buffer->input_buffer_alloc);
wee_log_printf (" input_buffer_size. . : %d\n", buffer->input_buffer_size);
diff --git a/src/gui/gui-keyboard.c b/src/gui/gui-keyboard.c
index ed3e6fc4f..b6cd3bac7 100644
--- a/src/gui/gui-keyboard.c
+++ b/src/gui/gui-keyboard.c
@@ -37,6 +37,8 @@ t_gui_key *gui_keys = NULL;
t_gui_key *last_gui_key = NULL;
char gui_key_buffer[128];
+int gui_key_grab = 0;
+int gui_key_grab_count = 0;
t_gui_key_function gui_key_functions[] =
{ { "return", gui_input_return,
@@ -57,9 +59,9 @@ t_gui_key_function gui_key_functions[] =
N_("delete previous word") },
{ "delete_next_word", gui_input_delete_next_word,
N_("delete next word") },
- { "clipboard_paste", gui_input_clipboard_paste,
+ { "clipboard_paste", gui_input_clipboard_paste,
N_("paste current clipboard content") },
- { "transpose_chars", gui_input_transpose_chars,
+ { "transpose_chars", gui_input_transpose_chars,
N_("transpose chars") },
{ "home", gui_input_home,
N_("go to beginning of line") },
@@ -103,6 +105,8 @@ t_gui_key_function gui_key_functions[] =
N_("jump to next server") },
{ "hotlist_clear", gui_input_hotlist_clear,
N_("clear hotlist") },
+ { "grab_key", gui_input_grab_key,
+ N_("grab a key") },
{ NULL, NULL, NULL }
};
@@ -115,11 +119,24 @@ void
gui_key_init ()
{
gui_key_buffer[0] = '\0';
+ gui_key_grab = 0;
+ gui_key_grab_count = 0;
gui_input_default_key_bindings ();
}
/*
+ * gui_key_init_show: init "show mode"
+ */
+
+void
+gui_key_init_grab ()
+{
+ gui_key_grab = 1;
+ gui_key_grab_count = 0;
+}
+
+/*
* gui_key_get_internal_code: get internal code from user key name
* for example: return "^R" for "ctrl-R"
*/
@@ -187,7 +204,7 @@ gui_key_get_expanded_name (char *key)
strcat (result, "meta-");
key += 2;
}
- else if (key[0] == '^')
+ else if ((key[0] == '^') && (key[1]))
{
strcat (result, "ctrl-");
key++;
@@ -466,8 +483,18 @@ gui_key_pressed (char *key_str)
int first_key;
t_gui_key *ptr_key;
+ /* add key to buffer */
first_key = (gui_key_buffer[0] == '\0');
strcat (gui_key_buffer, key_str);
+
+ /* if we are in "show mode", increase counter and return */
+ if (gui_key_grab)
+ {
+ gui_key_grab_count++;
+ return 0;
+ }
+
+ /* look for key combo in key table */
ptr_key = gui_key_search_part (gui_key_buffer);
if (ptr_key)
{
@@ -482,8 +509,6 @@ gui_key_pressed (char *key_str)
else
(void)(ptr_key->function)();
}
- //else
- // gui_printf (gui_current_window->buffer, "partial key found\n");
return 0;
}
diff --git a/src/gui/gui.h b/src/gui/gui.h
index 5050979f6..953522e66 100644
--- a/src/gui/gui.h
+++ b/src/gui/gui.h
@@ -104,6 +104,9 @@
#define NOTIFY_LEVEL_MAX 3
#define NOTIFY_LEVEL_DEFAULT NOTIFY_LEVEL_MAX
+#define KEY_SHOW_MODE_DISPLAY 1
+#define KEY_SHOW_MODE_BIND 2
+
typedef struct t_gui_message t_gui_message;
struct t_gui_message
@@ -180,6 +183,7 @@ struct t_gui_buffer
FILE *log_file; /* for logging buffer to file */
/* inupt buffer */
+ int has_input; /* = 1 if buffer has input (DCC has not)*/
char *input_buffer; /* input buffer */
int input_buffer_alloc; /* input buffer: allocated size in mem */
int input_buffer_size; /* buffer size (user input length) */
@@ -292,6 +296,9 @@ extern t_gui_infobar *gui_infobar;
extern t_gui_key *gui_keys;
extern t_gui_key *last_gui_key;
extern t_gui_key_function gui_key_functions[];
+extern char gui_key_buffer[128];
+extern int gui_key_grab;
+extern int gui_key_grab_count;
extern char *gui_input_clipboard;
/* GUI independent functions: windows & buffers */
@@ -306,8 +313,9 @@ extern void gui_infobar_remove ();
extern void gui_buffer_free (t_gui_buffer *, int);
extern t_gui_line *gui_new_line (t_gui_buffer *);
extern t_gui_message *gui_new_message (t_gui_buffer *);
-extern void gui_input_clipboard_paste ();
extern void gui_input_clipboard_copy (char *, int);
+extern void gui_input_clipboard_paste ();
+extern void gui_input_insert_string (char *, int);
extern void gui_input_insert_char ();
extern void gui_input_return ();
extern void gui_input_tab ();
@@ -333,6 +341,7 @@ extern void gui_input_jump_server ();
extern void gui_input_jump_next_server ();
extern void gui_input_hotlist_clear ();
extern void gui_input_infobar_clear ();
+extern void gui_input_grab_key ();
extern void gui_switch_to_previous_buffer ();
extern void gui_switch_to_next_buffer ();
extern void gui_switch_to_previous_window ();
@@ -345,6 +354,7 @@ extern void gui_buffer_print_log (t_gui_buffer *);
/* GUI independent functions: keys */
extern void gui_key_init ();
+extern void gui_key_init_grab ();
extern char *gui_key_get_internal_code (char *);
extern char *gui_key_get_expanded_name (char *);
extern void *gui_key_function_search_by_name (char *);
diff --git a/weechat/ChangeLog b/weechat/ChangeLog
index 288096021..d03a74624 100644
--- a/weechat/ChangeLog
+++ b/weechat/ChangeLog
@@ -1,7 +1,7 @@
WeeChat - Wee Enhanced Environment for Chat
===========================================
-ChangeLog - 2005-07-14
+ChangeLog - 2005-07-16
Version 0.1.4 (under dev!):
@@ -15,7 +15,8 @@ Version 0.1.4 (under dev!):
* topic completion now decodes UTF-8 string
* fixed bug with IRC URL on command line (irc://)
* new keyboard management: keys are setup in config file, new command
- /key was added and some new default keys were added
+ /key was added and some new default keys were added, alt-k key is
+ used to grab key (useful for /key command)
* added seconds in infobar time (optional thanks to new setting)
* fixed some curses refreshs
* channels auto-prefixed by "#" (if no prefix found) for /join command
diff --git a/weechat/po/es.po b/weechat/po/es.po
index 3da29d36c..b07946241 100644
--- a/weechat/po/es.po
+++ b/weechat/po/es.po
@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat 0.1.4-cvs\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2005-07-13 19:29+0200\n"
-"PO-Revision-Date: 2005-07-13 19:30+0200\n"
+"POT-Creation-Date: 2005-07-16 13:11+0200\n"
+"PO-Revision-Date: 2005-07-16 13:12+0200\n"
"Last-Translator: Roberto González Cardenete <robert.glez@gmail.com>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
"MIME-Version: 1.0\n"
@@ -2119,7 +2119,7 @@ msgstr ""
"%s no ha sido posible añadir el manejador para el mensaje \"%s\" (memoria "
"insuficiente)\n"
-#: src/gui/curses/gui-input.c:300
+#: src/gui/curses/gui-input.c:337
#, c-format
msgid "%s lag is high, disconnecting from server...\n"
msgstr "%s el lag (retraso) es alto, desconectando del servidor...\n"
@@ -2140,44 +2140,44 @@ msgstr "MB"
msgid "Gb"
msgstr "GB"
-#: src/gui/curses/gui-display.c:1116
+#: src/gui/curses/gui-display.c:1119
msgid "(away)"
msgstr "(ausente)"
-#: src/gui/curses/gui-display.c:1233
+#: src/gui/curses/gui-display.c:1236
msgid "[not connected]"
msgstr "[no conectado]"
-#: src/gui/curses/gui-display.c:1249
+#: src/gui/curses/gui-display.c:1252
msgid "Act: "
msgstr "Act: "
-#: src/gui/curses/gui-display.c:1302
+#: src/gui/curses/gui-display.c:1305
#, c-format
msgid "Lag: %.1f"
msgstr "Lag: %.1f"
-#: src/gui/curses/gui-display.c:1323
+#: src/gui/curses/gui-display.c:1326
msgid "-MORE-"
msgstr "-MÁS-"
-#: src/gui/curses/gui-display.c:1563
+#: src/gui/curses/gui-display.c:1565
msgid " [A] Accept"
msgstr " [A] Aceptar"
-#: src/gui/curses/gui-display.c:1564 src/gui/curses/gui-display.c:1568
+#: src/gui/curses/gui-display.c:1566 src/gui/curses/gui-display.c:1570
msgid " [C] Cancel"
msgstr " [C] Cancelar"
-#: src/gui/curses/gui-display.c:1573
+#: src/gui/curses/gui-display.c:1575
msgid " [R] Remove"
msgstr " [R] Eliminar"
-#: src/gui/curses/gui-display.c:1577
+#: src/gui/curses/gui-display.c:1579
msgid " [P] Purge old DCC"
msgstr " [P] Purgar los viejos DCC"
-#: src/gui/curses/gui-display.c:1578
+#: src/gui/curses/gui-display.c:1580
msgid " [Q] Close DCC view"
msgstr " [Q] Cerrar la vista DCC"
@@ -2185,159 +2185,163 @@ msgstr " [Q] Cerrar la vista DCC"
msgid "server"
msgstr "servidor"
-#: src/gui/gui-common.c:334
+#: src/gui/gui-common.c:340
msgid "Not enough memory for infobar message\n"
msgstr "No hay suficiente memoria para el mensaje de la barra de información\n"
-#: src/gui/gui-common.c:509
+#: src/gui/gui-common.c:515
msgid "Not enough memory for new line\n"
msgstr "No hay suficiente memoria para una nueva línea\n"
-#: src/gui/gui-common.c:552
+#: src/gui/gui-common.c:558
msgid "Not enough memory for new message\n"
msgstr "No hay suficiente memoria para el mensaje de la barra de información\n"
-#: src/gui/gui-keyboard.c:43
+#: src/gui/gui-keyboard.c:45
msgid "terminate line"
msgstr "terminar línea"
-#: src/gui/gui-keyboard.c:45
+#: src/gui/gui-keyboard.c:47
msgid "complete word"
msgstr "completar palabra"
-#: src/gui/gui-keyboard.c:47
+#: src/gui/gui-keyboard.c:49
msgid "delete previous char"
msgstr "borrar el carácter anterior"
-#: src/gui/gui-keyboard.c:49
+#: src/gui/gui-keyboard.c:51
msgid "delete next char"
msgstr "borrar el carácter siguiente"
-#: src/gui/gui-keyboard.c:51
+#: src/gui/gui-keyboard.c:53
msgid "delete until end of line"
msgstr "borrar hasta fin de línea"
-#: src/gui/gui-keyboard.c:53
+#: src/gui/gui-keyboard.c:55
msgid "delete until beginning of line"
msgstr "borrar hasta principio de línea"
-#: src/gui/gui-keyboard.c:55
+#: src/gui/gui-keyboard.c:57
msgid "delete entire line"
msgstr "borrar línea entera"
-#: src/gui/gui-keyboard.c:57
+#: src/gui/gui-keyboard.c:59
msgid "delete previous word"
msgstr "borrar la palabra anterior"
-#: src/gui/gui-keyboard.c:59
+#: src/gui/gui-keyboard.c:61
msgid "delete next word"
msgstr "borrar la palabra siguiente"
-#: src/gui/gui-keyboard.c:61
+#: src/gui/gui-keyboard.c:63
msgid "paste current clipboard content"
msgstr ""
-#: src/gui/gui-keyboard.c:63
+#: src/gui/gui-keyboard.c:65
msgid "transpose chars"
msgstr ""
-#: src/gui/gui-keyboard.c:65
+#: src/gui/gui-keyboard.c:67
msgid "go to beginning of line"
msgstr "ir al principio de línea"
-#: src/gui/gui-keyboard.c:67
+#: src/gui/gui-keyboard.c:69
msgid "go to end of line"
msgstr "ir al final de línea"
-#: src/gui/gui-keyboard.c:69
+#: src/gui/gui-keyboard.c:71
msgid "move one char left"
msgstr "mover un carácter a la izquierda"
-#: src/gui/gui-keyboard.c:71
+#: src/gui/gui-keyboard.c:73
msgid "move to previous word"
msgstr "mover a la palabra anterior"
-#: src/gui/gui-keyboard.c:73
+#: src/gui/gui-keyboard.c:75
msgid "move one char right"
msgstr "mover un carácter a la derecha"
-#: src/gui/gui-keyboard.c:75
+#: src/gui/gui-keyboard.c:77
msgid "move to next word"
msgstr "mover a la palabra siguiente"
-#: src/gui/gui-keyboard.c:77
+#: src/gui/gui-keyboard.c:79
msgid "call previous command in history"
msgstr "llamar al comando anterior en el historial"
-#: src/gui/gui-keyboard.c:79
+#: src/gui/gui-keyboard.c:81
msgid "call next command in history"
msgstr "llamar al comando siguiente en el historial"
-#: src/gui/gui-keyboard.c:81
+#: src/gui/gui-keyboard.c:83
msgid "scroll one page up"
msgstr "desplazarse una página hacia arriba"
-#: src/gui/gui-keyboard.c:83
+#: src/gui/gui-keyboard.c:85
msgid "scroll one page down"
msgstr "desplazarse una página hacia abajo"
-#: src/gui/gui-keyboard.c:85
+#: src/gui/gui-keyboard.c:87
msgid "clear infobar"
msgstr "limpiar barra de información"
-#: src/gui/gui-keyboard.c:87
+#: src/gui/gui-keyboard.c:89
msgid "scroll nicklist one page up"
msgstr "desplazar la lista de nicks una página hacia arriba"
-#: src/gui/gui-keyboard.c:89
+#: src/gui/gui-keyboard.c:91
msgid "scroll nicklist one page down"
msgstr "desplazar la lista de nicks una página hacia abajo"
-#: src/gui/gui-keyboard.c:91
+#: src/gui/gui-keyboard.c:93
msgid "display beginning of nicklist"
msgstr "mostrar el principio de la lista de nicks"
-#: src/gui/gui-keyboard.c:93
+#: src/gui/gui-keyboard.c:95
msgid "display end of nicklist"
msgstr "mostrar el final de la lista de nicks"
-#: src/gui/gui-keyboard.c:95
+#: src/gui/gui-keyboard.c:97
msgid "refresh screen"
msgstr "recargar la pantalla"
-#: src/gui/gui-keyboard.c:97
+#: src/gui/gui-keyboard.c:99
msgid "jump to buffer with activity"
msgstr "saltar al búfer con actividad"
-#: src/gui/gui-keyboard.c:99
+#: src/gui/gui-keyboard.c:101
msgid "jump to DCC buffer"
msgstr "saltar al búfer DCC"
-#: src/gui/gui-keyboard.c:101
+#: src/gui/gui-keyboard.c:103
msgid "jump to server buffer"
msgstr "saltar al búfer servidor"
-#: src/gui/gui-keyboard.c:103
+#: src/gui/gui-keyboard.c:105
msgid "jump to next server"
msgstr "saltar al servidor siguiente"
-#: src/gui/gui-keyboard.c:105
+#: src/gui/gui-keyboard.c:107
msgid "clear hotlist"
msgstr "limpiar hotlist"
-#: src/gui/gui-keyboard.c:403 src/common/command.c:1471
+#: src/gui/gui-keyboard.c:109
+msgid "grab a key"
+msgstr ""
+
+#: src/gui/gui-keyboard.c:420 src/common/command.c:1471
#, c-format
msgid "%s unable to bind key \"%s\"\n"
msgstr "%s No ha sido posible atar la clave \"%s\"\n"
-#: src/gui/gui-keyboard.c:414
+#: src/gui/gui-keyboard.c:431
#, c-format
msgid "%s unable to bind key \"%s\" (invalid function name: \"%s\")\n"
msgstr ""
"%s No ha sido posible atar la clave \"%s\" (nombre de función inválido: \"%s"
"\")\n"
-#: src/gui/gui-keyboard.c:427
+#: src/gui/gui-keyboard.c:444
#, c-format
msgid "%s not enough memory for key binding\n"
msgstr "%s no hay suficiente memoria para atar la clave\n"
diff --git a/weechat/po/fr.po b/weechat/po/fr.po
index bd5067dc8..4b083b0d6 100644
--- a/weechat/po/fr.po
+++ b/weechat/po/fr.po
@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat 0.1.4-cvs\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2005-07-13 19:29+0200\n"
-"PO-Revision-Date: 2005-07-13 19:32+0200\n"
+"POT-Creation-Date: 2005-07-16 13:11+0200\n"
+"PO-Revision-Date: 2005-07-16 13:11+0200\n"
"Last-Translator: FlashCode <flashcode@flashtux.org>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
"MIME-Version: 1.0\n"
@@ -2119,7 +2119,7 @@ msgstr ""
"%s impossible d'ajouter la fonction pour le message \"%s\" (mémoire "
"insuffisante)\n"
-#: src/gui/curses/gui-input.c:300
+#: src/gui/curses/gui-input.c:337
#, c-format
msgid "%s lag is high, disconnecting from server...\n"
msgstr "%s le lag est élevé, déconnexion du serveur...\n"
@@ -2140,44 +2140,44 @@ msgstr "Mo"
msgid "Gb"
msgstr "Go"
-#: src/gui/curses/gui-display.c:1116
+#: src/gui/curses/gui-display.c:1119
msgid "(away)"
msgstr "(absent)"
-#: src/gui/curses/gui-display.c:1233
+#: src/gui/curses/gui-display.c:1236
msgid "[not connected]"
msgstr "[non connecté]"
-#: src/gui/curses/gui-display.c:1249
+#: src/gui/curses/gui-display.c:1252
msgid "Act: "
msgstr "Act: "
-#: src/gui/curses/gui-display.c:1302
+#: src/gui/curses/gui-display.c:1305
#, c-format
msgid "Lag: %.1f"
msgstr "Lag: %.1f"
-#: src/gui/curses/gui-display.c:1323
+#: src/gui/curses/gui-display.c:1326
msgid "-MORE-"
msgstr "-PLUS-"
-#: src/gui/curses/gui-display.c:1563
+#: src/gui/curses/gui-display.c:1565
msgid " [A] Accept"
msgstr " [A] Accepter"
-#: src/gui/curses/gui-display.c:1564 src/gui/curses/gui-display.c:1568
+#: src/gui/curses/gui-display.c:1566 src/gui/curses/gui-display.c:1570
msgid " [C] Cancel"
msgstr " [C] Annuler"
-#: src/gui/curses/gui-display.c:1573
+#: src/gui/curses/gui-display.c:1575
msgid " [R] Remove"
msgstr " [R] Retirer"
-#: src/gui/curses/gui-display.c:1577
+#: src/gui/curses/gui-display.c:1579
msgid " [P] Purge old DCC"
msgstr " [P] Purger anciens DCC"
-#: src/gui/curses/gui-display.c:1578
+#: src/gui/curses/gui-display.c:1580
msgid " [Q] Close DCC view"
msgstr " [Q] Fermer la vue DCC"
@@ -2185,158 +2185,162 @@ msgstr " [Q] Fermer la vue DCC"
msgid "server"
msgstr "serveur"
-#: src/gui/gui-common.c:334
+#: src/gui/gui-common.c:340
msgid "Not enough memory for infobar message\n"
msgstr "Pas assez de mémoire pour un message de la barre d'infos\n"
-#: src/gui/gui-common.c:509
+#: src/gui/gui-common.c:515
msgid "Not enough memory for new line\n"
msgstr "Pas assez de mémoire pour une nouvelle ligne !\n"
-#: src/gui/gui-common.c:552
+#: src/gui/gui-common.c:558
msgid "Not enough memory for new message\n"
msgstr "Pas assez de mémoire pour un message de la barre d'infos\n"
-#: src/gui/gui-keyboard.c:43
+#: src/gui/gui-keyboard.c:45
msgid "terminate line"
msgstr "terminer la ligne"
-#: src/gui/gui-keyboard.c:45
+#: src/gui/gui-keyboard.c:47
msgid "complete word"
msgstr "compléter le mot"
-#: src/gui/gui-keyboard.c:47
+#: src/gui/gui-keyboard.c:49
msgid "delete previous char"
msgstr "effacer le caractère précédent"
-#: src/gui/gui-keyboard.c:49
+#: src/gui/gui-keyboard.c:51
msgid "delete next char"
msgstr "effacer le caractère suivant"
-#: src/gui/gui-keyboard.c:51
+#: src/gui/gui-keyboard.c:53
msgid "delete until end of line"
msgstr "effacer jusqu'à la fin de la ligne"
-#: src/gui/gui-keyboard.c:53
+#: src/gui/gui-keyboard.c:55
msgid "delete until beginning of line"
msgstr "effacer jusqu'au début de la ligne"
-#: src/gui/gui-keyboard.c:55
+#: src/gui/gui-keyboard.c:57
msgid "delete entire line"
msgstr "effacer la ligne entière"
-#: src/gui/gui-keyboard.c:57
+#: src/gui/gui-keyboard.c:59
msgid "delete previous word"
msgstr "effacer le mot précédent"
-#: src/gui/gui-keyboard.c:59
+#: src/gui/gui-keyboard.c:61
msgid "delete next word"
msgstr "effacer le mot suivant"
-#: src/gui/gui-keyboard.c:61
+#: src/gui/gui-keyboard.c:63
msgid "paste current clipboard content"
msgstr "coller le contenu du presse-papier"
-#: src/gui/gui-keyboard.c:63
+#: src/gui/gui-keyboard.c:65
msgid "transpose chars"
msgstr "inverser les caractères"
-#: src/gui/gui-keyboard.c:65
+#: src/gui/gui-keyboard.c:67
msgid "go to beginning of line"
msgstr "aller au début de la ligne"
-#: src/gui/gui-keyboard.c:67
+#: src/gui/gui-keyboard.c:69
msgid "go to end of line"
msgstr "aller à la fin de la ligne"
-#: src/gui/gui-keyboard.c:69
+#: src/gui/gui-keyboard.c:71
msgid "move one char left"
msgstr "se déplacer d'un caractère à gauche"
-#: src/gui/gui-keyboard.c:71
+#: src/gui/gui-keyboard.c:73
msgid "move to previous word"
msgstr "se déplacer au mot précédent"
-#: src/gui/gui-keyboard.c:73
+#: src/gui/gui-keyboard.c:75
msgid "move one char right"
msgstr "se déplacer d'un caractère à droite"
-#: src/gui/gui-keyboard.c:75
+#: src/gui/gui-keyboard.c:77
msgid "move to next word"
msgstr "se déplacer au mot suivant"
-#: src/gui/gui-keyboard.c:77
+#: src/gui/gui-keyboard.c:79
msgid "call previous command in history"
msgstr "appeler la commande précédente dans l'historique"
-#: src/gui/gui-keyboard.c:79
+#: src/gui/gui-keyboard.c:81
msgid "call next command in history"
msgstr "appeler la commande suivante dans l'historique"
-#: src/gui/gui-keyboard.c:81
+#: src/gui/gui-keyboard.c:83
msgid "scroll one page up"
msgstr "faire défiler d'une page vers le haut"
-#: src/gui/gui-keyboard.c:83
+#: src/gui/gui-keyboard.c:85
msgid "scroll one page down"
msgstr "faire défiler d'une page vers le bas"
-#: src/gui/gui-keyboard.c:85
+#: src/gui/gui-keyboard.c:87
msgid "clear infobar"
msgstr "effacer la barre d'infos"
-#: src/gui/gui-keyboard.c:87
+#: src/gui/gui-keyboard.c:89
msgid "scroll nicklist one page up"
msgstr "faire défiler la liste des pseudos d'une page vers le haut"
-#: src/gui/gui-keyboard.c:89
+#: src/gui/gui-keyboard.c:91
msgid "scroll nicklist one page down"
msgstr "faire défiler la liste des pseudos d'une page vers le bas"
-#: src/gui/gui-keyboard.c:91
+#: src/gui/gui-keyboard.c:93
msgid "display beginning of nicklist"
msgstr "afficher le début de la liste des pseudos"
-#: src/gui/gui-keyboard.c:93
+#: src/gui/gui-keyboard.c:95
msgid "display end of nicklist"
msgstr "afficher la fin de la liste des pseudos"
-#: src/gui/gui-keyboard.c:95
+#: src/gui/gui-keyboard.c:97
msgid "refresh screen"
msgstr "rafraichir l'écran"
-#: src/gui/gui-keyboard.c:97
+#: src/gui/gui-keyboard.c:99
msgid "jump to buffer with activity"
msgstr "sauter au tampon avec de l'activité"
-#: src/gui/gui-keyboard.c:99
+#: src/gui/gui-keyboard.c:101
msgid "jump to DCC buffer"
msgstr "sauter au tampon DCC"
-#: src/gui/gui-keyboard.c:101
+#: src/gui/gui-keyboard.c:103
msgid "jump to server buffer"
msgstr "sauter au tampon du serveur"
-#: src/gui/gui-keyboard.c:103
+#: src/gui/gui-keyboard.c:105
msgid "jump to next server"
msgstr "sauter au prochain serveur"
-#: src/gui/gui-keyboard.c:105
+#: src/gui/gui-keyboard.c:107
msgid "clear hotlist"
msgstr "effacer la liste d'activité"
-#: src/gui/gui-keyboard.c:403 src/common/command.c:1471
+#: src/gui/gui-keyboard.c:109
+msgid "grab a key"
+msgstr "capturer une touche"
+
+#: src/gui/gui-keyboard.c:420 src/common/command.c:1471
#, c-format
msgid "%s unable to bind key \"%s\"\n"
msgstr "%s impossible de créer la touche \"%s\"\n"
-#: src/gui/gui-keyboard.c:414
+#: src/gui/gui-keyboard.c:431
#, c-format
msgid "%s unable to bind key \"%s\" (invalid function name: \"%s\")\n"
msgstr ""
"%s impossible de créer la touche \"%s\" (nom fonction incorrect: \"%s\")\n"
-#: src/gui/gui-keyboard.c:427
+#: src/gui/gui-keyboard.c:444
#, c-format
msgid "%s not enough memory for key binding\n"
msgstr "%s pas assez de mémoire pour la touche\n"
diff --git a/weechat/po/weechat.pot b/weechat/po/weechat.pot
index 898abe756..635f6259e 100644
--- a/weechat/po/weechat.pot
+++ b/weechat/po/weechat.pot
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2005-07-13 19:29+0200\n"
+"POT-Creation-Date: 2005-07-16 13:11+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -1984,7 +1984,7 @@ msgstr ""
msgid "%s unable to add handler for \"%s\" message (not enough memory)\n"
msgstr ""
-#: src/gui/curses/gui-input.c:300
+#: src/gui/curses/gui-input.c:337
#, c-format
msgid "%s lag is high, disconnecting from server...\n"
msgstr ""
@@ -2005,44 +2005,44 @@ msgstr ""
msgid "Gb"
msgstr ""
-#: src/gui/curses/gui-display.c:1116
+#: src/gui/curses/gui-display.c:1119
msgid "(away)"
msgstr ""
-#: src/gui/curses/gui-display.c:1233
+#: src/gui/curses/gui-display.c:1236
msgid "[not connected]"
msgstr ""
-#: src/gui/curses/gui-display.c:1249
+#: src/gui/curses/gui-display.c:1252
msgid "Act: "
msgstr ""
-#: src/gui/curses/gui-display.c:1302
+#: src/gui/curses/gui-display.c:1305
#, c-format
msgid "Lag: %.1f"
msgstr ""
-#: src/gui/curses/gui-display.c:1323
+#: src/gui/curses/gui-display.c:1326
msgid "-MORE-"
msgstr ""
-#: src/gui/curses/gui-display.c:1563
+#: src/gui/curses/gui-display.c:1565
msgid " [A] Accept"
msgstr ""
-#: src/gui/curses/gui-display.c:1564 src/gui/curses/gui-display.c:1568
+#: src/gui/curses/gui-display.c:1566 src/gui/curses/gui-display.c:1570
msgid " [C] Cancel"
msgstr ""
-#: src/gui/curses/gui-display.c:1573
+#: src/gui/curses/gui-display.c:1575
msgid " [R] Remove"
msgstr ""
-#: src/gui/curses/gui-display.c:1577
+#: src/gui/curses/gui-display.c:1579
msgid " [P] Purge old DCC"
msgstr ""
-#: src/gui/curses/gui-display.c:1578
+#: src/gui/curses/gui-display.c:1580
msgid " [Q] Close DCC view"
msgstr ""
@@ -2050,157 +2050,161 @@ msgstr ""
msgid "server"
msgstr ""
-#: src/gui/gui-common.c:334
+#: src/gui/gui-common.c:340
msgid "Not enough memory for infobar message\n"
msgstr ""
-#: src/gui/gui-common.c:509
+#: src/gui/gui-common.c:515
msgid "Not enough memory for new line\n"
msgstr ""
-#: src/gui/gui-common.c:552
+#: src/gui/gui-common.c:558
msgid "Not enough memory for new message\n"
msgstr ""
-#: src/gui/gui-keyboard.c:43
+#: src/gui/gui-keyboard.c:45
msgid "terminate line"
msgstr ""
-#: src/gui/gui-keyboard.c:45
+#: src/gui/gui-keyboard.c:47
msgid "complete word"
msgstr ""
-#: src/gui/gui-keyboard.c:47
+#: src/gui/gui-keyboard.c:49
msgid "delete previous char"
msgstr ""
-#: src/gui/gui-keyboard.c:49
+#: src/gui/gui-keyboard.c:51
msgid "delete next char"
msgstr ""
-#: src/gui/gui-keyboard.c:51
+#: src/gui/gui-keyboard.c:53
msgid "delete until end of line"
msgstr ""
-#: src/gui/gui-keyboard.c:53
+#: src/gui/gui-keyboard.c:55
msgid "delete until beginning of line"
msgstr ""
-#: src/gui/gui-keyboard.c:55
+#: src/gui/gui-keyboard.c:57
msgid "delete entire line"
msgstr ""
-#: src/gui/gui-keyboard.c:57
+#: src/gui/gui-keyboard.c:59
msgid "delete previous word"
msgstr ""
-#: src/gui/gui-keyboard.c:59
+#: src/gui/gui-keyboard.c:61
msgid "delete next word"
msgstr ""
-#: src/gui/gui-keyboard.c:61
+#: src/gui/gui-keyboard.c:63
msgid "paste current clipboard content"
msgstr ""
-#: src/gui/gui-keyboard.c:63
+#: src/gui/gui-keyboard.c:65
msgid "transpose chars"
msgstr ""
-#: src/gui/gui-keyboard.c:65
+#: src/gui/gui-keyboard.c:67
msgid "go to beginning of line"
msgstr ""
-#: src/gui/gui-keyboard.c:67
+#: src/gui/gui-keyboard.c:69
msgid "go to end of line"
msgstr ""
-#: src/gui/gui-keyboard.c:69
+#: src/gui/gui-keyboard.c:71
msgid "move one char left"
msgstr ""
-#: src/gui/gui-keyboard.c:71
+#: src/gui/gui-keyboard.c:73
msgid "move to previous word"
msgstr ""
-#: src/gui/gui-keyboard.c:73
+#: src/gui/gui-keyboard.c:75
msgid "move one char right"
msgstr ""
-#: src/gui/gui-keyboard.c:75
+#: src/gui/gui-keyboard.c:77
msgid "move to next word"
msgstr ""
-#: src/gui/gui-keyboard.c:77
+#: src/gui/gui-keyboard.c:79
msgid "call previous command in history"
msgstr ""
-#: src/gui/gui-keyboard.c:79
+#: src/gui/gui-keyboard.c:81
msgid "call next command in history"
msgstr ""
-#: src/gui/gui-keyboard.c:81
+#: src/gui/gui-keyboard.c:83
msgid "scroll one page up"
msgstr ""
-#: src/gui/gui-keyboard.c:83
+#: src/gui/gui-keyboard.c:85
msgid "scroll one page down"
msgstr ""
-#: src/gui/gui-keyboard.c:85
+#: src/gui/gui-keyboard.c:87
msgid "clear infobar"
msgstr ""
-#: src/gui/gui-keyboard.c:87
+#: src/gui/gui-keyboard.c:89
msgid "scroll nicklist one page up"
msgstr ""
-#: src/gui/gui-keyboard.c:89
+#: src/gui/gui-keyboard.c:91
msgid "scroll nicklist one page down"
msgstr ""
-#: src/gui/gui-keyboard.c:91
+#: src/gui/gui-keyboard.c:93
msgid "display beginning of nicklist"
msgstr ""
-#: src/gui/gui-keyboard.c:93
+#: src/gui/gui-keyboard.c:95
msgid "display end of nicklist"
msgstr ""
-#: src/gui/gui-keyboard.c:95
+#: src/gui/gui-keyboard.c:97
msgid "refresh screen"
msgstr ""
-#: src/gui/gui-keyboard.c:97
+#: src/gui/gui-keyboard.c:99
msgid "jump to buffer with activity"
msgstr ""
-#: src/gui/gui-keyboard.c:99
+#: src/gui/gui-keyboard.c:101
msgid "jump to DCC buffer"
msgstr ""
-#: src/gui/gui-keyboard.c:101
+#: src/gui/gui-keyboard.c:103
msgid "jump to server buffer"
msgstr ""
-#: src/gui/gui-keyboard.c:103
+#: src/gui/gui-keyboard.c:105
msgid "jump to next server"
msgstr ""
-#: src/gui/gui-keyboard.c:105
+#: src/gui/gui-keyboard.c:107
msgid "clear hotlist"
msgstr ""
-#: src/gui/gui-keyboard.c:403 src/common/command.c:1471
+#: src/gui/gui-keyboard.c:109
+msgid "grab a key"
+msgstr ""
+
+#: src/gui/gui-keyboard.c:420 src/common/command.c:1471
#, c-format
msgid "%s unable to bind key \"%s\"\n"
msgstr ""
-#: src/gui/gui-keyboard.c:414
+#: src/gui/gui-keyboard.c:431
#, c-format
msgid "%s unable to bind key \"%s\" (invalid function name: \"%s\")\n"
msgstr ""
-#: src/gui/gui-keyboard.c:427
+#: src/gui/gui-keyboard.c:444
#, c-format
msgid "%s not enough memory for key binding\n"
msgstr ""
diff --git a/weechat/src/common/completion.c b/weechat/src/common/completion.c
index 6bb452d20..a27605f6f 100644
--- a/weechat/src/common/completion.c
+++ b/weechat/src/common/completion.c
@@ -206,9 +206,6 @@ completion_build_list (t_completion *completion, void *channel)
{
weelist_add (&completion->completion_list,
&completion->last_completion,
- "bind");
- weelist_add (&completion->completion_list,
- &completion->last_completion,
"unbind");
weelist_add (&completion->completion_list,
&completion->last_completion,
diff --git a/weechat/src/common/fifo.c b/weechat/src/common/fifo.c
index ec9ff701e..440f52536 100644
--- a/weechat/src/common/fifo.c
+++ b/weechat/src/common/fifo.c
@@ -112,7 +112,7 @@ fifo_exec (char *text)
if (text[0] == '*')
{
pos_msg = text + 1;
- ptr_buffer = (gui_current_window->buffer->dcc) ? gui_buffers : gui_current_window->buffer;
+ ptr_buffer = (gui_current_window->buffer->has_input) ? gui_current_window->buffer : gui_buffers;
ptr_server = SERVER(ptr_buffer);
}
else
diff --git a/weechat/src/gui/curses/gui-input.c b/weechat/src/gui/curses/gui-input.c
index 965ad71b4..7f4d932cd 100644
--- a/weechat/src/gui/curses/gui-input.c
+++ b/weechat/src/gui/curses/gui-input.c
@@ -92,9 +92,10 @@ gui_input_default_key_bindings ()
gui_key_bind ( /* ^right */ "meta-Oc", "next_word");
gui_key_bind ( /* m-h */ "meta-h", "hotlist_clear");
gui_key_bind ( /* m-j,m-d */ "meta-jmeta-d", "jump_dcc");
- gui_key_bind ( /* m-r */ "meta-r", "delete_line");
gui_key_bind ( /* m-j,m-s */ "meta-jmeta-s", "jump_server");
gui_key_bind ( /* m-j,m-x */ "meta-jmeta-x", "jump_next_server");
+ gui_key_bind ( /* m-k */ "meta-k", "grab_key");
+ gui_key_bind ( /* m-r */ "meta-r", "delete_line");
/* keys binded with commands */
gui_key_bind ( /* m-left */ "meta-meta2-D", "/buffer -1");
@@ -124,6 +125,35 @@ gui_input_default_key_bindings ()
}
/*
+ * gui_input_grab_end: insert grabbed key in input buffer
+ */
+
+void
+gui_input_grab_end ()
+{
+ char *expanded_key;
+
+ /* get expanded name (for example: ^U => ctrl-u) */
+ expanded_key = gui_key_get_expanded_name (gui_key_buffer);
+
+ if (expanded_key)
+ {
+ if (gui_current_window->buffer->has_input)
+ {
+ gui_input_insert_string (expanded_key, -1);
+ gui_current_window->buffer->input_buffer_pos += strlen (expanded_key);
+ gui_draw_buffer_input (gui_current_window->buffer, 1);
+ }
+ free (expanded_key);
+ }
+
+ /* end grab mode */
+ gui_key_grab = 0;
+ gui_key_grab_count = 0;
+ gui_key_buffer[0] = '\0';
+}
+
+/*
* gui_input_read: read keyboard chars
*/
@@ -138,10 +168,17 @@ gui_input_read ()
to read also socket & co */
while (i < 8)
{
+ if (gui_key_grab && (gui_key_grab_count > 10))
+ gui_input_grab_end ();
+
key = getch ();
if (key == ERR)
+ {
+ if (gui_key_grab && (gui_key_grab_count > 0))
+ gui_input_grab_end ();
break;
+ }
if (key == KEY_RESIZE)
{
@@ -176,11 +213,11 @@ gui_input_read ()
}
}
- if (strcmp (key_str, "^") == 0)
+ /*if (strcmp (key_str, "^") == 0)
{
key_str[1] = '^';
key_str[2] = '\0';
- }
+ }*/
/*gui_printf (gui_current_window->buffer, "gui_input_read: key = %s (%d)\n", key_str, key);*/
diff --git a/weechat/src/gui/gui-common.c b/weechat/src/gui/gui-common.c
index 0d28ae824..78d898608 100644
--- a/weechat/src/gui/gui-common.c
+++ b/weechat/src/gui/gui-common.c
@@ -201,9 +201,15 @@ gui_buffer_new (t_gui_window *window, void *server, void *channel, int dcc,
log_start (new_buffer);
/* init input buffer */
- new_buffer->input_buffer_alloc = INPUT_BUFFER_BLOCK_SIZE;
- new_buffer->input_buffer = (char *) malloc (INPUT_BUFFER_BLOCK_SIZE);
- new_buffer->input_buffer[0] = '\0';
+ new_buffer->has_input = (new_buffer->dcc) ? 0 : 1;
+ if (new_buffer->has_input)
+ {
+ new_buffer->input_buffer_alloc = INPUT_BUFFER_BLOCK_SIZE;
+ new_buffer->input_buffer = (char *) malloc (INPUT_BUFFER_BLOCK_SIZE);
+ new_buffer->input_buffer[0] = '\0';
+ }
+ else
+ new_buffer->input_buffer = NULL;
new_buffer->input_buffer_size = 0;
new_buffer->input_buffer_pos = 0;
new_buffer->input_buffer_1st_display = 0;
@@ -565,40 +571,88 @@ gui_input_optimize_buffer_size (t_gui_buffer *buffer)
{
int optimal_size;
- optimal_size = ((buffer->input_buffer_size / INPUT_BUFFER_BLOCK_SIZE) *
- INPUT_BUFFER_BLOCK_SIZE) + INPUT_BUFFER_BLOCK_SIZE;
- if (buffer->input_buffer_alloc != optimal_size)
+ if (buffer->has_input)
{
- buffer->input_buffer_alloc = optimal_size;
- buffer->input_buffer = realloc (buffer->input_buffer, optimal_size);
+ optimal_size = ((buffer->input_buffer_size / INPUT_BUFFER_BLOCK_SIZE) *
+ INPUT_BUFFER_BLOCK_SIZE) + INPUT_BUFFER_BLOCK_SIZE;
+ if (buffer->input_buffer_alloc != optimal_size)
+ {
+ buffer->input_buffer_alloc = optimal_size;
+ buffer->input_buffer = realloc (buffer->input_buffer, optimal_size);
+ }
}
}
/*
- * gui_input_insert_string: insert a string into the input buffer
+ * gui_input_clipboard_copy: copy string into clipboard
*/
void
-gui_input_insert_string (char *string, int pos)
+gui_input_clipboard_copy (char *buffer, int size)
{
- int i, start, end, length;
+ if (size <= 0)
+ return;
- length = strlen (string);
+ if (gui_input_clipboard != NULL)
+ free(gui_input_clipboard);
- /* increase buffer size */
- gui_current_window->buffer->input_buffer_size += length;
- gui_input_optimize_buffer_size (gui_current_window->buffer);
- gui_current_window->buffer->input_buffer[gui_current_window->buffer->input_buffer_size] = '\0';
+ gui_input_clipboard = (char *) malloc( (size + 1) * sizeof(*gui_input_clipboard));
- /* move end of string to the right */
- start = pos + length;
- end = gui_current_window->buffer->input_buffer_size - 1;
- for (i = end; i >= start; i--)
- gui_current_window->buffer->input_buffer[i] =
- gui_current_window->buffer->input_buffer[i - length];
+ if (gui_input_clipboard)
+ {
+ memcpy(gui_input_clipboard, buffer, size);
+ gui_input_clipboard[size] = '\0';
+ }
+}
+
+/*
+ * gui_input_clipboard_paste: paste clipboard at cursor pos in input line
+ */
+
+void
+gui_input_clipboard_paste ()
+{
+ if (gui_current_window->buffer->has_input && gui_input_clipboard)
+ {
+ gui_input_insert_string (gui_input_clipboard, gui_current_window->buffer->input_buffer_pos);
+ gui_current_window->buffer->input_buffer_pos += strlen (gui_input_clipboard);
+ gui_draw_buffer_input (gui_current_window->buffer, 0);
+ gui_current_window->buffer->completion.position = -1;
+ }
+}
+
+/*
+ * gui_input_insert_string: insert a string into the input buffer
+ * if pos == -1, string is inserted at cursor position
+ */
+
+void
+gui_input_insert_string (char *string, int pos)
+{
+ int i, start, end, length;
- /* insert new string */
- strncpy (gui_current_window->buffer->input_buffer + pos, string, length);
+ if (gui_current_window->buffer->has_input)
+ {
+ if (pos == -1)
+ pos = gui_current_window->buffer->input_buffer_pos;
+
+ length = strlen (string);
+
+ /* increase buffer size */
+ gui_current_window->buffer->input_buffer_size += length;
+ gui_input_optimize_buffer_size (gui_current_window->buffer);
+ gui_current_window->buffer->input_buffer[gui_current_window->buffer->input_buffer_size] = '\0';
+
+ /* move end of string to the right */
+ start = pos + length;
+ end = gui_current_window->buffer->input_buffer_size - 1;
+ for (i = end; i >= start; i--)
+ gui_current_window->buffer->input_buffer[i] =
+ gui_current_window->buffer->input_buffer[i - length];
+
+ /* insert new string */
+ strncpy (gui_current_window->buffer->input_buffer + pos, string, length);
+ }
}
/*
@@ -683,7 +737,7 @@ gui_input_insert_char (int key)
break;
}
}
- else
+ else if (gui_current_window->buffer->has_input)
{
/*gui_printf (gui_current_window->buffer,
"[Debug] key pressed = %d, hex = %02X, octal = %o\n", key, key, key);*/
@@ -707,7 +761,7 @@ gui_input_return ()
{
t_gui_buffer *ptr_buffer;
- if (!gui_current_window->buffer->dcc)
+ if (gui_current_window->buffer->has_input)
{
if (gui_current_window->buffer->input_buffer_size > 0)
{
@@ -740,7 +794,7 @@ gui_input_tab ()
{
int i;
- if (!gui_current_window->buffer->dcc)
+ if (gui_current_window->buffer->has_input)
{
completion_search (&(gui_current_window->buffer->completion),
CHANNEL(gui_current_window->buffer),
@@ -837,7 +891,7 @@ gui_input_backspace ()
{
int i;
- if (!gui_current_window->buffer->dcc)
+ if (gui_current_window->buffer->has_input)
{
if (gui_current_window->buffer->input_buffer_pos > 0)
{
@@ -867,7 +921,7 @@ gui_input_delete ()
{
int i;
- if (!gui_current_window->buffer->dcc)
+ if (gui_current_window->buffer->has_input)
{
if (gui_current_window->buffer->input_buffer_pos <
gui_current_window->buffer->input_buffer_size)
@@ -897,46 +951,49 @@ gui_input_delete_previous_word ()
{
int i, j, num_char_deleted, num_char_end;
- if (gui_current_window->buffer->input_buffer_pos > 0)
+ if (gui_current_window->buffer->has_input)
{
- i = gui_current_window->buffer->input_buffer_pos - 1;
- while ((i >= 0) &&
- (gui_current_window->buffer->input_buffer[i] == ' '))
- i--;
- if (i >= 0)
+ if (gui_current_window->buffer->input_buffer_pos > 0)
{
+ i = gui_current_window->buffer->input_buffer_pos - 1;
while ((i >= 0) &&
- (gui_current_window->buffer->input_buffer[i] != ' '))
+ (gui_current_window->buffer->input_buffer[i] == ' '))
i--;
if (i >= 0)
{
while ((i >= 0) &&
- (gui_current_window->buffer->input_buffer[i] == ' '))
+ (gui_current_window->buffer->input_buffer[i] != ' '))
i--;
+ if (i >= 0)
+ {
+ while ((i >= 0) &&
+ (gui_current_window->buffer->input_buffer[i] == ' '))
+ i--;
+ }
}
- }
-
- if (i >= 0)
+
+ if (i >= 0)
+ i++;
i++;
- i++;
- num_char_deleted = gui_current_window->buffer->input_buffer_pos - i;
- num_char_end = gui_current_window->buffer->input_buffer_size -
- gui_current_window->buffer->input_buffer_pos;
-
- gui_input_clipboard_copy(gui_current_window->buffer->input_buffer +
- gui_current_window->buffer->input_buffer_pos - num_char_deleted,
- num_char_deleted);
-
- for (j = 0; j < num_char_end; j++)
- gui_current_window->buffer->input_buffer[i + j] =
- gui_current_window->buffer->input_buffer[gui_current_window->buffer->input_buffer_pos + j];
-
- gui_current_window->buffer->input_buffer_size -= num_char_deleted;
- gui_current_window->buffer->input_buffer[gui_current_window->buffer->input_buffer_size] = '\0';
- gui_current_window->buffer->input_buffer_pos = i;
- gui_draw_buffer_input (gui_current_window->buffer, 0);
- gui_input_optimize_buffer_size (gui_current_window->buffer);
- gui_current_window->buffer->completion.position = -1;
+ num_char_deleted = gui_current_window->buffer->input_buffer_pos - i;
+ num_char_end = gui_current_window->buffer->input_buffer_size -
+ gui_current_window->buffer->input_buffer_pos;
+
+ gui_input_clipboard_copy(gui_current_window->buffer->input_buffer +
+ gui_current_window->buffer->input_buffer_pos - num_char_deleted,
+ num_char_deleted);
+
+ for (j = 0; j < num_char_end; j++)
+ gui_current_window->buffer->input_buffer[i + j] =
+ gui_current_window->buffer->input_buffer[gui_current_window->buffer->input_buffer_pos + j];
+
+ gui_current_window->buffer->input_buffer_size -= num_char_deleted;
+ gui_current_window->buffer->input_buffer[gui_current_window->buffer->input_buffer_size] = '\0';
+ gui_current_window->buffer->input_buffer_pos = i;
+ gui_draw_buffer_input (gui_current_window->buffer, 0);
+ gui_input_optimize_buffer_size (gui_current_window->buffer);
+ gui_current_window->buffer->completion.position = -1;
+ }
}
}
@@ -949,28 +1006,31 @@ gui_input_delete_next_word ()
{
int i, j, num_char_deleted;
- i = gui_current_window->buffer->input_buffer_pos;
- while (i < gui_current_window->buffer->input_buffer_size)
+ if (gui_current_window->buffer->has_input)
{
- if ((gui_current_window->buffer->input_buffer[i] == ' ')
- && i != gui_current_window->buffer->input_buffer_pos)
- break;
- i++;
+ i = gui_current_window->buffer->input_buffer_pos;
+ while (i < gui_current_window->buffer->input_buffer_size)
+ {
+ if ((gui_current_window->buffer->input_buffer[i] == ' ')
+ && i != gui_current_window->buffer->input_buffer_pos)
+ break;
+ i++;
+ }
+ num_char_deleted = i - gui_current_window->buffer->input_buffer_pos;
+
+ gui_input_clipboard_copy(gui_current_window->buffer->input_buffer +
+ gui_current_window->buffer->input_buffer_pos, num_char_deleted);
+
+ for (j = i; j < gui_current_window->buffer->input_buffer_size; j++)
+ gui_current_window->buffer->input_buffer[j - num_char_deleted] =
+ gui_current_window->buffer->input_buffer[j];
+
+ gui_current_window->buffer->input_buffer_size -= num_char_deleted;
+ gui_current_window->buffer->input_buffer[gui_current_window->buffer->input_buffer_size] = '\0';
+ gui_draw_buffer_input (gui_current_window->buffer, 0);
+ gui_input_optimize_buffer_size (gui_current_window->buffer);
+ gui_current_window->buffer->completion.position = -1;
}
- num_char_deleted = i - gui_current_window->buffer->input_buffer_pos;
-
- gui_input_clipboard_copy(gui_current_window->buffer->input_buffer +
- gui_current_window->buffer->input_buffer_pos, num_char_deleted);
-
- for (j = i; j < gui_current_window->buffer->input_buffer_size; j++)
- gui_current_window->buffer->input_buffer[j - num_char_deleted] =
- gui_current_window->buffer->input_buffer[j];
-
- gui_current_window->buffer->input_buffer_size -= num_char_deleted;
- gui_current_window->buffer->input_buffer[gui_current_window->buffer->input_buffer_size] = '\0';
- gui_draw_buffer_input (gui_current_window->buffer, 0);
- gui_input_optimize_buffer_size (gui_current_window->buffer);
- gui_current_window->buffer->completion.position = -1;
}
/*
@@ -980,25 +1040,28 @@ gui_input_delete_next_word ()
void
gui_input_delete_begin_of_line ()
{
- if (gui_current_window->buffer->input_buffer_pos > 0)
+ int i;
+
+ if (gui_current_window->buffer->has_input)
{
- int i;
-
- gui_input_clipboard_copy(gui_current_window->buffer->input_buffer,
- gui_current_window->buffer->input_buffer_pos);
-
- for (i = gui_current_window->buffer->input_buffer_pos;
- i < gui_current_window->buffer->input_buffer_size; i++)
- gui_current_window->buffer->input_buffer[i - gui_current_window->buffer->input_buffer_pos] =
- gui_current_window->buffer->input_buffer[i];
-
- gui_current_window->buffer->input_buffer_size -=
- gui_current_window->buffer->input_buffer_pos;
- gui_current_window->buffer->input_buffer[gui_current_window->buffer->input_buffer_size] = '\0';
- gui_current_window->buffer->input_buffer_pos = 0;
- gui_draw_buffer_input (gui_current_window->buffer, 0);
- gui_input_optimize_buffer_size (gui_current_window->buffer);
- gui_current_window->buffer->completion.position = -1;
+ if (gui_current_window->buffer->input_buffer_pos > 0)
+ {
+ gui_input_clipboard_copy (gui_current_window->buffer->input_buffer,
+ gui_current_window->buffer->input_buffer_pos);
+
+ for (i = gui_current_window->buffer->input_buffer_pos;
+ i < gui_current_window->buffer->input_buffer_size; i++)
+ gui_current_window->buffer->input_buffer[i - gui_current_window->buffer->input_buffer_pos] =
+ gui_current_window->buffer->input_buffer[i];
+
+ gui_current_window->buffer->input_buffer_size -=
+ gui_current_window->buffer->input_buffer_pos;
+ gui_current_window->buffer->input_buffer[gui_current_window->buffer->input_buffer_size] = '\0';
+ gui_current_window->buffer->input_buffer_pos = 0;
+ gui_draw_buffer_input (gui_current_window->buffer, 0);
+ gui_input_optimize_buffer_size (gui_current_window->buffer);
+ gui_current_window->buffer->completion.position = -1;
+ }
}
}
@@ -1009,16 +1072,19 @@ gui_input_delete_begin_of_line ()
void
gui_input_delete_end_of_line ()
{
- gui_input_clipboard_copy(gui_current_window->buffer->input_buffer +
- gui_current_window->buffer->input_buffer_pos,
- gui_current_window->buffer->input_buffer_size -
- gui_current_window->buffer->input_buffer_pos);
- gui_current_window->buffer->input_buffer[gui_current_window->buffer->input_buffer_pos] = ' ';
- gui_current_window->buffer->input_buffer_size = gui_current_window->buffer->input_buffer_pos ;
- gui_current_window->buffer->input_buffer[gui_current_window->buffer->input_buffer_size] = '\0';
- gui_draw_buffer_input (gui_current_window->buffer, 0);
- gui_input_optimize_buffer_size (gui_current_window->buffer);
- gui_current_window->buffer->completion.position = -1;
+ if (gui_current_window->buffer->has_input)
+ {
+ gui_input_clipboard_copy(gui_current_window->buffer->input_buffer +
+ gui_current_window->buffer->input_buffer_pos,
+ gui_current_window->buffer->input_buffer_size -
+ gui_current_window->buffer->input_buffer_pos);
+ gui_current_window->buffer->input_buffer[gui_current_window->buffer->input_buffer_pos] = ' ';
+ gui_current_window->buffer->input_buffer_size = gui_current_window->buffer->input_buffer_pos ;
+ gui_current_window->buffer->input_buffer[gui_current_window->buffer->input_buffer_size] = '\0';
+ gui_draw_buffer_input (gui_current_window->buffer, 0);
+ gui_input_optimize_buffer_size (gui_current_window->buffer);
+ gui_current_window->buffer->completion.position = -1;
+ }
}
/*
@@ -1028,12 +1094,15 @@ gui_input_delete_end_of_line ()
void
gui_input_delete_line ()
{
- gui_current_window->buffer->input_buffer[0] = '\0';
- gui_current_window->buffer->input_buffer_size = 0;
- gui_current_window->buffer->input_buffer_pos = 0;
- gui_draw_buffer_input (gui_current_window->buffer, 0);
- gui_input_optimize_buffer_size (gui_current_window->buffer);
- gui_current_window->buffer->completion.position = -1;
+ if (gui_current_window->buffer->has_input)
+ {
+ gui_current_window->buffer->input_buffer[0] = '\0';
+ gui_current_window->buffer->input_buffer_size = 0;
+ gui_current_window->buffer->input_buffer_pos = 0;
+ gui_draw_buffer_input (gui_current_window->buffer, 0);
+ gui_input_optimize_buffer_size (gui_current_window->buffer);
+ gui_current_window->buffer->completion.position = -1;
+ }
}
/*
@@ -1046,59 +1115,24 @@ gui_input_transpose_chars ()
char buf;
int curpos;
- if (gui_current_window->buffer->input_buffer_pos > 0)
- {
- curpos = gui_current_window->buffer->input_buffer_pos;
- if (curpos == gui_current_window->buffer->input_buffer_size)
- curpos--;
- else
- gui_current_window->buffer->input_buffer_pos++;
-
- buf = gui_current_window->buffer->input_buffer[curpos];
- gui_current_window->buffer->input_buffer[curpos] =
- gui_current_window->buffer->input_buffer[curpos-1];
- gui_current_window->buffer->input_buffer[curpos-1] = buf;
-
- gui_draw_buffer_input (gui_current_window->buffer, 0);
- gui_current_window->buffer->completion.position = -1;
- }
-}
-
-/*
- * gui_input_clipboard_paste: paste clipboard at cursor pos in input line
- */
-
-void
-gui_input_clipboard_paste ()
-{
- if (gui_input_clipboard)
- {
- gui_input_insert_string(gui_input_clipboard, gui_current_window->buffer->input_buffer_pos);
- gui_current_window->buffer->input_buffer_pos += strlen(gui_input_clipboard);
- gui_draw_buffer_input (gui_current_window->buffer, 0);
- gui_current_window->buffer->completion.position = -1;
- }
-}
-
-/*
- * gui_input_clipboard_copy: copy string into clipboard
- */
-
-void
-gui_input_clipboard_copy (char *buffer, int size)
-{
- if (size <= 0)
- return;
-
- if (gui_input_clipboard != NULL)
- free(gui_input_clipboard);
-
- gui_input_clipboard = (char *) malloc( (size + 1) * sizeof(*gui_input_clipboard));
-
- if (gui_input_clipboard)
+ if (gui_current_window->buffer->has_input)
{
- memcpy(gui_input_clipboard, buffer, size);
- gui_input_clipboard[size] = '\0';
+ if (gui_current_window->buffer->input_buffer_pos > 0)
+ {
+ curpos = gui_current_window->buffer->input_buffer_pos;
+ if (curpos == gui_current_window->buffer->input_buffer_size)
+ curpos--;
+ else
+ gui_current_window->buffer->input_buffer_pos++;
+
+ buf = gui_current_window->buffer->input_buffer[curpos];
+ gui_current_window->buffer->input_buffer[curpos] =
+ gui_current_window->buffer->input_buffer[curpos-1];
+ gui_current_window->buffer->input_buffer[curpos-1] = buf;
+
+ gui_draw_buffer_input (gui_current_window->buffer, 0);
+ gui_current_window->buffer->completion.position = -1;
+ }
}
}
@@ -1109,7 +1143,7 @@ gui_input_clipboard_copy (char *buffer, int size)
void
gui_input_home ()
{
- if (!gui_current_window->buffer->dcc)
+ if (gui_current_window->buffer->has_input)
{
if (gui_current_window->buffer->input_buffer_pos > 0)
{
@@ -1126,7 +1160,7 @@ gui_input_home ()
void
gui_input_end ()
{
- if (!gui_current_window->buffer->dcc)
+ if (gui_current_window->buffer->has_input)
{
if (gui_current_window->buffer->input_buffer_pos <
gui_current_window->buffer->input_buffer_size)
@@ -1145,7 +1179,7 @@ gui_input_end ()
void
gui_input_left ()
{
- if (!gui_current_window->buffer->dcc)
+ if (gui_current_window->buffer->has_input)
{
if (gui_current_window->buffer->input_buffer_pos > 0)
{
@@ -1164,22 +1198,25 @@ gui_input_previous_word ()
{
int i;
- if (gui_current_window->buffer->input_buffer_pos > 0)
+ if (gui_current_window->buffer->has_input)
{
- i = gui_current_window->buffer->input_buffer_pos - 1;
- while ((i >= 0) &&
- (gui_current_window->buffer->input_buffer[i] == ' '))
- i--;
- if (i < 0)
- gui_current_window->buffer->input_buffer_pos = 0;
- else
+ if (gui_current_window->buffer->input_buffer_pos > 0)
{
+ i = gui_current_window->buffer->input_buffer_pos - 1;
while ((i >= 0) &&
- (gui_current_window->buffer->input_buffer[i] != ' '))
+ (gui_current_window->buffer->input_buffer[i] == ' '))
i--;
- gui_current_window->buffer->input_buffer_pos = i + 1;
+ if (i < 0)
+ gui_current_window->buffer->input_buffer_pos = 0;
+ else
+ {
+ while ((i >= 0) &&
+ (gui_current_window->buffer->input_buffer[i] != ' '))
+ i--;
+ gui_current_window->buffer->input_buffer_pos = i + 1;
+ }
+ gui_draw_buffer_input (gui_current_window->buffer, 0);
}
- gui_draw_buffer_input (gui_current_window->buffer, 0);
}
}
@@ -1190,7 +1227,7 @@ gui_input_previous_word ()
void
gui_input_right ()
{
- if (!gui_current_window->buffer->dcc)
+ if (gui_current_window->buffer->has_input)
{
if (gui_current_window->buffer->input_buffer_pos <
gui_current_window->buffer->input_buffer_size)
@@ -1210,28 +1247,31 @@ gui_input_next_word ()
{
int i;
- if (gui_current_window->buffer->input_buffer_pos <
- gui_current_window->buffer->input_buffer_size + 1)
+ if (gui_current_window->buffer->has_input)
{
- i = gui_current_window->buffer->input_buffer_pos;
- while ((i <= gui_current_window->buffer->input_buffer_size) &&
- (gui_current_window->buffer->input_buffer[i] == ' '))
- i++;
- if (i > gui_current_window->buffer->input_buffer_size)
- gui_current_window->buffer->input_buffer_pos = i - 1;
- else
+ if (gui_current_window->buffer->input_buffer_pos <
+ gui_current_window->buffer->input_buffer_size + 1)
{
+ i = gui_current_window->buffer->input_buffer_pos;
while ((i <= gui_current_window->buffer->input_buffer_size) &&
- (gui_current_window->buffer->input_buffer[i] != ' '))
+ (gui_current_window->buffer->input_buffer[i] == ' '))
i++;
if (i > gui_current_window->buffer->input_buffer_size)
- gui_current_window->buffer->input_buffer_pos =
- gui_current_window->buffer->input_buffer_size;
+ gui_current_window->buffer->input_buffer_pos = i - 1;
else
- gui_current_window->buffer->input_buffer_pos = i;
-
+ {
+ while ((i <= gui_current_window->buffer->input_buffer_size) &&
+ (gui_current_window->buffer->input_buffer[i] != ' '))
+ i++;
+ if (i > gui_current_window->buffer->input_buffer_size)
+ gui_current_window->buffer->input_buffer_pos =
+ gui_current_window->buffer->input_buffer_size;
+ else
+ gui_current_window->buffer->input_buffer_pos = i;
+
+ }
+ gui_draw_buffer_input (gui_current_window->buffer, 0);
}
- gui_draw_buffer_input (gui_current_window->buffer, 0);
}
}
@@ -1260,7 +1300,7 @@ gui_input_up ()
}
}
}
- else
+ else if (gui_current_window->buffer->has_input)
{
if (gui_current_window->buffer->ptr_history)
{
@@ -1323,7 +1363,7 @@ gui_input_down ()
}
}
}
- else
+ else if (gui_current_window->buffer->has_input)
{
if (gui_current_window->buffer->ptr_history)
{
@@ -1400,7 +1440,7 @@ gui_input_jump_dcc ()
void
gui_input_jump_server ()
{
- if (!gui_current_window->buffer->dcc)
+ if (SERVER(gui_current_window->buffer))
{
if (SERVER(gui_current_window->buffer)->buffer !=
gui_current_window->buffer)
@@ -1422,7 +1462,7 @@ gui_input_jump_next_server ()
t_irc_server *ptr_server;
t_gui_buffer *ptr_buffer;
- if (!gui_current_window->buffer->dcc)
+ if (SERVER(gui_current_window->buffer))
{
ptr_server = SERVER(gui_current_window->buffer)->next_server;
if (!ptr_server)
@@ -1471,6 +1511,17 @@ gui_input_infobar_clear ()
}
/*
+ * gui_input_grab_key: init "grab key mode" (next key will be inserted into input buffer)
+ */
+
+void
+gui_input_grab_key ()
+{
+ if (gui_current_window->buffer->has_input)
+ gui_key_init_grab ();
+}
+
+/*
* gui_switch_to_previous_buffer: switch to previous buffer
*/
@@ -1740,6 +1791,7 @@ gui_buffer_print_log (t_gui_buffer *buffer)
wee_log_printf (" notify_level . . . . : %d\n", buffer->notify_level);
wee_log_printf (" log_filename . . . . : '%s'\n", buffer->log_filename);
wee_log_printf (" log_file . . . . . . : 0x%X\n", buffer->log_file);
+ wee_log_printf (" has_input. . . . . . : %d\n", buffer->has_input);
wee_log_printf (" input_buffer . . . . : '%s'\n", buffer->input_buffer);
wee_log_printf (" input_buffer_alloc . : %d\n", buffer->input_buffer_alloc);
wee_log_printf (" input_buffer_size. . : %d\n", buffer->input_buffer_size);
diff --git a/weechat/src/gui/gui-keyboard.c b/weechat/src/gui/gui-keyboard.c
index ed3e6fc4f..b6cd3bac7 100644
--- a/weechat/src/gui/gui-keyboard.c
+++ b/weechat/src/gui/gui-keyboard.c
@@ -37,6 +37,8 @@ t_gui_key *gui_keys = NULL;
t_gui_key *last_gui_key = NULL;
char gui_key_buffer[128];
+int gui_key_grab = 0;
+int gui_key_grab_count = 0;
t_gui_key_function gui_key_functions[] =
{ { "return", gui_input_return,
@@ -57,9 +59,9 @@ t_gui_key_function gui_key_functions[] =
N_("delete previous word") },
{ "delete_next_word", gui_input_delete_next_word,
N_("delete next word") },
- { "clipboard_paste", gui_input_clipboard_paste,
+ { "clipboard_paste", gui_input_clipboard_paste,
N_("paste current clipboard content") },
- { "transpose_chars", gui_input_transpose_chars,
+ { "transpose_chars", gui_input_transpose_chars,
N_("transpose chars") },
{ "home", gui_input_home,
N_("go to beginning of line") },
@@ -103,6 +105,8 @@ t_gui_key_function gui_key_functions[] =
N_("jump to next server") },
{ "hotlist_clear", gui_input_hotlist_clear,
N_("clear hotlist") },
+ { "grab_key", gui_input_grab_key,
+ N_("grab a key") },
{ NULL, NULL, NULL }
};
@@ -115,11 +119,24 @@ void
gui_key_init ()
{
gui_key_buffer[0] = '\0';
+ gui_key_grab = 0;
+ gui_key_grab_count = 0;
gui_input_default_key_bindings ();
}
/*
+ * gui_key_init_show: init "show mode"
+ */
+
+void
+gui_key_init_grab ()
+{
+ gui_key_grab = 1;
+ gui_key_grab_count = 0;
+}
+
+/*
* gui_key_get_internal_code: get internal code from user key name
* for example: return "^R" for "ctrl-R"
*/
@@ -187,7 +204,7 @@ gui_key_get_expanded_name (char *key)
strcat (result, "meta-");
key += 2;
}
- else if (key[0] == '^')
+ else if ((key[0] == '^') && (key[1]))
{
strcat (result, "ctrl-");
key++;
@@ -466,8 +483,18 @@ gui_key_pressed (char *key_str)
int first_key;
t_gui_key *ptr_key;
+ /* add key to buffer */
first_key = (gui_key_buffer[0] == '\0');
strcat (gui_key_buffer, key_str);
+
+ /* if we are in "show mode", increase counter and return */
+ if (gui_key_grab)
+ {
+ gui_key_grab_count++;
+ return 0;
+ }
+
+ /* look for key combo in key table */
ptr_key = gui_key_search_part (gui_key_buffer);
if (ptr_key)
{
@@ -482,8 +509,6 @@ gui_key_pressed (char *key_str)
else
(void)(ptr_key->function)();
}
- //else
- // gui_printf (gui_current_window->buffer, "partial key found\n");
return 0;
}
diff --git a/weechat/src/gui/gui.h b/weechat/src/gui/gui.h
index 5050979f6..953522e66 100644
--- a/weechat/src/gui/gui.h
+++ b/weechat/src/gui/gui.h
@@ -104,6 +104,9 @@
#define NOTIFY_LEVEL_MAX 3
#define NOTIFY_LEVEL_DEFAULT NOTIFY_LEVEL_MAX
+#define KEY_SHOW_MODE_DISPLAY 1
+#define KEY_SHOW_MODE_BIND 2
+
typedef struct t_gui_message t_gui_message;
struct t_gui_message
@@ -180,6 +183,7 @@ struct t_gui_buffer
FILE *log_file; /* for logging buffer to file */
/* inupt buffer */
+ int has_input; /* = 1 if buffer has input (DCC has not)*/
char *input_buffer; /* input buffer */
int input_buffer_alloc; /* input buffer: allocated size in mem */
int input_buffer_size; /* buffer size (user input length) */
@@ -292,6 +296,9 @@ extern t_gui_infobar *gui_infobar;
extern t_gui_key *gui_keys;
extern t_gui_key *last_gui_key;
extern t_gui_key_function gui_key_functions[];
+extern char gui_key_buffer[128];
+extern int gui_key_grab;
+extern int gui_key_grab_count;
extern char *gui_input_clipboard;
/* GUI independent functions: windows & buffers */
@@ -306,8 +313,9 @@ extern void gui_infobar_remove ();
extern void gui_buffer_free (t_gui_buffer *, int);
extern t_gui_line *gui_new_line (t_gui_buffer *);
extern t_gui_message *gui_new_message (t_gui_buffer *);
-extern void gui_input_clipboard_paste ();
extern void gui_input_clipboard_copy (char *, int);
+extern void gui_input_clipboard_paste ();
+extern void gui_input_insert_string (char *, int);
extern void gui_input_insert_char ();
extern void gui_input_return ();
extern void gui_input_tab ();
@@ -333,6 +341,7 @@ extern void gui_input_jump_server ();
extern void gui_input_jump_next_server ();
extern void gui_input_hotlist_clear ();
extern void gui_input_infobar_clear ();
+extern void gui_input_grab_key ();
extern void gui_switch_to_previous_buffer ();
extern void gui_switch_to_next_buffer ();
extern void gui_switch_to_previous_window ();
@@ -345,6 +354,7 @@ extern void gui_buffer_print_log (t_gui_buffer *);
/* GUI independent functions: keys */
extern void gui_key_init ();
+extern void gui_key_init_grab ();
extern char *gui_key_get_internal_code (char *);
extern char *gui_key_get_expanded_name (char *);
extern void *gui_key_function_search_by_name (char *);