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:

Я, оказывается, вообще модули в архив не включил. Сейчас перезалью...
Перезалил. Извините... Перепроверьте также и другие модули...
Last edited by buniak_a_h on Fri 01 Nov, 2019 22:03, edited 1 time in total.
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

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

Post by citRiks »

В TmpPanelUtils.lua последняя строка: return TmpPanelUtils,
в TabUtils.lua — return _G.BAX.TabUtils.
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 »

citRiks wrote: Fri 01 Nov, 2019 22:26 В TmpPanelUtils.lua последняя строка: return TmpPanelUtils,
в TabUtils.lua — return _G.BAX.TabUtils.
Да, не везёт мне... Удобно завести глобальную таблицу собственных процедур, но для поставки неудобно...
Наверно, это не мешает.
думаю, _G.BAX. в данном контексте мешать не будет: эту таблицу как раз этот модуль и делает.
А последней строки не было только в GetMsg - я эту функция прямо в _G.BAX записывал.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post by John Doe »

buniak_a_h wrote: Fri 01 Nov, 2019 22:59 Удобно завести глобальную таблицу собственных процедур
Лучше даже не привыкать к такому.
require'BAX' не сложно добавлять и в каждый скрипт.
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 »

John Doe wrote: Sat 02 Nov, 2019 09:09 Лучше даже не привыкать к такому.
require'BAX' не сложно добавлять и в каждый скрипт.
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 »

John Doe, P/S. Особенно это актуально в связи с тем, что есть far, и есть Far - попробуйте запомнить что где!
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post by John Doe »

buniak_a_h wrote: Sat 02 Nov, 2019 09:20 Но этот макрос должен "видеть" таблицу. Т.е. она должна быть глобальной.
Не обязательно.
Макрос можно усовершенствовать.
buniak_a_h wrote: Sat 02 Nov, 2019 09:22 есть far, и есть Far - попробуйте запомнить что где!
Это очевидно, но только если чётко уяснить разницу между LuaFAR и luamacro.
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 »

John Doe wrote: Sat 02 Nov, 2019 11:15 Это очевидно
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 »

John Doe wrote: Sat 02 Nov, 2019 11:15 Макрос можно усовершенствовать.
Ниасилю...
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post by John Doe »

buniak_a_h wrote: Sat 02 Nov, 2019 11:28 Почему есть Panel.SetPath и panel.SetPanelDirectory (по функционалу - одно и то же)?
far - LuaFAR, почти прямая трансляция апи плагинов.
Far - luamacro, исходно же из старого макроязыка.

Исторически происхождение функций разное.
По сути в большинстве случаев следует отдавать предпочтение использованию LuaFAR (таблицы в нижнем регистре).
А luamacro (таблицы с заглавной буквы) сейчас в режиме минимальной поддержки, оставлено для совместимости.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post by John Doe »

buniak_a_h wrote: Sat 02 Nov, 2019 11:29 Ниасилю...
Уверен в обратном.
Минимально изменение такое: в том месте, где макрос проверяет _G[keyword] условие можно дополнить своими личными предпочтениями.
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 »

John Doe wrote: Sat 02 Nov, 2019 11:41 Минимально изменение такое: в том месте, где макрос проверяет _G[keyword] условие можно дополнить своими личными предпочтениями.
Я сильно перемудрил, когда тот писал (не знал ещё про next), но:
1. он намного "умнее", чем просто список полей _G (позволяет составить список на любом уровне, а также ключевые слова языка)
2. даёт возможность регистронезависимого поиска (ну очень полезно!)
3. дает возможность поиска функции по началу имени во всех таблицах
Ну и...
Я не понял, что значит "свои личные предпочтения". Не добавлять же вручную все таблицы и поля, имеющиеся в модулях! Да и куда добавлять? В таблицу, которая видна как из модуля, так и из скрипта, составляющего список? Тогда чем эта таблица отличается от _G.BAX (ну назвал я её так!) А так все мои модули пишут "себя" в _G.BAX и все таблицы из модулей видны маросу, составляющему список. Ну или я не понял Вашей идеи.
Я видел аналогичный макрос тут на форуме, но мой мне нравится намного больше. Я когда-то публиковал свой, но его раскритиковали, я и не сопровождал.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

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

Post by John Doe »

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.
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.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.
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 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.
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 »

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

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