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

Здесь выкладываются готовые к использованию макросы и скрипты.
User avatar
John Doe
Бюрократ
Posts: 11075
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 11 times
Been thanked: 64 times

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

Post by John Doe » Mon 04 Aug, 2014 23:58

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

Управление:
  • 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 позиция не восстанавливается)


Актуальная версия: IncSearch2.9.7z

User avatar
John Doe
Бюрократ
Posts: 11075
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 11 times
Been thanked: 64 times

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

Post by John Doe » Thu 15 Dec, 2016 15:39

Latest post of the previous page:

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

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

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

User avatar
HaRT
Moderator
Posts: 7980
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 66 times
Been thanked: 97 times

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

Post by HaRT » Thu 15 Dec, 2016 16:15

John Doe wrote: можно было бы ожидать перехода в исходную позицию, как до начала поиска.
В данный момент этого не происходит. Запишу в todo
И на том спасибо.
Ну и я заметил ряд более мелких недостатков, но, похоже, сейчас нет смысла их описывать.
Фар есть инструмент, а не нянька. © 2009 DrKnS

User avatar
John Doe
Бюрократ
Posts: 11075
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 11 times
Been thanked: 64 times

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

Post by John Doe » Thu 15 Dec, 2016 16:33

HaRT wrote: похоже, сейчас нет смысла их описывать.
Отчего же) Вдруг как раз это сдвинет чашу весов.
В своё время занялся этим скриптом как раз потому, что раздражали недостатки существующего.

User avatar
John Doe
Бюрократ
Posts: 11075
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 11 times
Been thanked: 64 times

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

Post by John Doe » Sat 17 Dec, 2016 08:27

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

User avatar
HaRT
Moderator
Posts: 7980
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 66 times
Been thanked: 97 times

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

Post by HaRT » Tue 20 Dec, 2016 00:59

John Doe wrote: всё оказалось просто
Спасибо, починилось.
John Doe wrote: Отчего же)
Извольте, блоха: если в поиске — как модальном, так и нет — после ввода нескольких „продуктивных“ символов (по которым находится вхождение) ввести „непродуктивный“, то каретка перескакивает из конца в начало последнего найденного фрагмента. (У меня это особенно заметно, поскольку включен крест во всё окно).
Фар есть инструмент, а не нянька. © 2009 DrKnS

User avatar
HaRT
Moderator
Posts: 7980
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 66 times
Been thanked: 97 times

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

Post by HaRT » Tue 20 Dec, 2016 19:12

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

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

fps
Posts: 163
Joined: Wed 20 Apr, 2005 06:39
Has thanked: 11 times
Been thanked: 3 times

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

Post by fps » Wed 21 Dec, 2016 16:05

Если искомая строка присутствует в файле только выше текущей позиции, то во-первых она не находитя, во-вторых промаргивает диалог

Code: Select all

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

User avatar
HaRT
Moderator
Posts: 7980
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 66 times
Been thanked: 97 times

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

Post by HaRT » Wed 21 Dec, 2016 16:30

fps wrote: поискать с начала файла, если ничего не находит
Присоединяюсь, это было бы неплохо оформить ещё одной опцией: “Wrap around” (например, по [b]AltR[/b]).
fps wrote: промаргивает диалог
Может, в такой форме это и не лучший вариант, но ненавязчивая индикация, что поиск перевалил через конец/начало файла в любом случае полезна.
Фар есть инструмент, а не нянька. © 2009 DrKnS

User avatar
John Doe
Бюрократ
Posts: 11075
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 11 times
Been thanked: 64 times

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

Post by John Doe » Wed 21 Dec, 2016 18:10

Приходится учитывать что в данной форме скрипт отягощён ограничениями, накладываемыми тем фактом, что не реализуя собственного поиска скрипт паразитирует на встроенном (или EditFind).
Работая над ним, я уже как раз планировал уйти от этого, но прям моментально не вышло (кажется споткнулся на поиске назад), а потом просто кончился запал, т.к. всё в общем и так работало..

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

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

ccaid
Posts: 802
Joined: Fri 12 Jun, 2009 16:04
Has thanked: 9 times
Been thanked: 5 times

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

Post by ccaid » Thu 06 Apr, 2017 15:32

если данный скрипт расположить в одной папке с http://forum.farmanager.com/viewtopic.php?t=8128, то при запуске падает плагин LuaMacro и тянет за собой Far. если скрипты разнести по разным (под)папкам, проблемы нет.
Фар делают добрые люди

User avatar
HaRT
Moderator
Posts: 7980
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 66 times
Been thanked: 97 times

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

Post by HaRT » Thu 06 Apr, 2017 15:51

ccaid, если падает LuaMacro, то почему Вы пишете об этом тут?! (А также там: viewtopic.php?f=60&t=8128&p=143287#p143287.)
Кроме того, лично у меня оба скрипта лежат в одной папке, и ничего не падает. Что-то Вы недоговариваете.
Фар есть инструмент, а не нянька. © 2009 DrKnS

ccaid
Posts: 802
Joined: Fri 12 Jun, 2009 16:04
Has thanked: 9 times
Been thanked: 5 times

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

Post by ccaid » Thu 06 Apr, 2017 18:32

HaRT, походу устал думать к вечеру. исправляюсь
Фар делают добрые люди

DeeZ
Posts: 97
Joined: Sat 20 Mar, 2010 18:48

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

Post by DeeZ » Mon 24 Apr, 2017 18:25

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

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

User avatar
John Doe
Бюрократ
Posts: 11075
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 11 times
Been thanked: 64 times

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

Post by John Doe » Mon 24 Apr, 2017 22:09

Может быть дело в настройках, но у меня не воспроизводится.
Версия скрипта актуальная?

DeeZ
Posts: 97
Joined: Sat 20 Mar, 2010 18:48

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

Post by DeeZ » Wed 26 Apr, 2017 07:06

версия последняя. из шапки. FAR 4900

User avatar
John Doe
Бюрократ
Posts: 11075
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 11 times
Been thanked: 64 times

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

Post by John Doe » Wed 26 Apr, 2017 07:30

Да, тут баг, проявляется при отсутствии плагина EditFind.

User avatar
John Doe
Бюрократ
Posts: 11075
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 11 times
Been thanked: 64 times

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

Post by John Doe » Wed 26 Apr, 2017 08:19

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

Post Reply

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

Who is online

Users browsing this forum: No registered users and 3 guests