Page 4 of 6

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

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

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

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


Актуальная версия: 2.10

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

Posted: Thu 15 Dec, 2016 15:39
by John Doe

Latest post of the previous page:

То ли не воспроизводится, то ли я не уловил суть проблемы.
Давайте по частям:

(1) У меня любой символ стирается сразу.
То что вы описываете похоже на неперерисовку редактора. Версия фар последняя ночная?

(2) А при стирании последнего символа действительно можно было бы ожидать перехода в исходную позицию, как до начала поиска.
В данный момент этого не происходит. Запишу в todo, но не уверен что вернусь к этому в ближайшее время.

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

Posted: Thu 15 Dec, 2016 16:15
by HaRT
John Doe wrote: можно было бы ожидать перехода в исходную позицию, как до начала поиска.
В данный момент этого не происходит. Запишу в todo
И на том спасибо.
Ну и я заметил ряд более мелких недостатков, но, похоже, сейчас нет смысла их описывать.

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

Posted: Thu 15 Dec, 2016 16:33
by John Doe
HaRT wrote: похоже, сейчас нет смысла их описывать.
Отчего же) Вдруг как раз это сдвинет чашу весов.
В своё время занялся этим скриптом как раз потому, что раздражали недостатки существующего.

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

Posted: Sat 17 Dec, 2016 08:27
by John Doe
John Doe wrote: при стирании последнего символа действительно можно было бы ожидать перехода в исходную позицию
Посмотрел, и всё оказалось просто.
Надо BS = {} заменить на BS = {[""]=OriginalPos}

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

Posted: Tue 20 Dec, 2016 00:59
by HaRT
John Doe wrote: всё оказалось просто
Спасибо, починилось.
John Doe wrote: Отчего же)
Извольте, блоха: если в поиске — как модальном, так и нет — после ввода нескольких „продуктивных“ символов (по которым находится вхождение) ввести „непродуктивный“, то каретка перескакивает из конца в начало последнего найденного фрагмента. (У меня это особенно заметно, поскольку включен крест во всё окно).

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

Posted: Tue 20 Dec, 2016 19:12
by HaRT
Сейчас экспериментировал, пытаясь изолировать проблему с поиском слэша, и напоролся на падение плагина. Вот минимальный сценарий:
1. Запускаю Фар без прочих плагинов и макросов. (Титульный макрос v2.9 немодифицированный.)
2. Открываю в редакторе какой-нибудь файл — хоть пустой, хоть новый.
3. Запускаю модальный поиск ([b]RAlt[/b]), пытаюсь переключить одну из опций: Alt-W/G/C.
Ожидаю, что макрос продолжит работу (останется в режиме поиска).
Вместо этого макрос .

Если опции переключать при непустой строке ввода, то ничего не падает, окошечко опции кратковременно показывается (полностью ли правильный в нём текст, понять не успеваю), однако на то, что находится (разумеется, когда файл содержательный), опция влияния не оказывает. Например, ищу одну букву F, включаю Case Sensitive — находятся всё равно и строчные, и заглавные. Повторюсь, это без EdtFind.

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

Posted: Wed 21 Dec, 2016 16:05
by fps
Если искомая строка присутствует в файле только выше текущей позиции, то во-первых она не находитя, во-вторых промаргивает диалог

Code: Select all

╔═════════ Search ══════════╗
║ Could not find the string ║
║            "z"            ║
╟───────────────────────────╢
║          { OK }           ║
╚═══════════════════════════╝
Первое так и задумано? К примеру поиск во вьювере предлагает поискать с начала файла, если ничего не находит. На мой взгляд так было бы более логично.
Второе просто как-то неаккуратненько. Нельзя без этого?

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

Posted: Wed 21 Dec, 2016 16:30
by HaRT
fps wrote: поискать с начала файла, если ничего не находит
Присоединяюсь, это было бы неплохо оформить ещё одной опцией: “Wrap around” (например, по [b]AltR[/b]).
fps wrote: промаргивает диалог
Может, в такой форме это и не лучший вариант, но ненавязчивая индикация, что поиск перевалил через конец/начало файла в любом случае полезна.

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

Posted: Wed 21 Dec, 2016 18:10
by John Doe
Приходится учитывать что в данной форме скрипт отягощён ограничениями, накладываемыми тем фактом, что не реализуя собственного поиска скрипт паразитирует на встроенном (или EditFind).
Работая над ним, я уже как раз планировал уйти от этого, но прям моментально не вышло (кажется споткнулся на поиске назад), а потом просто кончился запал, т.к. всё в общем и так работало..

Так вот, к чему это я.
Предлагать искать с начала когда строка не нашлась впереди можно и сейчас, если используется EditFind.
Встроенный поиск такой возможностью не обладает.
Прикрутить её "сверху" тоже реально, но имхо это будет неоправданно, ибо получится каскад костылей.

P.S.
Баг конечно исправлю, другие упомянутые недостатки тоже посмотрю и прокомментирую отдельно.

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

Posted: Thu 06 Apr, 2017 15:32
by ccaid
если данный скрипт расположить в одной папке с http://forum.farmanager.com/viewtopic.php?t=8128, то при запуске падает плагин LuaMacro и тянет за собой Far. если скрипты разнести по разным (под)папкам, проблемы нет.

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

Posted: Thu 06 Apr, 2017 15:51
by HaRT
ccaid, если падает LuaMacro, то почему Вы пишете об этом тут?! (А также там: viewtopic.php?f=60&t=8128&p=143287#p143287.)
Кроме того, лично у меня оба скрипта лежат в одной папке, и ничего не падает. Что-то Вы недоговариваете.

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

Posted: Thu 06 Apr, 2017 18:32
by ccaid
HaRT, походу устал думать к вечеру. исправляюсь

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

Posted: Mon 24 Apr, 2017 18:25
by DeeZ
Если при поиске, после очередного символа строка уже не находится - проскакивает окно "не найдено". тут ок. стираем 1 символ, и пробуем поискать следующее вхождени - проскакивает окно не найденно. хотя эта строка уже есть, но плагин ищет еще старую.
Например, открыть файл IncSearch.lua
Поскать s - надет
дописать вторую ss - найдет
sss - выдаст что не найдено.
Удаляем одну S. в строке поиска становится ss. не находит (хотя находил).
Ждем F3 что бы повторить поиск - ошибка.

Если стереть еще одну s и дописать ее снова (что бы опять стало ss) - все работает как надо.

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

Posted: Mon 24 Apr, 2017 22:09
by John Doe
Может быть дело в настройках, но у меня не воспроизводится.
Версия скрипта актуальная?

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

Posted: Wed 26 Apr, 2017 07:06
by DeeZ
версия последняя. из шапки. FAR 4900

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

Posted: Wed 26 Apr, 2017 07:30
by John Doe
Да, тут баг, проявляется при отсутствии плагина EditFind.

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

Posted: Wed 26 Apr, 2017 08:19
by John Doe
HaRT wrote: однако на то, что находится (разумеется, когда файл содержательный), опция влияния не оказывает
Тут оказалось просто: после редизайна диалога поиска в билде 4473 позиции опций изменились, что в скрипте не учтено.
HaRT wrote: пытаясь изолировать проблему с поиском слэша
Что за проблема-то?
Планирую перевыложить скрипт с накопившимися исправлениями.