]> jfr.im git - irc/weechat/weechat.git/commitdiff
core: add key alt+backspace, change behavior of key ctrl+w (closes #559)
authorSébastien Helleu <redacted>
Sun, 18 Sep 2022 21:26:49 +0000 (23:26 +0200)
committerSébastien Helleu <redacted>
Sun, 18 Sep 2022 21:26:49 +0000 (23:26 +0200)
The key ctrl+w now deletes one word until whitespace.

The new key alt+backspace deletes one word (same behavior as ctrl+w in previous
releases).

45 files changed:
ChangeLog.adoc
ReleaseNotes.adoc
doc/de/includes/autogen_user_commands.de.adoc
doc/de/weechat_user.de.adoc
doc/en/includes/autogen_user_commands.en.adoc
doc/en/weechat_dev.en.adoc
doc/en/weechat_user.en.adoc
doc/fr/includes/autogen_user_commands.fr.adoc
doc/fr/weechat_dev.fr.adoc
doc/fr/weechat_user.fr.adoc
doc/it/includes/autogen_user_commands.it.adoc
doc/it/weechat_user.it.adoc
doc/ja/includes/autogen_user_commands.ja.adoc
doc/ja/weechat_dev.ja.adoc
doc/ja/weechat_user.ja.adoc
doc/pl/includes/autogen_user_commands.pl.adoc
doc/pl/weechat_user.pl.adoc
doc/sr/includes/autogen_user_commands.sr.adoc
doc/sr/weechat_dev.sr.adoc
doc/sr/weechat_user.sr.adoc
po/cs.po
po/de.po
po/es.po
po/fr.po
po/hu.po
po/it.po
po/ja.po
po/pl.po
po/pt.po
po/pt_BR.po
po/ru.po
po/sr.po
po/tr.po
po/weechat.pot
src/core/wee-command.c
src/core/wee-string.c
src/core/wee-string.h
src/gui/curses/gui-curses-key.c
src/gui/gui-input.c
src/gui/gui-input.h
tests/CMakeLists.txt
tests/Makefile.am
tests/tests.cpp
tests/unit/core/test-core-string.cpp
tests/unit/gui/test-gui-input.cpp [new file with mode: 0644]

index e3d7caad1ddb6be276784f52009f811111aec11d..5bfc58d10e830b9cd42a60366f03e88ff3bf5224 100644 (file)
@@ -23,6 +23,7 @@ New features::
   * core: add option `-save` in command `/upgrade` (issue #1630)
   * core: add option weechat.look.highlight_disable_regex and buffer property "highlight_disable_regex" (issue #1798)
   * core: sort filters by name (issue #1695)
+  * core: add key kbd:[Alt+Backspace] to delete previous word, change key kbd:[Ctrl+w] to delete previous word until whitespace (issue #559)
   * api: rename function string_build_with_split_string to string_rebuild_split_string, add arguments "index_start" and "index_end"
   * api: add info "uptime_current"
   * api: add function crypto_hash_file
index 8b0d45a9424968f17eab8a3d0ce5d63ce6d204c6..821138bbcd56c72a2e3891745e3731691f811a61 100644 (file)
@@ -20,6 +20,28 @@ https://weechat.org/files/changelog/ChangeLog-devel.html[ChangeLog]
 [[v3.7]]
 == Version 3.7 (under dev)
 
+[[v3.7_delete_previous_word_whitespace]]
+=== Delete previous word until whitespace
+
+A new parameter `delete_previous_word_whitespace` has been added in `/input`
+command to delete previous word until backspace. +
+This is now bound by default to the key kbd:[Ctrl+w] (see issue #559).
+
+A new key kbd:[Alt+Backspace] has been added to delete word, like kbd:[Ctrl+w]
+did in previous releases.
+
+You can get the new behavior for kbd:[Ctrl+w] with this command:
+
+----
+/key bind ctrl-W /input delete_previous_word_whitespace
+----
+
+And add the new key kbd:[Alt+Backspace] with this command:
+
+----
+/key missing
+----
+
 [[v3.7_api_string_rebuild_split_string]]
 === Function string_rebuild_split_string
 
index d8eaaa794d91f35a116846f10e6f22bf5b0453f1..a2a0ae1b3638ad66a61dbb7c9821a436aeb37aa9 100644 (file)
@@ -1598,63 +1598,64 @@ value: Anzahl der gewünschten Einträgen im Befehlsverlauf anzeigen
 ----
 /input  <action> [<arguments>]
 
-Auflistung der möglichen Aktionen:
-  return: simuliert die "enter" Taste
-  complete_next: vervollständigt Wort mit nächster Komplettierung
-  complete_previous: vervollständigt Word mit vorheriger Komplettierung
-  search_text_here: Textsuche ab aktueller Position
-  search_text: Textsuche im Buffer
-  search_switch_case: schaltet Groß-/Kleinschreibung ein und aus
-  search_switch_regex: Wechsel des Suchmodus: einfache Textsuche/reguläre Ausdrücke
-  search_switch_where: wechselt Suche in Nachricht/Präfix
-  search_previous: sucht vorheriger Zeile
-  search_next: sucht nächste Zeile
-  search_stop_here: beendet Suche ab aktueller Position
-  search_stop: suche beenden
-  delete_previous_char: entfernt vorheriges Zeichen
-  delete_next_char: entfernt nächstes Zeichen
-  delete_previous_word: entfernt vorheriges Wort
-  delete_next_word: entfernt nächstes Wort
-  delete_beginning_of_line: entfernt alle Zeichen ab Zeilenanfang bis zum Cursor
-  delete_end_of_line: entfernt alle Zeichen ab Cursor bis zum Ende der Zeile
-  delete_line: löscht die komplette Eingabezeile
-  clipboard_paste: fügt Zeichenkette aus der internen Zwischenablage ein
-  transpose_chars: Zeichen austauschen
-  undo: letzten Befehl in der Eingabezeile rückgängig machen
-  redo: letzten Befehl in der Eingabezeile wiederherstellen
-  move_beginning_of_line: springt an den Anfang der Eingabezeile
-  move_end_of_line: springt ans Ende der Eingabezeile
-  move_previous_char: setzt den Cursor eine Position nach links
-  move_next_char: setzt den Cursor eine Position nach rechts
-  move_previous_word: springt zum Anfang des vorherigen Wortes, in der Eingabezeile
-  move_next_word: springt zum Anfang des nächsten Wortes, in der Eingabezeile
-  history_previous: ruft vorherigen Befehl oder Nachricht aus dem Befehlsspeicher auf (im Such-Modus: rückwärts suchen)
-  history_next: ruft nächsten Befehl oder Nachricht aus dem Befehlsspeicher auf (im Such-Modus: vorwärts suchen)
-  history_global_previous: ruft vorherigen Befehl/Nachricht aus dem globalen Befehlsspeicher auf (für alle Buffer)
-  history_global_next: ruft nächsten Befehl/Nachricht aus dem globalen Befehlsspeicher auf (für alle Buffer)
-  jump_smart: wechselt zum nächsten Buffer mit Aktivität (nach Priorität: highlight, Nachricht, …)
-  jump_last_buffer_displayed: wechselt zum jeweils zuletzt angezeigten Buffer
-  jump_previously_visited_buffer: springt zum letzten besuchten Buffer
-  jump_next_visited_buffer: springt zum nächsten besuchten Buffer
-  hotlist_clear: löscht Hotlist (Aktivitätsanzeige für die Buffer), (optionales Argument: "lowest" löscht den niedrigsten Eintrag der Hotlist, "highest" löscht den höchsten Eintrag der Hotlist, oder eine integer Maske: eine Kombination aus 1=join/part, 2=Nachricht,4=privat,8=highlight)
-  hotlist_remove_buffer: entferne aktuellen Buffer von der Hotlist
-  hotlist_restore_buffer: Wiederherstellen der neuesten Hotlist, die im aktuellen Buffer entfernt wurde
-  hotlist_restore_all: Wiederherstellen der neuesten Hotlist, die in allen Buffern entfernt wurde
-  grab_key: fängt eine Taste (optionales Argument: Verzögerung um eine Taste einzufangen. Standard sind 500 Millisekunden)
-  grab_key_command: zeigt den Tastencode (inklusive des eingebundenen Befehls) einer Tastenkombination an und fügt ihn in die Befehlszeile ein (optionales Argument: Verzögerung um eine Taste einzufangen. Standard sind 500 Millisekunden)
-  grab_mouse: fängt den Code einer Maus Aktivität
-  grab_mouse_area: fängt den Code einer Maus Aktivität mit entsprechendem Bereich
-  set_unread: setzt für alle Buffer die Markierung der ungelesen Nachrichten
-  set_unread_current_buffer: setzt nur für den aktuellen Buffer eine Markierung der ungelesen Nachrichten
-  switch_active_buffer: springt zum nächsten zusammengefügten Buffer
-  switch_active_buffer_previous: springt zum vorherigen zusammengefügten Buffer
-  zoom_merged_buffer: zoomt in zusammengefügte Buffer
-  insert: fügt einen Text in die Eingabezeile ein (Escapesequenzen sind möglich, siehe /help print)
-  send: schickt Text an einen Buffer
-  paste_start: Einfügen wird gestartet (bracketed paste mode)
-  paste_stop: Einfügen wird beendet (bracketed paste mode)
-
-Dieser Befehl wird sinnvollerweise mittels Tastenbelegungen oder Erweiterungen genutzt.
+list of actions:
+  return: simulate key "enter"
+  complete_next: complete word with next completion
+  complete_previous: complete word with previous completion
+  search_text_here: search text in buffer at current position
+  search_text: search text in buffer
+  search_switch_case: switch exact case for search
+  search_switch_regex: switch search type: string/regular expression
+  search_switch_where: switch search in messages/prefixes
+  search_previous: search previous line
+  search_next: search next line
+  search_stop_here: stop search at current position
+  search_stop: stop search
+  delete_previous_char: delete previous char
+  delete_next_char: delete next char
+  delete_previous_word: delete previous word
+  delete_previous_word_whitespace: delete previous word (until whitespace)
+  delete_next_word: delete next word
+  delete_beginning_of_line: delete from beginning of line until cursor
+  delete_end_of_line: delete from cursor until end of line
+  delete_line: delete entire line
+  clipboard_paste: paste from the internal clipboard
+  transpose_chars: transpose two chars
+  undo: undo last command line action
+  redo: redo last command line action
+  move_beginning_of_line: move cursor to beginning of line
+  move_end_of_line: move cursor to end of line
+  move_previous_char: move cursor to previous char
+  move_next_char: move cursor to next char
+  move_previous_word: move cursor to previous word
+  move_next_word: move cursor to next word
+  history_previous: recall previous command in current buffer history
+  history_next: recall next command in current buffer history
+  history_global_previous: recall previous command in global history
+  history_global_next: recall next command in global history
+  jump_smart: jump to next buffer with activity
+  jump_last_buffer_displayed: jump to last buffer displayed (before last jump to a buffer)
+  jump_previously_visited_buffer: jump to previously visited buffer
+  jump_next_visited_buffer: jump to next visited buffer
+  hotlist_clear: clear hotlist (optional argument: "lowest" to clear only lowest level in hotlist, "highest" to clear only highest level in hotlist, or level mask: integer which is a combination of 1=join/part, 2=message, 4=private, 8=highlight)
+  hotlist_remove_buffer: remove current buffer from hotlist
+  hotlist_restore_buffer: restore latest hotlist removed in the current buffer
+  hotlist_restore_all: restore latest hotlist removed in all buffers
+  grab_key: grab a key (optional argument: delay for end of grab, default is 500 milliseconds)
+  grab_key_command: grab a key with its associated command (optional argument: delay for end of grab, default is 500 milliseconds)
+  grab_mouse: grab mouse event code
+  grab_mouse_area: grab mouse event code with area
+  set_unread: set unread marker for all buffers
+  set_unread_current_buffer: set unread marker for current buffer
+  switch_active_buffer: switch to next merged buffer
+  switch_active_buffer_previous: switch to previous merged buffer
+  zoom_merged_buffer: zoom on merged buffer
+  insert: insert text in command line (escaped chars are allowed, see /help print)
+  send: send text to the buffer
+  paste_start: start paste (bracketed paste mode)
+  paste_stop: stop paste (bracketed paste mode)
+
+This command is used by key bindings or plugins.
 ----
 
 [[command_weechat_item]]
index c90ffb5989db9cd0f780c2ca91ac413fab01ef4e..f688f0357c539b2b530dae7a665162ce7a9ef5d0 100644 (file)
@@ -1512,27 +1512,29 @@ Sie können mit dem Befehl <<command_weechat_key,/key>> geändert und neue hinzu
 
 [width="100%",cols="^.^3,.^8,.^5",options="header"]
 |===
-| Taste             | Beschreibung | Befehl
+| Taste               | Beschreibung | Befehl
 | kbd:[Del] +
-  kbd:[Ctrl+d]      | entfernt in der Befehlszeile das nächste Zeichen. | `+/input delete_next_char+`
+  kbd:[Ctrl+d]        | entfernt in der Befehlszeile das nächste Zeichen. | `+/input delete_next_char+`
 | kbd:[Backspace] +
-  kbd:[Ctrl+h]      | entfernt in der Befehlszeile das vorherige Zeichen. | `+/input delete_previous_char+`
-| kbd:[Ctrl+k]      | entfernt alle Zeichen vom Cursor bis zum Ende der Zeile (die Zeichenkette wird dabei in die interne Zwischenablage kopiert). | `+/input delete_end_of_line+`
-| kbd:[Ctrl+t]      | Zeichen austauschen. | `+/input transpose_chars+`
-| kbd:[Ctrl+u]      | entfernt alle Zeichen vom Cursor bis zum Anfang der Zeile (die Zeichenkette wird dabei in die interne Zwischenablage kopiert). | `+/input delete_beginning_of_line+`
-| kbd:[Ctrl+w]      | entfernt das Wort links vom Cursor (die Zeichenkette wird dabei in die interne Zwischenablage kopiert). | `+/input delete_previous_word+`
-| kbd:[Ctrl+y]      | fügt den Inhalt der internen Zwischenablage ein. | `+/input clipboard_paste+`
-| kbd:[Ctrl+_]      | Rückgängig machen der letzten Aktion, in der Befehlszeile. | `+/input undo+`
-| kbd:[Alt+_]       | Wiederherstellen der letzten Aktion, in der Befehlszeile. | `+/input redo+`
-| kbd:[Tab]         | Vervollständigung von Befehlen oder Nicks (nochmaliges kbd:[Tab]: findet nächste Vervollständigung). | `+/input complete_next+`
-| kbd:[Shift+Tab]   | ohne Vervollständigung: führt eine teilweise Vervollständigung durch. Bei unerledigter Vervollständigung : wird die vorherige Vervollständigung genutzt. | `+/input complete_previous+`
+  kbd:[Ctrl+h]        | entfernt in der Befehlszeile das vorherige Zeichen. | `+/input delete_previous_char+`
+| kbd:[Ctrl+k]        | entfernt alle Zeichen vom Cursor bis zum Ende der Zeile (die Zeichenkette wird dabei in die interne Zwischenablage kopiert). | `+/input delete_end_of_line+`
+| kbd:[Ctrl+t]        | Zeichen austauschen. | `+/input transpose_chars+`
+| kbd:[Ctrl+u]        | entfernt alle Zeichen vom Cursor bis zum Anfang der Zeile (die Zeichenkette wird dabei in die interne Zwischenablage kopiert). | `+/input delete_beginning_of_line+`
+| kbd:[Alt+Backspace] | entfernt das Wort links vom Cursor (die Zeichenkette wird dabei in die interne Zwischenablage kopiert). | `+/input delete_previous_word+`
+// TRANSLATION MISSING
+| kbd:[Ctrl+w]        | Delete previous word of command line until whitespace (deleted string is copied to the internal clipboard). | `+/input delete_previous_word_whitespace+`
+| kbd:[Ctrl+y]        | fügt den Inhalt der internen Zwischenablage ein. | `+/input clipboard_paste+`
+| kbd:[Ctrl+_]        | Rückgängig machen der letzten Aktion, in der Befehlszeile. | `+/input undo+`
+| kbd:[Alt+_]         | Wiederherstellen der letzten Aktion, in der Befehlszeile. | `+/input redo+`
+| kbd:[Tab]           | Vervollständigung von Befehlen oder Nicks (nochmaliges kbd:[Tab]: findet nächste Vervollständigung). | `+/input complete_next+`
+| kbd:[Shift+Tab]     | ohne Vervollständigung: führt eine teilweise Vervollständigung durch. Bei unerledigter Vervollständigung : wird die vorherige Vervollständigung genutzt. | `+/input complete_previous+`
 | kbd:[Enter] +
   kbd:[Ctrl+j] +
-  kbd:[Ctrl+m]      | führt einen Befehl aus oder sendet den Text  (im Such-Modus: stoppt Suche). | `+/input return+`
-| kbd:[Alt+Enter]   | Zeilenvorschub einfügen. | `+/input insert \n+`
-| kbd:[Alt+d]       | löscht das Wort rechts vom Cursor (die Zeichenkette wird dabei in die interne Zwischenablage kopiert). | `+/input delete_next_word+`
-| kbd:[Alt+k]       | zeigt den Tastencode, einschließlich des eingebundenen Befehls, einer Tastenkombination an und fügt diesen in die Befehlszeile ein. | `+/input grab_key_command+`
-| kbd:[Alt+r]       | komplette Eingabezeile lösche.n| `+/input delete_line+`
+  kbd:[Ctrl+m]        | führt einen Befehl aus oder sendet den Text  (im Such-Modus: stoppt Suche). | `+/input return+`
+| kbd:[Alt+Enter]     | Zeilenvorschub einfügen. | `+/input insert \n+`
+| kbd:[Alt+d]         | löscht das Wort rechts vom Cursor (die Zeichenkette wird dabei in die interne Zwischenablage kopiert). | `+/input delete_next_word+`
+| kbd:[Alt+k]         | zeigt den Tastencode, einschließlich des eingebundenen Befehls, einer Tastenkombination an und fügt diesen in die Befehlszeile ein. | `+/input grab_key_command+`
+| kbd:[Alt+r]         | komplette Eingabezeile lösche.n| `+/input delete_line+`
 |===
 
 [[key_bindings_cmdline_color_codes]]
index ec2d4b99f5e684a476f0c0ff6aee3c569a7b7008..a62bd4ffa64c3d727ba9cf3de80b5865edf46b40 100644 (file)
@@ -1614,6 +1614,7 @@ list of actions:
   delete_previous_char: delete previous char
   delete_next_char: delete next char
   delete_previous_word: delete previous word
+  delete_previous_word_whitespace: delete previous word (until whitespace)
   delete_next_word: delete next word
   delete_beginning_of_line: delete from beginning of line until cursor
   delete_end_of_line: delete from cursor until end of line
index 18ece4d8737a0ce63fb9dd4211f037ef96f760c1..a8d5c8f6c8b2e0d27c6c8a488dde992eabc24454 100644 (file)
@@ -427,6 +427,7 @@ WeeChat "core" is located in following directories:
 |          test-gui-chat.cpp          | Tests: chat functions.
 |          test-gui-color.cpp         | Tests: colors.
 |          test-gui-filter.cpp        | Tests: filters.
+|          test-gui-input.cpp         | Tests: input functions.
 |          test-gui-line.cpp          | Tests: lines.
 |          test-gui-nick.cpp          | Tests: nicks.
 |       plugins/                      | Root of unit tests for plugins.
index 183035c58e149c544f06fc20f8c5ab7055f2685d..98e6eb0388f028799dbba296564e43ce5e1200d4 100644 (file)
@@ -1495,27 +1495,28 @@ They can be changed and new ones can be added with the <<command_weechat_key,/ke
 
 [width="100%",cols="^.^3,.^8,.^5",options="header"]
 |===
-| Key               | Description | Command
+| Key                 | Description | Command
 | kbd:[Del] +
-  kbd:[Ctrl+d]      | Delete next char in command line. | `+/input delete_next_char+`
+  kbd:[Ctrl+d]        | Delete next char in command line. | `+/input delete_next_char+`
 | kbd:[Backspace] +
-  kbd:[Ctrl+h]      | Delete previous char in command line. | `+/input delete_previous_char+`
-| kbd:[Ctrl+k]      | Delete from cursor until end of command line (deleted string is copied to the internal clipboard). | `+/input delete_end_of_line+`
-| kbd:[Ctrl+t]      | Transpose chars. | `/input transpose_chars`
-| kbd:[Ctrl+u]      | Delete from cursor until beginning of command line (deleted string is copied to the internal clipboard). | `+/input delete_beginning_of_line+`
-| kbd:[Ctrl+w]      | Delete previous word of command line (deleted string is copied to the internal clipboard). | `+/input delete_previous_word+`
-| kbd:[Ctrl+y]      | Paste the internal clipboard content. | `+/input clipboard_paste+`
-| kbd:[Ctrl+_]      | Undo last action on command line. | `+/input undo+`
-| kbd:[Alt+_]       | Redo last action on command line. | `+/input redo+`
-| kbd:[Tab]         | Complete command or nick (kbd:[Tab] again: find next completion). | `+/input complete_next+`
-| kbd:[Shift+Tab]   | Without completion: do a partial completion, with pending completion: complete with previous completion. | `+/input complete_previous+`
+  kbd:[Ctrl+h]        | Delete previous char in command line. | `+/input delete_previous_char+`
+| kbd:[Ctrl+k]        | Delete from cursor until end of command line (deleted string is copied to the internal clipboard). | `+/input delete_end_of_line+`
+| kbd:[Ctrl+t]        | Transpose chars. | `/input transpose_chars`
+| kbd:[Ctrl+u]        | Delete from cursor until beginning of command line (deleted string is copied to the internal clipboard). | `+/input delete_beginning_of_line+`
+| kbd:[Alt+Backspace] | Delete previous word of command line (deleted string is copied to the internal clipboard). | `+/input delete_previous_word+`
+| kbd:[Ctrl+w]        | Delete previous word of command line until whitespace (deleted string is copied to the internal clipboard). | `+/input delete_previous_word_whitespace+`
+| kbd:[Ctrl+y]        | Paste the internal clipboard content. | `+/input clipboard_paste+`
+| kbd:[Ctrl+_]        | Undo last action on command line. | `+/input undo+`
+| kbd:[Alt+_]         | Redo last action on command line. | `+/input redo+`
+| kbd:[Tab]           | Complete command or nick (kbd:[Tab] again: find next completion). | `+/input complete_next+`
+| kbd:[Shift+Tab]     | Without completion: do a partial completion, with pending completion: complete with previous completion. | `+/input complete_previous+`
 | kbd:[Enter] +
   kbd:[Ctrl+j] +
-  kbd:[Ctrl+m]      | Execute command or send message (in search mode: stop search). | `+/input return+`
-| kbd:[Alt+Enter]   | Insert a newline. | `+/input insert \n+`
-| kbd:[Alt+d]       | Delete next word in command line (deleted string is copied to the internal clipboard). | `+/input delete_next_word+`
-| kbd:[Alt+k]       | Grab a key and insert its code (and command bound if key exists) in command line. | `+/input grab_key_command+`
-| kbd:[Alt+r]       | Delete entire command line. | `+/input delete_line+`
+  kbd:[Ctrl+m]        | Execute command or send message (in search mode: stop search). | `+/input return+`
+| kbd:[Alt+Enter]     | Insert a newline. | `+/input insert \n+`
+| kbd:[Alt+d]         | Delete next word in command line (deleted string is copied to the internal clipboard). | `+/input delete_next_word+`
+| kbd:[Alt+k]         | Grab a key and insert its code (and command bound if key exists) in command line. | `+/input grab_key_command+`
+| kbd:[Alt+r]         | Delete entire command line. | `+/input delete_line+`
 |===
 
 [[key_bindings_cmdline_color_codes]]
index 860b2286c469cdc2375a129c0ecb35e9672b25f8..80a20b74be7ac4457ef6d897b0f63bc0e5e51e35 100644 (file)
@@ -1614,6 +1614,7 @@ liste des actions :
   delete_previous_char : effacer le caractère précédent
   delete_next_char : effacer le caractère suivant
   delete_previous_word : effacer le mot précédent
+  delete_previous_word_whitespace : effacer le mot précédent (jusqu'à un espace)
   delete_next_word : effacer le mot suivant
   delete_beginning_of_line : effacer du début de la ligne jusqu'au curseur
   delete_end_of_line : effacer du curseur jusqu'à la fin de la ligne
index 16183b149f2abca560d6f4c5dfb41049ff3cfbfb..df3c9ac9764859f3f09729dc0b7b6cf8e63e5f13 100644 (file)
@@ -429,6 +429,7 @@ Le cœur de WeeChat est situé dans les répertoires suivants :
 |          test-gui-chat.cpp          | Tests : fonctions de discussion.
 |          test-gui-color.cpp         | Tests : couleurs.
 |          test-gui-filter.cpp        | Tests : filtres.
+|          test-gui-input.cpp         | Tests : fonctions d'entrée.
 |          test-gui-line.cpp          | Tests : lignes.
 |          test-gui-nick.cpp          | Tests : pseudos.
 |       plugins/                      | Racine des tests unitaires pour les extensions.
index 758ec1f8068bfbc53739bde8730b250af123d3c3..12639c66e379530df20cf1c75ffff783ee2cffa0 100644 (file)
@@ -1536,27 +1536,28 @@ Ils peuvent être modifiés et de nouveaux peuvent être ajoutés avec la comman
 
 [width="100%",cols="^.^3,.^8,.^5",options="header"]
 |===
-| Touche            | Description | Commande
+| Touche              | Description | Commande
 | kbd:[Del] +
-  kbd:[Ctrl+d]      | Effacer le caractère suivant sur la ligne de commande. | `+/input delete_next_char+`
+  kbd:[Ctrl+d]        | Effacer le caractère suivant sur la ligne de commande. | `+/input delete_next_char+`
 | kbd:[Backspace] +
-  kbd:[Ctrl+h]      | Effacer le caractère précédent sur la ligne de commande. | `+/input delete_previous_char+`
-| kbd:[Ctrl+k]      | Effacer du curseur jusqu'à la fin de la ligne de commande (la chaîne supprimée est copiée dans le presse-papiers interne). | `+/input delete_end_of_line+`
-| kbd:[Ctrl+t]      | Inverser deux caractères. | `+/input transpose_chars+`
-| kbd:[Ctrl+u]      | Effacer du curseur jusqu'au début de la ligne de commande (la chaîne supprimée est copiée dans le presse-papiers interne). | `+/input delete_beginning_of_line+`
-| kbd:[Ctrl+w]      | Effacer le mot précédent sur la ligne de commande (la chaîne supprimée est copiée dans le presse-papiers interne). | `+/input delete_previous_word+`
-| kbd:[Ctrl+y]      | Coller le contenu du presse-papiers interne. | `+/input clipboard_paste+`
-| kbd:[Ctrl+_]      | Défaire la dernière action sur la ligne de commande. | `+/input undo+`
-| kbd:[Alt+_]       | Refaire la dernière action sur la ligne de commande. | `+/input redo+`
-| kbd:[Tab]         | Compléter la commande ou le pseudo (kbd:[Tab] de nouveau : trouver la complétion suivante). | `+/input complete_next+`
-| kbd:[Shift+Tab]   | Sans complétion, effectue une complétion partielle. Avec une complétion en cours, complète avec la complétion précédente. | `+/input complete_previous+`
+  kbd:[Ctrl+h]        | Effacer le caractère précédent sur la ligne de commande. | `+/input delete_previous_char+`
+| kbd:[Ctrl+k]        | Effacer du curseur jusqu'à la fin de la ligne de commande (la chaîne supprimée est copiée dans le presse-papiers interne). | `+/input delete_end_of_line+`
+| kbd:[Ctrl+t]        | Inverser deux caractères. | `+/input transpose_chars+`
+| kbd:[Ctrl+u]        | Effacer du curseur jusqu'au début de la ligne de commande (la chaîne supprimée est copiée dans le presse-papiers interne). | `+/input delete_beginning_of_line+`
+| kbd:[Alt+Backspace] | Effacer le mot précédent sur la ligne de commande (la chaîne supprimée est copiée dans le presse-papiers interne). | `+/input delete_previous_word+`
+| kbd:[Ctrl+w]        | Effacer le mot précédent sur la ligne de commande jusqu'à un espace (la chaîne supprimée est copiée dans le presse-papiers interne). | `+/input delete_previous_word_whitespace+`
+| kbd:[Ctrl+y]        | Coller le contenu du presse-papiers interne. | `+/input clipboard_paste+`
+| kbd:[Ctrl+_]        | Défaire la dernière action sur la ligne de commande. | `+/input undo+`
+| kbd:[Alt+_]         | Refaire la dernière action sur la ligne de commande. | `+/input redo+`
+| kbd:[Tab]           | Compléter la commande ou le pseudo (kbd:[Tab] de nouveau : trouver la complétion suivante). | `+/input complete_next+`
+| kbd:[Shift+Tab]     | Sans complétion, effectue une complétion partielle. Avec une complétion en cours, complète avec la complétion précédente. | `+/input complete_previous+`
 | kbd:[Enter] +
   kbd:[Ctrl+j] +
-  kbd:[Ctrl+m]      | Exécuter la commande ou envoyer le message (en mode recherche : arrêter la recherche). | `+/input return+`
-| kbd:[Alt+Enter]   | Insérer une nouvelle ligne. | `+/input insert \n+`
-| kbd:[Alt+d]       | Effacer le mot suivant (la chaîne supprimée est copiée dans le presse-papiers interne). | `+/input delete_next_word+`
-| kbd:[Alt+k]       | Capturer une touche et insérer son code (et la commande associée si la commande existe) sur la ligne de commande. | `+/input grab_key_command+`
-| kbd:[Alt+r]       | Effacer entièrement la ligne de commande. | `+/input delete_line+`
+  kbd:[Ctrl+m]        | Exécuter la commande ou envoyer le message (en mode recherche : arrêter la recherche). | `+/input return+`
+| kbd:[Alt+Enter]     | Insérer une nouvelle ligne. | `+/input insert \n+`
+| kbd:[Alt+d]         | Effacer le mot suivant (la chaîne supprimée est copiée dans le presse-papiers interne). | `+/input delete_next_word+`
+| kbd:[Alt+k]         | Capturer une touche et insérer son code (et la commande associée si la commande existe) sur la ligne de commande. | `+/input grab_key_command+`
+| kbd:[Alt+r]         | Effacer entièrement la ligne de commande. | `+/input delete_line+`
 |===
 
 [[key_bindings_cmdline_color_codes]]
index 538920751c75e132244bfa2fb0172013490c7e86..69a9152bc705b5b62094d47661be25b3a2921d66 100644 (file)
@@ -1614,6 +1614,7 @@ list of actions:
   delete_previous_char: delete previous char
   delete_next_char: delete next char
   delete_previous_word: delete previous word
+  delete_previous_word_whitespace: delete previous word (until whitespace)
   delete_next_word: delete next word
   delete_beginning_of_line: delete from beginning of line until cursor
   delete_end_of_line: delete from cursor until end of line
index 35a98346542009496a34cdc9d0b40610d0773339..c350e08b072ae2f5197124c46ea1debc3c7ef6a2 100644 (file)
@@ -1623,33 +1623,35 @@ They can be changed and new ones can be added with the <<command_weechat_key,/ke
 
 [width="100%",cols="^.^3,.^8,.^5",options="header"]
 |===
-| Tasti             | Descrizione | Comando
+| Tasti               | Descrizione | Comando
 | kbd:[Del] +
-  kbd:[Ctrl+d]      | Elimina il carattere successivo nella riga di comando. | `+/input delete_next_char+`
+  kbd:[Ctrl+d]        | Elimina il carattere successivo nella riga di comando. | `+/input delete_next_char+`
 | kbd:[Backspace] +
-  kbd:[Ctrl+h]      | Elimina il carattere precedente nella riga di comando. | `+/input delete_previous_char+`
+  kbd:[Ctrl+h]        | Elimina il carattere precedente nella riga di comando. | `+/input delete_previous_char+`
+// TRANSLATION MISSING
+| kbd:[Ctrl+k]        | Elimina dal cursore fino alla fine della riga di comando (deleted string is copied to the internal clipboard). | `+/input delete_end_of_line+`
+| kbd:[Ctrl+t]        | Inverti caratteri. | `+/input transpose_chars+`
 // TRANSLATION MISSING
-| kbd:[Ctrl+k]      | Elimina dal cursore fino alla fine della riga di comando (deleted string is copied to the internal clipboard). | `+/input delete_end_of_line+`
-| kbd:[Ctrl+t]      | Inverti caratteri. | `+/input transpose_chars+`
+| kbd:[Ctrl+u]        | Elimina dal cursore fino all'inizio della riga di comando (deleted string is copied to the internal clipboard). | `+/input delete_beginning_of_line+`
 // TRANSLATION MISSING
-| kbd:[Ctrl+u]      | Elimina dal cursore fino all'inizio della riga di comando (deleted string is copied to the internal clipboard). | `+/input delete_beginning_of_line+`
+| kbd:[Alt+Backspace] | Elimina la parola precedente nella riga di comando (deleted string is copied to the internal clipboard). | `+/input delete_previous_word+`
 // TRANSLATION MISSING
-| kbd:[Ctrl+w]      | Elimina la parola precedente nella riga di comando (deleted string is copied to the internal clipboard). | `+/input delete_previous_word+`
+| kbd:[Ctrl+w]        | Delete previous word of command line until whitespace (deleted string is copied to the internal clipboard). | `+/input delete_previous_word_whitespace+`
 // TRANSLATION MISSING
-| kbd:[Ctrl+y]      | Paste the internal clipboard content. | `+/input clipboard_paste+`
-| kbd:[Ctrl+_]      | Annulla l'ultima azione sulla riga di comando. | `+/input undo+`
-| kbd:[Alt+_]       | Ripete l'ultima azione sulla riga di comando. | `+/input redo+`
-| kbd:[Tab]         | Completa comando o nick (kbd:[Tab] di nuovo: trova prossimo completamento). | `+/input complete_next+`
-| kbd:[Shift+Tab]   | Senza completamento: effettua un completamento parziale, con completamento in sospeso: completa con il completamento precedente. | `+/input complete_previous+`
+| kbd:[Ctrl+y]        | Paste the internal clipboard content. | `+/input clipboard_paste+`
+| kbd:[Ctrl+_]        | Annulla l'ultima azione sulla riga di comando. | `+/input undo+`
+| kbd:[Alt+_]         | Ripete l'ultima azione sulla riga di comando. | `+/input redo+`
+| kbd:[Tab]           | Completa comando o nick (kbd:[Tab] di nuovo: trova prossimo completamento). | `+/input complete_next+`
+| kbd:[Shift+Tab]     | Senza completamento: effettua un completamento parziale, con completamento in sospeso: completa con il completamento precedente. | `+/input complete_previous+`
 | kbd:[Invio] +
   kbd:[Ctrl+j] +
-  kbd:[Ctrl+m]      | Esegue comando o invia messaggio (in modalità ricerca: ferma ricerca). | `+/input return+`
+  kbd:[Ctrl+m]        | Esegue comando o invia messaggio (in modalità ricerca: ferma ricerca). | `+/input return+`
 // TRANSLATION MISSING
-| kbd:[Alt+Enter]   | Insert a newline. | `+/input insert \n+`
+| kbd:[Alt+Enter]     | Insert a newline. | `+/input insert \n+`
 // TRANSLATION MISSING
-| kbd:[Alt+d]       | Elimina la parola successiva nella riga di comando (deleted string is copied to the internal clipboard). | `+/input delete_next_word+`
-| kbd:[Alt+k]       | Cattura un tasto ed inserisce il suo codice (e il comando associato se il tasto esiste) nella riga di comando. | `+/input grab_key_command+`
-| kbd:[Alt+r]       | Elimina l'intera riga di comando. | `+/input delete_line+`
+| kbd:[Alt+d]         | Elimina la parola successiva nella riga di comando (deleted string is copied to the internal clipboard). | `+/input delete_next_word+`
+| kbd:[Alt+k]         | Cattura un tasto ed inserisce il suo codice (e il comando associato se il tasto esiste) nella riga di comando. | `+/input grab_key_command+`
+| kbd:[Alt+r]         | Elimina l'intera riga di comando. | `+/input delete_line+`
 |===
 
 // TRANSLATION MISSING
index decabcddfdf60593d0b685d6d6c614da17719e7a..d9251f8f0f381a173f2d5c3e82fdaeb8739553a6 100644 (file)
@@ -1614,6 +1614,7 @@ list of actions:
   delete_previous_char: delete previous char
   delete_next_char: delete next char
   delete_previous_word: delete previous word
+  delete_previous_word_whitespace: delete previous word (until whitespace)
   delete_next_word: delete next word
   delete_beginning_of_line: delete from beginning of line until cursor
   delete_end_of_line: delete from cursor until end of line
index ee1b49ad8c818ac236f14365afec75648a636740..16e3d06e12060a17f93df630fa9cd5805c141405 100644 (file)
@@ -460,6 +460,8 @@ WeeChat "core" は以下のディレクトリに配置されています:
 |          test-gui-color.cpp         | Tests: colors.
 // TRANSLATION MISSING
 |          test-gui-filter.cpp        | Tests: filters.
+// TRANSLATION MISSING
+|          test-gui-input.cpp         | Tests: input functions.
 |          test-gui-line.cpp          | テスト: 行
 // TRANSLATION MISSING
 |          test-gui-nick.cpp          | テスト: nicks
index cfcb3514a2ae4717556790e0d47d2b64085073dc..85560c43750efadd2dc47b9ca4f67a825e769e4c 100644 (file)
@@ -1575,28 +1575,30 @@ They can be changed and new ones can be added with the <<command_weechat_key,/ke
 
 [width="100%",cols="^.^3,.^8,.^5",options="header"]
 |===
-| キー               | 説明 | コマンド
+| キー                | 説明 | コマンド
 | kbd:[Del] +
-  kbd:[Ctrl+d]      | コマンドラインで次の文字を削除 | `+/input delete_next_char+`
+  kbd:[Ctrl+d]        | コマンドラインで次の文字を削除 | `+/input delete_next_char+`
 | kbd:[Backspace] +
-  kbd:[Ctrl+h]      | コマンドラインで前の文字を削除 | `+/input delete_previous_char+`
-| kbd:[Ctrl+k]      | コマンドラインでカーソルより後の文字列を削除 (削除された文字列は WeeChat 専用の内部クリップボードに保存) | `+/input delete_end_of_line+`
-| kbd:[Ctrl+t]      | 文字の入れ替え | `+/input transpose_chars+`
-| kbd:[Ctrl+u]      | コマンドラインでカーソルより前の文字列を削除 (削除された文字列は WeeChat 専用の内部クリップボードに保存) | `+/input delete_beginning_of_line+`
-| kbd:[Ctrl+w]      | コマンドラインで前の単語を削除 (削除された文字列は WeeChat 専用の内部クリップボードに保存) | `+/input delete_previous_word+`
-| kbd:[Ctrl+y]      | WeeChat 専用の内部クリップボードの内容をペースト | `+/input clipboard_paste+`
-| kbd:[Ctrl+_]      | コマンドラインの最後の動作をやり直す | `+/input undo+`
-| kbd:[Alt+_]       | コマンドラインの最後の動作を取り消す | `+/input redo+`
-| kbd:[Tab]         | コマンドやニックネームを補完 (再度 kbd:[Tab] することで次の補完候補を表示) | `+/input complete_next+`
-| kbd:[Shift+Tab]   | 補完候補が無い場合: 部分補完を行う、補完候補が有る場合: 前の補完候補を表示 | `+/input complete_previous+`
+  kbd:[Ctrl+h]        | コマンドラインで前の文字を削除 | `+/input delete_previous_char+`
+| kbd:[Ctrl+k]        | コマンドラインでカーソルより後の文字列を削除 (削除された文字列は WeeChat 専用の内部クリップボードに保存) | `+/input delete_end_of_line+`
+| kbd:[Ctrl+t]        | 文字の入れ替え | `+/input transpose_chars+`
+| kbd:[Ctrl+u]        | コマンドラインでカーソルより前の文字列を削除 (削除された文字列は WeeChat 専用の内部クリップボードに保存) | `+/input delete_beginning_of_line+`
+| kbd:[Alt+Backspace] | コマンドラインで前の単語を削除 (削除された文字列は WeeChat 専用の内部クリップボードに保存) | `+/input delete_previous_word+`
+// TRANSLATION MISSING
+| kbd:[Ctrl+w]        | Delete previous word of command line until whitespace (deleted string is copied to the internal clipboard). | `+/input delete_previous_word_whitespace+`
+| kbd:[Ctrl+y]        | WeeChat 専用の内部クリップボードの内容をペースト | `+/input clipboard_paste+`
+| kbd:[Ctrl+_]        | コマンドラインの最後の動作をやり直す | `+/input undo+`
+| kbd:[Alt+_]         | コマンドラインの最後の動作を取り消す | `+/input redo+`
+| kbd:[Tab]           | コマンドやニックネームを補完 (再度 kbd:[Tab] することで次の補完候補を表示) | `+/input complete_next+`
+| kbd:[Shift+Tab]     | 補完候補が無い場合: 部分補完を行う、補完候補が有る場合: 前の補完候補を表示 | `+/input complete_previous+`
 | kbd:[Enter] +
   kbd:[Ctrl+j] +
-  kbd:[Ctrl+m]      | コマンドを実行するか、メッセージを送信する (検索モードの場合: 検索の終了) | `+/input return+`
+  kbd:[Ctrl+m]        | コマンドを実行するか、メッセージを送信する (検索モードの場合: 検索の終了) | `+/input return+`
 // TRANSLATION MISSING
-| kbd:[Alt+Enter]   | Insert a newline. | `+/input insert \n+`
-| kbd:[Alt+d]       | コマンドラインで次の単語を削除 (削除された文字列は WeeChat 専用の内部クリップボードに保存) | `+/input delete_next_word+`
-| kbd:[Alt+k]       | キー入力を奪って、コマンドラインにコード (キーが割り当てられていればコマンド) を入力 | `+/input grab_key_command+`
-| kbd:[Alt+r]       | コマンドラインへの入力をすべて削除 | `+/input delete_line+`
+| kbd:[Alt+Enter]     | Insert a newline. | `+/input insert \n+`
+| kbd:[Alt+d]         | コマンドラインで次の単語を削除 (削除された文字列は WeeChat 専用の内部クリップボードに保存) | `+/input delete_next_word+`
+| kbd:[Alt+k]         | キー入力を奪って、コマンドラインにコード (キーが割り当てられていればコマンド) を入力 | `+/input grab_key_command+`
+| kbd:[Alt+r]         | コマンドラインへの入力をすべて削除 | `+/input delete_line+`
 |===
 
 // TRANSLATION MISSING
index 4b7ae9531be8ffde65d01c4a0cf4f649f9fd3668..b3c2da23794809b9805a7678630e30ea5cc0be9a 100644 (file)
@@ -1597,63 +1597,64 @@ Wartość: ilość elementów historii do pokazania
 ----
 /input  <akcja> [<argumenty>]
 
-lista akcji:
-  return: symuluje klawisz "enter"
-  complete_next: dopełnia słowo następnym dopełnieniem
-  complete_previous: dopełnia słowo poprzednim dopełnieniem
-  search_text_here: szuka testu w obecnej pozycji w buforze
-  search_text: szuka tekstu w buforze
-  search_switch_case: przełącza na dokładne dopasowanie przy szukaniu
-  search_switch_regex: przełącza typy wyszukiwania ciąg/wyrażenie regularne
-  search_switch_where: zmienia miejsce przeszukiwania na wiadomości/przedrostki
-  search_previous: szuka poprzednich linii
-  search_next: szuka następnych linii
-  search_stop_here: zatrzymuje wyszukiwanie na obecnej pozycji
-  search_stop: zatrzymuje wyszukiwanie
-  delete_previous_char: usuwa poprzedni znak
-  delete_next_char: usuwa następny znak
-  delete_previous_word: usuwa poprzednie słowo
-  delete_next_word: usuwa następne słowo
-  delete_beginning_of_line: usuwa od początku linii do kursora
-  delete_end_of_line: usuwa od kursora do końca linii
-  delete_line: usuwa cała linię
-  clipboard_paste: wkleja ze schowka
-  transpose_chars: zamienia dwa znaki
-  undo: cofa ostatnia akcję w linii poleceń
-  redo: ponownie wykonuje cofniętą akcję w linii poleceń
-  move_beginning_of_line: przesuwa kursor na początek linii
-  move_end_of_line: przesuwa kursor na koniec linii
-  move_previous_char: przesuwa kursor do poprzedniego znaku
-  move_next_char: przesuwa kursor do następnego znaku
-  move_previous_word: przesuwa kursor do poprzedniego słowa
-  move_next_word: przesuwa kursor do następnego słowa
-  history_previous: przywołuje poprzednia komendę z historii obecnego bufora
-  history_next: przywołuje następną komendę z historii obecnego bufora
-  history_global_previous: przywołuje poprzednią komendę z globalnej historii
-  history_global_next: przywołuje następną komendę z globalnej historii
-  jump_smart: przechodzi do następnego bufora z aktywnością
-  jump_last_buffer_displayed: przechodzi do ostatnio wyświetlanego bufora (przed ostatnim przeskoczeniem do bufora)
-  jump_previously_visited_buffer: przeskakuje do poprzedniego bufora
-  jump_next_visited_buffer: przeskakuje to następnego bufora
-  hotlist_clear: czyści hotlistę (opcjonaly argument: "lowest" czyści najniższy poziom na hotliście, "highest" czyści najwyższy poziom na hotliście, albo maska poziomu: liczba będąca kombinacją 1=join/part, 2=wiadomość, 4=prywatny, 8=podświetlenie)
-  hotlist_remove_buffer: usuwa obecny bufor z hotlisty
-  hotlist_restore_buffer: przywraca ostatnią usuniętą hotlistę w obecnym buforze
-  hotlist_restore_all: przywraca ostatnią usuniętą hotlistę we wszystkich buforach
-  grab_key: przechwytuje klawisz (opcjonalny argument: opóźnienie końca przechwycenia, domyślnie jest to 500 milisekund)
-  grab_key_command: przechwytuje klawisz z przypisaną komendą (opcjonalny argument: opóźnienie końca przechwycenia, domyślnie jest to 500 milisekund)
-  grab_mouse: przechwytuje kod zdarzenia myszy
-  grab_mouse_area: przechwytuje kod zdarzenia myszy z obszarem
-  set_unread: ustawia znacznik nie przeczytania dla wszystkich buforów
-  set_unread_current_buffer: ustawia znacznik nie przeczytania dla obecnego bufora
-  switch_active_buffer: przełącza do następnego połączonego buforu
-  switch_active_buffer_previous: przełącza do poprzedniego połączonego buforu
-  zoom_merged_buffer: zoom na połączony bufor
-  insert: wkleja tekst do linii poleceń (dozwolone są wyescapowane znaki, zobacz /help print)
-  send: wysyła tekst do bufora
-  paste_start: zaczyna wklejanie (tryb z rozpoznawaniem wklejanego tekstu)
-  paste_stop: kończy wklejanie (tryb z rozpoznawaniem wklejanego tekstu)
-
-Ta komenda jest używana do przypisywania klawiszy lub przez wtyczki.
+list of actions:
+  return: simulate key "enter"
+  complete_next: complete word with next completion
+  complete_previous: complete word with previous completion
+  search_text_here: search text in buffer at current position
+  search_text: search text in buffer
+  search_switch_case: switch exact case for search
+  search_switch_regex: switch search type: string/regular expression
+  search_switch_where: switch search in messages/prefixes
+  search_previous: search previous line
+  search_next: search next line
+  search_stop_here: stop search at current position
+  search_stop: stop search
+  delete_previous_char: delete previous char
+  delete_next_char: delete next char
+  delete_previous_word: delete previous word
+  delete_previous_word_whitespace: delete previous word (until whitespace)
+  delete_next_word: delete next word
+  delete_beginning_of_line: delete from beginning of line until cursor
+  delete_end_of_line: delete from cursor until end of line
+  delete_line: delete entire line
+  clipboard_paste: paste from the internal clipboard
+  transpose_chars: transpose two chars
+  undo: undo last command line action
+  redo: redo last command line action
+  move_beginning_of_line: move cursor to beginning of line
+  move_end_of_line: move cursor to end of line
+  move_previous_char: move cursor to previous char
+  move_next_char: move cursor to next char
+  move_previous_word: move cursor to previous word
+  move_next_word: move cursor to next word
+  history_previous: recall previous command in current buffer history
+  history_next: recall next command in current buffer history
+  history_global_previous: recall previous command in global history
+  history_global_next: recall next command in global history
+  jump_smart: jump to next buffer with activity
+  jump_last_buffer_displayed: jump to last buffer displayed (before last jump to a buffer)
+  jump_previously_visited_buffer: jump to previously visited buffer
+  jump_next_visited_buffer: jump to next visited buffer
+  hotlist_clear: clear hotlist (optional argument: "lowest" to clear only lowest level in hotlist, "highest" to clear only highest level in hotlist, or level mask: integer which is a combination of 1=join/part, 2=message, 4=private, 8=highlight)
+  hotlist_remove_buffer: remove current buffer from hotlist
+  hotlist_restore_buffer: restore latest hotlist removed in the current buffer
+  hotlist_restore_all: restore latest hotlist removed in all buffers
+  grab_key: grab a key (optional argument: delay for end of grab, default is 500 milliseconds)
+  grab_key_command: grab a key with its associated command (optional argument: delay for end of grab, default is 500 milliseconds)
+  grab_mouse: grab mouse event code
+  grab_mouse_area: grab mouse event code with area
+  set_unread: set unread marker for all buffers
+  set_unread_current_buffer: set unread marker for current buffer
+  switch_active_buffer: switch to next merged buffer
+  switch_active_buffer_previous: switch to previous merged buffer
+  zoom_merged_buffer: zoom on merged buffer
+  insert: insert text in command line (escaped chars are allowed, see /help print)
+  send: send text to the buffer
+  paste_start: start paste (bracketed paste mode)
+  paste_stop: stop paste (bracketed paste mode)
+
+This command is used by key bindings or plugins.
 ----
 
 [[command_weechat_item]]
index a7e97914ff296fe6df3b60c167d687b1ba41fd7d..21c52582b9f41e253f24598386fce3579d148e10 100644 (file)
@@ -1518,27 +1518,29 @@ Można je zmienić oraz dodać nowe za pomocą komendy <<command_weechat_key,/ke
 
 [width="100%",cols="^.^3,.^8,.^5",options="header"]
 |===
-| Skrót             | Opis | Komenda
+| Skrót               | Opis | Komenda
 | kbd:[Del] +
-  kbd:[Ctrl+d]      | Usuń następny znak w linii poleceń. | `+/input delete_next_char+`
+  kbd:[Ctrl+d]        | Usuń następny znak w linii poleceń. | `+/input delete_next_char+`
 | kbd:[Backspace] +
-  kbd:[Ctrl+h]      | Usuń poprzedni znak w linii poleceń. | `+/input delete_previous_char+`
-| kbd:[Ctrl+k]      | Usuń od znacznika kursora do końca linii poleceń (usuwany ciąg jest kopiowany do wewnętrznego schowka). | `+/input delete_end_of_line+`
-| kbd:[Ctrl+t]      | Przestaw znaki. | `+/input transpose_chars+`
-| kbd:[Ctrl+u]      | Usuń od znaku kursora do początku linii poleceń (usuwany ciąg jest kopiowany do wewnętrznego schowka). | `+/input delete_beginning_of_line+`
-| kbd:[Ctrl+w]      | Usuń poprzednie słowo w linii poleceń (usuwany ciąg jest kopiowany do wewnętrznego schowka). | `+/input delete_previous_word+`
-| kbd:[Ctrl+y]      | Wkleja zawartość wewnętrznego schowka. | `+/input clipboard_paste+`
-| kbd:[Ctrl+_]      | Cofnij poprzednia akcję w linii poleceń. | `+/input undo+`
-| kbd:[Alt+_]       | Powtórz ostatnią akcję w linii poleceń. | `+/input redo+`
-| kbd:[Tab]         | Dopełnij komendę lub nick (ponowne wciśnięcie kbd:[Tab]: znajdź następne dopełnienie). | `+/input complete_next+`
-| kbd:[Shift+Tab]   | Bez dopełnienia: wykonaj częściowe dopełnienie, z oczekującym dopełnieniem: dopełnij z poprzednim dopełnieniem. | `+/input complete_previous+`
+  kbd:[Ctrl+h]        | Usuń poprzedni znak w linii poleceń. | `+/input delete_previous_char+`
+| kbd:[Ctrl+k]        | Usuń od znacznika kursora do końca linii poleceń (usuwany ciąg jest kopiowany do wewnętrznego schowka). | `+/input delete_end_of_line+`
+| kbd:[Ctrl+t]        | Przestaw znaki. | `+/input transpose_chars+`
+| kbd:[Ctrl+u]        | Usuń od znaku kursora do początku linii poleceń (usuwany ciąg jest kopiowany do wewnętrznego schowka). | `+/input delete_beginning_of_line+`
+| kbd:[Alt+Backspace] | Usuń poprzednie słowo w linii poleceń (usuwany ciąg jest kopiowany do wewnętrznego schowka). | `+/input delete_previous_word+`
+// TRANSLATION MISSING
+| kbd:[Ctrl+w]        | Delete previous word of command line until whitespace (deleted string is copied to the internal clipboard). | `+/input delete_previous_word_whitespace+`
+| kbd:[Ctrl+y]        | Wkleja zawartość wewnętrznego schowka. | `+/input clipboard_paste+`
+| kbd:[Ctrl+_]        | Cofnij poprzednia akcję w linii poleceń. | `+/input undo+`
+| kbd:[Alt+_]         | Powtórz ostatnią akcję w linii poleceń. | `+/input redo+`
+| kbd:[Tab]           | Dopełnij komendę lub nick (ponowne wciśnięcie kbd:[Tab]: znajdź następne dopełnienie). | `+/input complete_next+`
+| kbd:[Shift+Tab]     | Bez dopełnienia: wykonaj częściowe dopełnienie, z oczekującym dopełnieniem: dopełnij z poprzednim dopełnieniem. | `+/input complete_previous+`
 | kbd:[Enter] +
   kbd:[Ctrl+j] +
-  kbd:[Ctrl+m]      | Wykonaj komendę lub wyślij wiadomość (w trybie wyszukiwania: przerwij wyszukiwanie). | `+/input return+`
-| kbd:[Alt+Enter]   | Wstawia nową linię. | `+/input insert \n+`
-| kbd:[Alt+d]       | Usuń następne słowo w linii poleceń (usuwany ciąg jest kopiowany do wewnętrznego schowka). | `+/input delete_next_word+`
-| kbd:[Alt+k]       | Przechwyć wciśnięte klawisze i zwróć ich kod (i przypisaną komendę, jeśli istnieje) w linii poleceń. | `+/input grab_key_command+`
-| kbd:[Alt+r]       | Usuń całą zawartość linii poleceń. | `+/input delete_line+`
+  kbd:[Ctrl+m]        | Wykonaj komendę lub wyślij wiadomość (w trybie wyszukiwania: przerwij wyszukiwanie). | `+/input return+`
+| kbd:[Alt+Enter]     | Wstawia nową linię. | `+/input insert \n+`
+| kbd:[Alt+d]         | Usuń następne słowo w linii poleceń (usuwany ciąg jest kopiowany do wewnętrznego schowka). | `+/input delete_next_word+`
+| kbd:[Alt+k]         | Przechwyć wciśnięte klawisze i zwróć ich kod (i przypisaną komendę, jeśli istnieje) w linii poleceń. | `+/input grab_key_command+`
+| kbd:[Alt+r]         | Usuń całą zawartość linii poleceń. | `+/input delete_line+`
 |===
 
 [[key_bindings_cmdline_color_codes]]
index 771b40bec79947fd9696a65020c62f5fbec3221a..038a4554e296d7c003d0af00acf9600fb37910f4 100644 (file)
@@ -1598,63 +1598,64 @@ addreplace: додаје или замењује постојећи филтер
 ----
 /input  <акција> [<аргументи>]
 
-листа акција:
-  return: симулира притисак на тастер „ентер”
-  complete_next: довршава реч са наредним довршавањем
-  complete_previous: довршава реч са претходним довршавањем
-  search_text_here: претражује текст у баферу почевши од текуће позиције
-  search_text: претражује текст у баферу
-  search_switch_case: укључује употребу тачне величине слова код претраге
-  search_switch_regex: мења тип претраге: стринг/регуларни израз
-  search_switch_where: укључује претрагу у порукама/префиксима
-  search_previous: претрага у претходној линији
-  search_next: претрага у наредној линији
-  search_stop_here: зауставља претрагу на текућој позицији
-  search_stop: зауставља претрагу
-  delete_previous_char: брише претходни карактер
-  delete_next_char: брише наредни карактер
-  delete_previous_word: брише претходну реч
-  delete_next_word: брише наредну реч
-  delete_beginning_of_line: брише од почетка линије до позиције курсора
-  delete_end_of_line: брише од позиције курсора до краја линије
-  delete_line: брише комплетну линију
-  clipboard_paste: налепљује из интерног клипборда
-  transpose_chars: транспонује два карактера (замењују места)
-  undo: поништава последњу акцију командне линије
-  redo: обнавља последње поништену акцију команде линије
-  move_beginning_of_line: помера курсор на почетак линије
-  move_end_of_line: помера курсор на крај линије
-  move_previous_char: помера курсор на претходни карактер
-  move_next_char: помера курсор на наредни карактер
-  move_previous_word: помера курсор на претходну реч
-  move_next_word: помера курсор на наредну реч
-  history_previous: позива претходну команду из историје команди текућег бафера
-  history_next: позива наредну команду из историје команди текућег бафера
-  history_global_previous: позива претходну команду из глобалне историје команди
-  history_global_next: позива наредну команду из глобалне историје команди
-  jump_smart: скаче на наредни бафер у коме постоји активност
-  jump_last_buffer_displayed: скаче на последњи приказани бафер (пре последњег скока на бафер)
-  jump_previously_visited_buffer: скаче на претходно посећени бафер
-  jump_next_visited_buffer: скаче на наредни посећени бафер
-  hotlist_clear: брише врућу листу (необавезни аргументи: „lowest” за брисање само најнижег нивоа у врућој листи, „highest” за брисање само највишег нивоа у врућој листи, или маска нивоа: целобројна вредност која представља комбинацију 1=join/part, 2=порука, 4=приватно, 8=истицање)
-  hotlist_remove_buffer: уклања текући бафер из вруће листе
-  hotlist_restore_buffer: враћа последњу уклоњену врућу листу у текући бафер
-  hotlist_restore_all: враћа последњу уклоњену врућу листу у све бафере
-  grab_key: преузима тастер (необавезни аргумент: кашњење за крај преузимања, подразумевано је 500 милисекунди)
-  grab_key_command: преузима тастер са својом придруженом командом (необавезни аргумент: кашњење за крај преузимања, подразумевано је 500 милисекунди)
-  grab_mouse: преузима кôд догађаја миша
-  grab_mouse_area: преузима кôд догађаја миша заједно са површином
-  set_unread: поставља маркер непрочитан за све бафере
-  set_unread_current_buffer: поставља маркер непрочитан за текући бафер
-  switch_active_buffer: прелази на наредни спојени бафер
-  switch_active_buffer_previous: прелази на претходни спојени бафер
-  zoom_merged_buffer: зумира на спојени бафер
-  insert: умеће текст у командну линију (дозвољени су означени карактери, погледајте /help print)
-  send: шаље текст баферу
-  paste_start: започиње налепљивање (режим ограђеног налепљивања)
-  paste_stop: зауставља налепљивање (режим ограђеног налепљивања)
-
-Ову команду користе тастерске пречице или додаци.
+list of actions:
+  return: simulate key "enter"
+  complete_next: complete word with next completion
+  complete_previous: complete word with previous completion
+  search_text_here: search text in buffer at current position
+  search_text: search text in buffer
+  search_switch_case: switch exact case for search
+  search_switch_regex: switch search type: string/regular expression
+  search_switch_where: switch search in messages/prefixes
+  search_previous: search previous line
+  search_next: search next line
+  search_stop_here: stop search at current position
+  search_stop: stop search
+  delete_previous_char: delete previous char
+  delete_next_char: delete next char
+  delete_previous_word: delete previous word
+  delete_previous_word_whitespace: delete previous word (until whitespace)
+  delete_next_word: delete next word
+  delete_beginning_of_line: delete from beginning of line until cursor
+  delete_end_of_line: delete from cursor until end of line
+  delete_line: delete entire line
+  clipboard_paste: paste from the internal clipboard
+  transpose_chars: transpose two chars
+  undo: undo last command line action
+  redo: redo last command line action
+  move_beginning_of_line: move cursor to beginning of line
+  move_end_of_line: move cursor to end of line
+  move_previous_char: move cursor to previous char
+  move_next_char: move cursor to next char
+  move_previous_word: move cursor to previous word
+  move_next_word: move cursor to next word
+  history_previous: recall previous command in current buffer history
+  history_next: recall next command in current buffer history
+  history_global_previous: recall previous command in global history
+  history_global_next: recall next command in global history
+  jump_smart: jump to next buffer with activity
+  jump_last_buffer_displayed: jump to last buffer displayed (before last jump to a buffer)
+  jump_previously_visited_buffer: jump to previously visited buffer
+  jump_next_visited_buffer: jump to next visited buffer
+  hotlist_clear: clear hotlist (optional argument: "lowest" to clear only lowest level in hotlist, "highest" to clear only highest level in hotlist, or level mask: integer which is a combination of 1=join/part, 2=message, 4=private, 8=highlight)
+  hotlist_remove_buffer: remove current buffer from hotlist
+  hotlist_restore_buffer: restore latest hotlist removed in the current buffer
+  hotlist_restore_all: restore latest hotlist removed in all buffers
+  grab_key: grab a key (optional argument: delay for end of grab, default is 500 milliseconds)
+  grab_key_command: grab a key with its associated command (optional argument: delay for end of grab, default is 500 milliseconds)
+  grab_mouse: grab mouse event code
+  grab_mouse_area: grab mouse event code with area
+  set_unread: set unread marker for all buffers
+  set_unread_current_buffer: set unread marker for current buffer
+  switch_active_buffer: switch to next merged buffer
+  switch_active_buffer_previous: switch to previous merged buffer
+  zoom_merged_buffer: zoom on merged buffer
+  insert: insert text in command line (escaped chars are allowed, see /help print)
+  send: send text to the buffer
+  paste_start: start paste (bracketed paste mode)
+  paste_stop: stop paste (bracketed paste mode)
+
+This command is used by key bindings or plugins.
 ----
 
 [[command_weechat_item]]
index cf660781b5f7692f27e6ea450f5ec4de7461923a..bba04f58afda832a688c41533cc87fcba1cd5da2 100644 (file)
@@ -430,6 +430,8 @@ WeeChat „језгро” се налази у следећим директо
 |          test-gui-color.cpp         | Тестови: боје.
 // TRANSLATION MISSING
 |          test-gui-filter.cpp        | Тестови: filters.
+// TRANSLATION MISSING
+|          test-gui-input.cpp         | Tests: input functions.
 |          test-gui-line.cpp          | Тестови: линије.
 |          test-gui-nick.cpp          | Тестови: надимци.
 |       plugins/                      | Корен unit тестова додатака.
index 5377ed89e9a5a2fb7fb83d9e8e029a473c18cd91..366df8a0d2b938e4673c1df5153a7a962a1dda30 100644 (file)
@@ -1404,27 +1404,29 @@ WeeChat нуди доста подразумеваних тастерских п
 
 [width="100%", cols="^.^3,.^8,.^5", options="header"]
 |===
-| Тастер            | Опис | Команда
+| Тастер              | Опис | Команда
 | kbd:[Del] +
-  kbd:[Ctrl+d]      | Брисање наредног карактера у командној линији. | `+/input delete_next_char+`
+  kbd:[Ctrl+d]        | Брисање наредног карактера у командној линији. | `+/input delete_next_char+`
 | kbd:[Backspace] +
-  kbd:[Ctrl+h]      | Брисање претходног карактера у командној линији. | `+/input delete_previous_char+`
-| kbd:[Ctrl+k]      | Брисање од курсора до краја командне линије (обрисани стринг се копира у интерни клипборд). | `+/input delete_end_of_line+`
-| kbd:[Ctrl+t]      | Транспозиција карактера. | `/input transpose_chars`
-| kbd:[Ctrl+u]      | Брисање од курсора до почетка командне линије (обрисани стринг се копира у интерни клипборд). | `+/input delete_beginning_of_line+`
-| kbd:[Ctrl+w]      | Брисање претходне речи командне линије (обрисани стринг се копира у интерни клипборд). | `+/input delete_previous_word+`
-| kbd:[Ctrl+y]      | Налепљивање садржаја интерног клипборда. | `+/input clipboard_paste+`
-| kbd:[Ctrl+_]      | Поништавање последње акције у командној линији. | `+/input undo+`
-| kbd:[Alt+_]       | Враћање последње поништене акције у командној линији. | `+/input redo+`
-| kbd:[Tab]         | Довршавање команде или надимка (kbd:[Tab] поново: проналажење наредног довршавања). | `+/input complete_next+`
-| kbd:[Shift+Tab]   | Без довршавања: обављање парцијалног довршавања, са довршавањем на чекању: довршавање са претходно пронађеним појмом. | `+/input complete_previous+`
+  kbd:[Ctrl+h]        | Брисање претходног карактера у командној линији. | `+/input delete_previous_char+`
+| kbd:[Ctrl+k]        | Брисање од курсора до краја командне линије (обрисани стринг се копира у интерни клипборд). | `+/input delete_end_of_line+`
+| kbd:[Ctrl+t]        | Транспозиција карактера. | `/input transpose_chars`
+| kbd:[Ctrl+u]        | Брисање од курсора до почетка командне линије (обрисани стринг се копира у интерни клипборд). | `+/input delete_beginning_of_line+`
+| kbd:[Alt+Backspace] | Брисање претходне речи командне линије (обрисани стринг се копира у интерни клипборд). | `+/input delete_previous_word+`
+// TRANSLATION MISSING
+| kbd:[Ctrl+w]        | Delete previous word of command line until whitespace (deleted string is copied to the internal clipboard). | `+/input delete_previous_word_whitespace+`
+| kbd:[Ctrl+y]        | Налепљивање садржаја интерног клипборда. | `+/input clipboard_paste+`
+| kbd:[Ctrl+_]        | Поништавање последње акције у командној линији. | `+/input undo+`
+| kbd:[Alt+_]         | Враћање последње поништене акције у командној линији. | `+/input redo+`
+| kbd:[Tab]           | Довршавање команде или надимка (kbd:[Tab] поново: проналажење наредног довршавања). | `+/input complete_next+`
+| kbd:[Shift+Tab]     | Без довршавања: обављање парцијалног довршавања, са довршавањем на чекању: довршавање са претходно пронађеним појмом. | `+/input complete_previous+`
 | kbd:[Enter] +
   kbd:[Ctrl+j] +
-  kbd:[Ctrl+m]      | Извршавање команде или слање поруке (у режиму претраге: заустављање претраге). | `+/input return+`
-| kbd:[Alt+Enter]   | Умеће прелом реда. | `+/input insert \n+`
-| kbd:[Alt+d]       | Брисање наредне речи у командној линији (обрисани стринг се копира у интерни клипборд). | `+/input delete_next_word+`
-| kbd:[Alt+k]       | Хвата тастер и умеће његов кôд (и комадну везану за њега, ако постоји таква пречица) у командну линију. | `+/input grab_key_command+`
-| kbd:[Alt+r]       | Брише комплетну командну линију. | `+/input delete_line+`
+  kbd:[Ctrl+m]        | Извршавање команде или слање поруке (у режиму претраге: заустављање претраге). | `+/input return+`
+| kbd:[Alt+Enter]     | Умеће прелом реда. | `+/input insert \n+`
+| kbd:[Alt+d]         | Брисање наредне речи у командној линији (обрисани стринг се копира у интерни клипборд). | `+/input delete_next_word+`
+| kbd:[Alt+k]         | Хвата тастер и умеће његов кôд (и комадну везану за њега, ако постоји таква пречица) у командну линију. | `+/input grab_key_command+`
+| kbd:[Alt+r]         | Брише комплетну командну линију. | `+/input delete_line+`
 |===
 
 [[key_bindings_cmdline_color_codes]]
index ad4c1d45cdb2530af9dd5a4307c78770947e4741..cac5124b0f95b66783081eb5e4c4c3d2386ed276 100644 (file)
--- a/po/cs.po
+++ b/po/cs.po
@@ -21,7 +21,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: WeeChat\n"
 "Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2022-09-17 12:09+0200\n"
+"POT-Creation-Date: 2022-09-18 23:16+0200\n"
 "PO-Revision-Date: 2022-06-18 16:11+0200\n"
 "Last-Translator: Ondřej Súkup <mimi.vx@gmail.com>\n"
 "Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@@ -1820,6 +1820,7 @@ msgid ""
 "  delete_previous_char: delete previous char\n"
 "  delete_next_char: delete next char\n"
 "  delete_previous_word: delete previous word\n"
+"  delete_previous_word_whitespace: delete previous word (until whitespace)\n"
 "  delete_next_word: delete next word\n"
 "  delete_beginning_of_line: delete from beginning of line until cursor\n"
 "  delete_end_of_line: delete from cursor until end of line\n"
index dec4d26ae91fca162b7aca1de602e6a8a24fda96..fbfe9cdcf6dcc232ee28021e0d6602c418fbe7f6 100644 (file)
--- a/po/de.po
+++ b/po/de.po
@@ -25,7 +25,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: WeeChat\n"
 "Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2022-09-17 12:09+0200\n"
+"POT-Creation-Date: 2022-09-18 23:16+0200\n"
 "PO-Revision-Date: 2022-09-16 08:22+0200\n"
 "Last-Translator: Nils Görs <weechatter@arcor.de>\n"
 "Language-Team: German <kde-i18n-de@kde.org>\n"
@@ -2183,6 +2183,73 @@ msgstr "Funktionen für die Befehlszeile"
 msgid "<action> [<arguments>]"
 msgstr "<action> [<arguments>]"
 
+#, fuzzy
+#| msgid ""
+#| "list of actions:\n"
+#| "  return: simulate key \"enter\"\n"
+#| "  complete_next: complete word with next completion\n"
+#| "  complete_previous: complete word with previous completion\n"
+#| "  search_text_here: search text in buffer at current position\n"
+#| "  search_text: search text in buffer\n"
+#| "  search_switch_case: switch exact case for search\n"
+#| "  search_switch_regex: switch search type: string/regular expression\n"
+#| "  search_switch_where: switch search in messages/prefixes\n"
+#| "  search_previous: search previous line\n"
+#| "  search_next: search next line\n"
+#| "  search_stop_here: stop search at current position\n"
+#| "  search_stop: stop search\n"
+#| "  delete_previous_char: delete previous char\n"
+#| "  delete_next_char: delete next char\n"
+#| "  delete_previous_word: delete previous word\n"
+#| "  delete_next_word: delete next word\n"
+#| "  delete_beginning_of_line: delete from beginning of line until cursor\n"
+#| "  delete_end_of_line: delete from cursor until end of line\n"
+#| "  delete_line: delete entire line\n"
+#| "  clipboard_paste: paste from the internal clipboard\n"
+#| "  transpose_chars: transpose two chars\n"
+#| "  undo: undo last command line action\n"
+#| "  redo: redo last command line action\n"
+#| "  move_beginning_of_line: move cursor to beginning of line\n"
+#| "  move_end_of_line: move cursor to end of line\n"
+#| "  move_previous_char: move cursor to previous char\n"
+#| "  move_next_char: move cursor to next char\n"
+#| "  move_previous_word: move cursor to previous word\n"
+#| "  move_next_word: move cursor to next word\n"
+#| "  history_previous: recall previous command in current buffer history\n"
+#| "  history_next: recall next command in current buffer history\n"
+#| "  history_global_previous: recall previous command in global history\n"
+#| "  history_global_next: recall next command in global history\n"
+#| "  jump_smart: jump to next buffer with activity\n"
+#| "  jump_last_buffer_displayed: jump to last buffer displayed (before last "
+#| "jump to a buffer)\n"
+#| "  jump_previously_visited_buffer: jump to previously visited buffer\n"
+#| "  jump_next_visited_buffer: jump to next visited buffer\n"
+#| "  hotlist_clear: clear hotlist (optional argument: \"lowest\" to clear "
+#| "only lowest level in hotlist, \"highest\" to clear only highest level in "
+#| "hotlist, or level mask: integer which is a combination of 1=join/part, "
+#| "2=message, 4=private, 8=highlight)\n"
+#| "  hotlist_remove_buffer: remove current buffer from hotlist\n"
+#| "  hotlist_restore_buffer: restore latest hotlist removed in the current "
+#| "buffer\n"
+#| "  hotlist_restore_all: restore latest hotlist removed in all buffers\n"
+#| "  grab_key: grab a key (optional argument: delay for end of grab, default "
+#| "is 500 milliseconds)\n"
+#| "  grab_key_command: grab a key with its associated command (optional "
+#| "argument: delay for end of grab, default is 500 milliseconds)\n"
+#| "  grab_mouse: grab mouse event code\n"
+#| "  grab_mouse_area: grab mouse event code with area\n"
+#| "  set_unread: set unread marker for all buffers\n"
+#| "  set_unread_current_buffer: set unread marker for current buffer\n"
+#| "  switch_active_buffer: switch to next merged buffer\n"
+#| "  switch_active_buffer_previous: switch to previous merged buffer\n"
+#| "  zoom_merged_buffer: zoom on merged buffer\n"
+#| "  insert: insert text in command line (escaped chars are allowed, see /"
+#| "help print)\n"
+#| "  send: send text to the buffer\n"
+#| "  paste_start: start paste (bracketed paste mode)\n"
+#| "  paste_stop: stop paste (bracketed paste mode)\n"
+#| "\n"
+#| "This command is used by key bindings or plugins."
 msgid ""
 "list of actions:\n"
 "  return: simulate key \"enter\"\n"
@@ -2200,6 +2267,7 @@ msgid ""
 "  delete_previous_char: delete previous char\n"
 "  delete_next_char: delete next char\n"
 "  delete_previous_word: delete previous word\n"
+"  delete_previous_word_whitespace: delete previous word (until whitespace)\n"
 "  delete_next_word: delete next word\n"
 "  delete_beginning_of_line: delete from beginning of line until cursor\n"
 "  delete_end_of_line: delete from cursor until end of line\n"
index 73fc6fc4d169a0d76283321f1dec1ceda36135d8..21b7c8e11c6f32d00b2f15e555094dd394dedc3b 100644 (file)
--- a/po/es.po
+++ b/po/es.po
@@ -22,7 +22,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: WeeChat\n"
 "Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2022-09-17 12:09+0200\n"
+"POT-Creation-Date: 2022-09-18 23:16+0200\n"
 "PO-Revision-Date: 2022-06-18 16:11+0200\n"
 "Last-Translator: Santiago Forero <santiago@forero.xyz>\n"
 "Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@@ -2224,6 +2224,7 @@ msgid ""
 "  delete_previous_char: delete previous char\n"
 "  delete_next_char: delete next char\n"
 "  delete_previous_word: delete previous word\n"
+"  delete_previous_word_whitespace: delete previous word (until whitespace)\n"
 "  delete_next_word: delete next word\n"
 "  delete_beginning_of_line: delete from beginning of line until cursor\n"
 "  delete_end_of_line: delete from cursor until end of line\n"
index 9a76c589dc04d4491a6e42d06cf032c843d5cdfa..cd6013a8271a64ce48b99db699dc5c53224244d4 100644 (file)
--- a/po/fr.po
+++ b/po/fr.po
@@ -21,8 +21,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: WeeChat\n"
 "Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2022-09-17 12:09+0200\n"
-"PO-Revision-Date: 2022-09-17 12:10+0200\n"
+"POT-Creation-Date: 2022-09-18 23:16+0200\n"
+"PO-Revision-Date: 2022-09-18 23:21+0200\n"
 "Last-Translator: Sébastien Helleu <flashcode@flashtux.org>\n"
 "Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
 "Language: fr\n"
@@ -2155,6 +2155,7 @@ msgid ""
 "  delete_previous_char: delete previous char\n"
 "  delete_next_char: delete next char\n"
 "  delete_previous_word: delete previous word\n"
+"  delete_previous_word_whitespace: delete previous word (until whitespace)\n"
 "  delete_next_word: delete next word\n"
 "  delete_beginning_of_line: delete from beginning of line until cursor\n"
 "  delete_end_of_line: delete from cursor until end of line\n"
@@ -2223,6 +2224,8 @@ msgstr ""
 "  delete_previous_char : effacer le caractère précédent\n"
 "  delete_next_char : effacer le caractère suivant\n"
 "  delete_previous_word : effacer le mot précédent\n"
+"  delete_previous_word_whitespace : effacer le mot précédent (jusqu'à un "
+"espace)\n"
 "  delete_next_word : effacer le mot suivant\n"
 "  delete_beginning_of_line : effacer du début de la ligne jusqu'au curseur\n"
 "  delete_end_of_line : effacer du curseur jusqu'à la fin de la ligne\n"
index 79f07cda23a4f483c3b59d7af4f4e677be20fc47..dbad9fb72c98defd0da4c38b9880f6b4a41e8aab 100644 (file)
--- a/po/hu.po
+++ b/po/hu.po
@@ -20,7 +20,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: WeeChat\n"
 "Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2022-09-17 12:09+0200\n"
+"POT-Creation-Date: 2022-09-18 23:16+0200\n"
 "PO-Revision-Date: 2022-04-24 10:20+0200\n"
 "Last-Translator: Andras Voroskoi <voroskoi@frugalware.org>\n"
 "Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@@ -1704,6 +1704,7 @@ msgid ""
 "  delete_previous_char: delete previous char\n"
 "  delete_next_char: delete next char\n"
 "  delete_previous_word: delete previous word\n"
+"  delete_previous_word_whitespace: delete previous word (until whitespace)\n"
 "  delete_next_word: delete next word\n"
 "  delete_beginning_of_line: delete from beginning of line until cursor\n"
 "  delete_end_of_line: delete from cursor until end of line\n"
index 0441d2483eadcb9220d7663db10db8f9cbdfb2c0..6ecc2b4ac88b5812fbdce8f21643364ca47f5840 100644 (file)
--- a/po/it.po
+++ b/po/it.po
@@ -20,7 +20,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: WeeChat\n"
 "Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2022-09-17 12:09+0200\n"
+"POT-Creation-Date: 2022-09-18 23:16+0200\n"
 "PO-Revision-Date: 2022-04-24 10:20+0200\n"
 "Last-Translator: Esteban I. Ruiz Moreno <exio4.com@gmail.com>\n"
 "Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@@ -1890,6 +1890,7 @@ msgid ""
 "  delete_previous_char: delete previous char\n"
 "  delete_next_char: delete next char\n"
 "  delete_previous_word: delete previous word\n"
+"  delete_previous_word_whitespace: delete previous word (until whitespace)\n"
 "  delete_next_word: delete next word\n"
 "  delete_beginning_of_line: delete from beginning of line until cursor\n"
 "  delete_end_of_line: delete from cursor until end of line\n"
index abd88217448aae14dc0298b705b75483d5210486..eabee32d3f09d939d222acad8122cb77bf9b29d1 100644 (file)
--- a/po/ja.po
+++ b/po/ja.po
@@ -20,7 +20,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: WeeChat\n"
 "Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2022-09-17 12:09+0200\n"
+"POT-Creation-Date: 2022-09-18 23:16+0200\n"
 "PO-Revision-Date: 2022-06-18 16:12+0200\n"
 "Last-Translator: AYANOKOUZI, Ryuunosuke <i38w7i3@yahoo.co.jp>\n"
 "Language-Team: Japanese <https://github.com/l/weechat/tree/master/"
@@ -2142,6 +2142,7 @@ msgid ""
 "  delete_previous_char: delete previous char\n"
 "  delete_next_char: delete next char\n"
 "  delete_previous_word: delete previous word\n"
+"  delete_previous_word_whitespace: delete previous word (until whitespace)\n"
 "  delete_next_word: delete next word\n"
 "  delete_beginning_of_line: delete from beginning of line until cursor\n"
 "  delete_end_of_line: delete from cursor until end of line\n"
index 0d76e62c3275a8e38c8e53710f12204414e25b3c..ca2fa1142bb94727afc9b3b7f6fdbc07ed12397a 100644 (file)
--- a/po/pl.po
+++ b/po/pl.po
@@ -22,7 +22,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: WeeChat\n"
 "Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2022-09-17 12:09+0200\n"
+"POT-Creation-Date: 2022-09-18 23:16+0200\n"
 "PO-Revision-Date: 2022-06-18 16:12+0200\n"
 "Last-Translator: Krzysztof Korościk <soltys@soltys.info>\n"
 "Language-Team: Polish <kde-i18n-doc@kde.org>\n"
@@ -2288,6 +2288,73 @@ msgstr "funkcje linii komend"
 msgid "<action> [<arguments>]"
 msgstr "<akcja> [<argumenty>]"
 
+#, fuzzy
+#| msgid ""
+#| "list of actions:\n"
+#| "  return: simulate key \"enter\"\n"
+#| "  complete_next: complete word with next completion\n"
+#| "  complete_previous: complete word with previous completion\n"
+#| "  search_text_here: search text in buffer at current position\n"
+#| "  search_text: search text in buffer\n"
+#| "  search_switch_case: switch exact case for search\n"
+#| "  search_switch_regex: switch search type: string/regular expression\n"
+#| "  search_switch_where: switch search in messages/prefixes\n"
+#| "  search_previous: search previous line\n"
+#| "  search_next: search next line\n"
+#| "  search_stop_here: stop search at current position\n"
+#| "  search_stop: stop search\n"
+#| "  delete_previous_char: delete previous char\n"
+#| "  delete_next_char: delete next char\n"
+#| "  delete_previous_word: delete previous word\n"
+#| "  delete_next_word: delete next word\n"
+#| "  delete_beginning_of_line: delete from beginning of line until cursor\n"
+#| "  delete_end_of_line: delete from cursor until end of line\n"
+#| "  delete_line: delete entire line\n"
+#| "  clipboard_paste: paste from the internal clipboard\n"
+#| "  transpose_chars: transpose two chars\n"
+#| "  undo: undo last command line action\n"
+#| "  redo: redo last command line action\n"
+#| "  move_beginning_of_line: move cursor to beginning of line\n"
+#| "  move_end_of_line: move cursor to end of line\n"
+#| "  move_previous_char: move cursor to previous char\n"
+#| "  move_next_char: move cursor to next char\n"
+#| "  move_previous_word: move cursor to previous word\n"
+#| "  move_next_word: move cursor to next word\n"
+#| "  history_previous: recall previous command in current buffer history\n"
+#| "  history_next: recall next command in current buffer history\n"
+#| "  history_global_previous: recall previous command in global history\n"
+#| "  history_global_next: recall next command in global history\n"
+#| "  jump_smart: jump to next buffer with activity\n"
+#| "  jump_last_buffer_displayed: jump to last buffer displayed (before last "
+#| "jump to a buffer)\n"
+#| "  jump_previously_visited_buffer: jump to previously visited buffer\n"
+#| "  jump_next_visited_buffer: jump to next visited buffer\n"
+#| "  hotlist_clear: clear hotlist (optional argument: \"lowest\" to clear "
+#| "only lowest level in hotlist, \"highest\" to clear only highest level in "
+#| "hotlist, or level mask: integer which is a combination of 1=join/part, "
+#| "2=message, 4=private, 8=highlight)\n"
+#| "  hotlist_remove_buffer: remove current buffer from hotlist\n"
+#| "  hotlist_restore_buffer: restore latest hotlist removed in the current "
+#| "buffer\n"
+#| "  hotlist_restore_all: restore latest hotlist removed in all buffers\n"
+#| "  grab_key: grab a key (optional argument: delay for end of grab, default "
+#| "is 500 milliseconds)\n"
+#| "  grab_key_command: grab a key with its associated command (optional "
+#| "argument: delay for end of grab, default is 500 milliseconds)\n"
+#| "  grab_mouse: grab mouse event code\n"
+#| "  grab_mouse_area: grab mouse event code with area\n"
+#| "  set_unread: set unread marker for all buffers\n"
+#| "  set_unread_current_buffer: set unread marker for current buffer\n"
+#| "  switch_active_buffer: switch to next merged buffer\n"
+#| "  switch_active_buffer_previous: switch to previous merged buffer\n"
+#| "  zoom_merged_buffer: zoom on merged buffer\n"
+#| "  insert: insert text in command line (escaped chars are allowed, see /"
+#| "help print)\n"
+#| "  send: send text to the buffer\n"
+#| "  paste_start: start paste (bracketed paste mode)\n"
+#| "  paste_stop: stop paste (bracketed paste mode)\n"
+#| "\n"
+#| "This command is used by key bindings or plugins."
 msgid ""
 "list of actions:\n"
 "  return: simulate key \"enter\"\n"
@@ -2305,6 +2372,7 @@ msgid ""
 "  delete_previous_char: delete previous char\n"
 "  delete_next_char: delete next char\n"
 "  delete_previous_word: delete previous word\n"
+"  delete_previous_word_whitespace: delete previous word (until whitespace)\n"
 "  delete_next_word: delete next word\n"
 "  delete_beginning_of_line: delete from beginning of line until cursor\n"
 "  delete_end_of_line: delete from cursor until end of line\n"
index a2fc1de56bf4cdfdba8f1ab70edf3eb857f42ecd..bcd8021c6245ae00f2d6a2d2bf65bcc69645804a 100644 (file)
--- a/po/pt.po
+++ b/po/pt.po
@@ -20,7 +20,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: WeeChat\n"
 "Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2022-09-17 12:09+0200\n"
+"POT-Creation-Date: 2022-09-18 23:16+0200\n"
 "PO-Revision-Date: 2022-06-18 16:12+0200\n"
 "Last-Translator: Vasco Almeida <vascomalmeida@sapo.pt>\n"
 "Language-Team: Portuguese <>\n"
@@ -2134,6 +2134,7 @@ msgid ""
 "  delete_previous_char: delete previous char\n"
 "  delete_next_char: delete next char\n"
 "  delete_previous_word: delete previous word\n"
+"  delete_previous_word_whitespace: delete previous word (until whitespace)\n"
 "  delete_next_word: delete next word\n"
 "  delete_beginning_of_line: delete from beginning of line until cursor\n"
 "  delete_end_of_line: delete from cursor until end of line\n"
index fc3a6048b0fb1ededd6a7417866f87be4029fe3f..c511cc4177875be9d3ea86001116ec847191a36e 100644 (file)
@@ -21,7 +21,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: WeeChat\n"
 "Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2022-09-17 12:09+0200\n"
+"POT-Creation-Date: 2022-09-18 23:16+0200\n"
 "PO-Revision-Date: 2022-04-24 10:20+0200\n"
 "Last-Translator: Érico Nogueira <ericonr@disroot.org>\n"
 "Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@@ -1956,6 +1956,7 @@ msgid ""
 "  delete_previous_char: delete previous char\n"
 "  delete_next_char: delete next char\n"
 "  delete_previous_word: delete previous word\n"
+"  delete_previous_word_whitespace: delete previous word (until whitespace)\n"
 "  delete_next_word: delete next word\n"
 "  delete_beginning_of_line: delete from beginning of line until cursor\n"
 "  delete_end_of_line: delete from cursor until end of line\n"
index 8169b0c66959a0bbf982567496dca7814aa29132..c54032f9e5e852598017c53ca64e245380f6dffa 100644 (file)
--- a/po/ru.po
+++ b/po/ru.po
@@ -21,7 +21,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: WeeChat\n"
 "Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2022-09-17 12:09+0200\n"
+"POT-Creation-Date: 2022-09-18 23:16+0200\n"
 "PO-Revision-Date: 2022-04-24 10:20+0200\n"
 "Last-Translator: Aleksey V Zapparov AKA ixti <ixti@member.fsf.org>\n"
 "Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@@ -1725,6 +1725,7 @@ msgid ""
 "  delete_previous_char: delete previous char\n"
 "  delete_next_char: delete next char\n"
 "  delete_previous_word: delete previous word\n"
+"  delete_previous_word_whitespace: delete previous word (until whitespace)\n"
 "  delete_next_word: delete next word\n"
 "  delete_beginning_of_line: delete from beginning of line until cursor\n"
 "  delete_end_of_line: delete from cursor until end of line\n"
index 5807f6121a7fa497b6ad246b97e62b55fca7cbb7..ad4e639697ecb5fcfe2ed8a30505fff7c19eb7ac 100644 (file)
--- a/po/sr.po
+++ b/po/sr.po
@@ -20,7 +20,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: WeeChat\n"
 "Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2022-09-17 12:09+0200\n"
+"POT-Creation-Date: 2022-09-18 23:16+0200\n"
 "PO-Revision-Date: 2022-07-06 08:29+0400\n"
 "Last-Translator: Ivan Pešić <ivan.pesic@gmail.com>\n"
 "Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@@ -2104,6 +2104,73 @@ msgstr "функције за командну линију"
 msgid "<action> [<arguments>]"
 msgstr "<акција> [<аргументи>]"
 
+#, fuzzy
+#| msgid ""
+#| "list of actions:\n"
+#| "  return: simulate key \"enter\"\n"
+#| "  complete_next: complete word with next completion\n"
+#| "  complete_previous: complete word with previous completion\n"
+#| "  search_text_here: search text in buffer at current position\n"
+#| "  search_text: search text in buffer\n"
+#| "  search_switch_case: switch exact case for search\n"
+#| "  search_switch_regex: switch search type: string/regular expression\n"
+#| "  search_switch_where: switch search in messages/prefixes\n"
+#| "  search_previous: search previous line\n"
+#| "  search_next: search next line\n"
+#| "  search_stop_here: stop search at current position\n"
+#| "  search_stop: stop search\n"
+#| "  delete_previous_char: delete previous char\n"
+#| "  delete_next_char: delete next char\n"
+#| "  delete_previous_word: delete previous word\n"
+#| "  delete_next_word: delete next word\n"
+#| "  delete_beginning_of_line: delete from beginning of line until cursor\n"
+#| "  delete_end_of_line: delete from cursor until end of line\n"
+#| "  delete_line: delete entire line\n"
+#| "  clipboard_paste: paste from the internal clipboard\n"
+#| "  transpose_chars: transpose two chars\n"
+#| "  undo: undo last command line action\n"
+#| "  redo: redo last command line action\n"
+#| "  move_beginning_of_line: move cursor to beginning of line\n"
+#| "  move_end_of_line: move cursor to end of line\n"
+#| "  move_previous_char: move cursor to previous char\n"
+#| "  move_next_char: move cursor to next char\n"
+#| "  move_previous_word: move cursor to previous word\n"
+#| "  move_next_word: move cursor to next word\n"
+#| "  history_previous: recall previous command in current buffer history\n"
+#| "  history_next: recall next command in current buffer history\n"
+#| "  history_global_previous: recall previous command in global history\n"
+#| "  history_global_next: recall next command in global history\n"
+#| "  jump_smart: jump to next buffer with activity\n"
+#| "  jump_last_buffer_displayed: jump to last buffer displayed (before last "
+#| "jump to a buffer)\n"
+#| "  jump_previously_visited_buffer: jump to previously visited buffer\n"
+#| "  jump_next_visited_buffer: jump to next visited buffer\n"
+#| "  hotlist_clear: clear hotlist (optional argument: \"lowest\" to clear "
+#| "only lowest level in hotlist, \"highest\" to clear only highest level in "
+#| "hotlist, or level mask: integer which is a combination of 1=join/part, "
+#| "2=message, 4=private, 8=highlight)\n"
+#| "  hotlist_remove_buffer: remove current buffer from hotlist\n"
+#| "  hotlist_restore_buffer: restore latest hotlist removed in the current "
+#| "buffer\n"
+#| "  hotlist_restore_all: restore latest hotlist removed in all buffers\n"
+#| "  grab_key: grab a key (optional argument: delay for end of grab, default "
+#| "is 500 milliseconds)\n"
+#| "  grab_key_command: grab a key with its associated command (optional "
+#| "argument: delay for end of grab, default is 500 milliseconds)\n"
+#| "  grab_mouse: grab mouse event code\n"
+#| "  grab_mouse_area: grab mouse event code with area\n"
+#| "  set_unread: set unread marker for all buffers\n"
+#| "  set_unread_current_buffer: set unread marker for current buffer\n"
+#| "  switch_active_buffer: switch to next merged buffer\n"
+#| "  switch_active_buffer_previous: switch to previous merged buffer\n"
+#| "  zoom_merged_buffer: zoom on merged buffer\n"
+#| "  insert: insert text in command line (escaped chars are allowed, see /"
+#| "help print)\n"
+#| "  send: send text to the buffer\n"
+#| "  paste_start: start paste (bracketed paste mode)\n"
+#| "  paste_stop: stop paste (bracketed paste mode)\n"
+#| "\n"
+#| "This command is used by key bindings or plugins."
 msgid ""
 "list of actions:\n"
 "  return: simulate key \"enter\"\n"
@@ -2121,6 +2188,7 @@ msgid ""
 "  delete_previous_char: delete previous char\n"
 "  delete_next_char: delete next char\n"
 "  delete_previous_word: delete previous word\n"
+"  delete_previous_word_whitespace: delete previous word (until whitespace)\n"
 "  delete_next_word: delete next word\n"
 "  delete_beginning_of_line: delete from beginning of line until cursor\n"
 "  delete_end_of_line: delete from cursor until end of line\n"
index cca6071c6032a1601375fcc05b7cc3e4d630724e..8cfb87e3fa3aa51db84957410b355e321a023b36 100644 (file)
--- a/po/tr.po
+++ b/po/tr.po
@@ -20,7 +20,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: WeeChat\n"
 "Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2022-09-17 12:09+0200\n"
+"POT-Creation-Date: 2022-09-18 23:16+0200\n"
 "PO-Revision-Date: 2022-07-27 23:00+0300\n"
 "Last-Translator: Emir SARI <emir_sari@icloud.com>\n"
 "Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@@ -2087,6 +2087,73 @@ msgstr "komut satırı için fonksiyonlar"
 msgid "<action> [<arguments>]"
 msgstr "<eylem> [<argümanlar>]"
 
+#, fuzzy
+#| msgid ""
+#| "list of actions:\n"
+#| "  return: simulate key \"enter\"\n"
+#| "  complete_next: complete word with next completion\n"
+#| "  complete_previous: complete word with previous completion\n"
+#| "  search_text_here: search text in buffer at current position\n"
+#| "  search_text: search text in buffer\n"
+#| "  search_switch_case: switch exact case for search\n"
+#| "  search_switch_regex: switch search type: string/regular expression\n"
+#| "  search_switch_where: switch search in messages/prefixes\n"
+#| "  search_previous: search previous line\n"
+#| "  search_next: search next line\n"
+#| "  search_stop_here: stop search at current position\n"
+#| "  search_stop: stop search\n"
+#| "  delete_previous_char: delete previous char\n"
+#| "  delete_next_char: delete next char\n"
+#| "  delete_previous_word: delete previous word\n"
+#| "  delete_next_word: delete next word\n"
+#| "  delete_beginning_of_line: delete from beginning of line until cursor\n"
+#| "  delete_end_of_line: delete from cursor until end of line\n"
+#| "  delete_line: delete entire line\n"
+#| "  clipboard_paste: paste from the internal clipboard\n"
+#| "  transpose_chars: transpose two chars\n"
+#| "  undo: undo last command line action\n"
+#| "  redo: redo last command line action\n"
+#| "  move_beginning_of_line: move cursor to beginning of line\n"
+#| "  move_end_of_line: move cursor to end of line\n"
+#| "  move_previous_char: move cursor to previous char\n"
+#| "  move_next_char: move cursor to next char\n"
+#| "  move_previous_word: move cursor to previous word\n"
+#| "  move_next_word: move cursor to next word\n"
+#| "  history_previous: recall previous command in current buffer history\n"
+#| "  history_next: recall next command in current buffer history\n"
+#| "  history_global_previous: recall previous command in global history\n"
+#| "  history_global_next: recall next command in global history\n"
+#| "  jump_smart: jump to next buffer with activity\n"
+#| "  jump_last_buffer_displayed: jump to last buffer displayed (before last "
+#| "jump to a buffer)\n"
+#| "  jump_previously_visited_buffer: jump to previously visited buffer\n"
+#| "  jump_next_visited_buffer: jump to next visited buffer\n"
+#| "  hotlist_clear: clear hotlist (optional argument: \"lowest\" to clear "
+#| "only lowest level in hotlist, \"highest\" to clear only highest level in "
+#| "hotlist, or level mask: integer which is a combination of 1=join/part, "
+#| "2=message, 4=private, 8=highlight)\n"
+#| "  hotlist_remove_buffer: remove current buffer from hotlist\n"
+#| "  hotlist_restore_buffer: restore latest hotlist removed in the current "
+#| "buffer\n"
+#| "  hotlist_restore_all: restore latest hotlist removed in all buffers\n"
+#| "  grab_key: grab a key (optional argument: delay for end of grab, default "
+#| "is 500 milliseconds)\n"
+#| "  grab_key_command: grab a key with its associated command (optional "
+#| "argument: delay for end of grab, default is 500 milliseconds)\n"
+#| "  grab_mouse: grab mouse event code\n"
+#| "  grab_mouse_area: grab mouse event code with area\n"
+#| "  set_unread: set unread marker for all buffers\n"
+#| "  set_unread_current_buffer: set unread marker for current buffer\n"
+#| "  switch_active_buffer: switch to next merged buffer\n"
+#| "  switch_active_buffer_previous: switch to previous merged buffer\n"
+#| "  zoom_merged_buffer: zoom on merged buffer\n"
+#| "  insert: insert text in command line (escaped chars are allowed, see /"
+#| "help print)\n"
+#| "  send: send text to the buffer\n"
+#| "  paste_start: start paste (bracketed paste mode)\n"
+#| "  paste_stop: stop paste (bracketed paste mode)\n"
+#| "\n"
+#| "This command is used by key bindings or plugins."
 msgid ""
 "list of actions:\n"
 "  return: simulate key \"enter\"\n"
@@ -2104,6 +2171,7 @@ msgid ""
 "  delete_previous_char: delete previous char\n"
 "  delete_next_char: delete next char\n"
 "  delete_previous_word: delete previous word\n"
+"  delete_previous_word_whitespace: delete previous word (until whitespace)\n"
 "  delete_next_word: delete next word\n"
 "  delete_beginning_of_line: delete from beginning of line until cursor\n"
 "  delete_end_of_line: delete from cursor until end of line\n"
index 5a6129d4c51148637f158d5c4847c8b4e7dc4103..b6db46a4568f76ea7e9fdd085c20bbf85d70c82b 100644 (file)
@@ -21,7 +21,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: WeeChat\n"
 "Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2022-09-17 12:09+0200\n"
+"POT-Creation-Date: 2022-09-18 23:16+0200\n"
 "PO-Revision-Date: 2014-08-16 10:27+0200\n"
 "Last-Translator: Sébastien Helleu <flashcode@flashtux.org>\n"
 "Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@@ -1564,6 +1564,7 @@ msgid ""
 "  delete_previous_char: delete previous char\n"
 "  delete_next_char: delete next char\n"
 "  delete_previous_word: delete previous word\n"
+"  delete_previous_word_whitespace: delete previous word (until whitespace)\n"
 "  delete_next_word: delete next word\n"
 "  delete_beginning_of_line: delete from beginning of line until cursor\n"
 "  delete_end_of_line: delete from cursor until end of line\n"
index f92d39dd2f88e8914df39a67e38f62eb003a39d5..b4d5cd82fe397c75f59d638a0a3f5f209b1c4ff5 100644 (file)
@@ -3294,6 +3294,8 @@ COMMAND_CALLBACK(input)
         gui_input_delete_next_char (buffer);
     else if (string_strcasecmp (argv[1], "delete_previous_word") == 0)
         gui_input_delete_previous_word (buffer);
+    else if (string_strcasecmp (argv[1], "delete_previous_word_whitespace") == 0)
+        gui_input_delete_previous_word_whitespace (buffer);
     else if (string_strcasecmp (argv[1], "delete_next_word") == 0)
         gui_input_delete_next_word (buffer);
     else if (string_strcasecmp (argv[1], "delete_beginning_of_line") == 0)
@@ -7985,6 +7987,8 @@ command_init ()
            "  delete_previous_char: delete previous char\n"
            "  delete_next_char: delete next char\n"
            "  delete_previous_word: delete previous word\n"
+           "  delete_previous_word_whitespace: delete previous word "
+           "(until whitespace)\n"
            "  delete_next_word: delete next word\n"
            "  delete_beginning_of_line: delete from beginning of line until "
            "cursor\n"
@@ -8041,7 +8045,8 @@ command_init ()
         "search_text || search_switch_case || search_switch_regex || "
         "search_switch_where || search_previous || search_next || "
         "search_stop_here || search_stop || delete_previous_char || "
-        "delete_next_char || delete_previous_word || delete_next_word || "
+        "delete_next_char || delete_previous_word || "
+        "delete_previous_word_whitespace || delete_next_word || "
         "delete_beginning_of_line || delete_end_of_line || delete_line || "
         "clipboard_paste || transpose_chars || undo || redo || "
         "move_beginning_of_line || move_end_of_line || move_previous_char || "
index e0f3af03779c43de5367db42bc5c2341ef02c4cd..523d0fdff11fcf9f1e0058a8b66c6ae5f31ee0d1 100644 (file)
@@ -1109,6 +1109,20 @@ string_convert_escaped_chars (const char *string)
     return output;
 }
 
+/*
+ * Checks if first char of string is a whitespace (space or tab).
+ *
+ * Returns:
+ *   1: first char is whitespace
+ *   0: first char is not whitespace
+ */
+
+int
+string_is_whitespace_char (const char *string)
+{
+    return (string && ((string[0] == ' ') || string[0] == '\t')) ? 1 : 0;
+}
+
 /*
  * Checks if first char of string is a "word char".
  *
index 878a764d65a415a379514b35d38a683c99512973..c0b29106b2aebbaae5deb9bdab92f7511aae28dc 100644 (file)
@@ -71,6 +71,7 @@ extern char *string_remove_quotes (const char *string, const char *quotes);
 extern char *string_strip (const char *string, int left, int right,
                            const char *chars);
 extern char *string_convert_escaped_chars (const char *string);
+extern int string_is_whitespace_char (const char *string);
 extern int string_is_word_char_highlight (const char *string);
 extern int string_is_word_char_input (const char *string);
 extern char *string_mask_to_regex (const char *mask);
index 4f4e4245c4e9feeb0ecbc09384f801ca111c922e..6ca0f48b6828a879195d983ca94f3a7a9393e845 100644 (file)
@@ -93,7 +93,8 @@ gui_key_default_bindings (int context)
         BIND(/* m-_           */ "meta-_",             "/input redo");
         BIND(/* <del>         */ "meta2-3~",           "/input delete_next_char");
         BIND(/* ^D            */ "ctrl-D",             "/input delete_next_char");
-        BIND(/* ^W            */ "ctrl-W",             "/input delete_previous_word");
+        BIND(/* ^W            */ "ctrl-W",             "/input delete_previous_word_whitespace");
+        BIND(/* m-<backspace> */ "meta-ctrl-?",        "/input delete_previous_word");
         BIND(/* ^X            */ "ctrl-X",             "/input switch_active_buffer");
         BIND(/* m-x           */ "meta-x",             "/input zoom_merged_buffer");
         BIND(/* m-d           */ "meta-d",             "/input delete_next_word");
index e8b6f5593f054c02dcd5a0bf69742b52883c032d..04b6a3fca4d3fcd2226e02723c9dda42a8cec0d5 100644 (file)
@@ -95,7 +95,7 @@ gui_input_replace_input (struct t_gui_buffer *buffer, const char *new_input)
     int size, length;
     char *input_utf8;
 
-    input_utf8 = strdup (new_input);
+    input_utf8 = strdup ((new_input) ? new_input : "");
     if (input_utf8)
     {
         utf8_normalize (input_utf8, '?');
@@ -838,13 +838,44 @@ gui_input_delete_next_char (struct t_gui_buffer *buffer)
 }
 
 /*
- * Deletes previous word (default key: ctrl-W).
+ * Delete the range between two positions and copy the content to the
+ * clipboard.
+ */
+
+void
+gui_input_delete_range (struct t_gui_buffer *buffer,
+                        char *start,
+                        char *end)
+{
+    int size_deleted, length_deleted;
+
+    size_deleted = utf8_next_char (end) - start;
+    length_deleted = utf8_strnlen (start, size_deleted);
+
+    gui_input_clipboard_copy (start, size_deleted);
+
+    memmove (start, start + size_deleted, strlen (start + size_deleted));
+
+    if (gui_input_optimize_size (
+            buffer,
+            buffer->input_buffer_size - size_deleted,
+            buffer->input_buffer_length - length_deleted))
+    {
+        buffer->input_buffer[buffer->input_buffer_size] = '\0';
+        buffer->input_buffer_pos -= length_deleted;
+    }
+    gui_input_text_changed_modifier_and_signal (buffer,
+                                                1, /* save undo */
+                                                1); /* stop completion */
+}
+
+/*
+ * Deletes previous word (default key: alt-backspace).
  */
 
 void
 gui_input_delete_previous_word (struct t_gui_buffer *buffer)
 {
-    int length_deleted, size_deleted;
     char *start, *string;
 
     if (buffer->input && (buffer->input_buffer_pos > 0))
@@ -872,24 +903,45 @@ gui_input_delete_previous_word (struct t_gui_buffer *buffer)
         else
             string = buffer->input_buffer;
 
-        size_deleted = utf8_next_char (start) - string;
-        length_deleted = utf8_strnlen (string, size_deleted);
+        gui_input_delete_range (buffer, string, start);
+    }
+}
 
-        gui_input_clipboard_copy (string, size_deleted);
+/*
+ * Deletes previous word until whitespace (default key: ctrl-W).
+ */
 
-        memmove (string, string + size_deleted, strlen (string + size_deleted));
+void
+gui_input_delete_previous_word_whitespace (struct t_gui_buffer *buffer)
+{
+    char *start, *string;
 
-        if (gui_input_optimize_size (
-                buffer,
-                buffer->input_buffer_size - size_deleted,
-                buffer->input_buffer_length - length_deleted))
+    if (buffer->input && (buffer->input_buffer_pos > 0))
+    {
+        gui_buffer_undo_snap (buffer);
+        start = (char *)utf8_add_offset (buffer->input_buffer,
+                                         buffer->input_buffer_pos - 1);
+        string = start;
+        /* move to the left, skipping whitespace */
+        while (string && string_is_whitespace_char (string))
         {
-            buffer->input_buffer[buffer->input_buffer_size] = '\0';
-            buffer->input_buffer_pos -= length_deleted;
+            string = (char *)utf8_prev_char (buffer->input_buffer, string);
         }
-        gui_input_text_changed_modifier_and_signal (buffer,
-                                                    1, /* save undo */
-                                                    1); /* stop completion */
+        /* move to the left until we reach a char which is not whitespace */
+        if (string)
+        {
+            while (string && !string_is_whitespace_char (string))
+            {
+                string = (char *)utf8_prev_char (buffer->input_buffer, string);
+            }
+        }
+
+        if (string)
+            string = (char *)utf8_next_char (string);
+        else
+            string = buffer->input_buffer;
+
+        gui_input_delete_range (buffer, string, start);
     }
 }
 
index 6e98674b924608f1dd68e734efae183a95a987c6..3fafb73571073ab4b52acd128611a4dfd54c4804 100644 (file)
@@ -56,6 +56,7 @@ extern void gui_input_search_stop (struct t_gui_buffer *buffer);
 extern void gui_input_delete_previous_char (struct t_gui_buffer *buffer);
 extern void gui_input_delete_next_char (struct t_gui_buffer *buffer);
 extern void gui_input_delete_previous_word (struct t_gui_buffer *buffer);
+extern void gui_input_delete_previous_word_whitespace (struct t_gui_buffer *buffer);
 extern void gui_input_delete_next_word (struct t_gui_buffer *buffer);
 extern void gui_input_delete_beginning_of_line (struct t_gui_buffer *buffer);
 extern void gui_input_delete_end_of_line (struct t_gui_buffer *buffer);
index eb53b8e3f8056941509db206a173d30554b65065..765bdec2b290e8cd385334d7346a51949bf63d48 100644 (file)
@@ -49,6 +49,7 @@ set(LIB_WEECHAT_UNIT_TESTS_CORE_SRC
   unit/gui/test-gui-chat.cpp
   unit/gui/test-gui-color.cpp
   unit/gui/test-gui-filter.cpp
+  unit/gui/test-gui-input.cpp
   unit/gui/test-gui-line.cpp
   unit/gui/test-gui-nick.cpp
   scripts/test-scripts.cpp
index 89a7a3d7ace6a278f9b861af8f5ac724bc1f1d67..190e7c79f4884627dc3b8ce9e851cc8b8c95d23e 100644 (file)
@@ -46,6 +46,7 @@ lib_weechat_unit_tests_core_a_SOURCES = unit/core/test-core-arraylist.cpp \
                                         unit/gui/test-gui-chat.cpp \
                                         unit/gui/test-gui-color.cpp \
                                         unit/gui/test-gui-filter.cpp \
+                                        unit/gui/test-gui-input.cpp \
                                         unit/gui/test-gui-line.cpp \
                                         unit/gui/test-gui-nick.cpp \
                                         scripts/test-scripts.cpp
index 5f12a89cc59b3db4fef8b255d90e2d1da8994ffe..d74f7b5361290c5cf0b705af0128e6862eb30acc 100644 (file)
@@ -86,6 +86,7 @@ IMPORT_TEST_GROUP(GuiBuffer);
 IMPORT_TEST_GROUP(GuiChat);
 IMPORT_TEST_GROUP(GuiColor);
 IMPORT_TEST_GROUP(GuiFilter);
+IMPORT_TEST_GROUP(GuiInput);
 IMPORT_TEST_GROUP(GuiLine);
 IMPORT_TEST_GROUP(GuiNick);
 /* scripts */
index 341f9145750d343bfb8701c8a612fdad96352f5c..d3f0b5ea40411a7c541a0aa4f1584587089258be 100644 (file)
@@ -931,6 +931,21 @@ TEST(CoreString, ConvertEscapedChars)
     WEE_TEST_STR("\\~zzy", string_convert_escaped_chars ("\\~zzy"));
 }
 
+/*
+ * Tests functions:
+ *   string_is_whitespace_char
+ */
+
+TEST(CoreString, IsWhitespaceChar)
+{
+    LONGS_EQUAL(0, string_is_whitespace_char (NULL));
+    LONGS_EQUAL(0, string_is_whitespace_char (""));
+    LONGS_EQUAL(0, string_is_whitespace_char ("abc def"));
+
+    LONGS_EQUAL(1, string_is_whitespace_char (" abc def"));
+    LONGS_EQUAL(1, string_is_whitespace_char ("\tabc def"));
+}
+
 /*
  * Tests functions:
  *   string_is_word_char_highlight
diff --git a/tests/unit/gui/test-gui-input.cpp b/tests/unit/gui/test-gui-input.cpp
new file mode 100644 (file)
index 0000000..eb6d6e2
--- /dev/null
@@ -0,0 +1,784 @@
+/*
+ * test-gui-input.cpp - test input functions
+ *
+ * Copyright (C) 2022 Sébastien Helleu <flashcode@flashtux.org>
+ *
+ * This file is part of WeeChat, the extensible chat client.
+ *
+ * WeeChat is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * WeeChat is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with WeeChat.  If not, see <https://www.gnu.org/licenses/>.
+ */
+
+#include "CppUTest/TestHarness.h"
+
+extern "C"
+{
+#include <string.h>
+#include "src/gui/gui-buffer.h"
+#include "src/gui/gui-input.h"
+}
+
+TEST_GROUP(GuiInput)
+{
+};
+
+/*
+ * Tests functions:
+ *   gui_input_optimize_size
+ */
+
+TEST(GuiInput, OptimizeSize)
+{
+    /* TODO: write tests */
+}
+
+/*
+ * Tests functions:
+ *   gui_input_replace_input
+ *   gui_input_set_pos
+ */
+
+TEST(GuiInput, ReplaceInputSetPos)
+{
+    gui_input_replace_input (gui_buffers, NULL);
+
+    gui_input_replace_input (gui_buffers, "noël");
+    gui_input_set_pos (gui_buffers, 4);
+    STRCMP_EQUAL("noël", gui_buffers->input_buffer);
+    LONGS_EQUAL(5, gui_buffers->input_buffer_size);
+    LONGS_EQUAL(4, gui_buffers->input_buffer_length);
+    LONGS_EQUAL(4, gui_buffers->input_buffer_pos);
+
+    gui_input_replace_input (gui_buffers, "");
+    STRCMP_EQUAL("", gui_buffers->input_buffer);
+    LONGS_EQUAL(0, gui_buffers->input_buffer_size);
+    LONGS_EQUAL(0, gui_buffers->input_buffer_length);
+    LONGS_EQUAL(0, gui_buffers->input_buffer_pos);
+
+    gui_input_set_pos (gui_buffers, 10);
+    LONGS_EQUAL(0, gui_buffers->input_buffer_pos);
+}
+
+/*
+ * Tests functions:
+ *   gui_input_paste_pending_signal
+ */
+
+TEST(GuiInput, PastePendingSignal)
+{
+    /* TODO: write tests */
+}
+
+/*
+ * Tests functions:
+ *   gui_input_text_changed_modifier_and_signal
+ */
+
+TEST(GuiInput, TextChangedModifierAndSignal)
+{
+    /* TODO: write tests */
+}
+
+/*
+ * Tests functions:
+ *   gui_input_text_cursor_moved_signal
+ */
+
+TEST(GuiInput, TextCursorMovedSignal)
+{
+    /* TODO: write tests */
+}
+
+/*
+ * Tests functions:
+ *   gui_input_search_signal
+ */
+
+TEST(GuiInput, SearchSignal)
+{
+    /* TODO: write tests */
+}
+
+/*
+ * Tests functions:
+ *   gui_input_insert_string
+ */
+
+TEST(GuiInput, InsertString)
+{
+    /* TODO: write tests */
+}
+
+/*
+ * Tests functions:
+ *   gui_input_move_to_buffer
+ */
+
+TEST(GuiInput, MoveToBuffer)
+{
+    /* TODO: write tests */
+}
+
+/*
+ * Tests functions:
+ *   gui_input_clipboard_copy
+ */
+
+TEST(GuiInput, ClipboardCopy)
+{
+    /* TODO: write tests */
+}
+
+/*
+ * Tests functions:
+ *   gui_input_clipboard_paste
+ */
+
+TEST(GuiInput, ClipboardPaste)
+{
+    /* TODO: write tests */
+}
+
+/*
+ * Tests functions:
+ *   gui_input_return
+ */
+
+TEST(GuiInput, Return)
+{
+    /* TODO: write tests */
+}
+
+/*
+ * Tests functions:
+ *   gui_input_complete
+ */
+
+TEST(GuiInput, Complete)
+{
+    /* TODO: write tests */
+}
+
+/*
+ * Tests functions:
+ *   gui_input_complete_next
+ */
+
+TEST(GuiInput, CompleteNext)
+{
+    /* TODO: write tests */
+}
+
+/*
+ * Tests functions:
+ *   gui_input_complete_previous
+ */
+
+TEST(GuiInput, CompletePrevious)
+{
+    /* TODO: write tests */
+}
+
+/*
+ * Tests functions:
+ *   gui_input_search_text_here
+ */
+
+TEST(GuiInput, SearchTextHere)
+{
+    /* TODO: write tests */
+}
+
+/*
+ * Tests functions:
+ *   gui_input_search_text
+ */
+
+TEST(GuiInput, SearchText)
+{
+    /* TODO: write tests */
+}
+
+/*
+ * Tests functions:
+ *   gui_input_search_compile_regex
+ */
+
+TEST(GuiInput, SearchCompileRegex)
+{
+    /* TODO: write tests */
+}
+
+/*
+ * Tests functions:
+ *   gui_input_search_switch_case
+ */
+
+TEST(GuiInput, SearchSwitchCase)
+{
+    /* TODO: write tests */
+}
+
+/*
+ * Tests functions:
+ *   gui_input_search_switch_regex
+ */
+
+TEST(GuiInput, SearchSwitchRegex)
+{
+    /* TODO: write tests */
+}
+
+/*
+ * Tests functions:
+ *   gui_input_search_switch_where
+ */
+
+TEST(GuiInput, SearchSwitchWhere)
+{
+    /* TODO: write tests */
+}
+
+/*
+ * Tests functions:
+ *   gui_input_search_previous
+ */
+
+TEST(GuiInput, SearchPrevious)
+{
+    /* TODO: write tests */
+}
+
+/*
+ * Tests functions:
+ *   gui_input_search_next
+ */
+
+TEST(GuiInput, SearchNext)
+{
+    /* TODO: write tests */
+}
+
+/*
+ * Tests functions:
+ *   gui_input_search_stop_here
+ */
+
+TEST(GuiInput, SearchStopHere)
+{
+    /* TODO: write tests */
+}
+
+/*
+ * Tests functions:
+ *   gui_input_search_stop
+ */
+
+TEST(GuiInput, SearchStop)
+{
+    /* TODO: write tests */
+}
+
+/*
+ * Tests functions:
+ *   gui_input_delete_previous_char
+ */
+
+TEST(GuiInput, DeletePreviousChar)
+{
+    /* TODO: write tests */
+}
+
+/*
+ * Tests functions:
+ *   gui_input_delete_next_char
+ */
+
+TEST(GuiInput, DeleteNextChar)
+{
+    /* TODO: write tests */
+}
+
+/*
+ * Tests functions:
+ *   gui_input_delete_range
+ */
+
+TEST(GuiInput, DeleteRange)
+{
+    /* TODO: write tests */
+}
+
+/*
+ * Tests functions:
+ *   gui_input_delete_previous_word
+ */
+
+TEST(GuiInput, DeletePreviousWord)
+{
+    gui_input_replace_input (gui_buffers, "");
+    LONGS_EQUAL(0, gui_buffers->input_buffer_pos);
+    STRCMP_EQUAL("", gui_buffers->input_buffer);
+
+    gui_input_delete_previous_word (gui_buffers);
+    LONGS_EQUAL(0, gui_buffers->input_buffer_pos);
+    STRCMP_EQUAL("", gui_buffers->input_buffer);
+
+    gui_input_replace_input (gui_buffers, "abc");
+    gui_input_set_pos (gui_buffers, 2);
+    gui_input_delete_previous_word (gui_buffers);
+    LONGS_EQUAL(0, gui_buffers->input_buffer_pos);
+    STRCMP_EQUAL("c", gui_buffers->input_buffer);
+
+    gui_input_replace_input (gui_buffers, "abc");
+    gui_input_set_pos (gui_buffers, 3);
+    gui_input_delete_previous_word (gui_buffers);
+    LONGS_EQUAL(0, gui_buffers->input_buffer_pos);
+    STRCMP_EQUAL("", gui_buffers->input_buffer);
+
+    gui_input_replace_input (gui_buffers, "abc  ");
+    gui_input_set_pos (gui_buffers, 5);
+    gui_input_delete_previous_word (gui_buffers);
+    LONGS_EQUAL(0, gui_buffers->input_buffer_pos);
+    STRCMP_EQUAL("", gui_buffers->input_buffer);
+
+    gui_input_replace_input (gui_buffers, "abc def");
+    gui_input_set_pos (gui_buffers, 7);
+    gui_input_delete_previous_word (gui_buffers);
+    LONGS_EQUAL(4, gui_buffers->input_buffer_pos);
+    STRCMP_EQUAL("abc ", gui_buffers->input_buffer);
+
+    gui_input_replace_input (gui_buffers, "abc def/ghi/jkl");
+    gui_input_set_pos (gui_buffers, 15);
+    gui_input_delete_previous_word (gui_buffers);
+    LONGS_EQUAL(12, gui_buffers->input_buffer_pos);
+    STRCMP_EQUAL("abc def/ghi/", gui_buffers->input_buffer);
+    gui_input_delete_previous_word (gui_buffers);
+    LONGS_EQUAL(8, gui_buffers->input_buffer_pos);
+    STRCMP_EQUAL("abc def/", gui_buffers->input_buffer);
+    gui_input_delete_previous_word (gui_buffers);
+    LONGS_EQUAL(4, gui_buffers->input_buffer_pos);
+    STRCMP_EQUAL("abc ", gui_buffers->input_buffer);
+    gui_input_delete_previous_word (gui_buffers);
+    LONGS_EQUAL(0, gui_buffers->input_buffer_pos);
+    STRCMP_EQUAL("", gui_buffers->input_buffer);
+}
+
+/*
+ * Tests functions:
+ *   gui_input_delete_previous_word_whitespace
+ */
+
+TEST(GuiInput, DeletePreviousWordWhitespace)
+{
+    gui_input_replace_input (gui_buffers, "");
+    LONGS_EQUAL(0, gui_buffers->input_buffer_pos);
+    STRCMP_EQUAL("", gui_buffers->input_buffer);
+
+    gui_input_delete_previous_word_whitespace (gui_buffers);
+    LONGS_EQUAL(0, gui_buffers->input_buffer_pos);
+    STRCMP_EQUAL("", gui_buffers->input_buffer);
+
+    gui_input_replace_input (gui_buffers, "abc");
+    gui_input_set_pos (gui_buffers, 2);
+    gui_input_delete_previous_word_whitespace (gui_buffers);
+    LONGS_EQUAL(0, gui_buffers->input_buffer_pos);
+    STRCMP_EQUAL("c", gui_buffers->input_buffer);
+
+    gui_input_replace_input (gui_buffers, "abc");
+    gui_input_set_pos (gui_buffers, 3);
+    gui_input_delete_previous_word_whitespace (gui_buffers);
+    LONGS_EQUAL(0, gui_buffers->input_buffer_pos);
+    STRCMP_EQUAL("", gui_buffers->input_buffer);
+
+    gui_input_replace_input (gui_buffers, "abc  ");
+    gui_input_set_pos (gui_buffers, 5);
+    gui_input_delete_previous_word_whitespace (gui_buffers);
+    LONGS_EQUAL(0, gui_buffers->input_buffer_pos);
+    STRCMP_EQUAL("", gui_buffers->input_buffer);
+
+    gui_input_replace_input (gui_buffers, "abc def");
+    gui_input_set_pos (gui_buffers, 7);
+    gui_input_delete_previous_word_whitespace (gui_buffers);
+    LONGS_EQUAL(4, gui_buffers->input_buffer_pos);
+    STRCMP_EQUAL("abc ", gui_buffers->input_buffer);
+
+    gui_input_replace_input (gui_buffers, "abc def/ghi/jkl");
+    gui_input_set_pos (gui_buffers, 15);
+    gui_input_delete_previous_word_whitespace (gui_buffers);
+    LONGS_EQUAL(4, gui_buffers->input_buffer_pos);
+    STRCMP_EQUAL("abc ", gui_buffers->input_buffer);
+    gui_input_delete_previous_word_whitespace (gui_buffers);
+    LONGS_EQUAL(0, gui_buffers->input_buffer_pos);
+    STRCMP_EQUAL("", gui_buffers->input_buffer);
+}
+
+/*
+ * Tests functions:
+ *   gui_input_delete_next_word
+ */
+
+TEST(GuiInput, DeleteNextWord)
+{
+    /* TODO: write tests */
+}
+
+/*
+ * Tests functions:
+ *   gui_input_delete_beginning_of_line
+ */
+
+TEST(GuiInput, DeleteBeginningOfLine)
+{
+    /* TODO: write tests */
+}
+
+/*
+ * Tests functions:
+ *   gui_input_delete_end_of_line
+ */
+
+TEST(GuiInput, DeleteEndOfLine)
+{
+    /* TODO: write tests */
+}
+
+/*
+ * Tests functions:
+ *   gui_input_delete_line
+ */
+
+TEST(GuiInput, DeleteLine)
+{
+    /* TODO: write tests */
+}
+
+/*
+ * Tests functions:
+ *   gui_input_transpose_chars
+ */
+
+TEST(GuiInput, TransposeChars)
+{
+    /* TODO: write tests */
+}
+
+/*
+ * Tests functions:
+ *   gui_input_move_beginning_of_line
+ */
+
+TEST(GuiInput, MoveBeginningOfLine)
+{
+    /* TODO: write tests */
+}
+
+/*
+ * Tests functions:
+ *   gui_input_move_end_of_line
+ */
+
+TEST(GuiInput, MoveEndOfLine)
+{
+    /* TODO: write tests */
+}
+
+/*
+ * Tests functions:
+ *   gui_input_move_previous_char
+ */
+
+TEST(GuiInput, MovePreviousChar)
+{
+    /* TODO: write tests */
+}
+
+/*
+ * Tests functions:
+ *   gui_input_move_next_char
+ */
+
+TEST(GuiInput, MoveNextChar)
+{
+    /* TODO: write tests */
+}
+
+/*
+ * Tests functions:
+ *   gui_input_move_previous_word
+ */
+
+TEST(GuiInput, MovePreviousWord)
+{
+    /* TODO: write tests */
+}
+
+/*
+ * Tests functions:
+ *   gui_input_move_next_word
+ */
+
+TEST(GuiInput, MoveNextWord)
+{
+    /* TODO: write tests */
+}
+
+/*
+ * Tests functions:
+ *   gui_input_history_previous
+ */
+
+TEST(GuiInput, HistoryPrevious)
+{
+    /* TODO: write tests */
+}
+
+/*
+ * Tests functions:
+ *   gui_input_history_next
+ */
+
+TEST(GuiInput, HistoryNext)
+{
+    /* TODO: write tests */
+}
+
+/*
+ * Tests functions:
+ *   gui_input_history_local_previous
+ */
+
+TEST(GuiInput, HistoryLocalPrevious)
+{
+    /* TODO: write tests */
+}
+
+/*
+ * Tests functions:
+ *   gui_input_history_local_next
+ */
+
+TEST(GuiInput, HistoryLocalNext)
+{
+    /* TODO: write tests */
+}
+
+/*
+ * Tests functions:
+ *   gui_input_history_global_previous
+ */
+
+TEST(GuiInput, HistoryGlobalPrevious)
+{
+    /* TODO: write tests */
+}
+
+/*
+ * Tests functions:
+ *   gui_input_history_global_next
+ */
+
+TEST(GuiInput, HistoryGlobalNext)
+{
+    /* TODO: write tests */
+}
+
+/*
+ * Tests functions:
+ *   gui_input_jump_smart
+ */
+
+TEST(GuiInput, JumpSmart)
+{
+    /* TODO: write tests */
+}
+
+/*
+ * Tests functions:
+ *   gui_input_jump_last_buffer_displayed
+ */
+
+TEST(GuiInput, JumpLastBufferDisplayed)
+{
+    /* TODO: write tests */
+}
+
+/*
+ * Tests functions:
+ *   gui_input_jump_previously_visited_buffer
+ */
+
+TEST(GuiInput, JumpPreviouslyVisitedBuffer)
+{
+    /* TODO: write tests */
+}
+
+/*
+ * Tests functions:
+ *   gui_input_jump_next_visited_buffer
+ */
+
+TEST(GuiInput, JumpNextVisitedBuffer)
+{
+    /* TODO: write tests */
+}
+
+/*
+ * Tests functions:
+ *   gui_input_hotlist_clear
+ */
+
+TEST(GuiInput, HotlistClear)
+{
+    /* TODO: write tests */
+}
+
+/*
+ * Tests functions:
+ *   gui_input_hotlist_remove_buffer
+ */
+
+TEST(GuiInput, HotlistRemoveBuffer)
+{
+    /* TODO: write tests */
+}
+
+/*
+ * Tests functions:
+ *   gui_input_hotlist_restore_buffer
+ */
+
+TEST(GuiInput, HotlistRestoreBuffer)
+{
+    /* TODO: write tests */
+}
+
+/*
+ * Tests functions:
+ *   gui_input_hotlist_restore_all
+ */
+
+TEST(GuiInput, HotlistRestoreAll)
+{
+    /* TODO: write tests */
+}
+
+/*
+ * Tests functions:
+ *   gui_input_grab_key
+ */
+
+TEST(GuiInput, GrabKey)
+{
+    /* TODO: write tests */
+}
+
+/*
+ * Tests functions:
+ *   gui_input_grab_mouse
+ */
+
+TEST(GuiInput, GrabMouse)
+{
+    /* TODO: write tests */
+}
+
+/*
+ * Tests functions:
+ *   gui_input_set_unread
+ */
+
+TEST(GuiInput, SetUnread)
+{
+    /* TODO: write tests */
+}
+
+/*
+ * Tests functions:
+ *   gui_input_set_unread_current
+ */
+
+TEST(GuiInput, SetUnreadCurrent)
+{
+    /* TODO: write tests */
+}
+
+/*
+ * Tests functions:
+ *   gui_input_switch_active_buffer
+ */
+
+TEST(GuiInput, SwitchActiveBuffer)
+{
+    /* TODO: write tests */
+}
+
+/*
+ * Tests functions:
+ *   gui_input_switch_active_buffer_previous
+ */
+
+TEST(GuiInput, SwitchActiveBufferPrevious)
+{
+    /* TODO: write tests */
+}
+
+/*
+ * Tests functions:
+ *   gui_input_zoom_merged_buffer
+ */
+
+TEST(GuiInput, ZoomMergedBuffer)
+{
+    /* TODO: write tests */
+}
+
+/*
+ * Tests functions:
+ *   gui_input_insert
+ */
+
+TEST(GuiInput, Insert)
+{
+    /* TODO: write tests */
+}
+
+/*
+ * Tests functions:
+ *   gui_input_undo_use
+ */
+
+TEST(GuiInput, UndoUse)
+{
+    /* TODO: write tests */
+}
+
+/*
+ * Tests functions:
+ *   gui_input_undo
+ */
+
+TEST(GuiInput, Undo)
+{
+    /* TODO: write tests */
+}
+
+/*
+ * Tests functions:
+ *   gui_input_redo
+ */
+
+TEST(GuiInput, Redo)
+{
+    /* TODO: write tests */
+}