Мне надоело после окончания поиска файлов, содержащих строки, открывать найденные файлы и повторять поиск (особенно, если поиск в файлах по регэкспу с помощь. плагинов, а поиск в файле настроен не через эти плагины. А также если имеется несколько строк, удовлетворяющих критерию поиска, и надо перейти на конкретную). В результате родился предлагаемый к обсуждению макрос.
Его отличия от поиска по 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 30 Oct, 2019 23:13
by HaRT
buniak_a_h wrote: ↑Wed 30 Oct, 2019 22:58
я на него не смотрю
При определённой настройке системной Панели Задач (Taskbar) там отображается и заголовок окна приложения, поэтому, например, у меня заголовок консоли отчётливо виден (и помогает выбирать правильный экземпляр консоли).
Find & Go - Поиск с предпросмотром и переходом
Posted: Wed 30 Oct, 2019 23:16
by buniak_a_h
Я вспомнил, почему отказался от DI_DOUBLEBOX: там нет возможности вывести текст в подвал. Казалось бы, замечательная идея, реализованная в Menu.Show : если текст состоит из 2-х строк, разделённых \n, то первая - верхний колонтитул, вторая - нижний. Сделать тоже самое в рамке не догадались? Жаль… Я думал, одинаковые элементы рисуются одной процедурой...
Find & Go - Поиск с предпросмотром и переходом
Posted: Wed 30 Oct, 2019 23:19
by HaRT
buniak_a_h wrote: ↑Wed 30 Oct, 2019 23:16
нет возможности вывести текст в подвал
Зато можно разместить текстовую метку поверх рамки.
Find & Go - Поиск с предпросмотром и переходом
Posted: Wed 30 Oct, 2019 23:22
by buniak_a_h
HaRT wrote: ↑Wed 30 Oct, 2019 23:13
При определённой настройке системной Панели Задач (Taskbar) там отображается и заголовок окна приложения, поэтому, например, у меня заголовок консоли отчётливо виден (и помогает выбирать правильный экземпляр консоли).
Я в ConEmu работаю.
HaRT wrote: ↑Wed 30 Oct, 2019 23:19
Зато можно разместить текстовую метку поверх рамки.
Да я знаю. И уже знаю (когда делал - не знал) как вывести по центру. Так что теперь, наверно, переделаю. Даже, возможно, сделаю не просто текстовую метку, а возможность размещения кнопок (чтоб можно было кликать). А что, удобно будет.
Find & Go - Поиск с предпросмотром и переходом
Posted: Thu 31 Oct, 2019 04:28
by buniak_a_h
citRiks wrote: ↑Wed 30 Oct, 2019 21:31
Если результирующий диалог "Поиск строки «Dialog» ..." захватить мышкой за любое место рамки его нижней части, то этот диалог в целом можно перемещать по экрану. А если попытаться сделать захват за рамку в верхней части, то нет. При клике мышкой на самой верхней рамке диалога его курсор двигается в верхнюю позицию.
Если это просто особенность (фича) данного диалога, то её надо бы отметить в Справке по скрипту.
Исправил (версия 1.0.6). Теперь таскать можно за рамку.
buniak_a_h wrote: ↑Wed 30 Oct, 2019 23:16
нет возможности вывести текст в подвал
Зато можно разместить текстовую метку поверх рамки.
Это вандализм.
Не-не, речь про DI_DOUBLEBOX! Про DI_LIST я знал и сделал. Я же объяснял, почему именно использовал рамку от DI_LIST-а, а не DI_DOUBLEBOX. Оказалось, что за DI_DOUBLEBOX можно "таскать" диалог, а за рамку от DI_LIST-а - нет! Хотя внешне они выглядят одинаково.
Find & Go - Поиск с предпросмотром и переходом
Posted: Thu 31 Oct, 2019 13:26
by stefanenko
Можно ли сделать сохранение опции "На диске" или "На панели" ?
Мне к примеру никогда не нужно искать по диску.
Или где в скрипте сделать по дефолту "На панели"
Спасибо!
Find & Go - Поиск с предпросмотром и переходом
Posted: Thu 31 Oct, 2019 13:37
by buniak_a_h
stefanenko wrote: ↑Thu 31 Oct, 2019 13:26
Или где в скрипте сделать по дефолту "На панели"
Для краткости:
1. Найдите Name='OnDisk', уберите оттуда Checked=… (строка 169)
2. В следующей строке (Name='OnPanel') в выражении для Checked поставьте "1".
Т.е. эти две строки для Вас будут такие:
На самом деле я давно это сделал, не получил (до вчерашнего дня) ни одного отзыва и решил, что никого не интересует. Поэтому нету ни настройки, ни локализации…
Find & Go - Поиск с предпросмотром и переходом
Posted: Thu 31 Oct, 2019 14:41
by stefanenko
Спасибо. Код немного не тот но я все нашел и исправил.
Раньше использовал в меню
stefanenko wrote: ↑Thu 31 Oct, 2019 14:41
Код немного не тот
Вы меня пугаете… Я не только что писал - из скрипта копировал. Пока байтики на сервер летели - изменились? Ужос!
Find & Go - Поиск с предпросмотром и переходом
Posted: Thu 31 Oct, 2019 23:59
by stefanenko
buniak_a_h wrote: ↑Thu 31 Oct, 2019 17:21
Вы меня пугаете
Все нормально. Я может немного не так выразился.
Кстати пришлось еще чутка поправить т.к. на обычном мониторе некоторые RADIO кнопки за края диалога вылазили.
Find & Go - Поиск с предпросмотром и переходом
Posted: Fri 01 Nov, 2019 07:02
by buniak_a_h
stefanenko wrote: ↑Thu 31 Oct, 2019 13:26
Можно ли сделать сохранение опции "На диске" или "На панели" ?
Мне к примеру никогда не нужно искать по диску.
Или где в скрипте сделать по дефолту "На панели"
Спасибо!
Сделал настройку. Диск/Панель/Авто
Для авто логика такая: если панель - временная, либо на панели есть отмеченные файлы, то изначально устанавливается "На панели"; иначе- "На диске".
При настройке, отличной от "Авто" устанавливается соответствующий выбор.
Переключить можно при инициации поиска.
stefanenko wrote: ↑Thu 31 Oct, 2019 23:59
Кстати пришлось еще чутка поправить т.к. на обычном мониторе некоторые RADIO кнопки за края диалога вылазили.
Специально чтоб больше не требовалось поправлять сделал мелкий сервис: если элемент диалога не помещается п горизонтали, он переносится на следующую строку (либо по центру, либо под верхней строкой); остальные элементы, соответственно, сдвигаются. Прикольно получилось
Find & Go - Поиск с предпросмотром и переходом
Posted: Fri 01 Nov, 2019 07:24
by buniak_a_h
buniak_a_h wrote: ↑Fri 01 Nov, 2019 07:02
Специально чтоб больше не требовалось поправлять сделал мелкий сервис: если элемент диалога не помещается п горизонтали, он переносится на следующую строку