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:

HaRT wrote: Wed 04 Jun, 2025 01:58 теперь RCtrl вместо продолжения поиска из него выходит
Вам придётся выяснять причину у себя, потому что у меня ничего такого не происходит.
Предлагаю сначала посмотреть что происходит в readkey.
HaRT wrote: Wed 04 Jun, 2025 01:58 потому что вместо RAlt у меня на клавиатуре AltGr.
Это поддерживается, смело указывайте RAlt.
HaRT wrote: Wed 04 Jun, 2025 01:58 как при такой настройке подружить здешний CtrlLAlt с LCtrlLAlt от HiliteWord, чтобы они не конфликтовали?
Я думаю добавить HiliteWord в условия отсутствие выделения.
Но надо придумать и что делать в случае когда выделения нет...
Edit: исправил, в обоих скриптах.
https://t.me/FarManager — Telegram чат
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 »

John Doe wrote: Wed 04 Jun, 2025 11:05 Это поддерживается, смело указывайте RAlt.
Разумеется, я с этого начал — увы, у меня не работает. Возможно, из-за RDP, но физически у той машины я бываю очень редко, т.ч. проверю ещё не скоро.
John Doe wrote: Wed 04 Jun, 2025 11:05 Предлагаю сначала посмотреть что происходит в readkey.
Да, так и сделаю, в т.ч. про удержание RCtrl/LCtrl.
John Doe wrote: Wed 04 Jun, 2025 11:05 Я думаю добавить HiliteWord в условия отсутствие выделения.
Спасибо. Я-то думал, что у вас это уже как-то улажено, но не выложено.
Фар есть инструмент, а не нянька. © 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 »

HaRT wrote: Wed 04 Jun, 2025 11:12 увы, у меня не работает.
Об этом вы не писали.
Физически и не надо, надо посмотреть что по RDP, и будет понятно, поправимо ли.
HaRT wrote: Wed 04 Jun, 2025 11:12 Спасибо. Я-то думал, что у вас это уже как-то улажено, но не выложено.
Уже выложено, в обоих скриптах исправил.
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 »

HaRT wrote: Wed 04 Jun, 2025 11:12 Возможно, из-за RDP
Кстати было бы неплохо проверить в этом сетапе https://github.com/FarGroup/FarManager/pull/965

https://github.com/FarGroup/FarManager/ ... 3255015122
https://t.me/FarManager — Telegram чат
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 »

John Doe wrote: Wed 04 Jun, 2025 11:49 надо посмотреть что по RDP, и будет понятно, поправимо ли
Виновник найден, им оказался старина Keyboard Maniac. :( Буду думать, как с этим дальше жить.
John Doe wrote: Wed 04 Jun, 2025 11:49 Уже выложено, в обоих скриптах исправил.
Если задать опцию Alt:'LAlt' (официально поддерживаемую), то при наличии выделения (и отсутствии подсветки прежде найденных) эти два макроса всё-таки конфликтуют.
Я для себя исправил так: condition: -> ( Object.Selected or Match[editor.GetInfo!.EditorID] ) and 60 or 40
Фар есть инструмент, а не нянька. © 2009 DrKnS
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 »

Попутно выявилась ошибка:
1. Открываем на редактирование C:\Program Files\Far Manager\changelog (или куда он по факту установлен/распакован).
2. Выделяем первое вхождение 2025.
3. Нажимаем LCtrlLAlt/LCtrlRAlt (с вышеуказанной настройкой или без неё соответственно).
Ожидаем, что все вхождения на экране подсветятся, а выделенное моргнёт not found.
На деле же ничего не подсвечивается.
Примечания:
А. Аналогично, если выделить последнее, например, то и нажать RCtrlLAlt/RCtrlRAlt соответственно опции Alt.
Б. Если начинать не с первого/последнего вхождения, то работает ожидаемо.

Кстати, в Справке пара опечаток:
* В • ^#RCtrl#+#RAlt# / #RCtrl#+#RAlt#, очевидно, вместо первого RCtrl должно быть LCtrl.
Ну и заодно неплохо бы отдельной строчкой оговорить, что тут не жёстко RAlt, а тот, который задан опцией.
* В - ^при выделенном тексте: ищет предыдущее / или следующее его вхождение; слово «или» дублирует слэш, но с учётом предыдущей строки слэш предпочтителен.
Фар есть инструмент, а не нянька. © 2009 DrKnS
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 »

И пара хотелок:
1. Иметь возможность выйти из поиска, сохранив текущее состояние редактора (положение текста в окне, выделение, положение каретки). Предлагаю навесить это на F10 по аналогии со списком замечаний LuaCheck.
2. Иметь возможность вне поиска легко сбросить подсветку предыдущих результатов. Предлагаю назначить это на Esc (при наличии подсвеченного) — по аналогии с редактором Visual Studio.
Фар есть инструмент, а не нянька. © 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 »

  1. Повторный Alt разве не это делает?
    И учитывая что поиск только частично модальный, я чаще всего из него выхожу просто курсорными клавишами.
  2. ESC можно конечно, но не создаст ли это ненужное препятствие при выходе?
    Сам обычно снимаю выделение двукратным нажатием Alt.
https://t.me/FarManager — Telegram чат
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 »

John Doe wrote: Wed 04 Jun, 2025 23:01 Повторный Alt разве не это делает?
Спасибо, делает. Возможно, стоит отразить в Справке, что этот способ выхода обладает такой особенностью.
John Doe wrote: Wed 04 Jun, 2025 23:01 не создаст ли это ненужное препятствие при выходе?
Как по мне, так не создаст, особенно если моргнуть статусом наподобие IncSearch: highlight OFF на случай, когда в пределах окна подсвеченного нет (или оно, к примеру, представлено одним символом в нижнем правом углу).
John Doe wrote: Wed 04 Jun, 2025 23:01 Сам обычно снимаю выделение двукратным нажатием Alt.
Это дополнительно требует отсутствия выделения. А на практике бывает, что выделил что-то и понял, что подсветка отвлекает.
Хм, тут, похоже, намечается конфликт со снятием выделения по Esc из комплекта Turbo.
Пожалуй, попользуюсь пока так и посмотрю, не привыкну ли.

P.S.
А по поводу двух предшествовавших сообщений что скажете?

P.P.S.
Я только вчера осознал, что скрипт является программой-полиглотом MoonScript—FAR-Help. Интересно, сработает ли такое для Lua. И есть ли способ подружить это с многоязычностью. Ну да это тема для отдельного обсуждения.
Last edited by HaRT on Wed 04 Jun, 2025 23:28, edited 1 time in total.
Reason: Добавлен постскриптум
Фар есть инструмент, а не нянька. © 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 »

Предшествующие разумеется принял к сведению, спасибо что репортите.

Про выход по Alt в справке упоминается, также как и об отличиях с Esc.

Про снятие выделения по ESC в turbo я кажется не в курсе )

В lua-скрипт можно интегрировать справку, есть у меня и такие (идея zg).
Но при многоязычности этот способ уже не годится (впрочем меня не смущают скрипты с доп. файлами).

P.S.
Сам я ленюсь делать английскую справку исключительно из соображений последующей поддержки.
Хотя подозреваю что есть ли какие-нибудь способы их дальнейшей синхронизации, но мне не попадалось ничего подходящего.
https://t.me/FarManager — Telegram чат
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 »

John Doe wrote: Wed 04 Jun, 2025 23:48 Про выход по Alt в справке упоминается, также как и об отличиях с Esc.
В Справке написано:

Code: Select all

 • Для прекращения поиска можно также воспользоваться повторным нажатием #RAlt#.
 • #Esc# — прекращает поиск и восстанавливает исходную позицию.
Т.ч. про отличия тут скорее неявно. Я же предлагаю для Alt явно указать, что это выход «без побочных эффектов».
John Doe wrote: Wed 04 Jun, 2025 23:48 Про снятие выделения по ESC в turbo я кажется не в курсе )
А, пардон, это у меня , просто меня сбило с толку то, что он использует показ немодального сообщения, скопированный из Turbo.
John Doe wrote: Wed 04 Jun, 2025 23:48 меня не смущают скрипты с доп. файлами
Меня они смущают главным образом потому, что для использования встроенной в Фар поддержки многоязычной Справки такой скрипт требуется помещать в отдельную директорию. Если нужно, я найду, где мы это уже обсуждали.
Фар есть инструмент, а не нянька. © 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 »

HaRT wrote: Wed 04 Jun, 2025 21:53 На деле же ничего не подсвечивается.
Сделал.
HaRT wrote: Thu 05 Jun, 2025 00:13 такой скрипт требуется помещать в отдельную директорию. Если нужно, я найду, где мы это уже обсуждали.
Это никогда не помешает, для связности. Но по существу там мы кажется ничего не определили, кроме того что директории это дело вкуса.
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 »

John Doe wrote: Sun 08 Jun, 2025 19:55Сделал
Спасибо, починилось.
John Doe wrote: Sun 08 Jun, 2025 19:55 Это никогда не помешает, для связности.
Кажется, в теме про KeepEditboxFocus.

И попутно обнаружилось странное и нежелательное взаимодействие с плагином NetBox: если в его настройках выставить , то при редактировании файла с панели NetBox статусное сообщение IncSearch при наборе символов искомой строки не отображается (горит только признак работы скрипта в левом верхнем углу). Надо ли говорить, что это сильно затрудняет продуктивное использование скрипта. Зато сообщение обычно отображается при стирании символов искомой строки, а также промаргивает, когда вхождения более не найдены. Тут даже не очень понятно, кто виноват: FAR, NetBox, LuaMacro или сам скрипт…
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 »

HaRT wrote: Sun 08 Jun, 2025 22:49 Надо ли говорить, что это сильно затрудняет продуктивное использование скрипта.
Сильно не должно, ведь активный режим индицируется ещё и чёрным фоном курсора с мерцающей подсветкой символа.
HaRT wrote: Sun 08 Jun, 2025 22:49 Тут даже не очень понятно, кто виноват: FAR, NetBox, LuaMacro или сам скрипт…
Очевидно NetBox сам постоянно дёргает ECTL_SETTITLE, заботясь чтобы путь в статусе соответствовал пути на панели.
Ключевое слово тут "постоянно": видимо с целью противодействия изменению сторонними средствами.
Но с этим режимом у него и поинтереснее проблемы: нажмите ShiftF4 и понаблюдайте свистопляску при работе автодополнения.
https://t.me/FarManager — Telegram чат
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 »

John Doe wrote: Sun 08 Jun, 2025 23:09 активный режим индицируется ещё и чёрным фоном курсора с мерцающей подсветкой символа
Чтобы это было заметно, мне нужно отключить Colorer и HiliteWord, да и то подсветка символа получается не мерцающая, а просто тусклая.

Фар есть инструмент, а не нянька. © 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 »

HaRT wrote: Mon 09 Jun, 2025 01:30 Чтобы это было заметно, мне нужно отключить Colorer и HiliteWord
Colorer? Имеется ввиду его крест наверно.
И HiliteWord наверно у вас из-за креста иначе настроен.
HaRT wrote: Mon 09 Jun, 2025 01:30 подсветка символа получается не мерцающая, а просто тусклая.
Значит conhost не умеет FCF_FG_BLINK.

Можно поэкспериментировать со значением color_cursor и сделать фон наоборот светлее.

С Netbox сейчас тоже не наблюдаю свистопляски, видимо нужны ещё какие-то условия.
https://t.me/FarManager — Telegram чат
Post Reply

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