Зависание и последующий вылет при поиске с регулярками по целым словам в редакторе
Зависание и последующий вылет при поиске с регулярками по целым словам в редакторе
Открываем любой файл на редактирование. По F7 подбираем первое слово. Нажимаю Show All. После долгого раздумья Far
Far x86 3.0.6554
Версия макроса 1.5.7
Far x86 3.0.6554
Версия макроса 1.5.7
Last edited by HaRT on Wed 17 Sep, 2025 11:15, edited 1 time in total.
Reason: Добавлена ссылка на исходную Тему
Reason: Добавлена ссылка на исходную Тему
- buniak_a_h
- Posts: 4565
- Joined: Sat 20 Apr, 2013 00:17
- Location: Санкт-Петробад
- Has thanked: 242 times
- Been thanked: 674 times
- Contact:
Синхронизация редактора с результатами поиска (Show All)
У меня тоже ФАР зависал (до улёта я не дожидался). Причём даже на очень маленьких файликах и не обязательно первое слово. Удаление этого макроса и перезагрузка макросов ситуацию не исправляла. После перезапуска ФАРа повторить зацикливание не удалось пока. Есть у меня подозрение, что где-то макрос наткнулся на ошибку ФАРа
Last edited by buniak_a_h on Wed 17 Sep, 2025 02:23, edited 1 time in total.
- buniak_a_h
- Posts: 4565
- Joined: Sat 20 Apr, 2013 00:17
- Location: Санкт-Петробад
- Has thanked: 242 times
- Been thanked: 674 times
- Contact:
Синхронизация редактора с результатами поиска (Show All)
Во! Удалось повторить. Искал образец \w+ Регэкспы включены. Если при этом включить Whole words, то вот и зависает. Видимо всё же Regular expressions несовместим с Whole words. Что, в принципе, понятно.
P/S. Завис возникает независимо от наличия этого скрипта.
P/S. Завис возникает независимо от наличия этого скрипта.
Last edited by buniak_a_h on Wed 17 Sep, 2025 02:32, edited 1 time in total.
-
Yegor
- Posts: 1506
- Joined: Mon 04 Apr, 2005 13:41
- Location: San Ramon, CA / Kharkov, UA
- Has thanked: 52 times
- Been thanked: 94 times
Синхронизация редактора с результатами поиска (Show All)
Нажмите Esc пару раз. Kadaner, не к вам ли с этим?
Мы не можем ждать милостей от Фара, взять их у него — наша задача! (C) Мичурин
- HaRT
- Moderator
- Posts: 11458
- Joined: Tue 30 Aug, 2005 17:21
- Has thanked: 270 times
- Been thanked: 417 times
Синхронизация редактора с результатами поиска (Show All)
… если нажатьbuniak_a_h wrote: Wed 17 Sep, 2025 02:29 Искал образец \w+ Регэкспы включены. Если при этом включить Whole words, то вот и зависает.
[All] — подтверждаю, FAR BSOD: — без плагинов и с настройками по умолчанию.P.S. Если своевременно нажать
Esc и подтвердить отмену, то появится , по которому можно понять, что поиск зацикливается на последнем слове первой задействованной строки.
Last edited by HaRT on Wed 17 Sep, 2025 04:23, edited 1 time in total.
Reason: Добавлен постскриптум
Reason: Добавлен постскриптум
Фар есть инструмент, а не нянька. © 2009 DrKnS
- buniak_a_h
- Posts: 4565
- Joined: Sat 20 Apr, 2013 00:17
- Location: Санкт-Петробад
- Has thanked: 242 times
- Been thanked: 674 times
- Contact:
Синхронизация редактора с результатами поиска (Show All)
Если нажать сразу - всё ок. Если подождать и потом нажать - долго (чем дольше тянули с
Esc, тем дольше) ждём до появления окна результатов, а потом долго ждём при закрытии ФАРа. Очень похоже на утечку памяти…
Last edited by buniak_a_h on Wed 17 Sep, 2025 03:52, edited 1 time in total.
- zg
- zero-gravity
- Posts: 6207
- Joined: Tue 15 Mar, 2005 17:36
- Location: riga
- Been thanked: 206 times
- Contact:
Синхронизация редактора с результатами поиска (Show All)
а на основании чего вы решили, что это утечка памяти?
- buniak_a_h
- Posts: 4565
- Joined: Sat 20 Apr, 2013 00:17
- Location: Санкт-Петробад
- Has thanked: 242 times
- Been thanked: 674 times
- Contact:
Синхронизация редактора с результатами поиска (Show All)
Чем дольше выполняется некий цикл, тем дольше потом длится закрытие ФАРа. Я предположил, что это время требуется на освобождение ранее выделенных ресурсов.
Синхронизация редактора с результатами поиска (Show All)
Спасибо, идею понял. Конкретно, посмотрю позже.zg wrote: Tue 16 Sep, 2025 11:01 на них надо отдельно подписываться с помощью far.SubscribeDialogDrawEvents. вот так, работает:
А которое из них устаревшее? Простите, я всё еще очень плохо ориентируюсь в нюансах Plugin / Lua API. Я сделал это так, как я уже делал это раз или два. Тогда это подписали и смёржили, и выглядело так, что все были довольны. Я думал, что так и надо.zg wrote: Tue 16 Sep, 2025 11:01 что реализовали, то и есть. не очень понятно, зачем развивать устаревшее апи, которое есть только для совместимости и имеет, в том числе, вот такие вот проблемы.
Синхронизация редактора с результатами поиска (Show All)
Да, конечно, нет проблем. Извините, что не смог сразу ответить, я разбираю личную почту только вечерами.
- zg
- zero-gravity
- Posts: 6207
- Joined: Tue 15 Mar, 2005 17:36
- Location: riga
- Been thanked: 206 times
- Contact:
Синхронизация редактора с результатами поиска (Show All)
так если ресурсы освобождаются — это же не утечка, не?buniak_a_h wrote: Wed 17 Sep, 2025 04:26 Чем дольше выполняется некий цикл, тем дольше потом длится закрытие ФАРа. Я предположил, что это время требуется на освобождение ранее выделенных ресурсов.
- zg
- zero-gravity
- Posts: 6207
- Joined: Tue 15 Mar, 2005 17:36
- Location: riga
- Been thanked: 206 times
- Contact:
Синхронизация редактора с результатами поиска (Show All)
как я понял при поиске с регэкспом, если мы что-то нашли, дальше ищем со следующего символа от начала найденного. если поиск с целыми словами, то вот тут начало поиска корректируется до первого символа после текущего слова. но если слово находится в конце строки и после него ничего нет, то позиция поиска снова оказывается на начале этого слова и поиск зацикливается. видно и при обычном поиске shift-f7 остаётся на начале последнего слова в текущей строке.
- buniak_a_h
- Posts: 4565
- Joined: Sat 20 Apr, 2013 00:17
- Location: Санкт-Петробад
- Has thanked: 242 times
- Been thanked: 674 times
- Contact:
Синхронизация редактора с результатами поиска (Show All)
Освобождаются при закрытии процесса, а до тех пор только выделяются (пока есть; потом - крах). Может и не утечка, но бесконечное выделение ресурса - то же самое.
- buniak_a_h
- Posts: 4565
- Joined: Sat 20 Apr, 2013 00:17
- Location: Санкт-Петробад
- Has thanked: 242 times
- Been thanked: 674 times
- Contact:
Синхронизация редактора с результатами поиска (Show All)
С поисками всё стало совсем странно… На версии 5959 поиск образца
Вот результат поиска в версии 6550:
\w+ приводил к поиску слов (т.е. "+" - "жадный" квалификатор; искомый образец заканчивается либо с концом слова. либо с концом строки). Продолжался поиск с символа, следующего за найденным образцом. Вот пример поиска регэкспа \w+ в версии 5959:
Теперь поиск продолжается с символа, следующего за первым символом найденного образца. Как правильнее я не знаю, но старая логика была полезнее.Вот результат поиска в версии 6550:
- buniak_a_h
- Posts: 4565
- Joined: Sat 20 Apr, 2013 00:17
- Location: Санкт-Петробад
- Has thanked: 242 times
- Been thanked: 674 times
- Contact:
Синхронизация редактора с результатами поиска (Show All)
P/S. Это поведение не зависит от настройки editor -> Cursor at the end, что немного странно…