Page 2 of 14

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

Posted: Sun 25 Aug, 2019 17:16
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 ниже)
Find_n_Go.1_1_7.7z
(31.34 KiB) Downloaded 29 times

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

Posted: Wed 30 Oct, 2019 22:55
by HaRT

Latest post of the previous page:

buniak_a_h wrote: Wed 30 Oct, 2019 22:52 в диалоге DI_DOUBLEBOX нету (сэкономил)
А что же тогда с заголовком консоли?

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

Posted: Wed 30 Oct, 2019 22:58
by buniak_a_h
Я тогда про заголовок консоли ещё не знал. Вы мне позже про него написали. А так-то я на него не смотрю.

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). Теперь таскать можно за рамку.

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

Posted: Thu 31 Oct, 2019 11:10
by John Doe
HaRT wrote: Wed 30 Oct, 2019 23:19
buniak_a_h wrote: Wed 30 Oct, 2019 23:16 нет возможности вывести текст в подвал
Зато можно разместить текстовую метку поверх рамки.
Это вандализм.
https://api.farmanager.com/ru/dialogapi ... itles.html

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

Posted: Thu 31 Oct, 2019 11:21
by buniak_a_h
John Doe wrote: Thu 31 Oct, 2019 11:10
HaRT wrote: Wed 30 Oct, 2019 23:19
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".
Т.е. эти две строки для Вас будут такие:

Code: Select all

  Add{"DI_RADIOBUTTON"; y1=y; Text=GetMsg"OnDisk"; Flags="DIF_CENTERGROUP|DIF_GROUP"; Name='OnDisk'; }
  Add{"DI_RADIOBUTTON"; y1=y; Text=GetMsg"OnPanel"; Flags="DIF_CENTERGROUP"; Name='OnPanel'; Checked= 1};
На самом деле я давно это сделал, не получил (до вчерашнего дня) ни одного отзыва и решил, что никого не интересует. Поэтому нету ни настройки, ни локализации…

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

Posted: Thu 31 Oct, 2019 14:41
by stefanenko
Спасибо. Код немного не тот но я все нашел и исправил.
Раньше использовал в меню

Code: Select all

edit: < grep "!?Введите строку?!" -i -r -n --context=!?Строк обрамления?0! !?Расширение?*.*!
Сейчас буду применять ваш скрипт.

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

Posted: Thu 31 Oct, 2019 17:21
by buniak_a_h
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 Специально чтоб больше не требовалось поправлять сделал мелкий сервис: если элемент диалога не помещается п горизонтали, он переносится на следующую строку
Несколько картинок:



Ничего не переделывал, всё само получилось!