Мне надоело после окончания поиска файлов, содержащих строки, открывать найденные файлы и повторять поиск (особенно, если поиск в файлах по регэкспу с помощь. плагинов, а поиск в файле настроен не через эти плагины. А также если имеется несколько строк, удовлетворяющих критерию поиска, и надо перейти на конкретную). В результате родился предлагаемый к обсуждению макрос.
Его отличия от поиска по CtrlF7:
Образец может быть регэкспом в формате LUA или Perl
В результатах показывается найденная строка (как GREP), а также 3 строки выше и ниже найденной
При переходе на выбранную строку редактор сразу позиционируется на неё.
Можно отметить несколько найденных строк (по одной в каждом файле), и тогда в редакторе будут открыты все отмеченные файлы (также с позиционированием на отмеченных строках)
Из результатов поиска можно удалять "мешающие" строки
Можно сворачивать - разворачивать строки, принадлежащие одному файлу
Окно поиска:
Процесс поиска:
Результат:
Обратите внимание: в результате строки файлов 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.0.6
1. Восстановлена возможность перетаскивания окна результатов поиска мышкой. Версия 1.0.7
Сделана возможность при узких экранах переносить элементы диалога на следующую строку
Сделана настройка на предпочтительную область поиска (диск/панель) (забыл отметить в новостях…)
Версия 1.0.8
Исправлена ошибка, проявлявшаяся при запуске макроса без настроек
Версия 1.0.9
Реализован поиск файлов не по маске, а по lua-выражению
Версия 1.0.10
Рефакторинг. Изменён полностью порядок просмотра файлов в разных кодировках. Для этого сначала весь файл читается в память. В результате сильно упрощена работа скрипта, алгоритм стал более понятным и прозрачным
Исправлена ошибка, проявлявшаяся в том, что при выборе кодировки «All» строки в предпросмотре дублировались.
При наличии у файла «Маркера последовательности байтов» (BOM), соответствующего кодировке UTF-8, он имеет наивысший приоритет перед остальными настройками
Версии 1.0.11, 1.0.12
Исправлена ошибка, появившаяся в версии 1.0.7 (пропала кнопка вызова настройки кодовой страницы в зависимости от расширения файла, а также количества строк предпросмотра). Изменения внесены только в языковой файл.
Добавлено расширение табуляций пробелами в строках предпросмотра. Функция взята из сообщения (отдельное спасибо John Doe)
Если активная панель видна, и она - файловая и не плагинновая, то в качестве "стартового" каталога теперь берётся не текущий системный каталог, а каталог, который отображён на панели.
При повторном вызове поиска в одной сессии (при неудаче поиска) стартовый каталог не изменяется.
Версия 1.0.13
Изменён вызов panel.GetPanelInfo в связи с изменившимися требованиями к параметрам
Версия 1.1.1
Нормализованы модули (сгруппированы по тематике). В результате изменены команды загрузки модулей
Добавлена возможность распахивать окно результатов на весь экран. Тулза повешена на кнопку F5
Версия 1.1.2
Добавлена возможность вызова настройки из меню Параметры плагинов (F9 -> Optons -> Plugins).
Добавлен вывод номеров строк (см. замечание от citRiks).
Версия 1.1.3
Восстановлена возможность использования в качестве маски файлов имени группы масок в виде #<<имя_маски>#. Работае только в том случае, если имя группы масок состоит только из букв, цифр и подчёрка.
stefanenko, я в курсе, вариант «All» не доделан, т.к. просто не представлял себе, что это может понадобиться. Видимо, надо доделывать.
Хотя всё равно не очень понимаю, как в таком случае определят кодировку. В Вашем примере - реально (в какой кодировке строка найдена, в тоя и строки показывать). А вот если бы искомая строка - на латинице, то файл найден будет, а вот в какой кодировке предпросмотр показывать, мне уже будет не определить. Может, тупо переключатель сделать, чтоб вручную можно было? Тем более, что я вообще-то заложил только 3 варианта.
Кстати, вариант «Auto» тоже, наверно, не доделан. Я открываю в редакторе в надежде, что он-то уж определит кодировку, но это (а) как-то проктологично и (б) не всегда определяется.
Find & Go - Поиск с предпросмотром и переходом
Posted: Mon 18 Nov, 2019 23:45
by stefanenko
Собственно мне "не нравится" только то что в превью строки дублируются.
Остальные проблемы типа перекодировки не очень важны.
Спасибо.
Find & Go - Поиск с предпросмотром и переходом
Posted: Tue 19 Nov, 2019 01:25
by buniak_a_h
stefanenko, на самом деле если не хватает строк для анализа, то можно в настройке увеличить. Дублирование, есессно, останется, но хотя бы видно будет, что там дальше от найденной строки написано...
Я разберусь, но не прям щас.... Там в цикле по трём кодировкам читается, видно, очистить забыл…
Find & Go - Поиск с предпросмотром и переходом
Posted: Tue 19 Nov, 2019 23:57
by buniak_a_h
stefanenko wrote: ↑Mon 18 Nov, 2019 23:45
Собственно мне "не нравится" только то что в превью строки дублируются.
Версия 1.0.10 - исправлен, вроде. Там алгоритм перекомпонован (порядок анализа перевёрнут), так что сохраните на всякий случай предыдущую версию. Ну и если напоретесь - прошу писать сразенько… (от слова сразу)
Find & Go - Поиск с предпросмотром и переходом
Posted: Fri 29 Nov, 2019 21:26
by LAT
1. При установке радиобаттона "По расш(Ext)" исчезла возможность перейти к окну с настройками (где указывались расширения и количество строк до и после).
2. При выделении строк и нажатии AltShiftP или AltP ничего не происходит. После выхода из скрипта и запуска временной панели, она тоже не содержит данных.
Find & Go - Поиск с предпросмотром и переходом
Posted: Fri 29 Nov, 2019 22:11
by buniak_a_h
LAT wrote: ↑Fri 29 Nov, 2019 21:26
1. При установке радиобаттона "По расш(Ext)" исчезла возможность перейти к окну с настройками (где указывались расширения и количество строк до и после).
Ошибка внесена в версии 1.0.7 … Исправлю. НО! Если срочно, поменяйте в языковом файле SetupExt на Config
LAT wrote: ↑Fri 29 Nov, 2019 21:262. При выделении строк и нажатии AltShiftP или AltP ничего не происходит. После выхода из скрипта и запуска временной панели, она тоже не содержит данных.
Что-то у меня не подтверждается… Файлы, содержащие отмеченные строки, благополучно заносятся (по AltP) или добавляются (по AltShiftP) на временную панель. Как бы отладить? Если я расставлю OutputDebugString-и, Вы сможете отследить (DbgView.exe)?
LAT wrote: ↑Fri 29 Nov, 2019 21:262. При выделении строк и нажатии AltShiftP или AltP ничего не происходит. После выхода из скрипта и запуска временной панели, она тоже не содержит данных.
Что-то у меня не подтверждается…
Нашел, в чем дело. Скрипт не дружит с SmartMenuFilter (viewtopic.php?f=60&t=8463). По крайней мере, после отключения SmartMenuFilter, "Find & Go" работает с временной панелью, как и описано. В принципе, конфликт клавиш я видел сразу, и поменял AltP на CtrlAltP, но, может, не везде. В общем, буду разбираться. Спасибо.
Find & Go - Поиск с предпросмотром и переходом
Posted: Thu 12 Dec, 2019 14:47
by Zyx
Добрый день.
У меня при предпросмотре найденных файлов периодически табуляция показывается в виде спецсимвола (кружок).
Замечено при разных кодировках файлов и использумых кодировок при поиске.
Какую-то зависимость пока не обнаружил.
LuaMacro
C:\FarTest86\Profile\Macros\scripts\CopyFiles.TempPanel.lua:58: attempt to index field 'BAX' (a nil value)
stack traceback:
C:\FarTest86\Profile\Macros\scripts\CopyFiles.TempPanel.lua:58: in main chunk
[C]: in function 'xpcall'
C:\FarTest86\Plugins\LuaMacro\utils.lua:772: in function <C:\FarTest86\Plugins\LuaMacro\utils.lua:749>
[C]: in function 'RecursiveSearch'
C:\FarTest86\Plugins\LuaMacro\utils.lua:841: in function <C:\FarTest86\Plugins\LuaMacro\utils.lua:672>
OK Edit
Find & Go - Поиск с предпросмотром и переходом
Posted: Sun 15 Dec, 2019 11:41
by buniak_a_h
citRiks, да, меня раскритиковали за то, что я свои функции, определённые в модулях, записывал в глобальную таблицу _G.BAX . Я стал убирать, а некоторые старые макросы расчтаны были на это - стали вылетать.
Это - копирование файлов со временной панели с сохранением структуры? Наверно, надо загрузить новую версию … Гляну.
Find & Go - Поиск с предпросмотром и переходом
Posted: Sun 15 Dec, 2019 12:03
by buniak_a_h
citRiks, у меня проблема. Не могу найти скрипта CopyFiles.TempPanel.lua … Видимо, у меня его уже нету. Не могли бы Вы или прислать (в личку), или (если не потерялось) написать, откуда брали?
Find & Go - Поиск с предпросмотром и переходом
Posted: Sun 15 Dec, 2019 12:59
by buniak_a_h
citRiks, возьмите версию 1.5.2 . скрипта CopyFiles.TempPanel.lua
Find & Go - Поиск с предпросмотром и переходом
Posted: Tue 31 Dec, 2019 12:51
by buniak_a_h
Опубликована версия 1.0.13. Исправлен вызов panel.GetPanelInfo в связи с новыми требованиями к параметрам