Home
mc-dev
mc-dev@conference.jabber.ru
21.10.2010< ^ >

Тема: http://www.midnight-commander.org | Latest stable: 4.7.0.9 | Latest development release: 4.7.4
[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> Ещё предлагаю убрать лишнюю аллокацию:

--- a/lib/search/regex.c
+++ b/lib/search/regex.c
@@ -532,7 +532,7 @@ mc_search__cond_struct_new_init_regex (const char *charset, mc_search_t * lc_mc_

if (!lc_mc_search->is_case_sensitive)
{
- tmp = g_string_new_len (mc_search_cond->str->str, mc_search_cond->str->len);
+ tmp = mc_search_cond->str;
g_string_free (mc_search_cond->str, TRUE);
mc_search_cond->str = mc_search__cond_struct_new_regex_ci_str (charset, tmp->str, tmp->len);
g_string_free (tmp, TRUE);
[11:13:52] <andrew_b> Не, наврал.
[11:14:31] <andrew_b> Вот так:

--- a/lib/search/regex.c
+++ b/lib/search/regex.c
@@ -532,8 +532,7 @@ mc_search__cond_struct_new_init_regex (const char *charset, mc_search_t * lc_mc_

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 зашёл в конференцию
Powered by freQ Powered by Python Valid XHTML 1.0 Transitional Valid CSS!