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

Здесь обсуждается всё, что касается макросов.
Post Reply
buniak_a_h
Posts: 2079
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 129 times
Been thanked: 206 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_3.7z
(27.82 KiB) Downloaded 16 times
Last edited by buniak_a_h on Mon 12 Oct, 2020 22:46, edited 27 times in total.
buniak_a_h
Posts: 2079
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 129 times
Been thanked: 206 times
Contact:

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

Post by buniak_a_h »

Обновлён срипт первом посте. Исправлены некоторые ошибки и неточности.
LAT
Posts: 325
Joined: Thu 21 Jan, 2010 20:00
Has thanked: 19 times
Been thanked: 34 times

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

Post by LAT »

Без

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: 325
Joined: Thu 21 Jan, 2010 20:00
Has thanked: 19 times
Been thanked: 34 times

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

Post by LAT »

И (имхо!):
1. Было бы удобным перемещаться не только по отдельным строкам, но и между файлами (например, по CtrlUp, CtrlDown). Экспанд-коллапс частично решают эту проблему, но вот если посреди, скажем, 20 найденных строк понял, что этот файл - наверняка не тот, нужно или долго жать стрелки, или тянуться к мышу.
2. В окне с результатами поиска найденные строки, строка статуса (с горячими клавишами) и область предпросмотра зрительно немного сливаются. Было бы лучше, если бы фон у предпросмотра отличался (если это возможно).
buniak_a_h
Posts: 2079
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 129 times
Been thanked: 206 times
Contact:

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

Post by buniak_a_h »

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: 2079
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 129 times
Been thanked: 206 times
Contact:

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

Post by buniak_a_h »

Исправлены скрипты в первом сообщении темы.
LAT, Ваши замечания учтены. Если не влом, посмотрите, пож.
LAT
Posts: 325
Joined: Thu 21 Jan, 2010 20:00
Has thanked: 19 times
Been thanked: 34 times

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

Post by LAT »

Спасибо. В таком виде скрипт гораздо симпатичнее :). Чтобы не засорять тему, выслал результаты просмотра в личку.
buniak_a_h
Posts: 2079
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 129 times
Been thanked: 206 times
Contact:

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

Post by buniak_a_h »

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: 325
Joined: Thu 21 Jan, 2010 20:00
Has thanked: 19 times
Been thanked: 34 times

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

Post by LAT »

Спасибо, работает хорошо (по крайней мере, ничего неприятного не заметил).
По опыту использования мне показалось неудобным перемещаться по CtrlUp/Down по разделителям. Чтобы перемещаться по первым строкам файлов, я в BaxUtils.lua строки 470-472 заменил наНо это лично мои предпочтения.
buniak_a_h
Posts: 2079
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 129 times
Been thanked: 206 times
Contact:

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

Post by buniak_a_h »

LAT, да, я думал, что, возможно, стоит позиционироваться не на разделителе, а на первой строке файла. Не знал, как лучше. Ну и как-то самому лениво было над этим думать. Спасибо.
skipik
Posts: 205
Joined: Wed 03 Jun, 2015 15:24
Has thanked: 33 times
Been thanked: 22 times

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

Post by skipik »

buniak_a_h, при запуске фара на новой версии получаю такое:
buniak_a_h
Posts: 2079
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 129 times
Been thanked: 206 times
Contact:

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

Post by buniak_a_h »

skipik wrote: Sun 29 Sep, 2019 16:18 buniak_a_h, при запуске фара на новой версии получаю такое:
Перезалил. Извините, сослался на ещё один мой модуль, который не стал включать в комплект. Добавил функцию BinSearch (двоичный поиск) прямо в поставляемый модуль
citRiks
Posts: 876
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 265 times
Been thanked: 46 times

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

Post by citRiks »

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

Если это просто особенность (фича) данного диалога, то её надо бы отметить в Справке по скрипту.
А кто не поверит в наше миролюбие, / Тот кровью умоется. / И будет такая борьба за мир, / Что камня на камне не останется.
buniak_a_h
Posts: 2079
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 129 times
Been thanked: 206 times
Contact:

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

Post by buniak_a_h »

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

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