Мне надоело после окончания поиска файлов, содержащих строки, открывать найденные файлы и повторять поиск (особенно, если поиск в файлах по регэкспу с помощь. плагинов, а поиск в файле настроен не через эти плагины. А также если имеется несколько строк, удовлетворяющих критерию поиска, и надо перейти на конкретную). В результате родился предлагаемый к обсуждению макрос.
Его отличия от поиска по 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: Wed 15 Apr, 2020 13:45
by citRiks
Latest post of the previous page:
buniak_a_h wrote: ↑Wed 15 Apr, 2020 05:35
Вообще-то, эти строки и так Separator = true
По поводу «collapse теперь делать по какому-то нажатию» я не понял. И так делается по Enter на разделителе или по Ctrl← на любой найденной строке
да, странно получается, флаг сепаратора есть, но это явно не сепаратор почему то,
а хоткеи действительно уже есть, да, спасибо
Find & Go - Поиск с предпросмотром и переходом
Posted: Wed 15 Apr, 2020 13:52
by citRiks
buniak_a_h wrote: ↑Wed 15 Apr, 2020 05:35
Это я не понял. Т.е. при поиске смотреть, и если файл открыт в редакторе, то искать не на диске, а в редакторе? Или искать только в редактируемом файле?
ну типа того, да это имелось ввиду
Второй случай - возьмите стандартный поиск, активируйте кнопкой Show All и прикрутить мой же макрос для синхронизации результатов поиска с редактором.
"Show All" нет редкатирования, т.е. если захотеть чего-то скопировать из найденного, то результаты Show All закроются,
а в "FindAndGo" можно сколько угодно копировать и вообще гулять в редкаторе, и он не закроется
Ну в целом можно обойтись конечно, например в поиске из шелла задать конкретное это имя файла
---
на этом пока все, остальное не сказанное и не упомянутое - значит совсем уже не важно
спасибо
Find & Go - Поиск с предпросмотром и переходом
Posted: Wed 15 Apr, 2020 15:27
by buniak_a_h
citRiks, про нумерацию: я для случая, если не вся нужная информация помещается, сделал вызов редактора в модальном режиме: Alt+F4 - и редактор вызывается (ReadOnly), и в историю не записывается. Типа просмотреть токо…
Find & Go - Поиск с предпросмотром и переходом
Posted: Wed 15 Apr, 2020 15:33
by buniak_a_h
citRiks, может, ещё не увидели такой фишки: можно пометить несколько строк (по одной в файле), нажать Enter - и откроются на редактирование все помеченные файлы.
С поиском в открытом файле - если, например, нашёл, что делать? Переключаться на редактор и позиционироваться на найденную строку? А позиция потеряна будет …
Наверно, концепцию продумать надо …
Find & Go - Поиск с предпросмотром и переходом
Posted: Wed 15 Apr, 2020 15:44
by buniak_a_h
По поводу Find All:
Была замечательная идея показывать список найденного в не-модальном диалоге. Единственное, что мешает: клик вне диалога (в данном случае - на редакторе) закрывает диалог. Об этом уже писалось, но видимо слишком сложно сделать, чтоб не закрывался. Кроме того, Always-on-Top диалог был бы тут полезен. Но это хоть обсуждалось, есть надежда…
Кстати, диалог, который выводит плагин FudioPlayer, не закрывается при клике на панели. Как это сделано? (вопрос к случайно забредшим сюда знатокам)
Find & Go - Поиск с предпросмотром и переходом
Posted: Wed 15 Apr, 2020 16:22
by HaRT
buniak_a_h wrote: ↑Wed 15 Apr, 2020 15:44
клик вне диалога (в данном случае - на редакторе) закрывает диалог
Именно закрывает? Например, диалог AudioPlayer в таких условиях не закрывается, а уходит под окно редактора, но всё ещё доступен через список окон по F12.
Find & Go - Поиск с предпросмотром и переходом
Posted: Wed 15 Apr, 2020 16:26
by HaRT
buniak_a_h wrote: ↑Wed 15 Apr, 2020 15:44
Как это сделано? (вопрос к случайно забредшим сюда знатокам)
Я не знаток, но у этого плагина открытый код — можно посмотреть, с какими флагами он создаётся, какие события как обрабатывает и т.п.
Find & Go - Поиск с предпросмотром и переходом
Posted: Wed 15 Apr, 2020 16:32
by buniak_a_h
HaRT wrote: ↑Wed 15 Apr, 2020 16:22
Именно закрывает? Например, диалог AudioPlayer
Ну вот именно закрывает. Про AudioPlayer я написал.
Вы когда-то присылали мне пример немодального диалога (он там секундочки по таймеру считал) - на нём проверил …
Мне кто-то написал, как сделать, чтоб не закрывался. Пришлось ФАР снимать - он вообще никак не закрывался:-)
HaRT wrote: ↑Wed 15 Apr, 2020 16:26
этого плагина открытый код
Спасибо за ссылку.
Find & Go - Поиск с предпросмотром и переходом
Posted: Wed 15 Apr, 2020 17:08
by citRiks
buniak_a_h, HaRT,
Простейший и рабочий пример не-модального диалога:
можно перключаться на панели, редкатор, туда сюда, он продолжает быть.
Но )) когда он наверху, и мы кликнули ЗА пределом этого диалога, то он закрывается совсем
Победить это можно если сделать эту конфигу:
╔══════════════ Dialog settings ══════════════╗
║ [x] History in dialog edit controls ║
║ [ ] Persistent blocks in edit controls ║
║ [x] Del removes blocks in edit controls ║
║ [x] AutoComplete in edit controls ║
║ [ ] Backspace deletes unchanged text ║
║ [ ] Mouse click outside a dialog closes it ║
╟─────────────────────────────────────────────╢
Я считаю впрочем что эта конфига все равно не нужна (в смысле пусть будет, но неотмеченная)
Но с другой стороны, кажется можно еще прикрутить евент МышеКлик,
который нейтрализирует это кликанье если диалог не-модальный
(это я не пробовал, говорю в теории)
Find & Go - Поиск с предпросмотром и переходом
Posted: Wed 15 Apr, 2020 17:14
by citRiks
buniak_a_h wrote: ↑Wed 15 Apr, 2020 15:27
про нумерацию: я для случая, если не вся нужная информация помещается, сделал вызов редактора в модальном режиме: Alt+F4 - и редактор вызывается (ReadOnly), и в историю не записывается. Типа просмотреть токо…
да, но надо заходить в редактор, а весь смысл grep-like utilities это получить некую "суммарность",
или "вид с птичьего полета" не спускаясь на грешную землю
(что не отменяет необходимость возможности и спустится если ио когда надо)
Find & Go - Поиск с предпросмотром и переходом
Posted: Wed 15 Apr, 2020 17:19
by citRiks
buniak_a_h wrote: ↑Wed 15 Apr, 2020 15:33
может, ещё не увидели такой фишки:
можно пометить несколько строк (по одной в файле),
нажать Enter - и откроются на редактирование все помеченные файлы.
это замечательно. проглядел немного, да, но опять же, нужен режим "с птичьего полета",
с нумерацией строк, и наверное с нумерацией резульсатов
С поиском в открытом файле - если, например, нашёл, что делать?
Переключаться на редактор и позиционироваться на найденную строку? А позиция потеряна будет …
ну если юзер сам это сделал, то и пусть позиция будет "потеряна",
может это не потеря, а юзер и хотел туда перейти?
Я если бы искал в существующем файле, и начал кликаьт на резултаты поиска,
то это и значит что ничего я не терял, а наоборот туда мне и надо
Наверно, концепцию продумать надо …
Ну я пока не вижу проблемы с концепцией если честно, давайте думать вместе если видите
Find & Go - Поиск с предпросмотром и переходом
Posted: Wed 15 Apr, 2020 17:31
by buniak_a_h
citRiks wrote: ↑Wed 15 Apr, 2020 17:19
ну если юзер сам это сделал, то и пусть позиция будет "потеряна",
может это не потеря, а юзер и хотел туда перейти?
Наиболее естественное (мне) использование такой фишки - я что-то набираю, забыл как пишется (какие параметры), поискал, найденное отметил, вернулся и скопировал.
Впрочем, пока поиск в отрытом редакторе мне не кажется таким уж актуальным. Для этого у редактора есть вполне удобные средства. Тем более если надо именно перейти.
Find & Go - Поиск с предпросмотром и переходом
Posted: Wed 15 Apr, 2020 17:59
by buniak_a_h
citRiks, я не понял, к чему Вы пример прислали. В моих скриптах я достаточно часто использую немодальные диалоги. Поиск, например. В панельном модуле просмотра таблиц поиск по AltF7 тоже реализован немодальным диалогом. К чему этот пример?
Find & Go - Поиск с предпросмотром и переходом
Posted: Wed 15 Apr, 2020 18:07
by citRiks
Ну я попытался найти ответ к этой незадаче:
buniak_a_h wrote: ↑Wed 15 Apr, 2020 15:44
Была замечательная идея показывать список найденного в не-модальном диалоге. Единственное, что мешает: клик вне диалога (в данном случае - на редакторе) закрывает диалог
Там я ответил как предотвратить закрытие немодального диалога от мыше-клика,
и это же ответ как (я думаю что) делается то же самое в АудиоПлаере
Разве не?
Find & Go - Поиск с предпросмотром и переходом
Posted: Wed 15 Apr, 2020 18:31
by buniak_a_h
В аудиоплейере диалог не закрывается независимо от настройки [ ] Mouse click outside a dialog closes it. Насчёт аудиоплейера - я ещё не смотрел.
Find & Go - Поиск с предпросмотром и переходом
Posted: Wed 15 Apr, 2020 21:10
by citRiks
buniak_a_h wrote: ↑Wed 15 Apr, 2020 18:31
В аудиоплейере диалог не закрывается независимо от настройки
Ну значит остается вариант с нейтрализацией в AudioPlayer мыше-клика, не?