diff options
41 files changed, 492 insertions, 361 deletions
@@ -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 @@ -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 @@ -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" @@ -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)-" @@ -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" @@ -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" @@ -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" @@ -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" @@ -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 認証用パスワード" @@ -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" @@ -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 при связи с сервером" @@ -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, ®ex_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) { |