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

Здесь выкладываются готовые к использованию макросы и скрипты.
User avatar
John Doe
Бюрократ
Posts: 11127
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 12 times
Been thanked: 72 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: 11127
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 12 times
Been thanked: 72 times

Обновление

Post by John Doe » Thu 16 Oct, 2014 15:33

[*]Адаптация к изменениям в билде 4098.
[*]Внутренние изменения и прочая косметика.

Maximus5
Posts: 3292
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 4 times
Contact:

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

Post by Maximus5 » Sat 18 Oct, 2014 22:07

Попробовал. Первым делом добавил в enterSearchMode() первой строчкой BM.Add() и закомментарил восстановление позиции по Esc )
Может это опцией в начале файла оформить?

AleXH
Posts: 1000
Joined: Sun 12 Apr, 2009 05:21
Been thanked: 1 time

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

Post by AleXH » Sun 19 Oct, 2014 06:26

Из пожеланий:
1. Если искомое слово содержит более 1-го символа, то при нахождении вхождения за правой границей экрана, из-за правой границы виден лишь 1-й символ найденного слова. Хотелось бы видеть всё слово (фразу) с позиционированием курсора на 1-й символ.
2. Поиск по регэкспам.

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

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

Post by John Doe » Sun 19 Oct, 2014 10:05

>закомментарил восстановление позиции по Esc
>Может это опцией в начале файла оформить?
Думал об этом, но показалось лишним, т.к. и без Esc есть несколько способов выйти из режима поиска.
Насчёт безусловного вызова BM.Add() тоже есть сомнения: стек закладок будет захламляться.

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

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

Post by John Doe » Sun 19 Oct, 2014 10:16

>Хотелось бы видеть всё слово (фразу) с позиционированием курсора на 1-й символ.
Данный скрипт целиком полагается на EditFind (или на встроенный поиск), возможно стоит усовершенствовать там (впрочем не факт, хотелка специфическая).

>Поиск по регэкспам
Как автор аналогичного скрипта вы и без меня знаете, что поиск с регэкспами будет работать, стоит только предварительно включить его в настройках поиска.
Т.е. очевидно что вам хотелось бы большего удобства.
Так как именно вы это видите?

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

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

Post by HaRT » Sun 19 Oct, 2014 12:45

John Doe wrote:Т.е. очевидно что вам хотелось бы большего удобства.
Так как именно вы это видите?
В тех реализациях инкрементного поиска, которые мне кажутся наиболее удобными, есть возможность на лету переключать такие параметры, как case sensitive, whole words и regular expression. Делается это горячими клавишами — например, AltС, AltW и AltG соответственно.
Фар есть инструмент, а не нянька. © 2009 DrKnS

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

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

Post by John Doe » Sun 19 Oct, 2014 13:00

Данный скрипт сам вообще не ищет.
И наворачивать AltС, AltW и AltG вряд ли целесообразно (при текущей архитектуре), т.к. может получиться нагромождение костылей.

Другой вопрос, что есть смысл и сам поиск осуществлять скриптом. Но это уже будет совсем другой скрипт.

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

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

Post by John Doe » Mon 20 Oct, 2014 15:38

AleXH wrote:Хотелось бы видеть всё слово (фразу) с позиционированием курсора на 1-й символ.
Сравнил поведение EdtFind и стандартного поиска.
Стандартный позиционируется так, чтобы до правой границы всегда оставалось несколько символов.
Так что думаю уместно сообщить о вашем пожелании в тему EdtFind.

Напомню также, что при использовании IncSearch можно воспользоваться курсорными клавишами.
Это конечно отключит режим поиска, но его несложно включить обратно, и восстановить искомую строку с помощью BS.

Maximus5
Posts: 3292
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 4 times
Contact:

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

Post by Maximus5 » Thu 23 Oct, 2014 13:59

Пробел ищет, а вот Таб что-то не хочет. Таб проваливается в редактор завершая поиск.

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

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

Post by John Doe » Thu 23 Oct, 2014 14:06

Если включить регэкспы, то можно искать \t.
Или можно добавить в таблицу xform соответствующую запись: Tab = " " (в кавычках символ табуляции, можно ввести с помощью CtrQ Tab)

Maximus5
Posts: 3292
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 4 times
Contact:

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

Post by Maximus5 » Thu 23 Oct, 2014 14:20

Спасибо, заработало

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

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

Post by ccaid » Fri 24 Oct, 2014 04:51

у вас подхват выделенного сделан более агрессивно: достаточно находиться на той же строке для его срабатывания. это сознательно сделано?
Фар делают добрые люди

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

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

Post by John Doe » Fri 24 Oct, 2014 09:26

ccaid, мешает?

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

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

Post by ccaid » Fri 24 Oct, 2014 12:45

непривычно, пока наблюдаю
Фар делают добрые люди

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

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

Post by John Doe » Sun 26 Oct, 2014 16:30

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

Post Reply

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