Мне надоело после окончания поиска файлов, содержащих строки, открывать найденные файлы и повторять поиск (особенно, если поиск в файлах по регэкспу с помощь. плагинов, а поиск в файле настроен не через эти плагины. А также если имеется несколько строк, удовлетворяющих критерию поиска, и надо перейти на конкретную). В результате родился предлагаемый к обсуждению макрос.
Его отличия от поиска по CtrlF7:
Образец может быть регэкспом в формате LUA или Perl
В результатах показывается найденная строка (как GREP), а также 3 строки выше и ниже найденной
При переходе на выбранную строку редактор сразу позиционируется на неё.
Можно отметить несколько найденных строк (по одной в каждом файле), и тогда в редакторе будут открыты все отмеченные файлы (также с позиционированием на отмеченных строках)
Из результатов поиска можно удалять "мешающие" строки
Можно сворачивать - разворачивать строки, принадлежащие одному файлу
Окно поиска:
Процесс поиска:
Результат:
Обратите внимание: в результате строки файлов BaseLoad.pas b CHECK2TU.PAS "схлопнуты" (Condensed); несколько строк помечены. Внизу окна выведены 7 строк возле текущей (3 выше и 3 ниже)
Исправлена ошибка, в результате которой языковой файл находился только если язык либо ФАРа, либо помощи был Rus
В полной мере использована возможность указания в BreakKey Action; в результате ушла ошибка, в результате которой после удаления и предпросмотра файла пропадало "схлопывание" подразделов
Исправлен мелкий недочёт: можно было удалить строку-разделитель, а также вызвать редактор для этих строк
Добавлены хоткеи для разворачивания/сворачивания строк одного файла (Ctrl+Left, Ctrl+Right)
Добавлен хоткей для перехода к файлу в панели (Ctrl+G, Ctrl+Shift+G)
Добавлена возможность в настройках указать количество строк, выводимых в оне предпросмотра ДО и ПОСЛЕ найденной строки. Настройка вызывается или при помощи плагина Scripts Browser, либо из запроса на поиск, если выбрать "кодировку по расширению" и вызвать [ Настройка CP в зависимости от расширения ]
Версия 1.0.4
Исправлена ошибка (реакция на недокументированные кнопки)
Реализован переход на файл, если нажата CtrlG на разделителе
Название файлов в разделителе центрируется по окну, а не по самой длинной строке
В заголовок окна предпросмотра добавлено имя файла
Версия 1.0.5
Добавлена возможность поиска не только в папке на диске, но и на панели. Например, на временной панели. Если на панели - каталог, то поиск производится во вложенных каталогах.
При поиске на панели добавлена возможность ограничить поиск отмеченными файлами / папками.
Добавлена возможность поместить найденные файлы на временную панель, а при поиске на временной панели - наоборот, вычеркнуть файлы с временной панели.
Версия 1.0.6
Восстановлена возможность перетаскивания окна результатов поиска мышкой. Версия 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).
[/list] Версия 1.1.3
Восстановлена возможность использования в качестве маски файлов имени группы масок в виде #<<имя_маски>#. Работае только в том случае, если имя группы масок состоит только из букв, цифр и подчёрка.
Версия 1.1.4
В случае, если кодировка файла не соответствует той, что была указана в поисковом запросе (а в случае выбора кодировки All - той, в которой скрипт пытается читать файл) обработка файла в этой кодировке прекращается. Для варианта All происходит переход на следующую кодировку.
Версия 1.1.5
Изменён эвристический алгоритм автоматического распознавания кодировки. В некоторых случаях показывает значительно более устойчивый результат.
Добавлена возможность ограничить поиск образца первыми n строками
Версия 1.1.6
Исправлен английский языковой файл Find_n_GoEng.lng.
Версия 1.1.7
Добавлена настройка скрипта «Показывать результаты поиска в распахнутом окне».
Find & Go - Поиск с предпросмотром и переходом
Posted: Sat 02 Nov, 2019 13:30
by John Doe
Latest post of the previous page:
buniak_a_h wrote: ↑Sat 02 Nov, 2019 12:32
Я не понял, что значит "свои личные предпочтения". Не добавлять же вручную все таблицы и поля, имеющиеся в модулях! Да и куда добавлять?
Дальше модули из этого списка загружаются вашим макросом (с помощью require), и их содержимое используются при подстановке.
Find & Go - Поиск с предпросмотром и переходом
Posted: Sun 10 Nov, 2019 17:27
by buniak_a_h
Выпущена версия 1.0.9.
Реализован поиск файлов не по маске, а по lua-выражению.
Навеян этим диалогом:
Xerox wrote: ↑Fri 01 Nov, 2019 16:03buniak_a_h,
Америка это хорошо, но что делать с переставленными местами, или вообще пропущенными словами?
в остальном - pегексп это хорошо, но синтакс неуклюжий и в результате неюзабельно даже для тех кто знает синтаксис
На данный момент я так ищу:
находит по словам в любом порядке, но тоже неуклюже
Find & Go - Поиск с предпросмотром и переходом
Posted: Mon 11 Nov, 2019 06:03
by citRiks
buniak_a_h wrote: ↑Sun 10 Nov, 2019 17:27
Выпущена версия 1.0.9
Спасибо.
В архиве нет модулей. И для впервые устанавливающих скрипт это может стать неприятной неожиданностью.
Имхо, лучше бы их выкладывать каждый раз.
buniak_a_h wrote: ↑Sun 10 Nov, 2019 17:27
Выпущена версия 1.0.9
Спасибо.
В архиве нет модулей. И для впервые устанавливающих скрипт это может стать неприятной неожиданностью.
Имхо, лучше бы их выкладывать каждый раз.
Да, вроде, перезалил... Заодно исправил работу с условием, записанным в файле. Не стал номер менять, т.к. (а)сайт сначала просто тормозил, а потом вообще остановился и (б) к тому времени архив был скачан всего один раз. Я подумал, что в крайнем случае обратятся, а модули не менялись с прошлой версии. Если уже скачивали, то они есть. Ну как-то так... Лень... Извините.
Find & Go - Поиск с предпросмотром и переходом
Posted: Mon 11 Nov, 2019 07:47
by John Doe
buniak_a_h wrote: ↑Mon 11 Nov, 2019 06:55
Я подумал, что в крайнем случае обратятся, а модули не менялись с прошлой версии
Редко изменяемые модули удобно отдельным архивом приложить. Возможно даже в отдельной теме (если там есть что обсуждать).
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