Page 3 of 8

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

Posted: Mon 04 Aug, 2014 23:58
by John Doe
Инкрементальный поиск — это поиск без диалогового окна.
Введённый текст отображается в строке статуса и ищется сразу по мере его набора.

Управление:
  • RAlt — включить режим инкрементального поиска.
    Если в текущей строке есть выделенный текст — он подхватывается.
  • BS — удалить последний введённый символ.
    При пустой строке: восстановить предыдущую строку.
  • CtrlBS — очистить строку поиска.
  • ShiftIns/CtrlV — вставить строку из буфера обмена.
  • RCtrl/ShiftF7/F3/Enter — найти следующее вхождение строки.
  • LCtrl/AltF7/ShiftF3/ShiftEnter — найти предыдущее вхождение строки.
  • Нажатие любой алфавитно-цифровой (или символьной) клавиши добавляет символ к искомой строке.
  • Нажатие любой функциональной клавиши отключает режим поиска, клавиша передаётся фару.
    (Это касается клавиш управления курсором, и всех клавиш с модификаторами Ctrl/Alt/Shift).
  • Для прекращения поиска можно также воспользоваться повторным нажатием RAlt.
  • Esc — прекращает поиск и восстанавливает исходную позицию.
  • AltRight — расширяет выделение до конца слова.
Немодальный поиск:
  • Активируется нажатием RAlt+буква (точнее символ слова: \w), или RAltSpace.
    Набирать текст нужно удерживая RAlt.
    При отпускании RAlt поиск завершается.
  • Даже после отпускания вернуться в позицию "до поиска" можно с помощью макроса на RAltBS.
  • Кроме того, поиск можно активировать нажатием RAlt+LCtrl / RAlt+RCtrl.
    В этом случае продолжается предыдущий поиск (назад / вперёд).
  • Доступны те же шорткаты, что и в обычном режиме, за исключением изменения опций.
    Чтобы работал Esc (т.е. Alt-Esc) — можно воспользоваться XKeys.
В данной реализации используются функции встроенного поиска FAR, или функции плагинов LuaFAR Search / EdtFind, если доступны
(можно запретить useLFSearch = false/useEdtFind = false).
Использование указанных плагинов позволяет выделить сразу все вхождения строки в тексте.

Настройка:
  • В начале скрипта в переменной options можно задать умолчания для параметров WholeWords, RegExp, CaseSensitive
    В процессе поиска значения можно изменить шорткатами Alt-W/G/C.
  • Специальный режим поиска: ExtraQuick: каждое нажатие не только прибавляет символ к строке поиска, но и ищет следующее вхождение.
    Активируется параметром ExtraQuick в начале скрипта, или шорткатом Alt-Q.
  • Назначив переменную useBM можно активировать установку закладки при начале поиска (при этом по Esc позиция не восстанавливается)


Актуальная версия:
raw | zip

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

Posted: Sun 02 Aug, 2015 20:34
by John Doe

Latest post of the previous page:

Shmuel wrote: без переключения режима ввода пользователем не обойтись.
Я (пока тоже теоретически) предполагаю, что режим, о котором вы говорите, можно включать автоматически, обнаружив в строке некорректный регэксп.
Фаровский регэксп должно быть легко проверить на корректность (а вот насчёт lua-паттерна не уверен).

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

Posted: Sun 02 Aug, 2015 21:16
by Shmuel
Дело в том, что начальная часть регекспа может быть и корректной, но для пользователя может не иметь смысла делать по ней инкрементальный поиск - лишнее мелькание и утомление глаз. Поэтому здесь искуственный интеллект не способен угадать, чего надо пользователю.

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

Posted: Mon 18 Apr, 2016 18:48
by buniak_a_h
Надо бы поправить мелочь: функция far.InputRecordToName при нажатии на "\" возвращает Key=BackSlash ... В результате поиск с ним тут же прекращается.

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

Posted: Fri 22 Jul, 2016 14:48
by John Doe
buniak_a_h wrote: Надо бы поправить мелочь: функция far.InputRecordToName при нажатии на "\" возвращает Key=BackSlash ... В результате поиск с ним тут же прекращается.
См. http://forum.farmanager.com/viewtopic.p ... 91#p125091 (в шапке не последняя версия)

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

Posted: Fri 22 Jul, 2016 14:59
by John Doe
P.S.
John Doe wrote: Реализован немодальный поиск:
Функциональность немодального поиска несколько уменьшилась, т.к. при нажатом Alt перестали распознаваться клавиши LCtrl/RCtrl..

Это давно уже так, вероятно с билда 4337

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

Posted: Wed 03 Aug, 2016 11:58
by aflexus
John Doe
Кириллицу не поддерживает?

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

Posted: Wed 03 Aug, 2016 12:17
by John Doe
Поддерживает

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

Posted: Wed 03 Aug, 2016 13:14
by aflexus
Хм, почему тогда при переключении раскладки RAlt перестает включать скрипт?

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

Posted: Wed 03 Aug, 2016 13:32
by John Doe
Вероятно особенность раскладки, см. http://forum.farmanager.com/viewtopic.php?f=4&t=9241

Если не хотите трогать раскладку, то нужно изменить клавишу активации на другую.

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

Posted: Wed 03 Aug, 2016 14:35
by aflexus
John Doe wrote: Вероятно особенность раскладки, см. Правый Alt не работает в русской раскладке
Да, так и оказалось. Удалил KB2970228 - все ок. Спасибо.

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

Posted: Wed 14 Dec, 2016 18:17
by ccaid
натолкнулся на непонятки.
как воспроизвести (проверялось под Win10 x64):
чистый фар, конкретно: Far30b4869.x86.20161214.7z — делаем локальный профиль. добавляем в скрипты AltScreens.lua из Addons и IncSearch2.9.7z
запускаем Far.exe, открываем в редакторе файл (changelog), активируем IncSearch нажатием RAlt, а теперь жмём LAlt1 с целью перейти в панели. Скрипт AltScreens получает управление, но akey(1) выдаёт ему клавишу RAlt вместо LAlt1.
для визуализации эффекта скрипт AltScreens можно изменить, например, так:

Code: Select all

local k=akey(1)
msgbox('AltScreens',k)
Keys('F12', k:sub(-1))
с одной стороны, в моем скрипте быстрого поиска такого эффекта нет. с другой стороны, как вызвать скрипт и подменить ему клавишу вызова непонятно, если это не баг. с третьей стороны, я и не пытался найти легальный (через доступное АПИ) способ добиться этого эффекта.

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

Posted: Wed 14 Dec, 2016 19:15
by John Doe
Что если изменить на local k=akey(1,1)

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

Posted: Wed 14 Dec, 2016 20:30
by HaRT
Попробовал этот скрипт — удобно, спасибо! (Пока пользуюсь без EdtFind.)

Однако в поиске — и модальном, и немодальном — в режиме ExtraQuick при последовательном стирании введённых символов по [b]BS[/b] самый первый (левый) символ сперва не стирается (соответственно, переход на позицию начала поиска не происходит), а при повторной попытке он-таки стирается, но вновь без перехода (и дальнейшие нажатия [b]BS[/b] ожидаемо ничего не меняют). По [b]Esc[/b] возврат происходит нормально.

А в немодальном поиске каждая новая буква (скажем, строчная) почему-то не добавляется к искомому, а ищется вперёд как таковая.

Правда, поскольку [b]RAlt[/b] у меня почему-то не распознаётся (даже при английском языке ввода — может, клавиатура ущербная, не изучал), матчинг кнопок пришлось . Но вроде бы это не должно так влиять.
Именно оно и влияло. А [b]RAlt[/b] у меня ломает KeyMan.

Win 8.1 Ent x64, Far Manager v3.0 build 4868 x86 (2016-12-12) без прочих плагинов и макросов.

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

Posted: Thu 15 Dec, 2016 05:30
by ccaid
John Doe wrote: Что если изменить на local k=akey(1,1)
в этом случае проблемы нет.
коррекцией AltScreens я тоже решил проблему (другим, менее эффективным путем).
но что не так с akey(1)? скрипты не могут свободно его использовать? или в AltScreens он был применен неправильно? или «мы просто нашли дыру»?

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

Posted: Thu 15 Dec, 2016 10:14
by John Doe
ccaid wrote: но что не так с akey(1)
Тонкости проявляются при вызове вложенного макроса через eval(macrokey,2)
В этом случае akey(1,1) вернёт нужную нам клавишу macrokey, а akey(1) же вернёт клавишу, которой выл вызван изначальный макрос, в данном случае RAlt.
Вывод: общем случае надо всегда использовать akey(1,1).

А akey(1) может понадобиться разве что в каком-то очень специальном случае.
Это имело смысл ещё до lua, когда подпрограммы можно было реализовать только через вложенные макросы.
А сейчас, имхо, только путает.

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

Posted: Thu 15 Dec, 2016 12:41
by HaRT
John Doe, воспроизводится ли у Вас поведение, описанное в первой части моего сообщения?