[00:00:19] BanderOS вышел из конференции [00:00:42] BanderOS зашёл в конференцию [00:05:13] BanderOS вышел из конференции [00:05:29] BanderOS зашёл в конференцию [00:21:16] BanderOS вышел из конференции [05:40:36] iNode зашёл в конференцию [06:02:20] gonzo111 вышел из конференции: я убёг... [09:21:03] andrew_b зашёл в конференцию [10:56:44] <slavazanko> пилять. с поиском по словам какая-то генетическая трабла. Надо подумать. чем заменить... [10:57:10] <andrew_b> Вот я о том же. [10:57:27] <slavazanko> трабла в том, что при не latin-1 оно считает, что нац. буквы - это не участники слов... [10:57:50] <andrew_b> Как ты это узнал? [10:58:22] <slavazanko> http://www.regular-expressions.info/wordboundaries.html [10:58:32] <slavazanko> In all flavors, the characters [a-zA-Z0-9_] are word characters. [11:00:02] <andrew_b> slavazanko: кстати, я нашёл пару багов в поиске. Можешь пока зафиксить их, чтобы не забыть. [11:00:16] <slavazanko> о, говори [11:01:01] <andrew_b> Первый баг.
@@ -478,7 +476,7 @@ mc_search_regex__process_append_str (GString * dest_str, const char *from, gsize char_len = strlen (tmp_str); if (*replace_flags & REPLACE_T_UPP_TRANSFORM_CHAR) { - *replace_flags &= !REPLACE_T_UPP_TRANSFORM_CHAR; + *replace_flags &= ~REPLACE_T_UPP_TRANSFORM_CHAR; tmp_string = mc_search__toupper_case_str (NULL, tmp_str, char_len); g_string_append (dest_str, tmp_string->str); g_string_free (tmp_string, TRUE); @@ -486,7 +484,7 @@ mc_search_regex__process_append_str (GString * dest_str, const char *from, gsize } else if (*replace_flags & REPLACE_T_LOW_TRANSFORM_CHAR) { - *replace_flags &= !REPLACE_T_LOW_TRANSFORM_CHAR; + *replace_flags &= ~REPLACE_T_LOW_TRANSFORM_CHAR; tmp_string = mc_search__toupper_case_str (NULL, tmp_str, char_len); g_string_append (dest_str, tmp_string->str); g_string_free (tmp_string, TRUE); [11:01:34] <andrew_b> Второй баг-не баг, но что-то странное. [11:02:34] <andrew_b> В структуре mc_search_cond_t есть член len. Что это такое? [11:03:01] <slavazanko> шоб я помнил.. кажись. делалось с прицелом на utf-16 [11:03:32] <andrew_b> Вот. Комментарие, как обычно, нет. :) [11:03:37] <slavazanko> угу :) [11:03:37] <andrew_b> Так вот. [11:05:28] andrew_b вышел из конференции: Replaced by new connection [11:05:31] andrew_b зашёл в конференцию [11:06:21] <andrew_b> Если это длина str, то она иногда используется, но нигде не корректируется. Например, в mc_search__cond_struct_new_init_normal(). mc_search_cond->len вышла из mc_search__normal_translate_to_regex(), но после добавления \b в начало и конец не увеличена. [11:06:59] <andrew_b> Где-то ещё есть подобное место. [11:07:06] <andrew_b> Ща найду. [11:08:27] <andrew_b> mc_search__cond_struct_new_init_hex() [11:08:44] <andrew_b> mc_search__cond_struct_new_init_glob() [11:09:04] <slavazanko> ща.. подрефакторю [11:10:26] <andrew_b> Можно, наверное, len из структуры убрать, а вместо неё использовать str->len. [11:10:35] <slavazanko> да [11:13:25] <andrew_b> Ещё предлагаю убрать лишнюю аллокацию:
if (!lc_mc_search->is_case_sensitive) { - tmp = g_string_new_len (mc_search_cond->str->str, mc_search_cond->str->len); - g_string_free (mc_search_cond->str, TRUE); + tmp = mc_search_cond->str; mc_search_cond->str = mc_search__cond_struct_new_regex_ci_str (charset, tmp->str, tmp->len); g_string_free (tmp, TRUE); } [11:14:41] <slavazanko> угу [11:14:47] <andrew_b> Лишнее копирование строки. [11:18:47] <slavazanko> исправил. [11:18:54] <slavazanko> что с поиском по словам бум делать? [11:19:10] <andrew_b> Пока не знаю. [11:19:15] <andrew_b> Надо подумать. [11:21:31] <slavazanko> лана. пока бранч опубликую. 2396_find_whole_words там первый коммит надо будет убрать в клинапный бранч [11:23:59] <andrew_b> В тикете напиши, может, кто подскажет чего-нибудь дельное. [11:46:06] BanderOS зашёл в конференцию [12:15:24] <andrew_b> http://bugs.exim.org/show_bug.cgi?id=865 [12:18:05] <andrew_b> Похоже, единственный путь -- конвертить в юникод. :( [12:41:29] <il.smind > slavazanko: хорошо по словам не ищет понятно буквы не правильные [12:41:30] <il.smind > ок [12:42:04] andrew_b вышел из конференции: Replaced by new connection [12:42:08] <il.smind > но почему не работает \bфыва\b [12:42:09] andrew_b зашёл в конференцию [12:42:34] <andrew_b> По тому же самому. [12:42:49] <il.smind > почемуже? [12:42:54] <slavazanko> потомы что условие 32 < ф < 127 не соблюдается [12:43:00] <slavazanko> и так к каждой букве [12:43:22] <andrew_b> \bыфва\b получается, если ввести фыва и поставить "Целые слова". [12:43:35] <slavazanko> да [12:43:36] <il.smind > почему работает ' фыва ' [12:44:00] <slavazanko> потому что тут ищутся все символы, входящие в запрос [12:44:15] <il.smind > я наверно тупой [12:44:24] <il.smind > не тратьте время [12:44:36] <slavazanko> \b означает граница слова'. она начинается и заканчивается набором символов a-zA-Z0-9_ [12:44:54] BanderOS вышел из конференции [12:44:57] <slavazanko> национальные алфавиты в этот набор не попадают [12:45:01] <il.smind > даже если удастся мне объяснить я всё равно через неделю забуду [12:45:33] <il.smind > я думал \b означает любой пробельный символ [12:45:33] <slavazanko> это не наша генетическая болезнь - это болезнь регекспов [12:45:36] <slavazanko> нет [12:45:42] <slavazanko> \s - пробельный [12:45:52] <il.smind > а как написать любой пробельный символ? [12:45:58] <slavazanko> \s{1} [12:46:05] <slavazanko> или просто \s [12:46:10] <slavazanko> это один [12:46:13] <il.smind > ну ззамени тогда \b на \s [12:46:36] BanderOS зашёл в конференцию [12:46:48] <Зося Синицкая> RSS: Новости для Midnight Commander • Ticket #2399 (Mouse behavior on wide screens) created http://www.midnight-commander.org/ticket/2399 [12:47:00] <slavazanko> и посыпятся вопросы. почему раньше в строке 'test' находило test, а теперь не находит. Имею ввиду, слово test в кавычках [12:47:19] <slavazanko> \b охватывает больше символов. чем просто пробельные [12:47:24] <il.smind > а... [12:47:26] <il.smind > ок [12:47:37] <il.smind > а почему в редакторе находит? [12:47:44] <il.smind > целое слово [12:47:54] <slavazanko> по-руски? у меня не находит [12:48:24] <il.smind > ага я понял [12:48:30] <il.smind > у меня стояло вот так [12:49:14] <il.smind > ( * ) Регулярное выражение [ Х ] Слово целиком [12:49:30] <il.smind > находить то находило но не правильно [12:49:48] <il.smind > оно находило любое слово [12:50:03] <il.smind > и фывапролдж [12:50:14] <il.smind > и фывап [12:50:28] <il.smind > и пфыва [12:50:44] <il.smind > хотя искал фыв [12:50:57] <slavazanko> это уже надо смотреть. [12:51:09] <il.smind > т.е. как бы не учитывается [ Х ] Слово целиком [12:51:13] <slavazanko> но всё равно, лечения не будет. [12:51:15] <il.smind > если ( * ) Регулярное выражение [12:51:20] <slavazanko> угу [12:52:02] andrew_b вышел из конференции: Replaced by new connection [12:52:05] andrew_b зашёл в конференцию [12:53:17] <slavazanko> может, тупо заэмулировать \b? ну там, перечислить символы: [\s.,'"\\\|`~!@#$%^&*()_+=] [12:53:19] <il.smind > ну если \b не работает то наверное можно нарисовать такое рег.выражение которое учтёт \n \s '"`!? [12:53:27] <il.smind > slavazanko: да [12:53:39] <il.smind > я о том же [13:01:41] <slavazanko> ща в grep гляну... [13:07:38] BanderOS вышел из конференции [13:10:36] andrew_b вышел из конференции: Replaced by new connection [13:10:39] andrew_b зашёл в конференцию [14:09:47] andrew_b вышел из конференции: Replaced by new connection [14:09:51] andrew_b зашёл в конференцию [14:18:18] <andrew_b> static char const word_beg[] = "\\(^\\|[^[:alnum:]_]\\)\\("; static char const word_end[] = "\\)\\([^[:alnum:]_]\\|$\\)"; не работает. [14:20:06] <andrew_b> В вот это static char const word_beg[] = "(^|[^[:alnum:]_])("; static char const word_end[] = ")([^[:alnum:]_]|$)"; работает! [14:20:27] <andrew_b> ПРОФИТ? [15:26:02] <il.smind > andrew_b: думаю да [15:46:44] andrew_b вышел из конференции: Replaced by new connection [15:46:48] andrew_b зашёл в конференцию [16:14:00] andrew_b вышел из конференции [17:17:32] ASM зашёл в конференцию [21:07:46] slavazanko/h вышел из конференции [21:09:08] slavazanko/h зашёл в конференцию [23:04:12] slavazanko/h вышел из конференции [23:04:56] slavazanko/h зашёл в конференцию [23:05:13] slavazanko/w зашёл в конференцию [23:07:41] slavazanko/h вышел из конференции [23:08:39] slavazanko/h зашёл в конференцию