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

Здесь обсуждается всё, что касается макросов.
buniak_a_h
Posts: 1441
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 103 times
Been thanked: 118 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 31 times
BaxUtils.lua
Модуль, реализующий Expand all и Collapse all
(53.17 KiB) Downloaded 20 times
Last edited by buniak_a_h on Sat 04 Jan, 2020 04:48, edited 22 times in total.

citRiks
Posts: 260
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 90 times
Been thanked: 26 times

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

Post by citRiks »

Latest post of the previous page:

buniak_a_h,

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

buniak_a_h
Posts: 1441
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 103 times
Been thanked: 118 times
Contact:

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

Post by buniak_a_h »

citRiks, да, меня раскритиковали за то, что я свои функции, определённые в модулях, записывал в глобальную таблицу _G.BAX . Я стал убирать, а некоторые старые макросы расчтаны были на это - стали вылетать.
Это - копирование файлов со временной панели с сохранением структуры? Наверно, надо загрузить новую версию … Гляну.

buniak_a_h
Posts: 1441
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 103 times
Been thanked: 118 times
Contact:

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

Post by buniak_a_h »

citRiks, у меня проблема. Не могу найти скрипта CopyFiles.TempPanel.lua … Видимо, у меня его уже нету. Не могли бы Вы или прислать (в личку), или (если не потерялось) написать, откуда брали?

buniak_a_h
Posts: 1441
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 103 times
Been thanked: 118 times
Contact:

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

Post by buniak_a_h »

citRiks, возьмите версию 1.5.2 . скрипта CopyFiles.TempPanel.lua

buniak_a_h
Posts: 1441
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 103 times
Been thanked: 118 times
Contact:

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

Post by buniak_a_h »

Опубликована версия 1.0.13. Исправлен вызов panel.GetPanelInfo в связи с новыми требованиями к параметрам

DV
Posts: 387
Joined: Mon 07 Aug, 2006 08:23
Has thanked: 14 times
Been thanked: 14 times

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

Post by DV »

Спасибо за макрос! Попробовал, есть несколько пожеланий:
1. Добавить возможность Свернуть Все / Развернуть Все (полезно, когда в окне результатов очень много элементов)
2. Добавить возможность фильтрации (тот же стандартный Ctrl+Alt+F) или поиска в окне результатов (полезно, когда в окне результатов очень много элементов)
3. Что-то у меня макрос не подружился с кириллицей:
Image
Файл "ContextMenu-Rus.txt" имеет кодировку 1251...

buniak_a_h
Posts: 1441
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 103 times
Been thanked: 118 times
Contact:

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

Post by buniak_a_h »

DV wrote:
Fri 03 Jan, 2020 22:59
1. Добавить возможность Свернуть Все / Развернуть Все (полезно, когда в окне результатов очень много элементов)
Сам собирался сделать. Спасибо за (ой!)
DV wrote:
Fri 03 Jan, 2020 22:59
2. Добавить возможность фильтрации (тот же стандартный Ctrl+Alt+F) или поиска в окне результатов (полезно, когда в окне результатов очень много элементов)
Фильтр, вроде, работает (тока-што попробовал), и как раз CtrlAltF. Правда, не отображается. Отображается только когда отфильтрованы все строки. Причём оно само, я к этому усилий не прикладывал…
DV wrote:
Fri 03 Jan, 2020 22:59
3. Что-то у меня макрос не подружился с кириллицей:
В форме инициализации поиска есть радио-бутоны - переключение кодировки. Отсюда вопросы:
1. Какая кодировка была выбрана радиобутонами при начале поиска?
2. В какой кодировке файл Docs\ContextMenu-Rus.txt (ну, тот что неправильно кириллицу отобразил?
Небольшое замечание. Там есть вариант Auto- так вот он не отлажен до конца. Более того, я его даже не пробовал - написал чисто теоретически. Тупо открываю в редакторе, нём же делаю поиск. В надежде, что редактор-то уж определит кодировку правильно. У меня самого настроены кодировки в зависимости от расширения, как правило это спасает. Правда, в некоторых lua-скриптах, поставляемых с некоторыми плагинами, применена ASCII-кодировка. Ну... Что тут поделать …
Первое замечание
Второе замечание -

DV
Posts: 387
Joined: Mon 07 Aug, 2006 08:23
Has thanked: 14 times
Been thanked: 14 times

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

Post by DV »

buniak_a_h wrote:
Fri 03 Jan, 2020 23:34
Фильтр, вроде, работает (тока-што попробовал), и как раз CtrlAltF. Правда, не отображается
Точно! Я увидел, что фильтр не отображается - и подумал, что он не работает. Визуализация не помешала бы :)
buniak_a_h wrote:
Fri 03 Jan, 2020 23:34
1. Какая кодировка была выбрана радиобутонами при начале поиска?
2. В какой кодировке файл Docs\ContextMenu-Rus.txt
Была выбрана та, что по умолчанию - Все(All). Это с ней так.
Что интересно, с Авто(Auto) отображает нормально (правильно).
Кодировка файла - стандартная Windows-1251. Я потому и удивился.
Last edited by DV on Fri 03 Jan, 2020 23:49, edited 1 time in total.

buniak_a_h
Posts: 1441
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 103 times
Been thanked: 118 times
Contact:

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

Post by buniak_a_h »

DV wrote:
Fri 03 Jan, 2020 23:48
Была выбрана та, что по умолчанию - Все(All). Это с ней так.
Что интересно, с Авто(Auto) отображает нормально (правильно).
Кодировка файла - стандартная Windows-1251. Я потому и удивился.
Я, возможно, неправильно сформулировал. [ All ] означает поиск во всех трёх кодировках. Как только найденный образец будет найден, результаты будут сформированы. При этом если поиск не зависит от кодировки (как у Вас - ищется строка на латинице, соответственно, она найдена независимо от кодировки), то могут быть глюки. Я не знаю, как определить кодировку. Единственное, что пришло в голову - это анализировать первые 3 байта на BOM для UTF-8. Открывать каждый раз редактор - получается, вроде, накладно. Принимаются любые идеи. Возможно, имеет смысл уже в результате сделать переключение кодировки вручную. Но я пока не готов. Как определяет кодировку сам ФАР - я не знаю (да он зачастую ошибается). Может, есть какой системный вызов? Если кто ответит - сделаю.

buniak_a_h
Posts: 1441
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 103 times
Been thanked: 118 times
Contact:

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

Post by buniak_a_h »

DV wrote:
Fri 03 Jan, 2020 22:59
1. Добавить возможность Свернуть Все / Развернуть Все (полезно, когда в окне результатов очень много элементов)
Реализовано (заменой модуля BaxUtils). Можно просто заменить. Номер версии модуля пока не менял. Если соберусь делать "нормальную" библиотеку своих модулей - актуализирую номер версии.
Функции Expand all и Collapse all "повешены" на CtrlShiftLeft / CtrlShiftRight (аналогично Expand / Collapse с добавлением Shift).

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

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

Post by John Doe »

На скриншоте выше видно что правая рамка не на месте, и что вы по какой-то причине не хотите использовать сепараторы.

buniak_a_h
Posts: 1441
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 103 times
Been thanked: 118 times
Contact:

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

Post by buniak_a_h »

John Doe wrote:
Sat 04 Jan, 2020 10:29
На скриншоте выше видно что правая рамка не на месте, и что вы по какой-то причине не хотите использовать сепараторы.
Правую рамку я уже (у себя) исправил. Про сепараторы не понял. Изначально список и "подвал" разделялись сепаратором (DI_TEXT с флагом DIF_SEPARATOR), но потом я изменил цвет "подвала" и внёс его в рамку.
Если сообщение "родилось" по причине не-визуализации фильтра, то, как выяснилось, я его (фильтр) вывожу в первую строку, и DI_LIST также с первоё строки вывожу. В результате фильтр "затирается". Сейчас я переделываю работу с фильтрацией.

Post Reply

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