summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--NEWS32
-rw-r--r--doc/de/autogen/plugin_api/hdata.txt3
-rw-r--r--doc/de/autogen/user/weechat_commands.txt102
-rw-r--r--doc/de/weechat_user.de.txt9
-rw-r--r--doc/en/autogen/plugin_api/hdata.txt3
-rw-r--r--doc/en/autogen/user/weechat_commands.txt2
-rw-r--r--doc/en/weechat_user.en.txt6
-rw-r--r--doc/fr/autogen/plugin_api/hdata.txt3
-rw-r--r--doc/fr/autogen/user/weechat_commands.txt2
-rw-r--r--doc/fr/weechat_user.fr.txt6
-rw-r--r--doc/it/autogen/plugin_api/hdata.txt3
-rw-r--r--doc/it/autogen/user/weechat_commands.txt2
-rw-r--r--doc/it/weechat_user.it.txt9
-rw-r--r--doc/ja/autogen/plugin_api/hdata.txt3
-rw-r--r--doc/ja/autogen/user/weechat_commands.txt102
-rw-r--r--doc/ja/weechat_user.ja.txt9
-rw-r--r--po/cs.po22
-rw-r--r--po/de.po14
-rw-r--r--po/es.po23
-rw-r--r--po/fr.po43
-rw-r--r--po/hu.po23
-rw-r--r--po/it.po22
-rw-r--r--po/ja.po23
-rw-r--r--po/pl.po23
-rw-r--r--po/pt_BR.po22
-rw-r--r--po/ru.po23
-rw-r--r--po/tr.po17
-rw-r--r--po/weechat.pot9
-rw-r--r--src/core/wee-command.c6
-rw-r--r--src/gui/curses/gui-curses-chat.c10
-rw-r--r--src/gui/curses/gui-curses-key.c16
-rw-r--r--src/gui/gui-bar-item.c36
-rw-r--r--src/gui/gui-buffer.c31
-rw-r--r--src/gui/gui-buffer.h6
-rw-r--r--src/gui/gui-color.c1
-rw-r--r--src/gui/gui-input.c102
-rw-r--r--src/gui/gui-input.h5
-rw-r--r--src/gui/gui-line.c51
-rw-r--r--src/gui/gui-line.h4
-rw-r--r--src/gui/gui-window.c19
41 files changed, 492 insertions, 361 deletions
diff --git a/ChangeLog b/ChangeLog
index eb39c6485..4d211cadc 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,7 +1,7 @@
WeeChat ChangeLog
=================
Sébastien Helleu <flashcode@flashtux.org>
-v0.4.2-dev, 2013-08-16
+v0.4.2-dev, 2013-08-17
This document lists all changes for each version.
@@ -14,6 +14,10 @@ http://weechat.org/files/releasenotes/ReleaseNotes-devel.html[release notes]
Version 0.4.2 (under dev!)
--------------------------
+* core: add search of regular expression in buffer, don't reset search type on
+ a new search, select where to search (messages/prefixes), add keys in search
+ context: alt+"c" (case (in)sensitive search), tab (search in
+ messages/prefixes)
* core: add text emphasis in messages when searching text in buffer, new
options: weechat.look.emphasized_attributes, weechat.color.emphasized,
weechat.color.emphasized_bg
diff --git a/NEWS b/NEWS
index 484659f51..241d9eb4d 100644
--- a/NEWS
+++ b/NEWS
@@ -1,7 +1,7 @@
WeeChat Release Notes
=====================
Sébastien Helleu <flashcode@flashtux.org>
-v0.4.2-dev, 2013-08-05
+v0.4.2-dev, 2013-08-17
This document lists important changes for each version, that require manual
@@ -16,6 +16,36 @@ http://weechat.org/files/changelog/ChangeLog-devel.html[ChangeLog]
Version 0.4.2 (under dev!)
--------------------------
+=== Regex search in buffer ===
+
+Search with regular expression has been added, and therefore some keys in search
+context have been changed.
+
+The key ctrl+"r" in search context is now used to switch string/regex search
+(instead of searching exact text).
+
+If you never changed keys in search context, you can reset them all with one
+command:
+
+----------------------------------------
+/key resetall -yes search
+----------------------------------------
+
+Or the manual method:
+
+----------------------------------------
+/key missing search
+/key bindctxt search ctrl-R /input search_switch_regex
+----------------------------------------
+
+To view keys in search context:
+
+----------------------------------------
+/key list search
+----------------------------------------
+
+For more information, see the chapter about keys in the 'WeeChat User's guide'.
+
=== New rmodifier ===
A new rmodifier "secure" has been added to hide passphrase and passwords
diff --git a/doc/de/autogen/plugin_api/hdata.txt b/doc/de/autogen/plugin_api/hdata.txt
index cd82f90e5..40b7da773 100644
--- a/doc/de/autogen/plugin_api/hdata.txt
+++ b/doc/de/autogen/plugin_api/hdata.txt
@@ -529,6 +529,9 @@
'num_history' (integer) +
'text_search' (integer) +
'text_search_exact' (integer) +
+ 'text_search_regex' (integer) +
+ 'text_search_regex_compiled' (pointer) +
+ 'text_search_where' (integer) +
'text_search_found' (integer) +
'text_search_input' (string) +
'highlight_words' (string) +
diff --git a/doc/de/autogen/user/weechat_commands.txt b/doc/de/autogen/user/weechat_commands.txt
index 8c0efc8b5..04180d9b5 100644
--- a/doc/de/autogen/user/weechat_commands.txt
+++ b/doc/de/autogen/user/weechat_commands.txt
@@ -342,56 +342,58 @@ value: Anzahl der gewünschten Einträgen im Befehlsverlauf anzeigen
........................................
/input <action> [<arguments>]
-Auflistung der möglichen Funktionen:
- return: simuliert die "enter" Taste
- complete_next: vervollständigt Wort mit nächster Komplettierung
- complete_previous: vervollständigt Word mit vorheriger Komplettierung
- search_text: sucht nach Text im Buffer
- search_switch_case: schaltet Groß-/Kleinschreibung ein und aus
- search_previous: sucht vorheriger Zeile
- search_next: sucht nächste Zeile
- search_stop: suche stoppen
- 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 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: springt zum letzten Buffer, in der Bufferliste
- 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 Hotliste (Aktivitätsanzeige für die Buffer)
- 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
- 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: 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: stop search
+ delete_previous_char: delete previous char
+ delete_next_char: delete next char
+ delete_previous_word: delete previous word
+ 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 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: jump to last buffer
+ 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
+ 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
+ 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_key]]
diff --git a/doc/de/weechat_user.de.txt b/doc/de/weechat_user.de.txt
index 4d66518ba..e8d4a35ac 100644
--- a/doc/de/weechat_user.de.txt
+++ b/doc/de/weechat_user.de.txt
@@ -526,7 +526,8 @@ In der 'input' Bar lautet die Standardeinstellung:
| input_paste | [Paste 7 lines ? [ctrl-Y] Ja [ctrl-N] Nein] | Nachfrage ob sieben Zeilen eingefügt werden sollen
| input_prompt | [@Flashy] | input prompt (Nickname für den IRC)
| away | (away) | Abwesenheitsanzeige
-| input_search | [Text search] | Textsuche
+// TRANSLATION MISSING
+| input_search | [Search (~ str,msg)] | search indicator ("`~`": case insensitive, "`==`": case sensitive, "`str`": search string, "`regex`": search regular expression, "`msg`": search in messages, "`pre`": search in prefixes, "`pre\|msg`": search in prefixes and messages)
| input_text | hi peter! | Text der eingegeben wird
|========================================
@@ -1039,7 +1040,11 @@ in einem Buffer nach einem Text zu suchen).
[width="100%",cols="^.^3,.^10,.^5l",options="header"]
|========================================
| Taste | Beschreibung | Befehl
-| @k(C-)@k(r) | auf Groß-/Kleinschreibung umschalten | /input search_switch_case
+// TRANSLATION MISSING
+| @k(C-)@k(r) | Switch search type: string (default), regular expression | /input search_switch_regex
+| @k(A-)@k(c) | auf Groß-/Kleinschreibung umschalten | /input search_switch_case
+// TRANSLATION MISSING
+| @k(Tab) | Switch search in: messages (default), prefixes, prefixes + messages | /input search_switch_where
| @k(↑) | sucht vorheriger Zeile | /input search_previous
| @k(↓) | sucht nächste Zeile | /input search_next
| @k(Enter) .3+| Suche abbrechen .3+| /input search_stop
diff --git a/doc/en/autogen/plugin_api/hdata.txt b/doc/en/autogen/plugin_api/hdata.txt
index a7ad11646..c7fe11499 100644
--- a/doc/en/autogen/plugin_api/hdata.txt
+++ b/doc/en/autogen/plugin_api/hdata.txt
@@ -529,6 +529,9 @@
'num_history' (integer) +
'text_search' (integer) +
'text_search_exact' (integer) +
+ 'text_search_regex' (integer) +
+ 'text_search_regex_compiled' (pointer) +
+ 'text_search_where' (integer) +
'text_search_found' (integer) +
'text_search_input' (string) +
'highlight_words' (string) +
diff --git a/doc/en/autogen/user/weechat_commands.txt b/doc/en/autogen/user/weechat_commands.txt
index c4f8ef841..171ca6ac4 100644
--- a/doc/en/autogen/user/weechat_commands.txt
+++ b/doc/en/autogen/user/weechat_commands.txt
@@ -348,6 +348,8 @@ list of actions:
complete_previous: complete word with previous completion
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: stop search
diff --git a/doc/en/weechat_user.en.txt b/doc/en/weechat_user.en.txt
index 27ca5ea09..4f47e8981 100644
--- a/doc/en/weechat_user.en.txt
+++ b/doc/en/weechat_user.en.txt
@@ -526,7 +526,7 @@ Bar 'input' has following default items:
| input_paste | [Paste 7 lines ? [ctrl-Y] Yes [ctrl-N] No] | question to user for pasting lines
| input_prompt | [@Flashy] | input prompt (nick for irc plugin)
| away | (away) | away indicator
-| input_search | [Text search] | text search indicator
+| input_search | [Search (~ str,msg)] | search indicator ("`~`": case insensitive, "`==`": case sensitive, "`str`": search string, "`regex`": search regular expression, "`msg`": search in messages, "`pre`": search in prefixes, "`pre\|msg`": search in prefixes and messages)
| input_text | hi peter! | input text
|========================================
@@ -1027,7 +1027,9 @@ text in buffer).
[width="100%",cols="^.^3,.^10,.^5l",options="header"]
|========================================
| Key | Description | Command
-| @k(C-)@k(r) | Switch exact case for search | /input search_switch_case
+| @k(C-)@k(r) | Switch search type: string (default), regular expression | /input search_switch_regex
+| @k(A-)@k(c) | Switch exact case for search | /input search_switch_case
+| @k(Tab) | Switch search in: messages (default), prefixes, prefixes + messages | /input search_switch_where
| @k(↑) | Search previous line | /input search_previous
| @k(↓) | Search next line | /input search_next
| @k(Enter) .3+| Stop search .3+| /input search_stop
diff --git a/doc/fr/autogen/plugin_api/hdata.txt b/doc/fr/autogen/plugin_api/hdata.txt
index 260c6cc1e..66c66a9ed 100644
--- a/doc/fr/autogen/plugin_api/hdata.txt
+++ b/doc/fr/autogen/plugin_api/hdata.txt
@@ -529,6 +529,9 @@
'num_history' (integer) +
'text_search' (integer) +
'text_search_exact' (integer) +
+ 'text_search_regex' (integer) +
+ 'text_search_regex_compiled' (pointer) +
+ 'text_search_where' (integer) +
'text_search_found' (integer) +
'text_search_input' (string) +
'highlight_words' (string) +
diff --git a/doc/fr/autogen/user/weechat_commands.txt b/doc/fr/autogen/user/weechat_commands.txt
index 5aba7d376..eb2408035 100644
--- a/doc/fr/autogen/user/weechat_commands.txt
+++ b/doc/fr/autogen/user/weechat_commands.txt
@@ -348,6 +348,8 @@ liste des actions:
complete_previous: compléter le mot avec la complétion précédente
search_text: chercher du texte dans le tampon
search_switch_case: basculer la casse exacte pour la recherche
+ search_switch_regex: basculer le type de recherche: chaîne/expression régulière
+ search_switch_where: basculer la recherche dans les messages/préfixes
search_previous: chercher la ligne précédente
search_next: chercher la ligne suivante
search_stop: arrêter la recherche
diff --git a/doc/fr/weechat_user.fr.txt b/doc/fr/weechat_user.fr.txt
index f774e0100..ff6ef99ed 100644
--- a/doc/fr/weechat_user.fr.txt
+++ b/doc/fr/weechat_user.fr.txt
@@ -536,7 +536,7 @@ La barre 'input' contient les objets (items) suivants par défaut :
| input_paste | [Coller 7 lignes ? [ctrl-Y] Oui [ctrl-N] Non] | question à l'utilisateur pour coller des lignes
| input_prompt | [@Flashy] | prompt (pseudo pour l'extension irc)
| away | (absent) | indicateur d'absence
-| input_search | [Recherche texte] | indicateur de recherche de texte
+| input_search | [Recherche (~ str,msg)] | indicateur de recherche de texte ("`~`" : insensible à la casse, "`==`" : sensible à la casse, "`str`" : recherche de chaîne, "`regex`" : recherche d'expression régulière, "`msg`" : recherche dans les messages, "`pre`" : recherche dans les préfixes, "`pre\|msg`" : recherche dans les préfixes et messages)
| input_text | salut peter ! | texte entré
|========================================
@@ -1051,7 +1051,9 @@ pressé pour chercher du texte dans le tampon).
[width="100%",cols="^.^3,.^10,.^5l",options="header"]
|========================================
| Touche | Description | Commande
-| @k(C-)@k(r) | Basculer la casse exacte pour la recherche | /input search_switch_case
+| @k(C-)@k(r) | Basculer le type de recherche : chaîne (par défaut), expression régulière | /input search_switch_regex
+| @k(A-)@k(c) | Basculer la casse exacte pour la recherche | /input search_switch_case
+| @k(Tab) | Basculer la recherche dans : les messages (par défaut), les préfixes, les préfixes + messages | /input search_switch_where
| @k(↑) | Chercher la ligne précédente | /input search_previous
| @k(↓) | Chercher la ligne suivante | /input search_next
| @k(Enter) .3+| Arrêter la recherche .3+| /input search_stop
diff --git a/doc/it/autogen/plugin_api/hdata.txt b/doc/it/autogen/plugin_api/hdata.txt
index 1ff5ae4e7..ffaa2742e 100644
--- a/doc/it/autogen/plugin_api/hdata.txt
+++ b/doc/it/autogen/plugin_api/hdata.txt
@@ -529,6 +529,9 @@
'num_history' (integer) +
'text_search' (integer) +
'text_search_exact' (integer) +
+ 'text_search_regex' (integer) +
+ 'text_search_regex_compiled' (pointer) +
+ 'text_search_where' (integer) +
'text_search_found' (integer) +
'text_search_input' (string) +
'highlight_words' (string) +
diff --git a/doc/it/autogen/user/weechat_commands.txt b/doc/it/autogen/user/weechat_commands.txt
index b177754c2..a596f7753 100644
--- a/doc/it/autogen/user/weechat_commands.txt
+++ b/doc/it/autogen/user/weechat_commands.txt
@@ -348,6 +348,8 @@ list of actions:
complete_previous: complete word with previous completion
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: stop search
diff --git a/doc/it/weechat_user.it.txt b/doc/it/weechat_user.it.txt
index c947306c5..68f9b9dd1 100644
--- a/doc/it/weechat_user.it.txt
+++ b/doc/it/weechat_user.it.txt
@@ -546,7 +546,8 @@ La barra 'input' ha i seguenti elementi predefiniti:
| input_paste | [Incollare 7 righe ? [ctrl-Y] Sì [ctrl-N] No] | chiede all'utente se incollare le righe
| input_prompt | [@Flashy] | prompt per l'input (nick per il plugin irc)
| away | (assente) | indicatore di assenza
-| input_search | [Ricerca testo] | indicatore di ricerca testo
+// TRANSLATION MISSING
+| input_search | [Search (~ str,msg)] | search indicator ("`~`": case insensitive, "`==`": case sensitive, "`str`": search string, "`regex`": search regular expression, "`msg`": search in messages, "`pre`": search in prefixes, "`pre\|msg`": search in prefixes and messages)
| input_text | ciao peter! | testo in input
|========================================
@@ -1051,7 +1052,11 @@ Questi tasti sono usati nel contesto "search" (quando viene digitato
[width="100%",cols="^.^3,.^10,.^5l",options="header"]
|========================================
| Key | Descrizione | Comando
-| @k(C-)@k(r) | Passa alla ricerca esatta | /input search_switch_case
+// TRANSLATION MISSING
+| @k(C-)@k(r) | Switch search type: string (default), regular expression | /input search_switch_regex
+| @k(A-)@k(c) | Passa alla ricerca esatta | /input search_switch_case
+// TRANSLATION MISSING
+| @k(Tab) | Switch search in: messages (default), prefixes, prefixes + messages | /input search_switch_where
| @k(↑) | Cerca riga precedente | /input search_previous
| @k(↓) | Cerca riga successiva | /input search_next
| @k(Invio) .3+| Ferma ricerca .3+| /input search_stop
diff --git a/doc/ja/autogen/plugin_api/hdata.txt b/doc/ja/autogen/plugin_api/hdata.txt
index 5f1dfe12f..135cc2b21 100644
--- a/doc/ja/autogen/plugin_api/hdata.txt
+++ b/doc/ja/autogen/plugin_api/hdata.txt
@@ -529,6 +529,9 @@
'num_history' (integer) +
'text_search' (integer) +
'text_search_exact' (integer) +
+ 'text_search_regex' (integer) +
+ 'text_search_regex_compiled' (pointer) +
+ 'text_search_where' (integer) +
'text_search_found' (integer) +
'text_search_input' (string) +
'highlight_words' (string) +
diff --git a/doc/ja/autogen/user/weechat_commands.txt b/doc/ja/autogen/user/weechat_commands.txt
index 4972b85ab..d84cc4b25 100644
--- a/doc/ja/autogen/user/weechat_commands.txt
+++ b/doc/ja/autogen/user/weechat_commands.txt
@@ -342,56 +342,58 @@ value: 表示する履歴エントリの数
........................................
/input <action> [<arguments>]
-アクションリスト:
- return: "enter" キーをシミュレート
- complete_next: 次の補完候補で単語を補完
- complete_previous: 一つ前の補完候補で単語を補完
- search_text: バッファ内のテキストを検索
- search_switch_case: 完全一致検索に変更
- search_previous: 一つ前の行を検索
- search_next: 次の行を検索
- 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: 2 つの文字を入れ替え
- 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: 最後のバッファに移動
- jump_last_buffer_displayed: 表示されている最後のバッファに移動 (最新のバッファ移動の一つ前に表示されていたバッファ)
- jump_previously_visited_buffer: 一つ前に訪れたバッファに移動
- jump_next_visited_buffer: 次に訪れたバッファに移動
- hotlist_clear: ホットリストを消去
- grab_key: キーを横取りする (オプション引数: 最後の横取りからの遅延時間、デフォルトは 500 ミリ秒)
- grab_key_command: あるコマンドに関連してキーを横取りする (オプション引数: 最後の横取りからの遅延時間、デフォルトは 500 ミリ秒)
- grab_mouse: grab マウスイベントコードを横取り
- grab_mouse_area: 範囲指定のマウスイベントコードを横取り
- set_unread: 全てのバッファに対して未読マーカーを設定
- set_unread_current_buffer: 現在のバッファに対して未読マーカーを設定
- switch_active_buffer: 次のマージされたバッファに移動
- switch_active_buffer_previous: 一つ前のマージされたバッファに移動
- zoom_merged_buffer: マージされたバッファにズーム
- insert: コマンドラインにテキストを挿入
- 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: 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: stop search
+ delete_previous_char: delete previous char
+ delete_next_char: delete next char
+ delete_previous_word: delete previous word
+ 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 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: jump to last buffer
+ 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
+ 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
+ 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_key]]
diff --git a/doc/ja/weechat_user.ja.txt b/doc/ja/weechat_user.ja.txt
index abb82971e..0b60c9ff7 100644
--- a/doc/ja/weechat_user.ja.txt
+++ b/doc/ja/weechat_user.ja.txt
@@ -516,7 +516,8 @@ WeeChat を起動したターミナルの例:
| input_paste | [Paste 7 lines ? [ctrl-Y] Yes [ctrl-N] No] | 行をペーストする場合にユーザへ行われる質問
| input_prompt | [@Flashy] | 入力プロンプト (irc プラグインの場合はニックネーム)
| away | (away) | 離席状態表示
-| input_search | [Text search] | テキスト検索表示
+// TRANSLATION MISSING
+| input_search | [Search (~ str,msg)] | search indicator ("`~`": case insensitive, "`==`": case sensitive, "`str`": search string, "`regex`": search regular expression, "`msg`": search in messages, "`pre`": search in prefixes, "`pre\|msg`": search in prefixes and messages)
| input_text | hi peter! | 入力テキスト
|========================================
@@ -1007,7 +1008,11 @@ irc サーバ "freenode" に含まれる全てのバッファに対して設定
[width="100%",cols="^.^3,.^10,.^5l",options="header"]
|========================================
| キー | 説明 | コマンド
-| @k(C-)@k(r) | 大文字小文字を区別して検索 | /input search_switch_case
+// TRANSLATION MISSING
+| @k(C-)@k(r) | Switch search type: string (default), regular expression | /input search_switch_regex
+| @k(A-)@k(c) | 大文字小文字を区別して検索 | /input search_switch_case
+// TRANSLATION MISSING
+| @k(Tab) | Switch search in: messages (default), prefixes, prefixes + messages | /input search_switch_where
| @k(↑) | 前のキーワードで検索 | /input search_previous
| @k(↓) | 次のキーワードで検索 | /input search_next
| @k(Enter) .3+| 検索を終了 .3+| /input search_stop
diff --git a/po/cs.po b/po/cs.po
index 92d987db9..80aa97698 100644
--- a/po/cs.po
+++ b/po/cs.po
@@ -20,8 +20,8 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat 0.4.2-dev\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2013-08-16 15:18+0200\n"
-"PO-Revision-Date: 2013-07-31 18:41+0200\n"
+"POT-Creation-Date: 2013-08-17 11:49+0200\n"
+"PO-Revision-Date: 2013-08-17 10:37+0200\n"
"Last-Translator: Jiri Golembiovsky <golemj@gmail.com>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
"Language: cs\n"
@@ -1507,6 +1507,8 @@ msgid ""
" complete_previous: complete word with previous completion\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: stop search\n"
@@ -3856,11 +3858,8 @@ msgstr[0] "%sVložit %d řádků ? [ctrl-Y] Ano [ctrl-N] Ne"
msgstr[1] "%sVložit %d řádků ? [ctrl-Y] Ano [ctrl-N] Ne"
msgstr[2] "%sVložit %d řádků ? [ctrl-Y] Ano [ctrl-N] Ne"
-msgid "Text search"
-msgstr "Vyhledávání textu"
-
-msgid "Text search (exact)"
-msgstr "Vyhledávání textu (přesné)"
+msgid "Search"
+msgstr ""
#, c-format
msgid "%s-MORE(%d)-"
@@ -9789,12 +9788,3 @@ msgstr ""
msgid "Constants"
msgstr ""
-
-#~ msgid "time format for date displayed when day changed"
-#~ msgstr "formát času pro zobrazení dne při změně dne"
-
-#~ msgid "username for SASL authentication"
-#~ msgstr "uživatelské jméno pro SASL autentizaci"
-
-#~ msgid "password for SASL authentication"
-#~ msgstr "heslo pro SASL autentizaci"
diff --git a/po/de.po b/po/de.po
index de9f71c93..7e2b03653 100644
--- a/po/de.po
+++ b/po/de.po
@@ -22,8 +22,8 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat 0.4.2-dev\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2013-08-16 15:18+0200\n"
-"PO-Revision-Date: 2013-08-12 09:02+0200\n"
+"POT-Creation-Date: 2013-08-17 11:49+0200\n"
+"PO-Revision-Date: 2013-08-17 10:37+0200\n"
"Last-Translator: Nils Görs <weechatter@arcor.de>\n"
"Language-Team: German <weechatter@arcor.de>\n"
"Language: de_DE\n"
@@ -1620,6 +1620,7 @@ msgstr "Funktionen für die Befehlszeile"
msgid "<action> [<arguments>]"
msgstr "<action> [<arguments>]"
+#, fuzzy
msgid ""
"list of actions:\n"
" return: simulate key \"enter\"\n"
@@ -1627,6 +1628,8 @@ msgid ""
" complete_previous: complete word with previous completion\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: stop search\n"
@@ -4388,11 +4391,8 @@ msgid_plural "%sPaste %d lines ? [ctrl-Y] Yes [ctrl-N] No"
msgstr[0] "%s%d Zeile einfügen? [Strg-Y] Ja [Strg-N] Nein"
msgstr[1] "%s%d Zeilen einfügen? [Strg-Y] Ja [Strgl-N] Nein"
-msgid "Text search"
-msgstr "Textsuche"
-
-msgid "Text search (exact)"
-msgstr "Textsuche (genau)"
+msgid "Search"
+msgstr ""
#, c-format
msgid "%s-MORE(%d)-"
diff --git a/po/es.po b/po/es.po
index aedd070fb..e691ab3f3 100644
--- a/po/es.po
+++ b/po/es.po
@@ -22,8 +22,8 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat 0.4.2-dev\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2013-08-16 15:18+0200\n"
-"PO-Revision-Date: 2013-07-31 18:41+0200\n"
+"POT-Creation-Date: 2013-08-17 11:49+0200\n"
+"PO-Revision-Date: 2013-08-17 10:37+0200\n"
"Last-Translator: Elián Hanisch <lambdae2@gmail.com>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
"Language: es\n"
@@ -1537,6 +1537,7 @@ msgstr "funciones para la línea de comandos"
msgid "<action> [<arguments>]"
msgstr "<acción> [<argumentos>]"
+#, fuzzy
msgid ""
"list of actions:\n"
" return: simulate key \"enter\"\n"
@@ -1544,6 +1545,8 @@ msgid ""
" complete_previous: complete word with previous completion\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: stop search\n"
@@ -4056,11 +4059,8 @@ msgid_plural "%sPaste %d lines ? [ctrl-Y] Yes [ctrl-N] No"
msgstr[0] "%sPegar %d línea ? [ctrl-Y] Sí [ctrl-N] No"
msgstr[1] "%sPegar %d líneas ? [ctrl-Y] Sí [ctrl-N] No"
-msgid "Text search"
-msgstr "Búsqueda de texto"
-
-msgid "Text search (exact)"
-msgstr "Búsqueda de texto (exacto)"
+msgid "Search"
+msgstr ""
#, c-format
msgid "%s-MORE(%d)-"
@@ -10044,12 +10044,3 @@ msgstr "Tipo"
msgid "Constants"
msgstr "Constantes"
-
-#~ msgid "time format for date displayed when day changed"
-#~ msgstr "formato para la fecha mostrada cuando el día cambió"
-
-#~ msgid "username for SASL authentication"
-#~ msgstr "nombre de usuario para la autenticación SASL"
-
-#~ msgid "password for SASL authentication"
-#~ msgstr "clave para la autenticación SASL"
diff --git a/po/fr.po b/po/fr.po
index 1367b9209..c0a82198e 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -21,8 +21,8 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat 0.4.2-dev\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2013-08-16 15:18+0200\n"
-"PO-Revision-Date: 2013-08-16 15:18+0200\n"
+"POT-Creation-Date: 2013-08-17 11:49+0200\n"
+"PO-Revision-Date: 2013-08-17 11:50+0200\n"
"Last-Translator: Sebastien Helleu <flashcode@flashtux.org>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
"Language: fr\n"
@@ -1601,6 +1601,8 @@ msgid ""
" complete_previous: complete word with previous completion\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: stop search\n"
@@ -1655,6 +1657,9 @@ msgstr ""
" complete_previous: compléter le mot avec la complétion précédente\n"
" search_text: chercher du texte dans le tampon\n"
" search_switch_case: basculer la casse exacte pour la recherche\n"
+" search_switch_regex: basculer le type de recherche: chaîne/expression "
+"régulière\n"
+" search_switch_where: basculer la recherche dans les messages/préfixes\n"
" search_previous: chercher la ligne précédente\n"
" search_next: chercher la ligne suivante\n"
" search_stop: arrêter la recherche\n"
@@ -4285,11 +4290,8 @@ msgid_plural "%sPaste %d lines ? [ctrl-Y] Yes [ctrl-N] No"
msgstr[0] "%sColler %d ligne ? [ctrl-Y] Oui [ctrl-N] Non"
msgstr[1] "%sColler %d lignes ? [ctrl-Y] Oui [ctrl-N] Non"
-msgid "Text search"
-msgstr "Recherche texte"
-
-msgid "Text search (exact)"
-msgstr "Recherche texte (exact)"
+msgid "Search"
+msgstr "Recherche"
#, c-format
msgid "%s-MORE(%d)-"
@@ -10527,30 +10529,3 @@ msgstr "Type"
msgid "Constants"
msgstr "Constantes"
-
-#~ msgid "text color for emphasized text (for example when searching text)"
-#~ msgstr ""
-#~ "couleur du texte pour le texte mis en valeur (par exemple lors d'une "
-#~ "recherche de texte)"
-
-#~ msgid ""
-#~ "background color for emphasized text (for example when searching text)"
-#~ msgstr ""
-#~ "couleur du fond pour le texte mis en valeur (par exemple lors de la "
-#~ "recherche de texte)"
-
-#~ msgid "time format for date displayed when day changed"
-#~ msgstr "format de date pour la date affichée quand le jour a changé"
-
-#~ msgid ""
-#~ "To recover your secured data, you can issue commands: \"/secure "
-#~ "passphrase xxx\" and \"/reload sec\""
-#~ msgstr ""
-#~ "Pour récupérer vos données sécurisées, vous pouvez lancer les commandes: "
-#~ "\"/secure passphrase xxx\" et \"/reload sec\""
-
-#~ msgid "username for SASL authentication"
-#~ msgstr "nom d'utilisateur pour l'authentification SASL"
-
-#~ msgid "password for SASL authentication"
-#~ msgstr "mot de passe pour l'authentification SASL"
diff --git a/po/hu.po b/po/hu.po
index 1cba901ac..fad3a9785 100644
--- a/po/hu.po
+++ b/po/hu.po
@@ -20,8 +20,8 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat 0.4.2-dev\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2013-08-16 15:18+0200\n"
-"PO-Revision-Date: 2013-07-31 18:41+0200\n"
+"POT-Creation-Date: 2013-08-17 11:49+0200\n"
+"PO-Revision-Date: 2013-08-17 10:37+0200\n"
"Last-Translator: Andras Voroskoi <voroskoi@frugalware.org>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
"Language: hu\n"
@@ -1376,6 +1376,8 @@ msgid ""
" complete_previous: complete word with previous completion\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: stop search\n"
@@ -3485,13 +3487,8 @@ msgid_plural "%sPaste %d lines ? [ctrl-Y] Yes [ctrl-N] No"
msgstr[0] " Beszúrható %d sor? [ctrl-Y] Igen [ctrl-N] Nem"
msgstr[1] " Beszúrható %d sor? [ctrl-Y] Igen [ctrl-N] Nem"
-#, fuzzy
-msgid "Text search"
-msgstr "Szöveg keresése: "
-
-#, fuzzy
-msgid "Text search (exact)"
-msgstr "Szöveg keresése (pontos): "
+msgid "Search"
+msgstr ""
#, fuzzy, c-format
msgid "%s-MORE(%d)-"
@@ -9230,11 +9227,3 @@ msgstr ""
msgid "Constants"
msgstr ""
-
-#, fuzzy
-#~ msgid "username for SASL authentication"
-#~ msgstr "SSL használata a a kapcsolathoz"
-
-#, fuzzy
-#~ msgid "password for SASL authentication"
-#~ msgstr "SSL használata a a kapcsolathoz"
diff --git a/po/it.po b/po/it.po
index d5715bee4..995be94d9 100644
--- a/po/it.po
+++ b/po/it.po
@@ -20,8 +20,8 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat 0.4.2-dev\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2013-08-16 15:18+0200\n"
-"PO-Revision-Date: 2013-07-31 18:41+0200\n"
+"POT-Creation-Date: 2013-08-17 11:49+0200\n"
+"PO-Revision-Date: 2013-08-17 10:37+0200\n"
"Last-Translator: Esteban I. Ruiz Moreno <exio4.com@gmail.com>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
"Language: it\n"
@@ -1589,6 +1589,8 @@ msgid ""
" complete_previous: complete word with previous completion\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: stop search\n"
@@ -4125,11 +4127,8 @@ msgid_plural "%sPaste %d lines ? [ctrl-Y] Yes [ctrl-N] No"
msgstr[0] "%sIncollare %d riga? [ctrl-Y] Sì [ctrl-N] No"
msgstr[1] "%sIncollare %d righe? [ctrl-Y] Sì [ctrl-N] No"
-msgid "Text search"
-msgstr "Ricerca testo"
-
-msgid "Text search (exact)"
-msgstr "Ricerca testo (esatta)"
+msgid "Search"
+msgstr ""
#, c-format
msgid "%s-MORE(%d)-"
@@ -10142,12 +10141,3 @@ msgstr "Tipo"
msgid "Constants"
msgstr "Costanti"
-
-#~ msgid "time format for date displayed when day changed"
-#~ msgstr "formato dell'ora visualizzato al cambio di data"
-
-#~ msgid "username for SASL authentication"
-#~ msgstr "nome utente per l'autenticazione SASL"
-
-#~ msgid "password for SASL authentication"
-#~ msgstr "password per l'autenticazione SASL"
diff --git a/po/ja.po b/po/ja.po
index eb63b9690..cc2b51a9e 100644
--- a/po/ja.po
+++ b/po/ja.po
@@ -20,8 +20,8 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat 0.4.2-dev\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2013-08-16 15:18+0200\n"
-"PO-Revision-Date: 2013-08-02 08:50+0200\n"
+"POT-Creation-Date: 2013-08-17 11:49+0200\n"
+"PO-Revision-Date: 2013-08-17 10:37+0200\n"
"Last-Translator: AYANOKOUZI, Ryuunosuke <i38w7i3@yahoo.co.jp>\n"
"Language-Team: Japanese <https://github.com/l/WeeChat>\n"
"Language: ja\n"
@@ -1558,6 +1558,7 @@ msgstr "コマンドライン関数"
msgid "<action> [<arguments>]"
msgstr "<action> [<arguments>]"
+#, fuzzy
msgid ""
"list of actions:\n"
" return: simulate key \"enter\"\n"
@@ -1565,6 +1566,8 @@ msgid ""
" complete_previous: complete word with previous completion\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: stop search\n"
@@ -4049,11 +4052,8 @@ msgid "%sPaste %d line ? [ctrl-Y] Yes [ctrl-N] No"
msgid_plural "%sPaste %d lines ? [ctrl-Y] Yes [ctrl-N] No"
msgstr[0] "%s %d 行を貼り付けますか? [ctrl-Y] はい [ctrl-N] いいえ"
-msgid "Text search"
-msgstr "テキスト検索"
-
-msgid "Text search (exact)"
-msgstr "テキスト検索 (完全一致)"
+msgid "Search"
+msgstr ""
#, c-format
msgid "%s-MORE(%d)-"
@@ -10097,12 +10097,3 @@ msgstr "タイプ"
msgid "Constants"
msgstr "定数"
-
-#~ msgid "time format for date displayed when day changed"
-#~ msgstr "日付が変わったときに表示される時間フォーマット"
-
-#~ msgid "username for SASL authentication"
-#~ msgstr "SASL 認証用ユーザ名"
-
-#~ msgid "password for SASL authentication"
-#~ msgstr "SASL 認証用パスワード"
diff --git a/po/pl.po b/po/pl.po
index fc2504157..f9161ce07 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -21,8 +21,8 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat 0.4.2-dev\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2013-08-16 15:18+0200\n"
-"PO-Revision-Date: 2013-08-02 08:50+0200\n"
+"POT-Creation-Date: 2013-08-17 11:49+0200\n"
+"PO-Revision-Date: 2013-08-17 10:37+0200\n"
"Last-Translator: Krzysztof Korościk <soltys@szluug.org>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
"Language: pl\n"
@@ -1595,6 +1595,7 @@ msgstr "funkcje linii komend"
msgid "<action> [<arguments>]"
msgstr "<akcja> [<argumenty>]"
+#, fuzzy
msgid ""
"list of actions:\n"
" return: simulate key \"enter\"\n"
@@ -1602,6 +1603,8 @@ msgid ""
" complete_previous: complete word with previous completion\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: stop search\n"
@@ -4134,11 +4137,8 @@ msgstr[0] "%sWkleić %d linię ? [ctrl-Y] Tak [ctrl-N] Nie"
msgstr[1] "%sWkleić %d linii ? [ctrl-Y] Tak [ctrl-N] Nie"
msgstr[2] "%sWkleić %d linii ? [ctrl-Y] Tak [ctrl-N] Nie"
-msgid "Text search"
-msgstr "Wyszukiwanie teksu"
-
-msgid "Text search (exact)"
-msgstr "Wyszukiwanie tekstu (dokładne)"
+msgid "Search"
+msgstr ""
#, c-format
msgid "%s-MORE(%d)-"
@@ -10255,12 +10255,3 @@ msgstr "Typ"
msgid "Constants"
msgstr "Stałe"
-
-#~ msgid "time format for date displayed when day changed"
-#~ msgstr "format czasu wyświetlanej daty przy zmianie dnia"
-
-#~ msgid "username for SASL authentication"
-#~ msgstr "nazwa użytkownika dla uwierzytelniania SASL"
-
-#~ msgid "password for SASL authentication"
-#~ msgstr "hasło dla uwierzytelniania SASL"
diff --git a/po/pt_BR.po b/po/pt_BR.po
index dd1056cc5..e023cdd4d 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -21,8 +21,8 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat 0.4.2-dev\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2013-08-16 15:18+0200\n"
-"PO-Revision-Date: 2013-07-31 18:42+0200\n"
+"POT-Creation-Date: 2013-08-17 11:49+0200\n"
+"PO-Revision-Date: 2013-08-17 10:37+0200\n"
"Last-Translator: Sergio Durigan Junior <sergiosdj@gmail.com>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
"Language: pt_BR\n"
@@ -1573,6 +1573,8 @@ msgid ""
" complete_previous: complete word with previous completion\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: stop search\n"
@@ -3947,11 +3949,8 @@ msgid_plural "%sPaste %d lines ? [ctrl-Y] Yes [ctrl-N] No"
msgstr[0] "%sColar %d linhas ? [ctrl-Y] Sim [ctrl-N] Não"
msgstr[1] "%sColar %d linhas ? [ctrl-Y] Sim [ctrl-N] Não"
-msgid "Text search"
-msgstr "Busca de texto"
-
-msgid "Text search (exact)"
-msgstr "Busca de texto (exata)"
+msgid "Search"
+msgstr ""
#, c-format
msgid "%s-MORE(%d)-"
@@ -9423,12 +9422,3 @@ msgstr ""
msgid "Constants"
msgstr ""
-
-#~ msgid "time format for date displayed when day changed"
-#~ msgstr "formato de hora tempo para a data mostrada quando o dia muda"
-
-#~ msgid "username for SASL authentication"
-#~ msgstr "nome de usuário para autenticação SASL"
-
-#~ msgid "password for SASL authentication"
-#~ msgstr "senha para autenticação SASL"
diff --git a/po/ru.po b/po/ru.po
index 6d37feb50..f055ed84d 100644
--- a/po/ru.po
+++ b/po/ru.po
@@ -21,8 +21,8 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat 0.4.2-dev\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2013-08-16 15:18+0200\n"
-"PO-Revision-Date: 2013-07-31 18:42+0200\n"
+"POT-Creation-Date: 2013-08-17 11:49+0200\n"
+"PO-Revision-Date: 2013-08-17 10:37+0200\n"
"Last-Translator: Aleksey V Zapparov AKA ixti <ixti@member.fsf.org>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
"Language: ru\n"
@@ -1397,6 +1397,8 @@ msgid ""
" complete_previous: complete word with previous completion\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: stop search\n"
@@ -3518,13 +3520,8 @@ msgstr[0] " Вставить %d строк ? [ctrl-Y] Да [ctrl-N] Нет"
msgstr[1] " Вставить %d строк ? [ctrl-Y] Да [ctrl-N] Нет"
msgstr[2] " Вставить %d строк ? [ctrl-Y] Да [ctrl-N] Нет"
-#, fuzzy
-msgid "Text search"
-msgstr "Поиск текста: "
-
-#, fuzzy
-msgid "Text search (exact)"
-msgstr "Поиск текста (регистрозависимый): "
+msgid "Search"
+msgstr ""
#, fuzzy, c-format
msgid "%s-MORE(%d)-"
@@ -9250,11 +9247,3 @@ msgstr ""
msgid "Constants"
msgstr ""
-
-#, fuzzy
-#~ msgid "username for SASL authentication"
-#~ msgstr "использовать SSL при связи с сервером"
-
-#, fuzzy
-#~ msgid "password for SASL authentication"
-#~ msgstr "использовать SSL при связи с сервером"
diff --git a/po/tr.po b/po/tr.po
index e0ddf1dc5..9550332cd 100644
--- a/po/tr.po
+++ b/po/tr.po
@@ -20,8 +20,8 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat 0.4.2-dev\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2013-08-16 15:18+0200\n"
-"PO-Revision-Date: 2013-07-31 18:42+0200\n"
+"POT-Creation-Date: 2013-08-17 11:49+0200\n"
+"PO-Revision-Date: 2013-08-17 10:37+0200\n"
"Last-Translator: Hasan Kiran <sunder67@hotmail.com>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
"Language: tr\n"
@@ -1236,6 +1236,8 @@ msgid ""
" complete_previous: complete word with previous completion\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: stop search\n"
@@ -3120,10 +3122,7 @@ msgid "%sPaste %d line ? [ctrl-Y] Yes [ctrl-N] No"
msgid_plural "%sPaste %d lines ? [ctrl-Y] Yes [ctrl-N] No"
msgstr[0] ""
-msgid "Text search"
-msgstr "Metin arama"
-
-msgid "Text search (exact)"
+msgid "Search"
msgstr ""
#, c-format
@@ -8252,9 +8251,3 @@ msgstr "Tür"
msgid "Constants"
msgstr ""
-
-#~ msgid "username for SASL authentication"
-#~ msgstr "SASL kimlik doğrulaması için kullanıcı adı"
-
-#~ msgid "password for SASL authentication"
-#~ msgstr "SASL kimlik doğrulaması için parola"
diff --git a/po/weechat.pot b/po/weechat.pot
index 33d5d6eb8..cd837ae14 100644
--- a/po/weechat.pot
+++ b/po/weechat.pot
@@ -21,7 +21,7 @@ msgid ""
msgstr ""
"Project-Id-Version: WeeChat 0.4.1-dev\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
-"POT-Creation-Date: 2013-08-16 15:18+0200\n"
+"POT-Creation-Date: 2013-08-17 11:49+0200\n"
"PO-Revision-Date: 2013-02-14 18:20+0100\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
@@ -1242,6 +1242,8 @@ msgid ""
" complete_previous: complete word with previous completion\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: stop search\n"
@@ -3125,10 +3127,7 @@ msgid_plural "%sPaste %d lines ? [ctrl-Y] Yes [ctrl-N] No"
msgstr[0] ""
msgstr[1] ""
-msgid "Text search"
-msgstr ""
-
-msgid "Text search (exact)"
+msgid "Search"
msgstr ""
#, c-format
diff --git a/src/core/wee-command.c b/src/core/wee-command.c
index dd2df49d4..f285cd73f 100644
--- a/src/core/wee-command.c
+++ b/src/core/wee-command.c
@@ -2507,6 +2507,10 @@ COMMAND_CALLBACK(input)
gui_input_search_next (buffer);
else if (string_strcasecmp (argv[1], "search_switch_case") == 0)
gui_input_search_switch_case (buffer);
+ else if (string_strcasecmp (argv[1], "search_switch_regex") == 0)
+ gui_input_search_switch_regex (buffer);
+ else if (string_strcasecmp (argv[1], "search_switch_where") == 0)
+ gui_input_search_switch_where (buffer);
else if (string_strcasecmp (argv[1], "search_stop") == 0)
gui_input_search_stop (buffer);
else if (string_strcasecmp (argv[1], "delete_previous_char") == 0)
@@ -6523,6 +6527,8 @@ command_init ()
"completion\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: stop search\n"
diff --git a/src/gui/curses/gui-curses-chat.c b/src/gui/curses/gui-curses-chat.c
index e28dc92a6..b62dc52ff 100644
--- a/src/gui/curses/gui-curses-chat.c
+++ b/src/gui/curses/gui-curses-chat.c
@@ -1201,12 +1201,15 @@ gui_chat_display_line (struct t_gui_window *window, struct t_gui_line *line,
ptr_data = (message_with_tags) ?
message_with_tags : line->data->message;
message_with_search = NULL;
- if (window->buffer->text_search != GUI_TEXT_SEARCH_DISABLED)
+ if ((window->buffer->text_search != GUI_TEXT_SEARCH_DISABLED)
+ && (window->buffer->text_search_where & GUI_TEXT_SEARCH_IN_MESSAGE)
+ && (!window->buffer->text_search_regex
+ || window->buffer->text_search_regex_compiled))
{
message_with_search = gui_color_emphasize (ptr_data,
window->buffer->input_buffer,
window->buffer->text_search_exact,
- NULL);
+ window->buffer->text_search_regex_compiled);
if (message_with_search)
ptr_data = message_with_search;
}
@@ -1321,8 +1324,7 @@ gui_chat_display_line (struct t_gui_window *window, struct t_gui_line *line,
/* display marker if line is matching user search */
if (window->buffer->text_search != GUI_TEXT_SEARCH_DISABLED)
{
- if (gui_line_search_text (line, window->buffer->input_buffer,
- window->buffer->text_search_exact))
+ if (gui_line_search_text (window->buffer, line))
{
gui_window_set_weechat_color (GUI_WINDOW_OBJECTS(window)->win_chat,
GUI_COLOR_CHAT_TEXT_FOUND);
diff --git a/src/gui/curses/gui-curses-key.c b/src/gui/curses/gui-curses-key.c
index 3d632886b..ef0bc7b92 100644
--- a/src/gui/curses/gui-curses-key.c
+++ b/src/gui/curses/gui-curses-key.c
@@ -223,7 +223,9 @@ gui_key_default_bindings (int context)
{
BIND(/* Enter */ "ctrl-M", "/input search_stop");
BIND(/* Enter */ "ctrl-J", "/input search_stop");
- BIND(/* ^R */ "ctrl-R", "/input search_switch_case");
+ BIND(/* m-c */ "meta-c", "/input search_switch_case");
+ BIND(/* ^R */ "ctrl-R", "/input search_switch_regex");
+ BIND(/* tab */ "ctrl-I", "/input search_switch_where");
BIND(/* up */ "meta2-A", "/input search_previous");
BIND(/* down */ "meta2-B", "/input search_next");
}
@@ -433,12 +435,16 @@ gui_key_flush (int paste)
|| (strcmp (input_old, gui_current_window->buffer->input_buffer) != 0)))
{
/*
- * if current input is longer than old input, and that
- * beginning of current input is exactly equal to old input,
- * then do nothing (search will not find any result and can
- * take some time on buffer with many lines..)
+ * if following conditions are all true, then do not search
+ * again (search will not find any result and can take some time
+ * on a buffer with many lines):
+ * - old search was not successful
+ * - searching a string (not a regex)
+ * - current input is longer than old input
+ * - beginning of current input is exactly equal to old input.
*/
if (!gui_current_window->buffer->text_search_found
+ && !gui_current_window->buffer->text_search_regex
&& (input_old != NULL)
&& (input_old[0])
&& (gui_current_window->buffer->input_buffer != NULL)
diff --git a/src/gui/gui-bar-item.c b/src/gui/gui-bar-item.c
index b7a601a84..d12c5a9f1 100644
--- a/src/gui/gui-bar-item.c
+++ b/src/gui/gui-bar-item.c
@@ -700,10 +700,7 @@ char *
gui_bar_item_default_input_search (void *data, struct t_gui_bar_item *item,
struct t_gui_window *window)
{
- char *text_search = N_("Text search");
- char *text_search_exact = N_("Text search (exact)");
- char *ptr_message, *buf;
- int length;
+ char str_search[1024];
/* make C compiler happy */
(void) data;
@@ -715,22 +712,21 @@ gui_bar_item_default_input_search (void *data, struct t_gui_bar_item *item,
if (window->buffer->text_search == GUI_TEXT_SEARCH_DISABLED)
return NULL;
- ptr_message = (window->buffer->text_search_exact) ?
- _(text_search_exact) : _(text_search);
- length = 16 + strlen (ptr_message) + 1;
- buf = malloc (length);
- if (buf)
- {
- snprintf (buf, length, "%s%s",
- (window->buffer->text_search_found
- || !window->buffer->input_buffer
- || !window->buffer->input_buffer[0]) ?
- GUI_COLOR_CUSTOM_BAR_FG :
- gui_color_get_custom (gui_color_get_name (CONFIG_COLOR(config_color_input_text_not_found))),
- ptr_message);
- }
-
- return buf;
+ snprintf (str_search, sizeof (str_search), "%s%s (%s %s,%s%s%s)",
+ (window->buffer->text_search_found
+ || !window->buffer->input_buffer
+ || !window->buffer->input_buffer[0]) ?
+ GUI_COLOR_CUSTOM_BAR_FG :
+ gui_color_get_custom (gui_color_get_name (CONFIG_COLOR(config_color_input_text_not_found))),
+ _("Search"),
+ (window->buffer->text_search_exact) ? "==" : "~",
+ (window->buffer->text_search_regex) ? "regex" : "str",
+ (window->buffer->text_search_where & GUI_TEXT_SEARCH_IN_PREFIX) ? "pre" : "",
+ ((window->buffer->text_search_where & GUI_TEXT_SEARCH_IN_PREFIX)
+ && (window->buffer->text_search_where & GUI_TEXT_SEARCH_IN_MESSAGE)) ? "|" : "",
+ (window->buffer->text_search_where & GUI_TEXT_SEARCH_IN_MESSAGE) ? "msg" : "");
+
+ return strdup (str_search);
}
/*
diff --git a/src/gui/gui-buffer.c b/src/gui/gui-buffer.c
index 5b33a8c58..daa461ac0 100644
--- a/src/gui/gui-buffer.c
+++ b/src/gui/gui-buffer.c
@@ -81,7 +81,8 @@ char *gui_buffer_properties_get_integer[] =
"nicklist_count", "nicklist_groups_count", "nicklist_nicks_count",
"nicklist_visible_count", "input", "input_get_unknown_commands",
"input_size", "input_length", "input_pos", "input_1st_display",
- "num_history", "text_search", "text_search_exact", "text_search_found",
+ "num_history", "text_search", "text_search_exact", "text_search_regex",
+ "text_search_where", "text_search_found",
NULL
};
char *gui_buffer_properties_get_string[] =
@@ -91,7 +92,7 @@ char *gui_buffer_properties_get_string[] =
NULL
};
char *gui_buffer_properties_get_pointer[] =
-{ "plugin", "highlight_regex_compiled",
+{ "plugin", "text_search_regex_compiled", "highlight_regex_compiled",
NULL
};
char *gui_buffer_properties_set[] =
@@ -538,6 +539,9 @@ gui_buffer_new (struct t_weechat_plugin *plugin,
/* text search */
new_buffer->text_search = GUI_TEXT_SEARCH_DISABLED;
new_buffer->text_search_exact = 0;
+ new_buffer->text_search_regex = 0;
+ new_buffer->text_search_regex_compiled = NULL;
+ new_buffer->text_search_where = 0;
new_buffer->text_search_found = 0;
new_buffer->text_search_input = NULL;
@@ -895,6 +899,10 @@ gui_buffer_get_integer (struct t_gui_buffer *buffer, const char *property)
return buffer->text_search;
else if (string_strcasecmp (property, "text_search_exact") == 0)
return buffer->text_search_exact;
+ else if (string_strcasecmp (property, "text_search_regex") == 0)
+ return buffer->text_search_regex;
+ else if (string_strcasecmp (property, "text_search_where") == 0)
+ return buffer->text_search_where;
else if (string_strcasecmp (property, "text_search_found") == 0)
return buffer->text_search_found;
}
@@ -958,6 +966,8 @@ gui_buffer_get_pointer (struct t_gui_buffer *buffer, const char *property)
{
if (string_strcasecmp (property, "plugin") == 0)
return buffer->plugin;
+ else if (string_strcasecmp (property, "text_search_regex_compiled") == 0)
+ return buffer->text_search_regex_compiled;
else if (string_strcasecmp (property, "highlight_regex_compiled") == 0)
return buffer->highlight_regex_compiled;
}
@@ -2244,6 +2254,11 @@ gui_buffer_close (struct t_gui_buffer *buffer)
free (buffer->input_undo_snap);
if (buffer->text_search_input)
free (buffer->text_search_input);
+ if (buffer->text_search_regex_compiled)
+ {
+ regfree (buffer->text_search_regex_compiled);
+ free (buffer->text_search_regex_compiled);
+ }
if (buffer->highlight_words)
free (buffer->highlight_words);
if (buffer->highlight_regex)
@@ -3225,6 +3240,9 @@ gui_buffer_hdata_buffer_cb (void *data, const char *hdata_name)
HDATA_VAR(struct t_gui_buffer, num_history, INTEGER, 0, NULL, NULL);
HDATA_VAR(struct t_gui_buffer, text_search, INTEGER, 0, NULL, NULL);
HDATA_VAR(struct t_gui_buffer, text_search_exact, INTEGER, 0, NULL, NULL);
+ HDATA_VAR(struct t_gui_buffer, text_search_regex, INTEGER, 0, NULL, NULL);
+ HDATA_VAR(struct t_gui_buffer, text_search_regex_compiled, POINTER, 0, NULL, NULL);
+ HDATA_VAR(struct t_gui_buffer, text_search_where, INTEGER, 0, NULL, NULL);
HDATA_VAR(struct t_gui_buffer, text_search_found, INTEGER, 0, NULL, NULL);
HDATA_VAR(struct t_gui_buffer, text_search_input, STRING, 0, NULL, NULL);
HDATA_VAR(struct t_gui_buffer, highlight_words, STRING, 0, NULL, NULL);
@@ -3398,6 +3416,12 @@ gui_buffer_add_to_infolist (struct t_infolist *infolist,
return 0;
if (!infolist_new_var_integer (ptr_item, "text_search_exact", buffer->text_search_exact))
return 0;
+ if (!infolist_new_var_integer (ptr_item, "text_search_regex", buffer->text_search_regex))
+ return 0;
+ if (!infolist_new_var_pointer (ptr_item, "text_search_regex_compiled", buffer->text_search_regex_compiled))
+ return 0;
+ if (!infolist_new_var_integer (ptr_item, "text_search_where", buffer->text_search_where))
+ return 0;
if (!infolist_new_var_integer (ptr_item, "text_search_found", buffer->text_search_found))
return 0;
if (!infolist_new_var_string (ptr_item, "text_search_input", buffer->text_search_input))
@@ -3600,6 +3624,9 @@ gui_buffer_print_log ()
log_printf (" num_history . . . . . . : %d", ptr_buffer->num_history);
log_printf (" text_search . . . . . . : %d", ptr_buffer->text_search);
log_printf (" text_search_exact . . . : %d", ptr_buffer->text_search_exact);
+ log_printf (" text_search_regex . . . : %d", ptr_buffer->text_search_regex);
+ log_printf (" text_search_regex_compiled: 0x%lx", ptr_buffer->text_search_regex_compiled);
+ log_printf (" text_search_where . . . : %d", ptr_buffer->text_search_where);
log_printf (" text_search_found . . . : %d", ptr_buffer->text_search_found);
log_printf (" text_search_input . . . : '%s'", ptr_buffer->text_search_input);
log_printf (" highlight_words . . . . : '%s'", ptr_buffer->highlight_words);
diff --git a/src/gui/gui-buffer.h b/src/gui/gui-buffer.h
index e1704cf9f..f9de9c4b1 100644
--- a/src/gui/gui-buffer.h
+++ b/src/gui/gui-buffer.h
@@ -50,6 +50,9 @@ enum t_gui_buffer_notify
#define GUI_TEXT_SEARCH_BACKWARD 1
#define GUI_TEXT_SEARCH_FORWARD 2
+#define GUI_TEXT_SEARCH_IN_MESSAGE 1
+#define GUI_TEXT_SEARCH_IN_PREFIX 2
+
#define GUI_BUFFER_INPUT_BLOCK_SIZE 256
/* buffer structures */
@@ -158,6 +161,9 @@ struct t_gui_buffer
/* text search */
int text_search; /* text search type */
int text_search_exact; /* exact search (case sensitive) ? */
+ int text_search_regex; /* search with a regex */
+ regex_t *text_search_regex_compiled; /* regex used to search */
+ int text_search_where; /* search where? prefix and/or msg */
int text_search_found; /* 1 if text found, otherwise 0 */
char *text_search_input; /* input saved before text search */
diff --git a/src/gui/gui-color.c b/src/gui/gui-color.c
index d9e4d3e8e..f5f65dcca 100644
--- a/src/gui/gui-color.c
+++ b/src/gui/gui-color.c
@@ -658,6 +658,7 @@ gui_color_emphasize (const char *string,
if (regex)
{
/* search next match using the regex */
+ regex_match.rm_so = -1;
rc = regexec (regex, ptr_no_color, 1, &regex_match, 0);
/*
diff --git a/src/gui/gui-input.c b/src/gui/gui-input.c
index 831482134..a97f485f7 100644
--- a/src/gui/gui-input.c
+++ b/src/gui/gui-input.c
@@ -556,11 +556,47 @@ gui_input_search_text (struct t_gui_buffer *buffer)
}
/*
- * Searches backward in buffer (default key: up during search).
+ * Compiles regex used to search text in buffer.
*/
void
-gui_input_search_previous (struct t_gui_buffer *buffer)
+gui_input_search_compile_regex (struct t_gui_buffer *buffer)
+{
+ int flags;
+
+ /* remove the compiled regex */
+ if (buffer->text_search_regex_compiled)
+ {
+ regfree (buffer->text_search_regex_compiled);
+ free (buffer->text_search_regex_compiled);
+ buffer->text_search_regex_compiled = NULL;
+ }
+
+ /* compile regex */
+ if (buffer->text_search_regex)
+ {
+ buffer->text_search_regex_compiled = malloc (sizeof (*buffer->text_search_regex_compiled));
+ if (buffer->text_search_regex_compiled)
+ {
+ flags = REG_EXTENDED;
+ if (!buffer->text_search_exact)
+ flags |= REG_ICASE;
+ if (string_regcomp (buffer->text_search_regex_compiled,
+ buffer->input_buffer, flags) != 0)
+ {
+ free (buffer->text_search_regex_compiled);
+ buffer->text_search_regex_compiled = NULL;
+ }
+ }
+ }
+}
+
+/*
+ * Switches case for search in buffer (default key: meta-c during search).
+ */
+
+void
+gui_input_search_switch_case (struct t_gui_buffer *buffer)
{
struct t_gui_window *window;
@@ -568,17 +604,19 @@ gui_input_search_previous (struct t_gui_buffer *buffer)
if (window && (window->buffer->type == GUI_BUFFER_TYPE_FORMATTED)
&& (window->buffer->text_search != GUI_TEXT_SEARCH_DISABLED))
{
- window->buffer->text_search = GUI_TEXT_SEARCH_BACKWARD;
- (void) gui_window_search_text (window);
+ window->buffer->text_search_exact ^= 1;
+ gui_window_search_restart (window);
+ gui_input_search_signal (buffer);
}
}
/*
- * Searches forward in buffer (default key: down during search).
+ * Switches string/regex for search in buffer (default key: ctrl-R during
+ * search).
*/
void
-gui_input_search_next (struct t_gui_buffer *buffer)
+gui_input_search_switch_regex (struct t_gui_buffer *buffer)
{
struct t_gui_window *window;
@@ -586,17 +624,18 @@ gui_input_search_next (struct t_gui_buffer *buffer)
if (window && (window->buffer->type == GUI_BUFFER_TYPE_FORMATTED)
&& (window->buffer->text_search != GUI_TEXT_SEARCH_DISABLED))
{
- window->buffer->text_search = GUI_TEXT_SEARCH_FORWARD;
- (void) gui_window_search_text (window);
+ window->buffer->text_search_regex ^= 1;
+ gui_window_search_restart (window);
+ gui_input_search_signal (buffer);
}
}
/*
- * Switches case for search in buffer (default key: ctrl-R during search).
+ * Switches search in messages/prefixes (default key: tab during search).
*/
void
-gui_input_search_switch_case (struct t_gui_buffer *buffer)
+gui_input_search_switch_where (struct t_gui_buffer *buffer)
{
struct t_gui_window *window;
@@ -604,13 +643,54 @@ gui_input_search_switch_case (struct t_gui_buffer *buffer)
if (window && (window->buffer->type == GUI_BUFFER_TYPE_FORMATTED)
&& (window->buffer->text_search != GUI_TEXT_SEARCH_DISABLED))
{
- window->buffer->text_search_exact ^= 1;
+ if (window->buffer->text_search_where == GUI_TEXT_SEARCH_IN_MESSAGE)
+ window->buffer->text_search_where = GUI_TEXT_SEARCH_IN_PREFIX;
+ else if (window->buffer->text_search_where == GUI_TEXT_SEARCH_IN_PREFIX)
+ window->buffer->text_search_where = GUI_TEXT_SEARCH_IN_MESSAGE | GUI_TEXT_SEARCH_IN_PREFIX;
+ else
+ window->buffer->text_search_where = GUI_TEXT_SEARCH_IN_MESSAGE;
gui_window_search_restart (window);
gui_input_search_signal (buffer);
}
}
/*
+ * Searches backward in buffer (default key: up during search).
+ */
+
+void
+gui_input_search_previous (struct t_gui_buffer *buffer)
+{
+ struct t_gui_window *window;
+
+ window = gui_window_search_with_buffer (buffer);
+ if (window && (window->buffer->type == GUI_BUFFER_TYPE_FORMATTED)
+ && (window->buffer->text_search != GUI_TEXT_SEARCH_DISABLED))
+ {
+ window->buffer->text_search = GUI_TEXT_SEARCH_BACKWARD;
+ (void) gui_window_search_text (window);
+ }
+}
+
+/*
+ * Searches forward in buffer (default key: down during search).
+ */
+
+void
+gui_input_search_next (struct t_gui_buffer *buffer)
+{
+ struct t_gui_window *window;
+
+ window = gui_window_search_with_buffer (buffer);
+ if (window && (window->buffer->type == GUI_BUFFER_TYPE_FORMATTED)
+ && (window->buffer->text_search != GUI_TEXT_SEARCH_DISABLED))
+ {
+ window->buffer->text_search = GUI_TEXT_SEARCH_FORWARD;
+ (void) gui_window_search_text (window);
+ }
+}
+
+/*
* Stops text search (default key: return during search).
*/
diff --git a/src/gui/gui-input.h b/src/gui/gui-input.h
index 5d93cefcb..77961b6f5 100644
--- a/src/gui/gui-input.h
+++ b/src/gui/gui-input.h
@@ -44,9 +44,12 @@ extern void gui_input_return (struct t_gui_buffer *buffer);
extern void gui_input_complete_next (struct t_gui_buffer *buffer);
extern void gui_input_complete_previous (struct t_gui_buffer *buffer);
extern void gui_input_search_text (struct t_gui_buffer *buffer);
+extern void gui_input_search_compile_regex (struct t_gui_buffer *buffer);
+extern void gui_input_search_switch_case (struct t_gui_buffer *buffer);
+extern void gui_input_search_switch_regex (struct t_gui_buffer *buffer);
+extern void gui_input_search_switch_where (struct t_gui_buffer *buffer);
extern void gui_input_search_previous (struct t_gui_buffer *buffer);
extern void gui_input_search_next (struct t_gui_buffer *buffer);
-extern void gui_input_search_switch_case (struct t_gui_buffer *buffer);
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);
diff --git a/src/gui/gui-line.c b/src/gui/gui-line.c
index a283312e0..92bb6f5ef 100644
--- a/src/gui/gui-line.c
+++ b/src/gui/gui-line.c
@@ -398,37 +398,70 @@ gui_line_get_next_displayed (struct t_gui_line *line)
*/
int
-gui_line_search_text (struct t_gui_line *line, const char *text,
- int case_sensitive)
+gui_line_search_text (struct t_gui_buffer *buffer, struct t_gui_line *line)
{
char *prefix, *message;
int rc;
- if (!line || !line->data->message || !text || !text[0])
+ if (!line || !line->data->message
+ || !buffer->input_buffer || !buffer->input_buffer[0])
+ {
return 0;
+ }
rc = 0;
- if (line->data->prefix)
+ if ((buffer->text_search_where & GUI_TEXT_SEARCH_IN_PREFIX)
+ && line->data->prefix)
{
prefix = gui_color_decode (line->data->prefix, NULL);
if (prefix)
{
- if ((case_sensitive && (strstr (prefix, text)))
- || (!case_sensitive && (string_strcasestr (prefix, text))))
+ if (buffer->text_search_regex)
+ {
+ if (buffer->text_search_regex_compiled)
+ {
+ if (regexec (buffer->text_search_regex_compiled,
+ prefix, 0, NULL, 0) == 0)
+ {
+ rc = 1;
+ }
+ }
+ }
+ else if ((buffer->text_search_exact
+ && (strstr (prefix, buffer->input_buffer)))
+ || (!buffer->text_search_exact
+ && (string_strcasestr (prefix, buffer->input_buffer))))
+ {
rc = 1;
+ }
free (prefix);
}
}
- if (!rc)
+ if (!rc && (buffer->text_search_where & GUI_TEXT_SEARCH_IN_MESSAGE))
{
message = gui_color_decode (line->data->message, NULL);
if (message)
{
- if ((case_sensitive && (strstr (message, text)))
- || (!case_sensitive && (string_strcasestr (message, text))))
+ if (buffer->text_search_regex)
+ {
+ if (buffer->text_search_regex_compiled)
+ {
+ if (regexec (buffer->text_search_regex_compiled,
+ message, 0, NULL, 0) == 0)
+ {
+ rc = 1;
+ }
+ }
+ }
+ else if ((buffer->text_search_exact
+ && (strstr (message, buffer->input_buffer)))
+ || (!buffer->text_search_exact
+ && (string_strcasestr (message, buffer->input_buffer))))
+ {
rc = 1;
+ }
free (message);
}
}
diff --git a/src/gui/gui-line.h b/src/gui/gui-line.h
index 483e53fce..7004b6353 100644
--- a/src/gui/gui-line.h
+++ b/src/gui/gui-line.h
@@ -80,8 +80,8 @@ extern struct t_gui_line *gui_line_get_first_displayed (struct t_gui_buffer *buf
extern struct t_gui_line *gui_line_get_last_displayed (struct t_gui_buffer *buffer);
extern struct t_gui_line *gui_line_get_prev_displayed (struct t_gui_line *line);
extern struct t_gui_line *gui_line_get_next_displayed (struct t_gui_line *line);
-extern int gui_line_search_text (struct t_gui_line *line, const char *text,
- int case_sensitive);
+extern int gui_line_search_text (struct t_gui_buffer *buffer,
+ struct t_gui_line *line);
extern int gui_line_match_regex (struct t_gui_line_data *line_data,
regex_t *regex_prefix,
regex_t *regex_message);
diff --git a/src/gui/gui-window.c b/src/gui/gui-window.c
index 1b4caf8cf..7e1fc4fb4 100644
--- a/src/gui/gui-window.c
+++ b/src/gui/gui-window.c
@@ -1502,9 +1502,7 @@ gui_window_search_text (struct t_gui_window *window)
gui_line_get_last_displayed (window->buffer);
while (ptr_line)
{
- if (gui_line_search_text (ptr_line,
- window->buffer->input_buffer,
- window->buffer->text_search_exact))
+ if (gui_line_search_text (window->buffer, ptr_line))
{
window->scroll->start_line = ptr_line;
window->scroll->start_line_pos = 0;
@@ -1527,9 +1525,7 @@ gui_window_search_text (struct t_gui_window *window)
gui_line_get_first_displayed (window->buffer);
while (ptr_line)
{
- if (gui_line_search_text (ptr_line,
- window->buffer->input_buffer,
- window->buffer->text_search_exact))
+ if (gui_line_search_text (window->buffer, ptr_line))
{
window->scroll->start_line = ptr_line;
window->scroll->start_line_pos = 0;
@@ -1553,8 +1549,10 @@ void
gui_window_search_start (struct t_gui_window *window)
{
window->buffer->text_search = GUI_TEXT_SEARCH_BACKWARD;
- window->buffer->text_search_exact = 0;
+ if (window->buffer->text_search_where == 0)
+ window->buffer->text_search_where = GUI_TEXT_SEARCH_IN_MESSAGE;
window->buffer->text_search_found = 0;
+ gui_input_search_compile_regex (window->buffer);
if (window->buffer->text_search_input)
{
free (window->buffer->text_search_input);
@@ -1577,6 +1575,7 @@ gui_window_search_restart (struct t_gui_window *window)
window->scroll->start_line_pos = 0;
window->buffer->text_search = GUI_TEXT_SEARCH_BACKWARD;
window->buffer->text_search_found = 0;
+ gui_input_search_compile_regex (window->buffer);
if (gui_window_search_text (window))
window->buffer->text_search_found = 1;
else
@@ -1599,6 +1598,12 @@ gui_window_search_stop (struct t_gui_window *window)
{
window->buffer->text_search = GUI_TEXT_SEARCH_DISABLED;
window->buffer->text_search = 0;
+ if (window->buffer->text_search_regex_compiled)
+ {
+ regfree (window->buffer->text_search_regex_compiled);
+ free (window->buffer->text_search_regex_compiled);
+ window->buffer->text_search_regex_compiled = NULL;
+ }
gui_input_delete_line (window->buffer);
if (window->buffer->text_search_input)
{