QuickSearch — инкрементальный поиск в редакторе

Здесь можно обсудить ваш любимый плагин.
Post Reply
User avatar
Centaur
Posts: 1083
Joined: Tue 05 Apr, 2005 20:09
Location: Novosibirsk, Russia
Been thanked: 1 time

QuickSearch — инкрементальный поиск в редакторе

Post by Centaur » Fri 09 Apr, 2010 14:03

Обсуждение плагина QuickSearch.

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

Re: QuickSearch — инкрементальный поиск в редакторе

Post by ccaid » Fri 09 Apr, 2010 20:45

тема меня весьма интересует, поэтому поизучал плагин не откладывая.
юникод это плюс. и f3 — плюс.
а вот выделенный текст не подхватывается в отличие от конкурента, который хотя бы в некоторых случаях подхватывает.
вставить из клипборда строку нельзя, в отличие от конкурента.
чего мне не хватает (нет в конкуренте, не появилось в этом) — так это единого буфера строки поиска, т.е. совмещенного с буфером обычного поиска.
(а еще: в хелпе написано про tab, но это не работает, а плагин впадает в странное состояние.)
плагин проверялся в w7hb x64 / far2 b1482 x86
еще раз повторю, я заинтересован в таком плагине, исходя из этого и писал замечания.
Фар делают добрые люди

User avatar
Тигрёнок
Posts: 390
Joined: Wed 03 May, 2006 06:07
Location: Россия
Contact:

Re: QuickSearch — инкрементальный поиск в редакторе

Post by Тигрёнок » Sat 10 Apr, 2010 05:14

Что-то в этом есть :)
Предложение: на Shift-Tab можно повесить возвращение к поиску того, что определило начало выделяемого блока. Это, ведь, может оказаться не тот блок, которого хочется, что, однако, становится ясно лишь после того, как был найден его конец.
Съешь мыша – стань настоящим клавишником!

Ann
Posts: 182
Joined: Tue 26 Jun, 2007 11:05

Re: QuickSearch — инкрементальный поиск в редакторе

Post by Ann » Sat 10 Apr, 2010 05:30

:(
Last edited by Ann on Sun 18 Apr, 2010 21:17, edited 1 time in total.

Kildor
Posts: 1515
Joined: Wed 16 Mar, 2005 06:26
Location: Новосибирск
Contact:

Re: QuickSearch — инкрементальный поиск в редакторе

Post by Kildor » Sat 10 Apr, 2010 05:32

+1 за подхватку строки из клипборда (в идеале так — как сделано в инксеарч).
Ты мне не выкай!
«ФарФорум не для пользователей!»
Upd:
P.S. Я просто поддерживаю беседу.» © Народ.

xmpp:kildor@jabber.ru

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

Re: QuickSearch — инкрементальный поиск в редакторе

Post by ccaid » Sat 10 Apr, 2010 08:14

Kildor wrote:+1 за подхватку строки из клипборда (в идеале так — как сделано в инксеарч).
а можно пояснить, почему инксёч — идеал?
Фар делают добрые люди

User avatar
Centaur
Posts: 1083
Joined: Tue 05 Apr, 2005 20:09
Location: Novosibirsk, Russia
Been thanked: 1 time

Re: QuickSearch — инкрементальный поиск в редакторе

Post by Centaur » Sat 10 Apr, 2010 10:48

Я вообще ориентировался на использование в качестве «быстро переместить курсор в пределах видимости по двум-трём буквам» и «быстро выделить блок по известным двум-трём буквам начала и конца». Поэтому у плагина нет истории, нет редактирования паттерна (кроме Backspace) и режим поиска закрывается чуть менее чем сразу.

Non-goal: поиск следующего/предыдущего вхождения текущего слова/выделенного блока/содержимого буфера. Поскольку в этом случае искомый текст у нас уже есть, желаемое тривиально макросится через обычный поиск:

Code: Select all

$If (Editor.Sel(0,4) == 0) $SelWord $End
Clip(5,2) CtrlIns
F7 ShiftIns AltL Add AltV {Add|Subtract} Enter
(обкусать начало по вкусу).
ccaid wrote:выделенный текст не подхватывается в отличие от конкурента, который хотя бы в некоторых случаях подхватывает. вставить из клипборда строку нельзя, в отличие от конкурента.
Kildor wrote:+1 за подхватку строки из клипборда (в идеале так — как сделано в инксеарч).
Вставку из буфера, наверно, сделаю. Подхват выделенного в этом случае будет тривиально реализуем макросом.

Исходников IncSearch у меня [тоже] нет, поэтому давайте говорить в конкретных терминах пользовательских сценариев «чего хотим/что делаем/что ожидается», можно с примерами.

Пока вижу это так: ShiftIns в режиме быстрого поиска добавляет содержимое буфера в формате text/unicode в конец паттерна. Если в буфере встречаются переводы строки, поведение не определено (варианты: все переводы строки заменяем на пробелы; все последовательности переводов строк заменяем на пробелы; все последовательности whitespace заменяем на одиночные пробелы).
ccaid wrote:чего мне не хватает (нет в конкуренте, не появилось в этом) — так это единого буфера строки поиска, т.е. совмещенного с буфером обычного поиска.
Юзкейсы в студию. Разве что найти следующее вхождение того, что нашли инкрементальным поиском?
ccaid wrote:(а еще: в хелпе написано про tab, но это не работает, а плагин впадает в странное состояние.)
У меня всё нормально. Как именно не работает, какое странное состояние?
Тигрёнок wrote:Предложение: на Shift-Tab можно повесить возвращение к поиску того, что определило начало выделяемого блока.
Уже висит на Tab, или я чего-то не понял?
Тигрёнок wrote:Это, ведь, может оказаться не тот блок, которого хочется, что, однако, становится ясно лишь после того, как был найден его конец.
Казалось бы, начало выделяется сразу по мере поиска, почему сразу не видно, что это не то начало?
Ann wrote:Ещё хорошо бы иметь возможность не прерывая поиска выйти из редактора в панели/просмотр/другойФайл..., а затем вновь вернуться в ту же позицию поиска. :oops:
Это как/зачем?

Ann
Posts: 182
Joined: Tue 26 Jun, 2007 11:05

Re: QuickSearch — инкрементальный поиск в редакторе

Post by Ann » Sat 10 Apr, 2010 13:01

:(
Last edited by Ann on Sun 18 Apr, 2010 21:16, edited 1 time in total.

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

Re: QuickSearch — инкрементальный поиск в редакторе

Post by ccaid » Sat 10 Apr, 2010 14:15

Centaur wrote: у плагина нет истории, нет редактирования паттерна (кроме Backspace) и режим поиска закрывается чуть менее чем сразу.
то что надо.
Centaur wrote:Если в буфере встречаются переводы строки, поведение не определено (варианты: все переводы строки заменяем на пробелы; все последовательности переводов строк заменяем на пробелы; все последовательности whitespace заменяем на одиночные пробелы).
замены смысла не имеют, все равно не найдет. можно вообще ничего не заменять, и получим разумное поведение естественным образом — будет искаться подстрока до первого перевода строки.
Centaur wrote:
ccaid wrote:чего мне не хватает (нет в конкуренте, не появилось в этом) — так это единого буфера строки поиска, т.е. совмещенного с буфером обычного поиска.
Юзкейсы в студию. Разве что найти следующее вхождение того, что нашли инкрементальным поиском?
именно. нашли первое вхождение, в его окрестности выполнили какие-то действия, хотим продолжить.
Centaur wrote:
ccaid wrote:(а еще: в хелпе написано про tab, но это не работает, а плагин впадает в странное состояние.)
У меня всё нормально. Как именно не работает, какое странное состояние?
„любые предложения люди понимают иначе, чем тот, кто их вносит.“
теперь я разобрался, все работает.
Centaur wrote:
Тигрёнок wrote:Предложение: на Shift-Tab можно повесить возвращение к поиску того, что определило начало выделяемого блока.
Уже висит на Tab, или я чего-то не понял?
в документации не указано, до этого нужно еще додуматься.
Фар делают добрые люди

User avatar
Centaur
Posts: 1083
Joined: Tue 05 Apr, 2005 20:09
Location: Novosibirsk, Russia
Been thanked: 1 time

Re: QuickSearch — инкрементальный поиск в редакторе

Post by Centaur » Sat 10 Apr, 2010 16:09

ccaid wrote:
Centaur wrote:найти следующее вхождение того, что нашли инкрементальным поиском?
именно. нашли первое вхождение, в его окрестности выполнили какие-то
действия, хотим продолжить.
Не уверен, что смогу запихать строку в не принадлежащую мне историю. Кажется, у FAR’а нет соответствующего API, а ковыряться во внутренностях не хочу.

В принципе можно сделать плагину минимум истории — помнить последнюю пару паттернов и по отдельному пункту в меню их переискивать. Но это надо реализовать и потыкать пальцами, а то пока непонятно, в каком виде будет удобно.

Пока что в моём основном юзкейсе паттерны сменяются с неимоверной быстротой, так что высока вероятность, что к следующему поиску паттерна он уже успеет пару раз смениться => нужна(?) более длинная история => гемор.
ccaid wrote:
ccaid wrote:(а еще: в хелпе написано про tab, но это не работает, а плагин впадает в странное состояние.)
„любые предложения люди понимают иначе, чем тот, кто их вносит.“
теперь я разобрался, все работает.
Да, фича неинтуитивнаяя получилась. Есть идеи, как её удачнее документировать?

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

Re: QuickSearch — инкрементальный поиск в редакторе

Post by ccaid » Sat 10 Apr, 2010 16:38

Centaur wrote:Не уверен, что смогу запихать строку в не принадлежащую мне историю. Кажется, у FAR’а нет соответствующего API, а ковыряться во внутренностях не хочу.

В принципе можно сделать плагину минимум истории — помнить последнюю пару паттернов и по отдельному пункту в меню их переискивать.
отдельное кнопкосочетание не рулит. в идеале, одна и та же комбинация должна продолжать поиск и обычный, и быстрый.
Centaur wrote:
ccaid wrote:
ccaid wrote:(а еще: в хелпе написано про tab, но это не работает, а плагин впадает в странное состояние.)
„любые предложения люди понимают иначе, чем тот, кто их вносит.“
теперь я разобрался, все работает.
Да, фича неинтуитивнаяя получилась. Есть идеи, как её удачнее документировать?
Remember the current position and search for another second pattern.
и в конце добавить, что повторное нажатие Tab вернет к поиску/редактированию первого патерна.
Фар делают добрые люди

User avatar
Тигрёнок
Posts: 390
Joined: Wed 03 May, 2006 06:07
Location: Россия
Contact:

Re: QuickSearch — инкрементальный поиск в редакторе

Post by Тигрёнок » Sat 10 Apr, 2010 20:51

Centaur wrote:Уже висит на Tab, или я чего-то не понял?
Прошу прощения. Это я не понял.
Съешь мыша – стань настоящим клавишником!

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

Re: QuickSearch — инкрементальный поиск в редакторе

Post by DeeZ » Sat 10 Apr, 2010 21:29

Установил, плагин очень порадовал возможностями, но не хватает (было в старом incsearch):
1. подхват уже выделенного фрагмента (при вызове плагина).
2. поиск по вставке из буфера (сейчас поиск просто закрывается).
3. прекратить ввод символов, если дальше ничего не найдено (сейчакс плагин просто пишет "no found" но буквы продолжают вводиться).
4. подсветка слова "Не найдено" появрче (просто восприниматься будет лучше).
5. учет регистра
можно все это сделать настраиваемым (из настроек плагина)

ccaid wrote:
Kildor wrote:+1 за подхватку строки из клипборда (в идеале так — как сделано в инксеарч).
а можно пояснить, почему инксёч — идеал?
скорее удобство и привычка
Centaur wrote:Поскольку в этом случае искомый текст у нас уже есть, желаемое тривиально макросится через обычный поиск:
это нужно в случае если у меня в буфере длинная строка, которая не полностью есть в данном файле, например хотя бы потому что это просто ключ реестра, с другим значением. по этому простой поиск не подходит.
И это просто пример, подобный поиск часто нужен не только в реестре.
на счет что делать с переводом строки.. может заменять на Tab (:). поиск в несколько строк в IncSearch небыло, как его использовать не знаю :) по этому можно вообще искать только 1 строку. переносы и пробелы в начале лучше удалять.
Centaur wrote:поэтому давайте говорить в конкретных терминах пользовательских сценариев «чего хотим/что делаем/что ожидается», можно с примерами.
в режиме поиска нажимаем Shift+Ins или Ctrl+V - из буфера вставляется по 1 букве, и идет поиск. если при добавлении следующего символа, паттерн уже не найден - останавливать вставку из бувера, либо вообще прекратить поиск (см мой п.3)

User avatar
Centaur
Posts: 1083
Joined: Tue 05 Apr, 2005 20:09
Location: Novosibirsk, Russia
Been thanked: 1 time

Re: QuickSearch — инкрементальный поиск в редакторе

Post by Centaur » Sun 11 Apr, 2010 07:29

ccaid wrote:отдельное кнопкосочетание не рулит. в идеале, одна и та же комбинация должна продолжать поиск и обычный, и быстрый.
Тогда из легальных вариантов остаётся только… при закрытии быстрого поиска запостить макрос F7 "текст паттерна" Enter. Что уже тоже немножечко изврат.
DeeZ wrote:1. подхват уже выделенного фрагмента (при вызове плагина).
Вот с подхватом выделенного фрагмента у меня есть конфликтующая идея. А именно, чтобы при выделенном блоке и нажатии Tab сразу после начала быстрого поиска текущее выделение расширялось.

Если же кому-то надо именно поиск выделенного текста, макросы вам в руки. Clip(5,2) CtrlIns F11 q f ShiftIns, например.
DeeZ wrote:3. прекратить ввод символов, если дальше ничего не найдено (сейчакс плагин просто пишет "no found" но буквы продолжают вводиться).
Спорно. Текущее поведение полностью соответствует привычке после ошибочного нажатия сразу давить Backspace. Если ввод прекращать, эта привычка ломается — Backspace будет стирать не то, что ожидается (последний правильно набранный символ).
DeeZ wrote:4. подсветка слова "Не найдено" появрче (просто восприниматься будет лучше).
ECTL_SETTITLE не предоставляет возможностей выделения. Гадить прямо в консоль — не хочу, ибо не оберёшься потом багрепортов про выключенную строку состояния; про редакторы, открытые из других плагинов не на полный экран; и т.д.
DeeZ wrote:5. учет регистра
В принципе можно, надо только придумать, как. Долговременная настройка (с диалогом) и/или горячая клавиша в режиме поиска (какая).

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

Re: QuickSearch — инкрементальный поиск в редакторе

Post by ccaid » Sun 11 Apr, 2010 09:30

Centaur wrote:
ccaid wrote:отдельное кнопкосочетание не рулит. в идеале, одна и та же комбинация должна продолжать поиск и обычный, и быстрый.
Тогда из легальных вариантов остаётся только… при закрытии быстрого поиска запостить макрос F7 "текст паттерна" Enter. Что уже тоже немножечко изврат.
учитывая, что сейчас я использую плагин поиска Max Rusov'а, такой вшитый макрос не решит задачу. по-хорошему, быстрый поиск надо бы совместить с обычным поиском. некоторые сложности рассосались бы сами собой. кстати, может быть Max Rusov что посоветует по этому вопросу?
Centaur wrote:Вот с подхватом выделенного фрагмента у меня есть конфликтующая идея. А именно, чтобы при выделенном блоке и нажатии Tab сразу после начала быстрого поиска текущее выделение расширялось.
не понял идею.
Centaur wrote:В принципе можно, надо только придумать, как. Долговременная настройка (с диалогом) и/или горячая клавиша в режиме поиска (какая).
а стандартный вызов конфигурации плагина Alt-Shift-F9 нельзя ли здесь использовать?
Фар делают добрые люди

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

Re: QuickSearch — инкрементальный поиск в редакторе

Post by ccaid » Sun 11 Apr, 2010 09:42

по поводу вставки многострочного фрагмента — стандартный поиск и поиск Max Rusov'а переводы строки заменяют на пробелы. делайте выводы.
Фар делают добрые люди

Post Reply

Return to “Обсуждение плагинов”