У плагина LuaFAR Search имеется удобная фишка, почему-то не реализованная в стандартном поиске: при показе ВСЕХ найденных строк при переходе по найденным строкам редактор позиционируется на соответствующей строке. Сделал я небольшой макрос, делающий аналогичную вещь.
Макрос состоит из четырёх обработчиков событий (два для стандартного диалога поиска и два для поиска по плагину RESearch). Первый Event читает параметры поиска, второй поддерживает переход по найденным строкам. Общая функция преобразовывает строку в координаты и реализует позиционирование и раскраску найденного.
Версия 1.2.1:
Сделана более корректно подсветка найденного образца (в версии 1 тупо подсвечивалось 5 символов)
Добавлено оформление скрипта в соответствии с требованиями Scripts Browser-а Версия 1.2.2.
Сделан учёт флага Case Sensitive для поиска по регулярному выражению Версия 1.3.1.
Оптимизация:
Полностью переделано определение номера и содержимого текущей строки с использованием Object.CurPos и Menu.Value (спасибо Xerox - memberlist.php?mode=viewprofile&u=18909)
Поиск элементов диалога по текстовым меткам с использованием функции чтения из языкового файла заменён на константы. Надеюсь, некоторое время не сломается. Поиск оставлен в виде комментариев "на всякий случай".
Как следствие пункта (2) убрано требование к модулю BAX\GetMsg
Версия 1.4.1
Реализовано первоначальное позиционирование на ближайший найденный образец ПОСЛЕ текущей позиции в редакторе
Реализован аналогичный функционал для результатов поиска по плагину RESearch (Regular Expression search).
Версия 1.5.1
Для СТАНДАРТНОГО поиска сделана возможность фильтрации результатов поиска по попаданию в отмеченный блок. Увы, раскраска найденных образцов в списке теряется, как это побороть - пока не знаю. Версия 1.5.2
Сохраняется раскраска видимых строк в списке. Увы, при повторном Ctl+H (восстановлении спрятанных строк) ВСЕ строки становятся "невидимками". Версия 1.5.3
В диалоге поиска текста EditorSearch начиная с некоторой версии ФАРа изменились позиции элементов. В этой версии учтены эти перемены, но без учёта версии ФАРа.
Изменился формат списка найденных строк (разделитель между строкой и позицией изменился с : на │). Изменения отражены в шаблоне поиска/разбора строки списка.
Версия 1.5.4
Исправлен разбор элемента МЕНЮ - списка найденных вхождений. Для ФАРа версии позже 6473 номер строки и номер позиции занимают фиксированные позиции (1-6 и 7-11 соответственно) в элементе списка.
Версия 1.5.5
Опять исправлен разбор элемента в связи с этим:
Kadaner wrote: Wed 07 May, 2025 00:29
Сейчас в строке пункта меню, на номер строки выделяется столько позиций, сколько может понадобиться, учитывая количество строк в файле.
… … …
На номера колонок всегда выделяется 6 позиций
Исхожу из предположения, что реальный номер позиции занимает меньше 6-ти символов; соответственно, между номером строки и номером позиции всегда будет хотя бы один пробел
Версия 1.5.6
Добавлено использование дополнительных данных пункта МЕНЮ пр помощи функции Menu.GetItemExtendedData. Возможность доступна начиная с версии ФАРа 6548.
Версия 1.5.7
Исправлена целая куча ошибок, приводившая к тому, что новый способ определения координат подсветки (тот, что через Menu.GetItemExtendedData) использовался только при отсутствии координат в строке, а параметр Length не использовался вовсе.
Версия 1.5.8
Предотвращен вылет (с крашем ФАРа!) при использовании для поиска плагина RESearch.
Предотвращен такой же вылет при вызове другого диалога из меню результатов поиска.
Предотвращен вылет при вызове другого меню.
Версия 1.5.9
Исправлена мелкая, но значительная ошибка: в чистовую версию попал кусок, сделанный для отладки.
Вышла версия 1.5.6 (с подачиKadaner). Начиная с версии 6548 появилась возможность номер строки и позиции найденного образца вставлять в Extended Data элемента МЕНЮ; т.о. нахождение их в тексте стало излишним. Соответственно, стал ненужным синтаксический разбор строки с целью получения координат найденного образца.
Вышла версия 1.5.7.
Исправлена целая куча ошибок, приводившая к тому, что новый способ определения координат подсветки (тот, что через Menu.GetItemExtendedData) использовался только при отсутствии координат в строке, а параметр Length не использовался вовсе.
Last edited by buniak_a_h on Tue 16 Sep, 2025 19:23, edited 1 time in total.
buniak_a_h wrote: Wed 01 Oct, 2025 13:16
Выпустил версию 1.5.8:
Может быть надо что-то сначала настроить, но "из коробки" этот скрипт у меня не работает. Нет подсветки найденного и нет скроллинга редактора при перемещении по меню.
Аналогичный скрипт из Addons\Macros у меня работает (пробовал эти скрипты по отдельности, не вместе).
Far.x64.3.0.6563.4564.
Last edited by Shmuel on Wed 01 Oct, 2025 19:06, edited 1 time in total.
Уважаемый Shmuel! У Вас есть скрипт, позволяющий методом половинного деления найти версию, на которой нечто перестало работать. Не могли бы Вы найти? Если есть время. На версии 6539 работало точно. По-моему, и на 6550. Увы, не сохранился номер версии, с которой я обновился (Эх! У renewal лога не хватает!!!)P/S. В версии 6558 ещё работает, а в версии 6563 - уже нет. Копаю дальше.
Last edited by buniak_a_h on Thu 02 Oct, 2025 04:22, edited 2 times in total.
buniak_a_h wrote: Thu 02 Oct, 2025 03:56
Не могли бы Вы найти?
6561-6563 - не работает.
6558-6560 - работает, но с образцом поиска \b\w+ подсвечивает правильно только первое слово в строке, а дальше длина подсветки неправильная.