core: add search of regular expression in buffer, don't reset search type on a new search, select where to search (messages/prefixes)

Key changed in search context:
- ctrl+"r": switch search type: string/regex

New keys in search context:
- alt+"c": case (in)sensitive search
- tab: search in messages/prefixes/both
v2.8-utf8proc
Sebastien Helleu 2013-08-17 11:51:50 +02:00
parent c624960336
commit 600ee3ddf3
41 changed files with 497 additions and 366 deletions

View File

@ -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

32
NEWS
View File

@ -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

View File

@ -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) +

View File

@ -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)
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)
Dieser Befehl wird sinnvollerweise mittels Tastenbelegungen oder Erweiterungen genutzt.
This command is used by key bindings or plugins.
........................................
[[command_weechat_key]]

View File

@ -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

View File

@ -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) +

View File

@ -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

View File

@ -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

View File

@ -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) +

View File

@ -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

View File

@ -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

View File

@ -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) +

View File

@ -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

View File

@ -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

View File

@ -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) +

View File

@ -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]]

View File

@ -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

View File

@ -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"

View File

@ -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)-"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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 認証用パスワード"

View File

@ -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"

View File

@ -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"

View File

@ -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 при связи с сервером"

View File

@ -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"

View File

@ -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

View File

@ -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"

View File

@ -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);

View File

@ -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)

View File

@ -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);
}
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 buf;
return strdup (str_search);
}
/*

View File

@ -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);

View File

@ -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 */

View File

@ -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);
/*

View File

@ -555,6 +555,105 @@ gui_input_search_text (struct t_gui_buffer *buffer)
}
}
/*
* Compiles regex used to search text in buffer.
*/
void
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;
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_exact ^= 1;
gui_window_search_restart (window);
gui_input_search_signal (buffer);
}
}
/*
* Switches string/regex for search in buffer (default key: ctrl-R during
* search).
*/
void
gui_input_search_switch_regex (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_regex ^= 1;
gui_window_search_restart (window);
gui_input_search_signal (buffer);
}
}
/*
* Switches search in messages/prefixes (default key: tab during search).
*/
void
gui_input_search_switch_where (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))
{
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).
*/
@ -591,25 +690,6 @@ gui_input_search_next (struct t_gui_buffer *buffer)
}
}
/*
* Switches case for search in buffer (default key: ctrl-R during search).
*/
void
gui_input_search_switch_case (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_exact ^= 1;
gui_window_search_restart (window);
gui_input_search_signal (buffer);
}
}
/*
* Stops text search (default key: return during search).
*/

View File

@ -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);

View File

@ -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);
}
}

View File

@ -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);

View File

@ -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)
{