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

Здесь обсуждается всё, что касается макросов.
buniak_a_h
Posts: 1601
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 109 times
Been thanked: 139 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 ниже)




Попутно в модуле несколько возможно полезных фишек:
1. Заменитель ("расширитель") far.Menu (функция far_Menu)
2. "Прослойка" для удобства создания элементов диалога (функция DialogItem)
3. Функция для проверки флага (TestFarFlag)
Добавлен модуль TmpPanelUtils. В модуле реализованы 3 функции:
  • переключение на временную панель;
  • добавление файлов (по списку) на временную панель (возможно, с предварительной очисткой панели);
  • удаление файлов (по списку) из временной панели. Файлы в списке могут быть регэкспами (если они имеют формат /шаблон/параметр
--

В модуль добавлены кнопкосочетания CtrlShiftLeft и CtrlShiftRight (как расширение CtrlLeft и CtrlRight) - "Свернуть все" и "Распахнуть все". Сам скрипт при этом не изменился. Совместимость с предыдущими версиями гарантируется.
Find_n_Go.1_0_13.7z
(32.46 KiB) Downloaded 32 times
BaxUtils.lua
Модуль, реализующий Expand all и Collapse all
(53.17 KiB) Downloaded 21 times
Last edited by buniak_a_h on Sat 04 Jan, 2020 04:48, edited 22 times in total.

User avatar
John Doe
Бюрократ
Posts: 12722
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 36 times
Been thanked: 279 times

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

Post by John Doe »

Latest post of the previous page:

buniak_a_h wrote:
Sat 02 Nov, 2019 12:32
Я не понял, что значит "свои личные предпочтения". Не добавлять же вручную все таблицы и поля, имеющиеся в модулях! Да и куда добавлять?
Опции в начале скрипта.

Code: Select all

local extra_modules = {'BAX', 'ffi', 'any_other'}
Дальше модули из этого списка загружаются вашим макросом (с помощью require), и их содержимое используются при подстановке.
Last edited by John Doe on Sat 02 Nov, 2019 14:01, edited 1 time in total.

buniak_a_h
Posts: 1601
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 109 times
Been thanked: 139 times
Contact:

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

Post by buniak_a_h »

Выпущена версия 1.0.9.
Реализован поиск файлов не по маске, а по lua-выражению.
Навеян этим диалогом:
Xerox wrote:
Fri 01 Nov, 2019 16:03
buniak_a_h,
Америка это хорошо, но что делать с переставленными местами, или вообще пропущенными словами?
в остальном - pегексп это хорошо, но синтакс неуклюжий и в результате неюзабельно даже для тех кто знает синтаксис
На данный момент я так ищу:

Code: Select all

dir /s/b | find /i "sql" | find /i "linux" | find /i "install"
находит по словам в любом порядке, но тоже неуклюже
Last edited by buniak_a_h on Sun 10 Nov, 2019 17:29, edited 1 time in total.

citRiks
Posts: 458
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 136 times
Been thanked: 41 times

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

Post by citRiks »

buniak_a_h wrote:
Sun 10 Nov, 2019 17:27
Выпущена версия 1.0.9
Спасибо.
В архиве нет модулей. И для впервые устанавливающих скрипт это может стать неприятной неожиданностью.
Имхо, лучше бы их выкладывать каждый раз.
Last edited by citRiks on Mon 11 Nov, 2019 06:04, edited 1 time in total.

buniak_a_h
Posts: 1601
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 109 times
Been thanked: 139 times
Contact:

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

Post by buniak_a_h »

citRiks wrote:
Mon 11 Nov, 2019 06:03
buniak_a_h wrote:
Sun 10 Nov, 2019 17:27
Выпущена версия 1.0.9
Спасибо.
В архиве нет модулей. И для впервые устанавливающих скрипт это может стать неприятной неожиданностью.
Имхо, лучше бы их выкладывать каждый раз.
Да, вроде, перезалил... Заодно исправил работу с условием, записанным в файле. Не стал номер менять, т.к. (а)сайт сначала просто тормозил, а потом вообще остановился и (б) к тому времени архив был скачан всего один раз. Я подумал, что в крайнем случае обратятся, а модули не менялись с прошлой версии. Если уже скачивали, то они есть. Ну как-то так... Лень... Извините.

User avatar
John Doe
Бюрократ
Posts: 12722
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 36 times
Been thanked: 279 times

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

Post by John Doe »

buniak_a_h wrote:
Mon 11 Nov, 2019 06:55
Я подумал, что в крайнем случае обратятся, а модули не менялись с прошлой версии
Редко изменяемые модули удобно отдельным архивом приложить. Возможно даже в отдельной теме (если там есть что обсуждать).

stefanenko
Posts: 125
Joined: Sun 20 Jun, 2010 12:37
Has thanked: 32 times
Been thanked: 4 times

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

Post by stefanenko »

В папке один файл с содержимым

Code: Select all

строка 1
строка 2
строка 3
строка 4  тест
строка 5
строка 6
Делаем поиск, простая строка, кодировка - All
Получаю в предпросмотре непонятное

Code: Select all

╔════════════════ Поиск строки «тест» в *.* ═════
║  - ───────────────────────── 1.1 ──────────────
║  строка 4  тест
║
║
╚═ F4 AltF4 F8(Del) Ins(Пробел) Ctrl Ctrl↕ CtrlG
╔══════════════════════ Предпросмотр 1.1 ════════
║  строка 3
║  ёЄЁюър 3
║  ������ 4  ����
║  строка 4  тест
║  ёЄЁюър 5
║  ёЄЁюър 6
║
╚════════════════════════════════════════════════

buniak_a_h
Posts: 1601
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 109 times
Been thanked: 139 times
Contact:

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

Post by buniak_a_h »

stefanenko, я в курсе, вариант «All» не доделан, т.к. просто не представлял себе, что это может понадобиться. Видимо, надо доделывать.
Хотя всё равно не очень понимаю, как в таком случае определят кодировку. В Вашем примере - реально (в какой кодировке строка найдена, в тоя и строки показывать). А вот если бы искомая строка - на латинице, то файл найден будет, а вот в какой кодировке предпросмотр показывать, мне уже будет не определить. Может, тупо переключатель сделать, чтоб вручную можно было? Тем более, что я вообще-то заложил только 3 варианта.
Кстати, вариант «Auto» тоже, наверно, не доделан. Я открываю в редакторе в надежде, что он-то уж определит кодировку, но это (а) как-то проктологично и (б) не всегда определяется.

stefanenko
Posts: 125
Joined: Sun 20 Jun, 2010 12:37
Has thanked: 32 times
Been thanked: 4 times

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

Post by stefanenko »

Собственно мне "не нравится" только то что в превью строки дублируются.
Остальные проблемы типа перекодировки не очень важны.
Спасибо.

buniak_a_h
Posts: 1601
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 109 times
Been thanked: 139 times
Contact:

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

Post by buniak_a_h »

stefanenko, на самом деле если не хватает строк для анализа, то можно в настройке увеличить. Дублирование, есессно, останется, но хотя бы видно будет, что там дальше от найденной строки написано...
Я разберусь, но не прям щас.... Там в цикле по трём кодировкам читается, видно, очистить забыл…

buniak_a_h
Posts: 1601
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 109 times
Been thanked: 139 times
Contact:

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

Post by buniak_a_h »

stefanenko wrote:
Mon 18 Nov, 2019 23:45
Собственно мне "не нравится" только то что в превью строки дублируются.
Версия 1.0.10 - исправлен, вроде. Там алгоритм перекомпонован (порядок анализа перевёрнут), так что сохраните на всякий случай предыдущую версию. Ну и если напоретесь - прошу писать сразенько… (от слова сразу)

LAT
Posts: 294
Joined: Thu 21 Jan, 2010 20:00
Has thanked: 15 times
Been thanked: 28 times

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

Post by LAT »

1. При установке радиобаттона "По расш(Ext)" исчезла возможность перейти к окну с настройками (где указывались расширения и количество строк до и после).
2. При выделении строк и нажатии AltShiftP или AltP ничего не происходит. После выхода из скрипта и запуска временной панели, она тоже не содержит данных.

buniak_a_h
Posts: 1601
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 109 times
Been thanked: 139 times
Contact:

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

Post by buniak_a_h »

LAT wrote:
Fri 29 Nov, 2019 21:26
1. При установке радиобаттона "По расш(Ext)" исчезла возможность перейти к окну с настройками (где указывались расширения и количество строк до и после).
Ошибка внесена в версии 1.0.7 … Исправлю. НО! Если срочно, поменяйте в языковом файле SetupExt на Config
LAT wrote:
Fri 29 Nov, 2019 21:26
2. При выделении строк и нажатии AltShiftP или AltP ничего не происходит. После выхода из скрипта и запуска временной панели, она тоже не содержит данных.
Что-то у меня не подтверждается… Файлы, содержащие отмеченные строки, благополучно заносятся (по AltP) или добавляются (по AltShiftP) на временную панель. Как бы отладить? Если я расставлю OutputDebugString-и, Вы сможете отследить (DbgView.exe)?

LAT
Posts: 294
Joined: Thu 21 Jan, 2010 20:00
Has thanked: 15 times
Been thanked: 28 times

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

Post by LAT »

buniak_a_h wrote:
Fri 29 Nov, 2019 22:11
LAT wrote:
Fri 29 Nov, 2019 21:26
2. При выделении строк и нажатии AltShiftP или AltP ничего не происходит. После выхода из скрипта и запуска временной панели, она тоже не содержит данных.
Что-то у меня не подтверждается…
Нашел, в чем дело. Скрипт не дружит с SmartMenuFilter (viewtopic.php?f=60&t=8463). По крайней мере, после отключения SmartMenuFilter, "Find & Go" работает с временной панелью, как и описано. В принципе, конфликт клавиш я видел сразу, и поменял AltP на CtrlAltP, но, может, не везде. В общем, буду разбираться. Спасибо.

Zyx
Posts: 39
Joined: Wed 08 Apr, 2009 06:20
Has thanked: 1 time

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

Post by Zyx »

Добрый день.

У меня при предпросмотре найденных файлов периодически табуляция показывается в виде спецсимвола (кружок).
Замечено при разных кодировках файлов и использумых кодировок при поиске.
Какую-то зависимость пока не обнаружил.

buniak_a_h
Posts: 1601
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 109 times
Been thanked: 139 times
Contact:

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

Post by buniak_a_h »

Zyx, спасибо, исправлено в 1.0.12

citRiks
Posts: 458
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 136 times
Been thanked: 41 times

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

Post by citRiks »

buniak_a_h,

После установки обновления, стала вылезать ошибка с другим Вашим скриптом.
Возможно модули недостаточно чётко синхронизированы с макросами?

Post Reply

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