Latest post of the previous page:
насколько я понял, incsearch жестко перехватывает shift-ins. почему бы не сделать также. все работает, буфер вставляется, из плагина не вываливаемся. даже мысли не возникало, что могут быть здесь какие-то проблемы.QuickSearch — инкрементальный поиск в редакторе
- Centaur
- Posts: 1083
- Joined: Tue 05 Apr, 2005 20:09
- Location: Novosibirsk, Russia
- Been thanked: 2 times
Re: QuickSearch — инкрементальный поиск в редакторе
ccaid wrote:поведение плагина после второго нажатия tab отличается от поведения до первого нажатия
0.0.2.3.DeeZ wrote:да. помогло =) но стало сильно моргать при вводе каждой новой буквы в паттерн.Centaur wrote:Добавил принудительную перерисовку, вдруг поможет?
Каким боком это относится к фиче выделения блока? Ну, то есть, почему так сильно перегружать Tab?ccaid wrote:предложение на обсуждение. сделать такую фичу: после второго нажатия tab — (1) если патерн вводился явно, то в нем оставляется только та часть, которая была найдена, и удаляется из него ненайденный хвост; (2) если патерн не вводился явно, то подхватывается выделение.
Потому что я не вижу, как можно жёстко перехватить занятую макросом клавишу, если не писать собственный цикл выборки сообщений. А именно от этого я ушёл, чтобы работали макросы вида F11 q f ShiftIns.ccaid wrote:насколько я понял, incsearch жестко перехватывает shift-ins. почему бы не сделать также.
А что, у тебя и на CtrlV тоже макрос?
И да, кстати. Как часто мы вообще хотим именно вставлять содержимое буфера в паттерн? У меня сложилось впечатление, что обычно мы хотим несколько другого: (а) найти следующее вхождение буфера; (б) подхватить в буфер текущее выделение и найти его следующее вхождение. Ну так надо написать макросы на эти конкретные юзкейсы. Им наличие макроса на ShiftIns будет по барабану.
Code: Select all
Apps = F11 q f ;QuickSearch Forward
ShiftApps = F11 q b ;QuickSearch Backward
CtrlApps = F11 q f ShiftIns ;QuickSearch clipboard forward
CtrlShiftApps = F11 q b ShiftIns ;QuickSearch clipboard backward
AltApps = Clip(5,2) CtrlIns F11 q f ShiftIns ;QuickSearch selected forward
AltShiftApps = Clip(5,2) CtrlIns Editor.Sel(1,0) F11 q b ShiftIns ;QuickSearch selected backward
Code: Select all
F11 q f eval(waitkey(0,0))
Re: QuickSearch — инкрементальный поиск в редакторе
сторонний эффект. когда tab нажимается сразу после входа в поиск, то имеющееся выделение играет роль первого патерна. остался один шаг, чтобы убрать между ними разницу — „засунуть“ выделение в буфер патерна. а по поводу удаления хвоста: когда вставляется большой, особенно многострочный, фрагмент, то скорее всего куча символов будет лишней и породит сообщение ‘not found’. забивать их долго, а тут два нажатия и готово.Centaur wrote:Каким боком это относится к фиче выделения блока? Ну, то есть, почему так сильно перегружать Tab?ccaid wrote:предложение на обсуждение. сделать такую фичу: после второго нажатия tab — (1) если патерн вводился явно, то в нем оставляется только та часть, которая была найдена, и удаляется из него ненайденный хвост; (2) если патерн не вводился явно, то подхватывается выделение.
согласен, что вещи не первой необходимости, и если никому не нравятся, отстаивать их не буду.
понятно.Centaur wrote:Потому что я не вижу, как можно жёстко перехватить занятую макросом клавишу, если не писать собственный цикл выборки сообщений. А именно от этого я ушёл, чтобы работали макросы вида F11 q f ShiftIns.
нет. но shift-ins у меня на рефлексах и под руками, а про ctrl-v я буду долго вспоминать.Centaur wrote:А что, у тебя и на CtrlV тоже макрос?
может и нечасто. тем более: специфический обход для редко используемой вещи не будет использоваться никогда.Centaur wrote:И да, кстати. Как часто мы вообще хотим именно вставлять содержимое буфера в паттерн?
много комбинаций, ниасилить/низапомнить. у меня в incrsearch:Centaur wrote:Code: Select all
Apps = F11 q f ;QuickSearch Forward ShiftApps = F11 q b ;QuickSearch Backward CtrlApps = F11 q f ShiftIns ;QuickSearch clipboard forward CtrlShiftApps = F11 q b ShiftIns ;QuickSearch clipboard backward AltApps = Clip(5,2) CtrlIns F11 q f ShiftIns ;QuickSearch selected forward AltShiftApps = Clip(5,2) CtrlIns Editor.Sel(1,0) F11 q b ShiftIns ;QuickSearch selected backward
вперед Alt/ (ассоциация с оперой)
назад Alt. (потому что рядом с предыдущей)
есть еще повторить поиск туда и обратно, но от них хорошо бы избавиться, переложить на повтор обычного поиска, как я уже говорил в самом начале треда.
не понял юзкейсCentaur wrote:Или ещё вот так. Отдаём первую клавишу после запуска плагина необработанной:Code: Select all
F11 q f eval(waitkey(0,0))
Фар делают добрые люди
Re: QuickSearch — инкрементальный поиск в редакторе
дважды мутный момент. если снять крестик с ‘send macro to plugins’ в диалоге редактирования макро, то последовательность клавиш не должна посылаться не только в ненужный плагин, но и в нужный. нет? а на практике снятие крестика не влияет ни на что, последовательность доходит до нужного плагина.HaRT wrote:NoSendKeysToPlugins пробовали?
Фар делают добрые люди
Re: QuickSearch — инкрементальный поиск в редакторе
Уважаемые, что то перемудрили уже по моему.
все что нужно, как я вижу это:
1. подхватить и вставить патерном выделеный текст.
2. вынести поиск вперед назад в отдельный пункт плагина.
Это решит сразу несколько проблем.
отработав плагин оставит выделение. если мы хотим продолжить - выбираем "найти дальше" (п.2). плагин это выделение подхватит (п.1) и продолжит поиск.
И не большой баг:
в COPYING ищем 13/ (именно слеш). Не находим, но при каждом следующем введенном символе экран дергается, видимо пытаясь продолжить поиск дальше. Может имеем смысл менять позицию в редакторе только если найдено что-то, а не при каждом нажатии (обновлении патерна)?
это оооочень тормозит на больших файлах. сейчас проверил на Словаре Даля (txt 17mb). вводишь слово, и если дальше ничего не найдено, то ждешь на каждую новую букву секунды две.
пишу быстро, по этом при работе с большими файлами может не комфортно подвесить фар. пока поймешь что дальше не найдено..
я все таки за запрет ввдоить следующие буквы, если не найдено.
про то что если поиск начинать с Tab и уже есть выделение - то найденное добавляется к выделению - я подумал это фича. если выделения нет - то блок начинается там где стоял курсор..
А как вообще планировалось это должно работать, если начинать поиск с Tab?
все что нужно, как я вижу это:
1. подхватить и вставить патерном выделеный текст.
2. вынести поиск вперед назад в отдельный пункт плагина.
Это решит сразу несколько проблем.
отработав плагин оставит выделение. если мы хотим продолжить - выбираем "найти дальше" (п.2). плагин это выделение подхватит (п.1) и продолжит поиск.
И не большой баг:
в COPYING ищем 13/ (именно слеш). Не находим, но при каждом следующем введенном символе экран дергается, видимо пытаясь продолжить поиск дальше. Может имеем смысл менять позицию в редакторе только если найдено что-то, а не при каждом нажатии (обновлении патерна)?
это оооочень тормозит на больших файлах. сейчас проверил на Словаре Даля (txt 17mb). вводишь слово, и если дальше ничего не найдено, то ждешь на каждую новую букву секунды две.
пишу быстро, по этом при работе с большими файлами может не комфортно подвесить фар. пока поймешь что дальше не найдено..
я все таки за запрет ввдоить следующие буквы, если не найдено.
про то что если поиск начинать с Tab и уже есть выделение - то найденное добавляется к выделению - я подумал это фича. если выделения нет - то блок начинается там где стоял курсор..
А как вообще планировалось это должно работать, если начинать поиск с Tab?
Re: QuickSearch — инкрементальный поиск в редакторе
достаточно часто. удобно при редактировании конфигов. Поискать, например, какое значение параметра было в старом конфиге.Centaur wrote:И да, кстати. Как часто мы вообще хотим именно вставлять содержимое буфера в паттерн?
найти вхождение наиболее бОльшей части из буфера в тексте.Centaur wrote: У меня сложилось впечатление, что обычно мы хотим несколько другого: (а) найти следующее вхождение буфера;
- Centaur
- Posts: 1083
- Joined: Tue 05 Apr, 2005 20:09
- Location: Novosibirsk, Russia
- Been thanked: 2 times
Re: QuickSearch — инкрементальный поиск в редакторе
Данный макрос позволяет обойти проблему наличия макроса на ShiftIns, при условии, что ShiftIns — первая клавиша, нажимаемая после запуска поиска.ccaid wrote:не понял юзкейсCentaur wrote:Или ещё вот так. Отдаём первую клавишу после запуска плагина необработанной:Code: Select all
F11 q f eval(waitkey(0,0))
Если при запуске плагина сразу подставлять в паттерн текущее выделение (я правильно понял п. 1?), то дальнейший набираемый текст будет добавляться к нему. Что приведёт к тому, что будет невозможно искать новый паттерн при выделенном блоке (или придётся добавлять клавишу «очистить паттерн», что мне уже тоже будет неудобно, я хочу, чтобы новый паттерн можно было вводить сразу после запуска плагина независимо от состояния выделения). Или придётся добавить состояние, как unchanged у строк ввода в диалогах, когда вроде бы текст в ней есть, но новый вводимый текст его заменяет.DeeZ wrote:все что нужно, как я вижу это:
1. подхватить и вставить патерном выделеный текст.
2. вынести поиск вперед назад в отдельный пункт плагина.
Это решит сразу несколько проблем.
отработав плагин оставит выделение. если мы хотим продолжить - выбираем "найти дальше" (п.2). плагин это выделение подхватит (п.1) и продолжит поиск.
А как мы узнаем, что что-то найдено или не найдено, если не попытаемся найти? А чтобы попытаться найти, надо менять позицию редактора, потому что иначе будет тормозить выборка строки.DeeZ wrote:в COPYING ищем 13/ (именно слеш). Не находим, но при каждом следующем введенном символе экран дергается, видимо пытаясь продолжить поиск дальше. Может имеем смысл менять позицию в редакторе только если найдено что-то, а не при каждом нажатии (обновлении патерна)?
Другое дело, что вот тут где-то баг. Ввводим 13 — находим, курсор на последней строке окна. Вводим ещё / — не находим, но окно прокручивается так, что курсор теперь в первой строке окна. И заметно, что при нерезультативном поиске сначала восстанавливается начальная позиция окна, потом новая (с курсором вверху). Вот это надо поправить сначала.
Именно так и планировалось. Найти паттерн и передвинуть курсор в конец найденного как будто нажатием Shift+стрелок.DeeZ wrote:про то что если поиск начинать с Tab и уже есть выделение - то найденное добавляется к выделению - я подумал это фича. если выделения нет - то блок начинается там где стоял курсор..
А как вообще планировалось это должно работать, если начинать поиск с Tab?
Re: QuickSearch — инкрементальный поиск в редакторе
у меня рефлекс жать Ctrl+D, но может тогда имеет смысл сделать как в Inc: если при вызове плагина, курсор стоит на выделенном фрагменте - то подхватить. иначе начать работу с пустым патерном (само выжеление не сбрасывать, а продолжать работу по нынешнему алгоритму. мне очень нравится, что при нажатии Esc старое выделение восстанавливается).Centaur wrote: Если при запуске плагина сразу подставлять в паттерн текущее выделение (я правильно понял п. 1?), то дальнейший набираемый текст будет добавляться к нему. Что приведёт к тому, что будет невозможно искать новый паттерн при выделенном блоке (или придётся добавлять клавишу «очистить паттерн», что мне уже тоже будет неудобно, я хочу, чтобы новый паттерн можно было вводить сразу после запуска плагина независимо от состояния выделения). Или придётся добавить состояние, как unchanged у строк ввода в диалогах, когда вроде бы текст в ней есть, но новый вводимый текст его заменяет.
Centaur wrote:А как мы узнаем, что что-то найдено или не найдено, если не попытаемся найти? А чтобы попытаться найти, надо менять позицию редактора, потому что иначе будет тормозить выборка строки.
Другое дело, что вот тут где-то баг. Ввводим 13 — находим, курсор на последней строке окна. Вводим ещё / — не находим, но окно прокручивается так, что курсор теперь в первой строке окна. И заметно, что при нерезультативном поиске сначала восстанавливается начальная позиция окна, потом новая (с курсором вверху). Вот это надо поправить сначала.
Я не программист, советовать ничего не могу, но что то надо с этим сделать.. Автор inc (по твоей ссылке) пишет, что проверял на файлах в половину своей оперативки. мне страшно искать в таких больших файлах, потому что если ничего не найдено - то тормозит все жутко. предлагаю для теста скачать словарь Даля, и попробовать в нем поискать:Даль. Словарь великорусского языка.txt (17Мб)
- SlashNet
- Posts: 638
- Joined: Fri 20 Mar, 2009 09:43
- Location: Львов
- Has thanked: 16 times
- Been thanked: 16 times
Re: QuickSearch — инкрементальный поиск в редакторе
Если не сложно, то было бы хорошо добавлять в архив с плагом файлик changelog. А то у меня не так уж и часто интернет есть чтоб посмотреть изменения.
ədиw wo⊥є ʚ o⊥ʎнdəʚədəu əɔʚ
- Centaur
- Posts: 1083
- Joined: Tue 05 Apr, 2005 20:09
- Location: Novosibirsk, Russia
- Been thanked: 2 times
Re: QuickSearch — инкрементальный поиск в редакторе
Я ещё раз повторю: Я нажал клавишу, на которую назначен макрос, вызывающий плагин. Я хочу начать набирать паттерн, и чтобы он сразу искался. А не тратить мыслительные ресурсы на осознание необходимости стереть или не стирать автоподхваченный паттерн.DeeZ wrote:если при вызове плагина, курсор стоит на выделенном фрагменте - то подхватить. иначе начать работу с пустым патерном
Что такое «курсор стоит на выделенном фрагменте» — мне неведомо. В моём мире ([ ] persistent blocks) курсор стоит либо в начале блока, либо в конце, либо блок не выделен, либо в каком-то из используемых макросов или плагинов страшный баг.
Вот такой макрос «подхватывает» выделенный блок (if any). Им пользоваться, на мой взгляд, не то чтобы неудобно, а невозможно — потому что за то время, пока я сотру подхваченное, я уже добежал бы стрелками до того места, в которое собираюсь прыгать.
Code: Select all
$If (Selected) Clip(5,2) CtrlIns F11 q f ShiftIns $Else F11 q f $End
- HaRT
- Moderator
- Posts: 10866
- Joined: Tue 30 Aug, 2005 17:21
- Has thanked: 221 times
- Been thanked: 358 times
Re: QuickSearch — инкрементальный поиск в редакторе
Так зачем стирать? Ведь такой макрос следует вызывать только тогда, когда именно и требуется подхватить выделение.Centaur wrote:за то время, пока я сотру подхваченное, я уже добежал бы стрелками до того места, в которое собираюсь прыгать.
Фар есть инструмент, а не нянька. © 2009 DrKnS
- Centaur
- Posts: 1083
- Joined: Tue 05 Apr, 2005 20:09
- Location: Novosibirsk, Russia
- Been thanked: 2 times
Re: QuickSearch — инкрементальный поиск в редакторе
Хех, ж…а есть, а слова нет…DeeZ wrote:если ничего не найдено - то тормозит все жутко. предлагаю для теста скачать словарь Даля, и попробовать в нем поискать
Короче, регистронезависимость тормозит. Будем оптимизировать…
Re: QuickSearch — инкрементальный поиск в редакторе
сделай это опцией. кому то может быть полезна такая функция (хотя для меня проблема уже решена макросом).Centaur wrote:Я ещё раз повторю: Я нажал клавишу, на которую назначен макрос, вызывающий плагин. Я хочу начать набирать паттерн, и чтобы он сразу искался. А не тратить мыслительные ресурсы на осознание необходимости стереть или не стирать автоподхваченный паттерн.DeeZ wrote:если при вызове плагина, курсор стоит на выделенном фрагменте - то подхватить. иначе начать работу с пустым патерном
Мне такое поведение действительно нужно, и полезно. я к нему привык. За макрос спасибо. Его надо чуть чуть доработать, до вставки (перед ShiftIns $Else) переместить курсор в начало выделенного блока, чтобы плагин не искал следующее вхождение, а оставался там где выделенный блок. А то если вхождение единственное или последнее - достаточно не приятный эффект).Centaur wrote:Вот такой макрос «подхватывает» выделенный блок (if any). Им пользоваться, на мой взгляд, не то чтобы неудобно, а невозможно — потому что за то время, пока я сотру подхваченное, я уже добежал бы стрелками до того места, в которое собираюсь прыгать.Code: Select all
$If (Selected) Clip(5,2) CtrlIns F11 q f ShiftIns $Else F11 q f $End
результат:
Code: Select all
$If (Selected) Clip(5,2) CtrlIns editor.sel(1,0) F11 q f ShiftIns $Else F11 q f $End
- Centaur
- Posts: 1083
- Joined: Tue 05 Apr, 2005 20:09
- Location: Novosibirsk, Russia
- Been thanked: 2 times
Re: QuickSearch — инкрементальный поиск в редакторе
Раз проблема решается макросом, усложнять плагин не нужно.DeeZ wrote:сделай это опцией. кому то может быть полезна такая функция (хотя для меня проблема уже решена макросом).
Re: QuickSearch — инкрементальный поиск в редакторе
Centaur
Ура! Спасибо! Только сейчас увидел этот плагин. Это — именно то, чего я так долго ждал.
Сразу возникли вопросы. Ветку не читал, поэтому заранее прошу меня простить, если повторю чей-то вопрос.
1. Сразу бросилось в глаза, что если очередной символ не найден, он всё равно вставляется в строку поиска. И когда нажимаешь BS, ожидаешь, что сотрётся предыдущий найденный символ. Например, можно ввести в поиск строку «аааааааааааааааааааааа», хотя в тексте встречается, скажем, только «аа».
2. Если во время работы плагина попытаться поменять направление поиска (ещё раз вызвать плагин, только вместо Search forward выбрать Search backward), плагин напишет: already active, но направление не меняет.
3. Если BS удалить все введённые символы, возвращаемся не к той же позицции, с которой начинали. Если нажимаем ESC, возвращаемся куда надо.
А вообще цены этому плагину нет. Пользуюсь плагином Incrementsl Search постоянно. И вообще инкрементный поиск пользую и в панелях, и в браузерах и вообще везде, где он есть.
Ура! Спасибо! Только сейчас увидел этот плагин. Это — именно то, чего я так долго ждал.
Сразу возникли вопросы. Ветку не читал, поэтому заранее прошу меня простить, если повторю чей-то вопрос.
1. Сразу бросилось в глаза, что если очередной символ не найден, он всё равно вставляется в строку поиска. И когда нажимаешь BS, ожидаешь, что сотрётся предыдущий найденный символ. Например, можно ввести в поиск строку «аааааааааааааааааааааа», хотя в тексте встречается, скажем, только «аа».
2. Если во время работы плагина попытаться поменять направление поиска (ещё раз вызвать плагин, только вместо Search forward выбрать Search backward), плагин напишет: already active, но направление не меняет.
3. Если BS удалить все введённые символы, возвращаемся не к той же позицции, с которой начинали. Если нажимаем ESC, возвращаемся куда надо.
А вообще цены этому плагину нет. Пользуюсь плагином Incrementsl Search постоянно. И вообще инкрементный поиск пользую и в панелях, и в браузерах и вообще везде, где он есть.
Может кому пригодится.