IncSearch — быстрый поиск в редакторе

Здесь выкладываются готовые к использованию макросы и скрипты.
User avatar
John Doe
Бюрократ
Posts: 14582
Joined: Wed 27 Apr, 2005 20:42
Location: github.com/FarManagerLegacy
Has thanked: 92 times
Been thanked: 514 times
Contact:

IncSearch — быстрый поиск в редакторе

Post by John Doe »

Инкрементальный поиск — это поиск в редакторе без использования диалогового окна.
Введённый текст ищется сразу по мере его набора, и найденное индицируется выделением.
Кроме того подсвечиваются все вхождения искомой строки, и подсветка остаётся после
завершения поиска.



Актуальная версия:
raw | zip
User avatar
John Doe
Бюрократ
Posts: 14582
Joined: Wed 27 Apr, 2005 20:42
Location: github.com/FarManagerLegacy
Has thanked: 92 times
Been thanked: 514 times
Contact:

IncSearch — быстрый поиск в редакторе

Post by John Doe »

Latest post of the previous page:

Закешировалось видимо. Возьмите тут https://gist.githubusercontent.com/john ... Search.lua
https://t.me/FarManager — Telegram чат
dmitrik
Posts: 152
Joined: Mon 30 Nov, 2009 21:58
Has thanked: 11 times
Been thanked: 4 times

IncSearch — быстрый поиск в редакторе

Post by dmitrik »

Я не понимаю логику работы. В тексте есть несколько вхождений строки. Например, слово services. Перехожу в режим быстрого поиска и начинаю набирать. s переводит на первое вхождение в текст этой буквы. Допустим, как раз на первое вхождение services. Ок. Добавляю e. Ожидаю: выделится se в этом же services. Реальность: он перескакивает на следующее вхождение services и уже там выделяет se. И так далее с каждой новой набранной буквой.

Так задумано или это баг?
User avatar
John Doe
Бюрократ
Posts: 14582
Joined: Wed 27 Apr, 2005 20:42
Location: github.com/FarManagerLegacy
Has thanked: 92 times
Been thanked: 514 times
Contact:

IncSearch — быстрый поиск в редакторе

Post by John Doe »

@dmitrik
Чтобы было так как вы ожидаете измените опцию ExtraQuick = false,
https://t.me/FarManager — Telegram чат
dmitrik
Posts: 152
Joined: Mon 30 Nov, 2009 21:58
Has thanked: 11 times
Been thanked: 4 times

IncSearch — быстрый поиск в редакторе

Post by dmitrik »

Понял, спасибо.
ccaid
Posts: 909
Joined: Fri 12 Jun, 2009 16:04
Has thanked: 24 times
Been thanked: 6 times

IncSearch — быстрый поиск в редакторе

Post by ccaid »

John Doe, при использовании плагина LFSearch, если у него выключена установка [ ] Select found text, не удается отключить в скрипте сверхбыстрый поиск: на ввод каждого дополнительного символа продвигаемся на следующее вхождение.
Фар делают добрые люди
User avatar
HaRT
Moderator
Posts: 11458
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 270 times
Been thanked: 417 times

IncSearch — быстрый поиск в редакторе

Post by HaRT »

В сборке Фара 6096 скрипт перестал работать со встроенным поиском — очевидно, из-за реорганизации диалога. Лечится .
Last edited by HaRT on Tue 24 Jan, 2023 20:40, edited 1 time in total.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
John Doe
Бюрократ
Posts: 14582
Joined: Wed 27 Apr, 2005 20:42
Location: github.com/FarManagerLegacy
Has thanked: 92 times
Been thanked: 514 times
Contact:

IncSearch — быстрый поиск в редакторе

Post by John Doe »

v2.14: support AltGr as activator
https://t.me/FarManager — Telegram чат
User avatar
John Doe
Бюрократ
Posts: 14582
Joined: Wed 27 Apr, 2005 20:42
Location: github.com/FarManagerLegacy
Has thanked: 92 times
Been thanked: 514 times
Contact:

IncSearch — быстрый поиск в редакторе

Post by John Doe »

v2.15: CtrlA to show all matches in dialog
https://t.me/FarManager — Telegram чат
ccaid
Posts: 909
Joined: Fri 12 Jun, 2009 16:04
Has thanked: 24 times
Been thanked: 6 times

IncSearch — быстрый поиск в редакторе

Post by ccaid »

John Doe,
строка для продолжения поиска в плагине LuaFAR Search не обновляется поиском в скрипте IncSearch.
открываю диалог поиска плагина, что-то ввожу, ищу и нахожу.
перехожу в начало текста, активирую скрипт, ввожу что-то другое, происходит переход к найденному, нажимаю F3, происходит переход к другому вхождению искомого.
нажимаю стрелку вверх (скрипт деактивируется), активирую продолжение поиска плагина — он находит не то, что я искал скриптом, а то, что искал напрямую из плагина.
с плагином EdtFind и фаровским поиском такого не происходит — что искали в скрипте, то они и продолжают искать.
Фар делают добрые люди
User avatar
HaRT
Moderator
Posts: 11458
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 270 times
Been thanked: 417 times

IncSearch — быстрый поиск в редакторе

Post by HaRT »

ccaid wrote: Thu 04 May, 2023 21:13 строка для продолжения поиска в плагине LuaFAR Search не обновляется поиском в скрипте IncSearch
А у вас при проверке скрипт точно работал именно через LuaFAR Search, а не через EdtFind?
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
John Doe
Бюрократ
Posts: 14582
Joined: Wed 27 Apr, 2005 20:42
Location: github.com/FarManagerLegacy
Has thanked: 92 times
Been thanked: 514 times
Contact:

IncSearch — быстрый поиск в редакторе

Post by John Doe »

ccaid wrote: Thu 04 May, 2023 21:13 строка для продолжения поиска в плагине LuaFAR Search не обновляется поиском в скрипте IncSearch.
Пользуюсь именно им. Убедитесь что у вас актуальные версии плагина и скрипта.
https://t.me/FarManager — Telegram чат
ccaid
Posts: 909
Joined: Fri 12 Jun, 2009 16:04
Has thanked: 24 times
Been thanked: 6 times

IncSearch — быстрый поиск в редакторе

Post by ccaid »

John Doe wrote: Thu 04 May, 2023 22:05 Убедитесь что у вас актуальные версии плагина и скрипта.
перед тем как рапортовать, я так и делал. я взял крайний фар (x86), крайний плагин и скрипт v2.15, сделал чистую локальную дефолтовую конфигурацию — и получил тот же эффект. поиск и продолжение поиска из плагина запускал через меню. потом добавил штатные макросы плагина и использовал комбинацию оттуда — вид сбоку.

а вы пробовали повторить в том порядке, как я описывал?
Last edited by ccaid on Fri 05 May, 2023 05:42, edited 1 time in total.
Фар делают добрые люди
User avatar
John Doe
Бюрократ
Posts: 14582
Joined: Wed 27 Apr, 2005 20:42
Location: github.com/FarManagerLegacy
Has thanked: 92 times
Been thanked: 514 times
Contact:

IncSearch — быстрый поиск в редакторе

Post by John Doe »

ccaid wrote: Fri 05 May, 2023 05:41 а вы пробовали повторить в том порядке, как я описывал?
Попробовал, и понял что вы хотите странного.
Дело в том, что
  • в случае фаровского поиска строка запоминается в силу того факта, что это обычное штатное поведение, поскольку (хоть это и скрыто макросом) поиск производится интерактивно.
  • в случае EditFind поиск не интерактивный, а через апи, но автор плагина по своим соображениям сделать именно так (по совпадению - этот вариант вам нравится больше других).
  • LuaFAR Search решил иначе, и выполнение действий через апи не имеет побочных эффектов, не влияет на интерактивную работу плагина.
И во всех трёх случаях у меня нет средств чтобы повлиять на описанное поведение. А если бы были, то я скорее выбрал бы взял за образец поведение LuaFAR Search.
(Например, связанный случай: при поиске через фар я специально использую Far.DisableHistory, чтобы предотвратить добавление строки поиска в историю).

Вы можете попробовать убедить автором плагина LuaFAR Search добавить некую опцию поиска, чтобы при использовании lfsearch.EditorAction в пользовательских скриптах параметры поиска запоминались и применялись бы при интерактивном "Repeat ...".
https://t.me/FarManager — Telegram чат
User avatar
John Doe
Бюрократ
Posts: 14582
Joined: Wed 27 Apr, 2005 20:42
Location: github.com/FarManagerLegacy
Has thanked: 92 times
Been thanked: 514 times
Contact:

IncSearch — быстрый поиск в редакторе

Post by John Doe »

С другой стороны, можно подумать для чего вам вообще вызывать плагин поиска напрямую.
  • Напомню, что в комплекте есть RAlt+LCtrl / RAlt+RCtrl для продолжения поиска
  • Если активировать (модальный) поиск при отсутствующем выделении, то строка будет пустой.
    Но при нажатии BS восстанавливается строка из предыдущего поиска
  • (только что сделал) при пустой строке попытка поиска вперёд/назад/всех вхождений тоже использует строку из предыдущего поиска.
    Это экономит нам одно нажатие BS.
Если этого для ваших целей недостаточно, и действительно удобнее в каком-то сценарии вызвать плагин, то прошу вас подробнее описать что это за сценарий.
Возможно в этом случае стоит сделать макрос, открывающий диалог плагина, и вставляющий строку поиска.
https://t.me/FarManager — Telegram чат
ccaid
Posts: 909
Joined: Fri 12 Jun, 2009 16:04
Has thanked: 24 times
Been thanked: 6 times

IncSearch — быстрый поиск в редакторе

Post by ccaid »

John Doe wrote: Fri 05 May, 2023 16:38 Попробовал, и понял что вы хотите странного.
ну, с моей-то кочки всё наоборот :)

вот я скриптом обнаружил точки интереса, свободно попереходил между ними (F3, ShiftF3), в окрестностях одной из них что-то поделал, желаю возобновить переходы между этими же точками интереса и «интуитивно» пытаюсь воспользоваться теми же комбинациями, и у меня это получается — в случае EdtFind. то есть два разных инструмента под капотом работают в единой связке, и мне не надо в голове хранит две истории поиска: это я искал тем-то, а вот это искал вот тем-то.
John Doe wrote: Fri 05 May, 2023 16:38 LuaFAR Search решил иначе, и выполнение действий через апи не имеет побочных эффектов, не влияет на интерактивную работу плагина.
с толкованием интерактивности есть нюансы. если после инкрементного поиска посредством EdtFind открыть диалог поиска EdtFind, то увидим ту строку, которую мы искали именно из этого диалога, а не из инкрементного поиска — история не изменилась. то есть по этому критерию — влияния на интерактивную работу EdtFind тоже нет. (хотя, является ли это достоинством — отдельная тема.)

а вот продолжение поиска — само по себе основано на побочном эффекте. мы же не видим — что мы будем [продолжать] искать. и с LFsearch при использовании настройки Pick search string from=Don't pick будет происходит не менее странная история. я что-то поискал из диалога LFsearch — неделю назад — теперь поискал через скрипт+LFsearch, вызываю продолжение поиска того же самого LFsearch, и он начинает находить строку из запроса недельной давности. причем из диалога поиска LFsearch напрямую её не видно, надо сообразить открыть историю.
John Doe wrote: Fri 05 May, 2023 17:47 ...
Если этого для ваших целей недостаточно,
ранее наработанные шаблоны использования IncSearch+EdtFind меня настолько устраивали, что я даже не пытался изучать нововведения IncSearch. буду осваивать — всё это очень полезно.

мой вопрос закрыт. благодарю за исчерпывающий ответ.
User avatar
John Doe
Бюрократ
Posts: 14582
Joined: Wed 27 Apr, 2005 20:42
Location: github.com/FarManagerLegacy
Has thanked: 92 times
Been thanked: 514 times
Contact:

IncSearch — быстрый поиск в редакторе

Post by John Doe »

v3-alpha

Скрипт переписан полностью, и теперь реализует все функции самостоятельно, не паразитируя на плагинах или встроенной функции поиска.
Радикальных изменений функциональности нет, но улучшено множество мелких деталей.

Версия alpha потому что за бортом остался "немодальный" поиск в стиле плагина Leap.
Уже несколько лет я им вообще не пользовался по причине того, что в раскладках клавиатуры у меня завёлся AltGr, и забрал правый Alt.

Планирую доделать и немодальный поиск, но это требует нового подхода и соответственно кучу времени на отладку.
https://t.me/FarManager — Telegram чат
Post Reply

Return to “Полезные макросы и скрипты”