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

Здесь обсуждается всё, что касается макросов.
Post Reply
buniak_a_h
Posts: 914
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 78 times
Been thanked: 28 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.0.2:
1. Исправлена ошибка, в результате которой языковой файл находился только если язык либо ФАРа, либо помощи был Rus
2. В полной мере использована возможность указания в BreakKey Action; в результате ушла ошибка, в результате которой после удаления и предпросмотра файла пропадало "схлопывание" подразделов
3. Исправлен мелкий недочёт: можно было удалить строку-разделитель, а также вызвать редактор для этих строк

Версия 1.0.3:
1. Учтены замечания (ошибка, цвет, хоткеи) см.
2. Добавлены хоткеи для разворачивания/сворачивания строк одного файла (Ctrl+Left, Ctrl+Right)
3. Добавлен хоткей для перехода к файлу в панели (Ctrl+G, Ctrl+Shift+G)
4. Добавлена возможность в настройках указать количество строк, выводимых в оне предпросмотра ДО и ПОСЛЕ найденной строки. Настройка вызывается или при помощи плагина Scripts Browser, либо из запроса на поиск, если выбрать "кодировку по расширению" и вызвать [ Настройка CP в зависимости от расширения ]

Версия 1.0.4
1. Исправлена ошибка (реакция на недокументированные кнопки)
2. Реализован переход на файл, если нажата CtrlG на разделителе
3. Название файлов в разделителе центрируется по окну, а не по самой длинной строке
4. В заголовок окна предпросмотра добавлено имя файла

Версия 1.0.5
1. Добавлена возможность поиска не только в папке на диске, но и на панели. Например, на временной панели. Если на панели - каталог, то поиск производится во вложенных каталогах.
2. При поиске на панели добавлена возможность ограничить поиск отмеченными файлами / папками.
3. Добавлена возможность поместить найденные файлы на временную панель, а при поиске на временной панели - наоборот, вычеркнуть файлы с временной панели.



Попутно в модуле несколько возможно полезных фишек:
1. Заменитель ("расширитель") far.Menu (функция far_Menu)
2. "Прослойка" для удобства создания элементов диалога (функция DialogItem)
3. Функция для проверки флага (TestFarFlag)
Добавлен модуль TmpPanelUtils. В модуле реализованы 3 функции:
  • переключение на временную панель;
  • добавление файлов (по списку) на временную панель (возможно, с предварительной очисткой панели);
  • удаление файлов (по списку) из временной панели. Файлы в списке могут быть регэкспами (если они имеют формат /шаблон/параметр
29.09.2019 19:40
Upd Заменён один из вложенных модулей . Он использовал одну функцию из ещё одного моего модуля, который я не стал включать в комплект. Извините все, кто нарвался...
Find_n_Go.1_0_4.7z
Версия 1.0.4
(24.9 KiB) Downloaded 20 times
Find_n_Go.1_0_5.7z
Версия 1.0.5
(28.1 KiB) Downloaded 14 times
Last edited by buniak_a_h on Sun 29 Sep, 2019 17:37, edited 8 times in total.

buniak_a_h
Posts: 914
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 78 times
Been thanked: 28 times
Contact:

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

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

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

LAT
Posts: 233
Joined: Thu 21 Jan, 2010 20:00
Has thanked: 10 times
Been thanked: 14 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: 233
Joined: Thu 21 Jan, 2010 20:00
Has thanked: 10 times
Been thanked: 14 times

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

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

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

buniak_a_h
Posts: 914
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 78 times
Been thanked: 28 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: 914
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 78 times
Been thanked: 28 times
Contact:

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

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

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

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

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

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

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

buniak_a_h
Posts: 914
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 78 times
Been thanked: 28 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: 233
Joined: Thu 21 Jan, 2010 20:00
Has thanked: 10 times
Been thanked: 14 times

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

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

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

buniak_a_h
Posts: 914
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 78 times
Been thanked: 28 times
Contact:

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

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

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


skipik
Posts: 144
Joined: Wed 03 Jun, 2015 15:24
Has thanked: 17 times
Been thanked: 13 times

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

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

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

buniak_a_h
Posts: 914
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 78 times
Been thanked: 28 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 (двоичный поиск) прямо в поставляемый модуль

Post Reply

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