Page 8 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 15 Apr, 2020 21:10
by citRiks

Latest post of the previous page:

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

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

Posted: Wed 15 Apr, 2020 21:25
by buniak_a_h
Думаю, там скорее блокировка именно закрытия диалога. По Esc и DN_BTNCLICK - разрешается, в остальных случаях - нет.

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

Posted: Wed 15 Apr, 2020 23:33
by 2useven10

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

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

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

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

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

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

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

Posted: Thu 07 May, 2020 23:52
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+стрелки - свернуть/распахнуть все

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

Posted: Thu 07 May, 2020 23:59
by buniak_a_h
Версия 1.1.2 - добавлена нумерация.

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

Posted: Sat 09 May, 2020 10:02
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Есть возражения. Главное: (а)невозможно "встать" на разделитель и, соответственно, распахивать / сворачивать мышкой: (б) невозможно (ну или я не умею) вывести значок-признак, что узел распахнут / свёрнут.
Для сепаратора текст задается ровно так же как и у не сепаратора, и в этом тексте вы и продолжаете выводить плюсик - свернуто, н...
.. ну Ок, там типа можно еще свернуть все до уровня одна строка - один файл, так что могу согласится что логика в этом есть

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

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

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

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

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

Posted: Sat 09 May, 2020 10:12
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 Про нумерацию, возможно я что-то делаю не так, но у меня ее все еще нигде нет (хде?)
Настройки не нашли?

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

Posted: Sat 09 May, 2020 10:16
by buniak_a_h
Настройка F9 -> o -> u -> BAX - Скрипт Find_n_Go

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

Posted: Sat 09 May, 2020 10:17
by citRiks
Ну и традиционно, падает в связи последними проблем со строками,
присоединяю то что успел пофиксить, думаю это вам поможет, просто любой сравнивалкой посмотрите изменения

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

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

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

Posted: Sat 09 May, 2020 10:32
by buniak_a_h
Нет, просто в панелях

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

Posted: Sat 09 May, 2020 10:33
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
Т.к. там всё правильно, то мы имеем дело с одним из следствий закона Мерфи: блок, предназначенный для защиты всей системы от повреждения, выходит из строя первым и выводит из строя всю систему.