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

Здесь обсуждается всё, что касается макросов.
buniak_a_h
Posts: 1924
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 124 times
Been thanked: 183 times
Contact:

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

Post 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_2a.7z
Перезалил с модулями
(27.27 KiB) Downloaded 39 times
Last edited by buniak_a_h on Thu 07 May, 2020 23:55, edited 26 times in total.

buniak_a_h
Posts: 1924
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 124 times
Been thanked: 183 times
Contact:

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

Post by buniak_a_h »

Latest post of the previous page:

citRiks wrote:
Wed 30 Oct, 2019 21:31
Если это просто особенность (фича) данного диалога, то её надо бы отметить в Справке по скрипту.
1. Я сам не знал. Это, видимо, - особенность FAR-а. У них я про перемещение в справке ничего не читал… Сам я перемещение диалога, есессно, не занимаюсь.
2. Как показали эксперименты, перетаскивание диалога возможно только за тень (поля) или за свободное от элементов ввода место. В этом диалоге такого нету. Пока… Доделаю, чтоб за рамку таскать можно было (там в диалоге DI_DOUBLEBOX нету (сэкономил), зато есть рамка у DI_LIST. Думаю, дело в этом

User avatar
HaRT
Moderator
Posts: 9481
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 108 times
Been thanked: 225 times

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

Post by HaRT »

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

buniak_a_h
Posts: 1924
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 124 times
Been thanked: 183 times
Contact:

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

Post by buniak_a_h »

Я тогда про заголовок консоли ещё не знал. Вы мне позже про него написали. А так-то я на него не смотрю.

User avatar
HaRT
Moderator
Posts: 9481
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 108 times
Been thanked: 225 times

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

Post by HaRT »

buniak_a_h wrote:
Wed 30 Oct, 2019 22:58
я на него не смотрю
При определённой настройке системной Панели Задач (Taskbar) там отображается и заголовок окна приложения, поэтому, например, у меня заголовок консоли отчётливо виден (и помогает выбирать правильный экземпляр консоли).
Фар есть инструмент, а не нянька. © 2009 DrKnS

buniak_a_h
Posts: 1924
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 124 times
Been thanked: 183 times
Contact:

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

Post by buniak_a_h »

Я вспомнил, почему отказался от DI_DOUBLEBOX: там нет возможности вывести текст в подвал. Казалось бы, замечательная идея, реализованная в Menu.Show : если текст состоит из 2-х строк, разделённых \n, то первая - верхний колонтитул, вторая - нижний. Сделать тоже самое в рамке не догадались? Жаль… Я думал, одинаковые элементы рисуются одной процедурой...

User avatar
HaRT
Moderator
Posts: 9481
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 108 times
Been thanked: 225 times

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

Post by HaRT »

buniak_a_h wrote:
Wed 30 Oct, 2019 23:16
нет возможности вывести текст в подвал
Зато можно разместить текстовую метку поверх рамки.
Фар есть инструмент, а не нянька. © 2009 DrKnS

buniak_a_h
Posts: 1924
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 124 times
Been thanked: 183 times
Contact:

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

Post by buniak_a_h »

HaRT wrote:
Wed 30 Oct, 2019 23:13
При определённой настройке системной Панели Задач (Taskbar) там отображается и заголовок окна приложения, поэтому, например, у меня заголовок консоли отчётливо виден (и помогает выбирать правильный экземпляр консоли).
Я в ConEmu работаю.
HaRT wrote:
Wed 30 Oct, 2019 23:19
Зато можно разместить текстовую метку поверх рамки.
Да я знаю. И уже знаю (когда делал - не знал) как вывести по центру. Так что теперь, наверно, переделаю. Даже, возможно, сделаю не просто текстовую метку, а возможность размещения кнопок (чтоб можно было кликать). А что, удобно будет.

buniak_a_h
Posts: 1924
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 124 times
Been thanked: 183 times
Contact:

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

Post by buniak_a_h »

citRiks wrote:
Wed 30 Oct, 2019 21:31
Если результирующий диалог "Поиск строки «Dialog» ..." захватить мышкой за любое место рамки его нижней части, то этот диалог в целом можно перемещать по экрану. А если попытаться сделать захват за рамку в верхней части, то нет. При клике мышкой на самой верхней рамке диалога его курсор двигается в верхнюю позицию.

Если это просто особенность (фича) данного диалога, то её надо бы отметить в Справке по скрипту.
Исправил (версия 1.0.6). Теперь таскать можно за рамку.

User avatar
John Doe
Бюрократ
Posts: 12836
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 38 times
Been thanked: 290 times

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

Post 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

buniak_a_h
Posts: 1924
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 124 times
Been thanked: 183 times
Contact:

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

Post 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-а - нет! Хотя внешне они выглядят одинаково.

stefanenko
Posts: 126
Joined: Sun 20 Jun, 2010 12:37
Has thanked: 33 times
Been thanked: 4 times

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

Post by stefanenko »

Можно ли сделать сохранение опции "На диске" или "На панели" ?
Мне к примеру никогда не нужно искать по диску.
Или где в скрипте сделать по дефолту "На панели"

Спасибо!

buniak_a_h
Posts: 1924
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 124 times
Been thanked: 183 times
Contact:

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

Post 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};
На самом деле я давно это сделал, не получил (до вчерашнего дня) ни одного отзыва и решил, что никого не интересует. Поэтому нету ни настройки, ни локализации…

stefanenko
Posts: 126
Joined: Sun 20 Jun, 2010 12:37
Has thanked: 33 times
Been thanked: 4 times

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

Post by stefanenko »

Спасибо. Код немного не тот но я все нашел и исправил.
Раньше использовал в меню

Code: Select all

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

buniak_a_h
Posts: 1924
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 124 times
Been thanked: 183 times
Contact:

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

Post by buniak_a_h »

stefanenko wrote:
Thu 31 Oct, 2019 14:41
Код немного не тот
Вы меня пугаете… Я не только что писал - из скрипта копировал. Пока байтики на сервер летели - изменились? Ужос!

stefanenko
Posts: 126
Joined: Sun 20 Jun, 2010 12:37
Has thanked: 33 times
Been thanked: 4 times

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

Post by stefanenko »

buniak_a_h wrote:
Thu 31 Oct, 2019 17:21
Вы меня пугаете
Все нормально. Я может немного не так выразился.
Кстати пришлось еще чутка поправить т.к. на обычном мониторе некоторые RADIO кнопки за края диалога вылазили.

buniak_a_h
Posts: 1924
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 124 times
Been thanked: 183 times
Contact:

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

Post by buniak_a_h »

stefanenko wrote:
Thu 31 Oct, 2019 13:26
Можно ли сделать сохранение опции "На диске" или "На панели" ?
Мне к примеру никогда не нужно искать по диску.
Или где в скрипте сделать по дефолту "На панели"

Спасибо!
Сделал настройку. Диск/Панель/Авто
Для авто логика такая: если панель - временная, либо на панели есть отмеченные файлы, то изначально устанавливается "На панели"; иначе- "На диске".
При настройке, отличной от "Авто" устанавливается соответствующий выбор.
Переключить можно при инициации поиска.
stefanenko wrote:
Thu 31 Oct, 2019 23:59
Кстати пришлось еще чутка поправить т.к. на обычном мониторе некоторые RADIO кнопки за края диалога вылазили.
Специально чтоб больше не требовалось поправлять сделал мелкий сервис: если элемент диалога не помещается п горизонтали, он переносится на следующую строку (либо по центру, либо под верхней строкой); остальные элементы, соответственно, сдвигаются. Прикольно получилось :-)

Post Reply

Return to “Обсуждение макросов”