Find & Go - Поиск с предпросмотром и переходом

Здесь обсуждается всё, что касается макросов.
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Find & Go - Поиск с предпросмотром и переходом

Post by buniak_a_h »

Мне надоело после окончания поиска файлов, содержащих строки, открывать найденные файлы и повторять поиск (особенно, если поиск в файлах по регэкспу с помощь. плагинов, а поиск в файле настроен не через эти плагины. А также если имеется несколько строк, удовлетворяющих критерию поиска, и надо перейти на конкретную). В результате родился предлагаемый к обсуждению макрос.
Его отличия от поиска по CtrlF7:
  1. Образец может быть регэкспом в формате LUA или Perl
  2. В результатах показывается найденная строка (как GREP), а также 3 строки выше и ниже найденной
  3. При переходе на выбранную строку редактор сразу позиционируется на неё.
  4. Можно отметить несколько найденных строк (по одной в каждом файле), и тогда в редакторе будут открыты все отмеченные файлы (также с позиционированием на отмеченных строках)
  5. Из результатов поиска можно удалять "мешающие" строки
  6. Можно сворачивать - разворачивать строки, принадлежащие одному файлу
Окно поиска:
Image
Процесс поиска:
Image
Результат:
Image
Обратите внимание: в результате строки файлов BaseLoad.pas b CHECK2TU.PAS "схлопнуты" (Condensed); несколько строк помечены. Внизу окна выведены 7 строк возле текущей (3 выше и 3 ниже)
Find_n_Go.1_1_7.7z
(31.34 KiB) Downloaded 27 times
Last edited by buniak_a_h on Wed 07 Feb, 2024 18:16, edited 31 times in total.
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Find & Go - Поиск с предпросмотром и переходом

Post by buniak_a_h »

Latest post of the previous page:

aflexus wrote: Sun 14 Mar, 2021 13:22 buniak_a_h, работает отлично, но вопрос в другом - есть ли теперь смысл в опциях выбора кодировки при поиске? Если раньше, при указании в какой кодировке искать, скрипт искал в ней (ну или так казалось по крайней мере), то теперь вне зависимости от установки (All, Auto, UTF-8, OEM, ANSI...) ищет во всех :)
  1. Эти опции пока оставлены "на всякий случай". Планирую убать.
  2. Я попробовал сделать одну строку из кириллицы в кодировке ANSI, а другую - в кодировке OEM. Ну и где-то между ними искомая строка, которая тоже в кириллице. Прога должна была запутаться и применить "старую" логику. Пока не получилось запутать. Получилось только если строки в разных кодировках "слепить" в одну. И ещё включался старый механизм при попытке поиска в вообще не-текстовом файле (*.7z). На такой случай я оставил отладочный вывод (OutputDebugString); если у Вас есть Debug Viewer, то было бы интересно узнать, включается ли "старый механизм). :-)
  3. На самом деле там не совсем "все" кодировки проверяются, а нечто типа адаптивной логики: если хоть на одной строке однозначно установлена кодировка, то остальные строки рассматриваются только в этой кодировке. "Однозначно" - это значит, что (а) не UTF-8; (б) при интерпретации как OEM в результирующей строке появляются "кракозябры", которых нет при интерпретации как в ANSI и наоборот.
    Именно поэтому в файле, состоящем из строк в обеих кодировках результат может зависеть от порядка строк. Но я пока не понимаю, почему у меня всё равно ищет. Просто разбираться неохота ( «работает - вот и не трожь» :-) )
  4. Я думал, что, возможно, тормоза будут неприемлемые - тогда, если юзер точно знает кодировку, это может дать возможность ускорить. Пока, правда, особого замедления не заметил. Так как-то…
aflexus
Posts: 74
Joined: Sat 12 Mar, 2011 16:57
Has thanked: 23 times
Been thanked: 1 time

Find & Go - Поиск с предпросмотром и переходом

Post by aflexus »

buniak_a_h, Debug Viewer. Где его взять?
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Find & Go - Поиск с предпросмотром и переходом

Post by buniak_a_h »

aflexus wrote: Mon 15 Mar, 2021 12:17 buniak_a_h, Debug Viewer. Где его взять?
1. Быстренько погуглил и нашёл:
DebugView - теперь им не пользуюсь, т.к. спрашивает повышенные права.
2. Ещё погуглил DebugViewe++ (тот, чем я сейчас пользуюсь) и получил:
DebugView++
Если будете использовать для отладки моих скриптов, то я всегда ставлю "метку" BAX: <номер строки>. Удобно после установки фильтра. Иначе сыпется очень много мусора (в т.ч. от системных утилит).
aflexus
Posts: 74
Joined: Sat 12 Mar, 2011 16:57
Has thanked: 23 times
Been thanked: 1 time

Find & Go - Поиск с предпросмотром и переходом

Post by aflexus »

buniak_a_h, Странно, но с обоими утилитами у меня ничего в логах не появляется - ни от макроса, ни от других программ. Видимо, я что-то не так делаю. Запускал и под админом, и под обычным пользователем.
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Find & Go - Поиск с предпросмотром и переходом

Post by buniak_a_h »

aflexus, ну, проверить легко: пишете в комстроке lua:win.OutputDebugString('BAX.1:'). Если DebugViewer-ы показывают строку BAX.1:, значит, Вы всё сделали правильно.
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Find & Go - Поиск с предпросмотром и переходом

Post by buniak_a_h »

ustas.murom wrote: Fri 02 Feb, 2024 13:07
buniak_a_h wrote: Fri 02 Feb, 2024 12:31скрипт
С LUA я еще разбирался, попробую. Глядя на окно диалога поиска, для меня нет одного параметра: включить/исключить из поиска список папок/файлов.
  1. Имеется поле исходной папки для поиска. Если надо, могу доделать, чтоб там был список папок через ;. Также могу доделать список исключаемых папок (через |)
  2. Список файлов - есть (маска, аналогичная маске файлов в поиске по Alt+F7).
ustas.murom
Posts: 7
Joined: Wed 18 Oct, 2023 07:40
Has thanked: 6 times

Find & Go - Поиск с предпросмотром и переходом

Post by ustas.murom »

buniak_a_h wrote: Fri 02 Feb, 2024 16:08 могу доделать
Я попробую в данном варианте, а там посмотрим. К сожалению график работы не располагает большим количеством свободного времени, поэтому процесс тестирования может затянуться.

Добавлю для понимания поиска для меня: я ищу на сетевых ресурсах (а там может быть много чего) файлы с определенным содержимом, поэтому важна скорость обработки файлов (за это отвечает алгоритм), а также исключения папок/файлов, что сокращает время поиска.
Last edited by ustas.murom on Sat 03 Feb, 2024 06:24, edited 1 time in total.
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Find & Go - Поиск с предпросмотром и переходом

Post by buniak_a_h »

ustas.murom wrote: Sat 03 Feb, 2024 06:13 Добавлю для понимания поиска для меня
Видимо, Вам будет актуально 2 дополнения:
  1. Флаг типа "искать только одно (2,3) совпадения. Сейчас ищутся все, а для этого читается весь файл. Если искать до первого попадания, то в случае нахождения процесс может резко ускориться. Можно также искать вообще до первого найденного файла.
  2. Ограничить чтение файлов первыми 10-ю (100, 1000-ю) строками. Эффективно ускорит, если знаете, что искомый фрагмент расположен в начале файла.
Как такое?
ustas.murom
Posts: 7
Joined: Wed 18 Oct, 2023 07:40
Has thanked: 6 times

Find & Go - Поиск с предпросмотром и переходом

Post by ustas.murom »

buniak_a_h wrote: Sat 03 Feb, 2024 15:19 Ограничить чтение файлов первыми
Да это существенный параметр, очень.
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Find & Go - Поиск с предпросмотром и переходом

Post by buniak_a_h »

ustas.murom wrote: Mon 05 Feb, 2024 10:04
buniak_a_h wrote: Sat 03 Feb, 2024 15:19 Ограничить чтение файлов первыми
Да это существенный параметр, очень.
Выложена новая версия скрипта (1.1.5). Основное отличие - введена возможность ограничить поиск паттерна первыми n строками
dmitrik
Posts: 124
Joined: Mon 30 Nov, 2009 21:58
Has thanked: 1 time
Been thanked: 4 times

Find & Go - Поиск с предпросмотром и переходом

Post by dmitrik »

buniak_a_h wrote: Tue 06 Feb, 2024 04:05 Выложена новая версия скрипта (1.1.5). Основное отличие - введена возможность ограничить поиск паттерна первыми n строками
При попытке открыть:

Far 3.0.6226.0 x64, Windows 11 Pro.
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Find & Go - Поиск с предпросмотром и переходом

Post by buniak_a_h »

dmitrik, у меня один раз тоже такое случилось. Увы, больше не повторялось. Если Вы не против, я бы с Вами поработал (послал бы скрипт с отладкой в личку).
Last edited by buniak_a_h on Wed 07 Feb, 2024 08:45, edited 1 time in total.
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Find & Go - Поиск с предпросмотром и переходом

Post by buniak_a_h »

dmitrik wrote: Tue 06 Feb, 2024 23:34 При попытке открыть:

Code: Select all

╔═══════════════════════════════════════════════════════════════════ LuaMacro ═══════════════════════════════════════════════════════════════════╗
║ ...Find_n_Go.lua:284: attempt to index a nil value                                                  ║
╚════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝
В рассылку попал неполный английский языковой файл - не хватает двух строк. Перевыложу.
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Find & Go - Поиск с предпросмотром и переходом

Post by buniak_a_h »

Перевыложил 1.1.6. По сравнению с 1.1.5 - только Find_n_GoEng.lng.
dmitrik
Posts: 124
Joined: Mon 30 Nov, 2009 21:58
Has thanked: 1 time
Been thanked: 4 times

Find & Go - Поиск с предпросмотром и переходом

Post by dmitrik »

buniak_a_h wrote: Wed 07 Feb, 2024 00:52 dmitrik, у меня один раз тоже такое случилось. Увы, больше не повторялось. Если Вы не против, я бы с Вами поработал (послал бы скрипт с отладкой в личку).
Я не против, но, насколько я понимаю, уже неактуально.

И да, в 1.1.6 этой ошибки нет.
dmitrik
Posts: 124
Joined: Mon 30 Nov, 2009 21:58
Has thanked: 1 time
Been thanked: 4 times

Find & Go - Поиск с предпросмотром и переходом

Post by dmitrik »

А у меня другой вопрос. Можно как-то в настройках скрипта указать, чтобы панель с результатами поиска сразу открывалась развернутой? Т.е., чтобы не нужно было F5 нажимать?
Post Reply

Return to “Обсуждение макросов”