QSearch plugin

Discuss and announce AkelPad plugins
  • Author
  • Message
DV
Offline
Posts: 1291
Joined: Thu Nov 16, 2006 11:53 am
Location: Kyiv, Ukraine

Post by DV »

Diamen wrote:Yes, I use to select word before search:
AkelPad.WordCaretSelect(true, false);
AkelPad.Call("QSearch::QSearch")
and then get selected text in search inputbox
In the next version of QSearch (will be released soon) you will be able to do the following:

FindNext - find next (down).
Recommended hot-key - F3.
This function supports the autoload in order to silently load the QSearch
plugin when AkelPad starts. (The purpose of that is to have all the plugin's
capabilities available at the very start of AkelPad rather than only after
the QSearch'es panel is activated).
The additional abilities by the example of the Hotkeys plugin:

Code: Select all

 -------------------------------------------------------------
 Name             |  Command                       |  Hotkey
 -------------------------------------------------------------
 Quick Find Next  |  Call("QSearch::FindNext", 1)  |  Ctrl+F3
 -------------------------------------------------------------

Assigns Ctrl+F3 to the action "pick up the selected text and find next".
If no selection, the current word is selected (according to the option
'select_by_f3').

DV
Offline
Posts: 1291
Joined: Thu Nov 16, 2006 11:53 am
Location: Kyiv, Ukraine

Post by DV »

QSearch v.7.4
+ добавлено: Найти Все во Всех Файлах
+ добавлено: функции FindNext, FindPrev, FindAll
+ добавлено: 'logoutput_frp_*', 'fileoutput_frp_*'
+ добавлено: hotkey_hides_panel=11

И несколько цитат из "QSearch-Rus.txt":
Примечание: кнопка "Найти все" имеет собственное всплывающее меню.
кнопка [ * ] означает "Найти все" и имеет собственное всплывающее меню
Функции FindNext, FindPrev и FindAll позволяют назначить "горячие клавиши"
для вызова из редактора, а также использовать их возможности при вызове из
плагина Hotkeys или из скриптов (с помощью плагина Scripts).
Рассмотрим их подробнее.

FindNext - искать следующий (вниз).
Рекомендуемая "горячая клавиша" - F3.
Эта функция поддерживает автозагрузку для скрытой загрузки плагина QSearch
при запуске AkelPad. (Цель этого - доступность всех возможностей плагина
сразу при старте AkelPad, а не после первого показа панели поиска QSearch).
Дополнительные возможности на примере плагина Hotkeys:

Code: Select all

 -------------------------------------------------------------
 Имя              |  Команда                       |  Клавиша
 -------------------------------------------------------------
 Quick Find Next  |  Call("QSearch::FindNext", 1)  |  Ctrl+F3
 -------------------------------------------------------------
Назначает Ctrl+F3 на действие "подхватить выделенный текст и искать
далее (вниз)".
При отсутствии выделенного текста, выделяется текущее слово (согласно
настройке 'select_by_f3').
Идея с Ctrl+F3, как и скрипта CommandPalette.js, вдохновлена некоторым платным редактором :)
Таким образом, теперь в QSearch есть возможность как автоматически "Подхватывать выделенный текст" по нажатию F3, так и делать это вручную через Ctrl+F3.
Кроме того, есть функции SelFindNext и SelFindPrev для быстрого поиска выделенного заранее текста.

DV
Offline
Posts: 1291
Joined: Thu Nov 16, 2006 11:53 am
Location: Kyiv, Ukraine

Post by DV »

Размышляю над двумя штуками:
1. В результатах поиска вместо (строка,символ) использовать (строка:символ) для унификации с окном Go to (Ctrl+G).
2. При выводе результатов поиска в файл добавить возможность перехода к найденному по двойному щелчку левой кнопки мыши. Для этого при выводе в файл результаты поиска обязательно должны начинаться с трёх компонентов: (окно строка,символ) для идентификации окна (вкладки), в которую нужно перейти. Отдельный вопрос: двойной щелчок по строке с результатми должен срабатывать в любом месте строки или только внутри компонентов (окно строка,символ) ?

Offline
Posts: 3234
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Post by VladSh »

DV wrote:2. При выводе результатов поиска в файл добавить возможность перехода к найденному по двойному щелчку левой кнопки мыши.
Эта штука ж в Log-плагине есть?

DV
Offline
Posts: 1291
Joined: Thu Nov 16, 2006 11:53 am
Location: Kyiv, Ukraine

Post by DV »

VladSh wrote:
DV wrote:2. При выводе результатов поиска в файл добавить возможность перехода к найденному по двойному щелчку левой кнопки мыши.
Эта штука ж в Log-плагине есть?
Тут речь о "Find All: File Output (1 tab)" и "Find All: File Output (N tabs)".
Image

Offline
Posts: 3234
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Post by VladSh »

Сейчас заметил, что контекстное меню в поле поиска не локализировано. Это так и нужно?

DV
Offline
Posts: 1291
Joined: Thu Nov 16, 2006 11:53 am
Location: Kyiv, Ukraine

Post by DV »

VladSh wrote:Сейчас заметил, что контекстное меню в поле поиска не локализировано. Это так и нужно?
Это системное меню - я его не трогал.

Offline
Posts: 1873
Joined: Mon Aug 06, 2007 1:07 pm
Contact:

Post by Infocatcher »

Мне кажется, будет удобно при выводе в Log::Output всей строки целиком подсвечивать искомое (раз синтаксис разукрашивает, то, наверное, и выборочная подсветка должна быть доступна).

И хочется попробовать вывод строк с контекстом: несколько до найденного, несколько после – чтобы можно было оценить без перехода к строке, то ли нашлось.

Offline
Posts: 1873
Joined: Mon Aug 06, 2007 1:07 pm
Contact:

Post by Infocatcher »

Дополнительное пожелание: если выводится строка целиком, и в ней найдено несколько вхождений – выводить только один раз.
DV wrote:Отдельный вопрос: двойной щелчок по строке с результатми должен срабатывать в любом месте строки или только внутри компонентов (окно строка,символ) ?
Последил за процессом, у меня получается, что я обычно ставлю курсор в интересующую часть текста, то есть получается, что тащить мышку в левый край – неудобно. И лучше, чтобы была кликабельна вся строка целиком.

И под это дело еще одно пожелание (:lol:): а можно переходить (если, опять же, выводится строка целиком) в то место, по которому был сделан двойной клик?

И да, да, спасибо за удобства в любимом редакторе. :)

DV
Offline
Posts: 1291
Joined: Thu Nov 16, 2006 11:53 am
Location: Kyiv, Ukraine

Post by DV »

Infocatcher wrote:И хочется попробовать вывод строк с контекстом: несколько до найденного, несколько после – чтобы можно было оценить без перехода к строке, то ли нашлось.
См. описание ручных настроек
logoutput_frp_mode, logoutput_frp_before, logoutput_frp_after
fileoutput_frp_mode, fileoutput_frp_before, fileoutput_frp_after

Offline
Posts: 1873
Joined: Mon Aug 06, 2007 1:07 pm
Contact:

Post by Infocatcher »

DV wrote:См. описание ручных настроек
logoutput_frp_mode, logoutput_frp_before, logoutput_frp_after
fileoutput_frp_mode, fileoutput_frp_before, fileoutput_frp_after
О, а уже и есть, круто, спасибо.

Для визуального улучшения еще бы доработать позиционные записи, а то отступы смещаются.

Сейчас:

Code: Select all

(строка,столбец) строка до
…
строка с искомым
строки после
Можно попробовать что-то такое:

Code: Select all

(строка,столбец)
строка до
…
строка с искомым
строки после
Или даже (соответственно, под моноширинный шрифт)

Code: Select all

                 строка до
                 …
(строка,столбец) строка с искомым
                 строки после

DV
Offline
Posts: 1291
Joined: Thu Nov 16, 2006 11:53 am
Location: Kyiv, Ukraine

Post by DV »

Infocatcher wrote:Для визуального улучшения еще бы доработать позиционные записи, а то отступы смещаются.
Пока что для этой цели лучше всего подходит QSFRM_LINE_CR.
С подсветкой вхождений в окне с результатами поиска пока что не получается - почему-то текст не подсвечивается, пока его не выделишь (а в окне с результатами поиска хочется просто подсветить искомый текст, ничего не выделяя).

DV
Offline
Posts: 1291
Joined: Thu Nov 16, 2006 11:53 am
Location: Kyiv, Ukraine

Post by DV »

DV wrote:С подсветкой вхождений в окне с результатами поиска пока что не получается
Подготавливаю фундамент для альтернативного подхода, в котором подсветка в окне с результатами поиска будет достигаться другим путём. ( В процессе разработки в https://github.com/d0vgan/AkelPad-Plugs ... ts/develop )
Вообще, интересная штука - опыт.
Ещё несколько месяцев я не вполне верил, что плагин достигнет тех возможностей, которые есть уже сейчас. Благодаря тому, что ещё на этапе проектировки подхода к поиску всех вхождений я нехило вложился в архитектуру, сейчас все виды поиска: подсчёт всех вхождений, поиск в текущем файле, поиск во всех открытых файлах - используют один и тот же алгоритм, в котором изменение поведения достигается благодаря набору разных callback-функций. Хотя рефакторинг всего этого хозяйства ещё продолжается :)
Сегодня обратил внимание, что при поиске со спец. символами не всегда обновляется подсветка найденных вхождений (потому что спец. символы не поддерживаются движком плагина Coder). Однако, в рамках задачи поиска всех вхождений была разработана функция convertFindExToRegExW, превращающая строку поиска со спец. символами в строку регулярного выражения (для возможности поиска с синтаксисом спец. символов, которые реализуются через регулярные выражения). Теперь эту же функцию я переиспользовал для подсветки.

DV
Offline
Posts: 1291
Joined: Thu Nov 16, 2006 11:53 am
Location: Kyiv, Ukraine

Post by DV »

Из интересного: сегодняшние эксперименты с отображением результатов поиска (код уже залит в git в ветку develop)
Image

DV
Offline
Posts: 1291
Joined: Thu Nov 16, 2006 11:53 am
Location: Kyiv, Ukraine

Post by DV »

Пример результатов поиска с контекстом "2 строки до и 2 строки после":
QSearch.ini wrote:fileoutput_frp_mode=4
fileoutput_frp_before=2
fileoutput_frp_after=2
Image
Post Reply