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

Здесь обсуждается всё, что касается макросов.
buniak_a_h
Posts: 1273
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 90 times
Been thanked: 82 times
Contact:

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

Post by buniak_a_h » Sun 25 Aug, 2019 17:16

Мне надоело после окончания поиска файлов, содержащих строки, открывать найденные файлы и повторять поиск (особенно, если поиск в файлах по регэкспу с помощь. плагинов, а поиск в файле настроен не через эти плагины. А также если имеется несколько строк, удовлетворяющих критерию поиска, и надо перейти на конкретную). В результате родился предлагаемый к обсуждению макрос.
Его отличия от поиска по 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 функции:
  • переключение на временную панель;
  • добавление файлов (по списку) на временную панель (возможно, с предварительной очисткой панели);
  • удаление файлов (по списку) из временной панели. Файлы в списке могут быть регэкспами (если они имеют формат /шаблон/параметр
--
Find_n_Go.1_0_12.7z
(32.38 KiB) Downloaded 8 times
Last edited by buniak_a_h on Sat 14 Dec, 2019 17:06, edited 20 times in total.

buniak_a_h
Posts: 1273
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 90 times
Been thanked: 82 times
Contact:

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

Post by buniak_a_h » Mon 26 Aug, 2019 21:51

Обновлён срипт первом посте. Исправлены некоторые ошибки и неточности.

LAT
Posts: 257
Joined: Thu 21 Jan, 2010 20:00
Has thanked: 10 times
Been thanked: 19 times

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

Post by LAT » Mon 16 Sep, 2019 14:40

Без

Code: Select all

require"Bax.GetMsg"
require"Bax.BaxUtils"
падает с ошибкой:

Code: Select all

╔════════════════════════════════════════════════ LuaMacro ════════════════════════════════════════════════╗
║ ...ng\Far Manager\Profile\Macros\scripts\Test\Find_n_Go.lua:33: attempt to call field 'GetMsg' (a nil    ║
║ value)                                                                                                   ║
║ stack traceback:                                                                                         ║
║    ...ng\Far Manager\Profile\Macros\scripts\Test\Find_n_Go.lua:33: in function 'GetMsg'                  ║
║    ...ng\Far Manager\Profile\Macros\scripts\Test\Find_n_Go.lua:43: in main chunk                         ║

LAT
Posts: 257
Joined: Thu 21 Jan, 2010 20:00
Has thanked: 10 times
Been thanked: 19 times

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

Post by LAT » Mon 16 Sep, 2019 15:22

И (имхо!):
1. Было бы удобным перемещаться не только по отдельным строкам, но и между файлами (например, по CtrlUp, CtrlDown). Экспанд-коллапс частично решают эту проблему, но вот если посреди, скажем, 20 найденных строк понял, что этот файл - наверняка не тот, нужно или долго жать стрелки, или тянуться к мышу.
2. В окне с результатами поиска найденные строки, строка статуса (с горячими клавишами) и область предпросмотра зрительно немного сливаются. Было бы лучше, если бы фон у предпросмотра отличался (если это возможно).

buniak_a_h
Posts: 1273
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 90 times
Been thanked: 82 times
Contact:

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

Post by buniak_a_h » Mon 16 Sep, 2019 18:26

LAT wrote:
Mon 16 Sep, 2019 14:40
Без

Code: Select all

require"Bax.GetMsg"
require"Bax.BaxUtils"
падает с ошибкой<...>
Извините, забыл, что у меня эти require-ы в _macroinit.lua ... Спасибо, исправлю.
LAT wrote:
Mon 16 Sep, 2019 15:22
И (имхо!):
1. Было бы удобным перемещаться не только по отдельным строкам, но и между файлами (например, по CtrlUp, CtrlDown). Экспанд-коллапс частично решают эту проблему, но вот если посреди, скажем, 20 найденных строк понял, что этот файл - наверняка не тот, нужно или долго жать стрелки, или тянуться к мышу.
1. Ок, доделаю. Тем более, что сворачивание/разворачивание по Ctrl→ / Ctrl← я уже сделал, так что в моей домашней версии достаточно нажать Ctrl+Left на любой строке, чтобы схлопнуть.
LAT wrote:
Mon 16 Sep, 2019 15:22
2. В окне с результатами поиска найденные строки, строка статуса (с горячими клавишами) и область предпросмотра зрительно немного сливаются. Было бы лучше, если бы фон у предпросмотра отличался (если это возможно).
2. Думаю, раз я раскрашиваю как-то "текущую" строку, то и цвет фона удастся поменять.
Спасибо за замечания, а то я сам то часто пользуюсь, но, т.к. реакции не было, я решил, что зря выложил. Появился интерес... "Спрос рождает предложение" © Маркс&Энгельс :-)

buniak_a_h
Posts: 1273
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 90 times
Been thanked: 82 times
Contact:

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

Post by buniak_a_h » Tue 17 Sep, 2019 04:01

Исправлены скрипты в первом сообщении темы.
LAT, Ваши замечания учтены. Если не влом, посмотрите, пож.

LAT
Posts: 257
Joined: Thu 21 Jan, 2010 20:00
Has thanked: 10 times
Been thanked: 19 times

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

Post by LAT » Tue 17 Sep, 2019 12:06

Спасибо. В таком виде скрипт гораздо симпатичнее :). Чтобы не засорять тему, выслал результаты просмотра в личку.

buniak_a_h
Posts: 1273
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 90 times
Been thanked: 82 times
Contact:

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

Post by buniak_a_h » Tue 17 Sep, 2019 20:27

LAT wrote:
Tue 17 Sep, 2019 12:06
Чтобы не засорять тему, выслал результаты просмотра в личку.
Вроде, учтены все Ваши замечания из ЛС.
Last edited by buniak_a_h on Tue 17 Sep, 2019 20:28, edited 1 time in total.

LAT
Posts: 257
Joined: Thu 21 Jan, 2010 20:00
Has thanked: 10 times
Been thanked: 19 times

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

Post by LAT » Fri 20 Sep, 2019 19:54

Спасибо, работает хорошо (по крайней мере, ничего неприятного не заметил).
По опыту использования мне показалось неудобным перемещаться по CtrlUp/Down по разделителям. Чтобы перемещаться по первым строкам файлов, я в BaxUtils.lua строки 470-472 заменил наНо это лично мои предпочтения.

buniak_a_h
Posts: 1273
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 90 times
Been thanked: 82 times
Contact:

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

Post by buniak_a_h » Fri 20 Sep, 2019 21:49

LAT, да, я думал, что, возможно, стоит позиционироваться не на разделителе, а на первой строке файла. Не знал, как лучше. Ну и как-то самому лениво было над этим думать. Спасибо.


skipik
Posts: 158
Joined: Wed 03 Jun, 2015 15:24
Has thanked: 20 times
Been thanked: 15 times

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

Post by skipik » Sun 29 Sep, 2019 16:18

buniak_a_h, при запуске фара на новой версии получаю такое:

buniak_a_h
Posts: 1273
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 90 times
Been thanked: 82 times
Contact:

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

Post by buniak_a_h » Sun 29 Sep, 2019 17:42

skipik wrote:
Sun 29 Sep, 2019 16:18
buniak_a_h, при запуске фара на новой версии получаю такое:
Перезалил. Извините, сослался на ещё один мой модуль, который не стал включать в комплект. Добавил функцию BinSearch (двоичный поиск) прямо в поставляемый модуль

citRiks
Posts: 105
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 15 times
Been thanked: 12 times

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

Post by citRiks » Wed 30 Oct, 2019 21:31

Если результирующий диалог "Поиск строки «Dialog» ..." захватить мышкой за любое место рамки его нижней части, то этот диалог в целом можно перемещать по экрану. А если попытаться сделать захват за рамку в верхней части, то нет. При клике мышкой на самой верхней рамке диалога его курсор двигается в верхнюю позицию.

Если это просто особенность (фича) данного диалога, то её надо бы отметить в Справке по скрипту.

buniak_a_h
Posts: 1273
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 90 times
Been thanked: 82 times
Contact:

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

Post by buniak_a_h » Wed 30 Oct, 2019 22:52

citRiks wrote:
Wed 30 Oct, 2019 21:31
Если это просто особенность (фича) данного диалога, то её надо бы отметить в Справке по скрипту.
1. Я сам не знал. Это, видимо, - особенность FAR-а. У них я про перемещение в справке ничего не читал… Сам я перемещение диалога, есессно, не занимаюсь.
2. Как показали эксперименты, перетаскивание диалога возможно только за тень (поля) или за свободное от элементов ввода место. В этом диалоге такого нету. Пока… Доделаю, чтоб за рамку таскать можно было (там в диалоге DI_DOUBLEBOX нету (сэкономил), зато есть рамка у DI_LIST. Думаю, дело в этом

User avatar
HaRT
Moderator
Posts: 9170
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 90 times
Been thanked: 177 times

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

Post by HaRT » Wed 30 Oct, 2019 22:55

buniak_a_h wrote:
Wed 30 Oct, 2019 22:52
в диалоге DI_DOUBLEBOX нету (сэкономил)
А что же тогда с заголовком консоли?
Фар есть инструмент, а не нянька. © 2009 DrKnS

Post Reply

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