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

Здесь обсуждается всё, что касается макросов.
buniak_a_h
Posts: 1848
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 116 times
Been thanked: 165 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 20 times
Last edited by buniak_a_h on Thu 07 May, 2020 23:55, edited 26 times in total.

citRiks
Posts: 637
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 175 times
Been thanked: 42 times

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

Post by citRiks »

Latest post of the previous page:

buniak_a_h wrote:
Wed 15 Apr, 2020 18:31
В аудиоплейере диалог не закрывается независимо от настройки
Ну значит остается вариант с нейтрализацией в AudioPlayer мыше-клика, не?

buniak_a_h
Posts: 1848
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 116 times
Been thanked: 165 times
Contact:

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

Post by buniak_a_h »

Думаю, там скорее блокировка именно закрытия диалога. По Esc и DN_BTNCLICK - разрешается, в остальных случаях - нет.


buniak_a_h
Posts: 1848
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 116 times
Been thanked: 165 times
Contact:

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

Post by buniak_a_h »

2useven10, да-да, я именно это и имел в виду, когда писал:
buniak_a_h wrote:
Wed 15 Apr, 2020 16:32
Мне кто-то написал, как сделать, чтоб не закрывался. Пришлось ФАР снимать - он вообще никак не закрывался:-)
Правда, теперь я, кажется, придумал: надо запоминать факт нажатия Esc и кнопки и если было нажато - разрешать, иначе - запрещать.

buniak_a_h
Posts: 1848
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 116 times
Been thanked: 165 times
Contact:

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

Post by buniak_a_h »

citRiks wrote:
Tue 14 Apr, 2020 23:21
* Диалог результатов раскрывать на всю ширину ФАРа, или переключаться на всю ширину
Версия 1.1.1 . Кнопка F5.

buniak_a_h
Posts: 1848
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 116 times
Been thanked: 165 times
Contact:

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

Post by buniak_a_h »

citRiks wrote:
Tue 14 Apr, 2020 23:21
* Разделитель файлов, на котором можно сделать collapse, сделать как и предлагал @JD, type=separator
Я посмотрел. Там действительно не выставляется флаг LIF_SEPARATOR для сепараторов, причём для списков с группировкой это сделано специально.
1. Есть возможность выводить признак, что узел распахнут/свёрнут
2. Есть возможность встать на разделитель и удалить все записи, относящиеся к этому файлу.
3. Можно мышкой сворачивать-распахивать.
А тогда зачем?

buniak_a_h
Posts: 1848
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 116 times
Been thanked: 165 times
Contact:

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

Post by buniak_a_h »

citRiks wrote:
Tue 14 Apr, 2020 23:21
Лишь небольшие придирки:
* Фильтр результатов сейчас невидим, сделать видимым
Пока не получилось с использованием своего фильтра, а "встроенный" использовать не хочется.
citRiks wrote:
Tue 14 Apr, 2020 23:21
* Диалог результатов раскрывать на всю ширину ФАРа, или переключаться на всю ширину
Сделано. Кнопка F5.
citRiks wrote:
Tue 14 Apr, 2020 23:21
* В диалог результатов добавить нумерацию строк
Сделано. В настройке включить…
citRiks wrote:
Tue 14 Apr, 2020 23:21
* Разделитель файлов, на котором можно сделать collapse, сделать как и предлагал @JD, type=separator
Есть возражения. Главное: (а)невозможно "встать" на разделитель и, соответственно, распахивать / сворачивать мышкой: (б) невозможно (ну или я не умею) вывести значок-признак, что узел распахнут / свёрнут.
citRiks wrote:
Tue 14 Apr, 2020 23:21
* .. и тогда collapse теперь делать по какому-то нажатию, в принципе любому, на ваш выбор
Это и так можно было. Ctrl+стрелки - один файл; ShiftCtrl+стрелки - свернуть/распахнуть все

buniak_a_h
Posts: 1848
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 116 times
Been thanked: 165 times
Contact:

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

Post by buniak_a_h »

Версия 1.1.2 - добавлена нумерация.

citRiks
Posts: 637
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 175 times
Been thanked: 42 times

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

Post by citRiks »

buniak_a_h wrote:
Thu 07 May, 2020 09:31
Я посмотрел. Там действительно не выставляется флаг LIF_SEPARATOR для сепараторов, причём для списков с группировкой это сделано специально.
1. Есть возможность выводить признак, что узел распахнут/свёрнут
2. Есть возможность встать на разделитель и удалить все записи, относящиеся к этому файлу.
3. Можно мышкой сворачивать-распахивать.
А тогда зачем?
buniak_a_h wrote:
Thu 07 May, 2020 23:52
Есть возражения. Главное: (а)невозможно "встать" на разделитель и, соответственно, распахивать / сворачивать мышкой: (б) невозможно (ну или я не умею) вывести значок-признак, что узел распахнут / свёрнут.
Для сепаратора текст задается ровно так же как и у не сепаратора, и в этом тексте вы и продолжаете выводить плюсик - свернуто, н...
.. ну Ок, там типа можно еще свернуть все до уровня одна строка - один файл, так что могу согласится что логика в этом есть

Про нумерацию, возможно я что-то делаю не так, но у меня ее все еще нигде нет (хде?)
искал окно конфигурации, думал может там задается, однако не нашел,
и кстати хелп не открывается из диалога (- но это совсем уже мелочи, можно открыть и из файла)

citRiks
Posts: 637
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 175 times
Been thanked: 42 times

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

Post by citRiks »

buniak_a_h wrote:
Thu 07 May, 2020 23:52
citRiks писал(а): ↑
Ср 15 апр, 2020 01:21
* В диалог результатов добавить нумерацию строк

Сделано. В настройке включить…
А где эта настройка? пробовал на диалоге АльтФ9, АльтШифтФ9, чета не ..

buniak_a_h
Posts: 1848
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 116 times
Been thanked: 165 times
Contact:

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

Post by buniak_a_h »

citRiks wrote:
Sat 09 May, 2020 10:02
Для сепаратора текст задается ровно так же как и у не сепаратора, и в этом тексте вы и продолжаете выводить плюсик - свернуто
У сепаратора текст центрируется горизонтальной линией. Если я вставлю перед именем файла «+ », то он будет выводиться не слева, а мне это как бы не надо. Значит, придётся самому формировать текст (считать ширину, вставлять горизоньальную линию), что я и так делаю.
citRiks wrote:
Sat 09 May, 2020 10:02
Ок, там типа можно еще свернуть все до уровня одна строка - один файл, так что могу согласится что логика в этом есть
Да-да-да! Вы напомнили. Если сделать все строки между сепараторами невидимыми, то и сам сепаратор станет невидимым - и всё, обратно не вернуть!
citRiks wrote:
Sat 09 May, 2020 10:02
Про нумерацию, возможно я что-то делаю не так, но у меня ее все еще нигде нет (хде?)
Настройки не нашли?

buniak_a_h
Posts: 1848
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 116 times
Been thanked: 165 times
Contact:

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

Post by buniak_a_h »

Настройка F9 -> o -> u -> BAX - Скрипт Find_n_Go
Last edited by buniak_a_h on Sat 09 May, 2020 10:17, edited 1 time in total.

citRiks
Posts: 637
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 175 times
Been thanked: 42 times

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

Post by citRiks »

Ну и традиционно, падает в связи последними проблем со строками,
присоединяю то что успел пофиксить, думаю это вам поможет, просто любой сравнивалкой посмотрите изменения
Attachments
Find-n-Go.7z
(16.27 KiB) Downloaded 4 times

citRiks
Posts: 637
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 175 times
Been thanked: 42 times

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

Post by citRiks »

buniak_a_h wrote:
Sat 09 May, 2020 10:16
Настройка F9 -> o -> u -> BAX - Скрипт Find_n_Go
А Ф9 делать на диалоге поиске же, да?

buniak_a_h
Posts: 1848
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 116 times
Been thanked: 165 times
Contact:

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

Post by buniak_a_h »

Нет, просто в панелях

buniak_a_h
Posts: 1848
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 116 times
Been thanked: 165 times
Contact:

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

Post by buniak_a_h »

citRiks wrote:
Sat 09 May, 2020 10:17
в связи последними проблем со строками,
Я в теме, посвящённой этой проблеме, опубликовал простой и надёжный выход. Бороться с Shmuel-ем и zg больше не буду. За оптимизацию отдельное спасибо jd.

Code: Select all

В _macroinit.lua вставил такой блок:
for _,v in ipairs({'len','match','find','gmatch','gsub','lower','upper'}) do
 local savedName = 'Utf8_'..v
 if not utf8[savedName] then
  utf8[savedName] = utf8[v]
  utf8[v] = function(s,...)
   return (utf8.utf8valid(s) and utf8[savedName] or string[v])(s,...)
  end
 end
end
Т.к. там всё правильно, то мы имеем дело с одним из следствий закона Мерфи: блок, предназначенный для защиты всей системы от повреждения, выходит из строя первым и выводит из строя всю систему.
Last edited by buniak_a_h on Sat 09 May, 2020 10:34, edited 1 time in total.

Post Reply

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