QSearch plugin

Discuss and announce AkelPad plugins
  • Author
  • Message
Offline
Posts: 3234
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Post by VladSh »

DV
И выздоравливай! Ну его, это, болеть...

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

Post by DV »

Что-то я в упор не понимаю, почему в
https://github.com/d0vgan/AkelPad-Plugs ... Dlg.c#L274
вычисляется неправильная позиция в перенесенной строке при включенном переносе строк.
Наверное, надо, чтобы Instructor глянул.

Offline
Site Admin
Posts: 6403
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

DV
nLineStartPos = (INT_X) SendMessage(hWndEdit, EM_LINEINDEX, pcrFound->ciMin.nLine, 0);

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

Post by DV »

Instructor wrote:DV
nLineStartPos = (INT_X) SendMessage(hWndEdit, EM_LINEINDEX, pcrFound->ciMin.nLine, 0);
Если так сделать, то номер строки неправильный :(
Получается так (при поиске wxy):

Code: Select all

 ---------------------------------------------
| 1| abc def ghi jkl mno pqr stu vwx yza bcd  |
|  | efg hij klm nop qrs tuv wxy zab          |
| 2| abc def ghi jkl mno pqr stu vwx yza bcd  |
|  | efg hij klm nop qrs tuv wxy zab          |
|  |                                          |
|---------------------------------------------|
|Log::Output                               [x]|
|---------------------------------------------|
|(1,25)	efg hij klm nop qrs tuv wxy zab     |
|(2,25)	efg hij klm nop qrs tuv wxy zab     |
|2 occurrence(s) found.                       |
 ---------------------------------------------

Offline
Site Admin
Posts: 6403
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

nLineStartPos = (INT_X) SendMessage(hWndEdit, AEM_GETRICHOFFSET, AEGI_WRAPLINEBEGIN, (LPARAM)nLinePos);
или
nLineStartPos = (INT_X) SendMessage(hWndEdit, AEM_GETRICHOFFSET, AEGI_RICHOFFSETFROMUNWRAPLINE, (LPARAM)nUnwrappedLine);
Не проверял.

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

Post by DV »

Спасибо, нашёл, в чём ошибка.
На данный момент результаты поиска выглядят вот так:
Image

Пока что вылавливаю ошибки, мультипоточность ещё не прикручивал.
При поиске в большом файле (10 - 100 МБ) при большом количестве найденных результатов (2000 и более) интерфейс замирает секунд на 10-15.

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

Post by DV »

Тестовая версия:
https://github.com/d0vgan/AkelPad-Plugs ... fea-190123
Качаем архив QSearch-dev-df05fea-190123.zip.
В настройках плагина (QSearch.ini) указываем:

Code: Select all

new_ui=2

Offline
Posts: 276
Joined: Mon Jun 20, 2011 8:33 am
Location: Электросталь

Post by yozhic »

DV
Искал в файле 59 Мб, пока только литерально (с регулярками пока не пробовал). Скорость поиска такая же, как у скрипта FindReplaceEx.js. Для нахождения 51289 совпадений плагину (как и скрипту) понадобилась 1 минута – все это время интерфейс был недоступен. С 317130 совпадениями плагин справился за 7,5 минут, а скрипт за 5 минут.

Но обратило внимание другое. Если нажать галку Highlight all, то курсор перемещается на первое совпадение и выделяет его. Т.е. не на кнопку Find next, а именно на галку.
Image
Если галка Highlight all отмечена, то так же срабатывает нажатие на галки Match case и Whole word, т.е. выделение в тексте переносится на первое совпадение. Если Highlight all не отмечена, то нажатие на другие галки не влияет на выделение в тексте. У версий 7.0 и 7.1 такое же поведение. Значит так и должно быть?

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

Post by DV »

Значит, экономим память, но проигрываем по скорости. При малом количестве вхождений это оправдано.

Активная галочка "Подсветить все" воспринимается как руководство к действию, чтобы текст в строке поиска совпадал с тем, что подсвечено. По этой же причине галочки "Учитывать регистр" и "Слово целиком" могут изменить подсвеченный текст, когда прежде подсвеченный текст перестаёт совпадать с настройками поиска.

P.S.
Какую бы комбинацию клавиш назначить на "Найти все"? Ctrl+Shift+Enter, что ли?

Offline
Posts: 276
Joined: Mon Jun 20, 2011 8:33 am
Location: Электросталь

Post by yozhic »

Ясно, спасибо. Все верно, логично. А то у меня сложилось представление, что галки – это только предварительный выбор функций, а применение функций должно происходить по нажатию на кнопку Ok, Run, в нашем случае Find. Поэтому и срефлексировал.
Ctrl+Shift+Enter, что ли?
Может Ctrl+Alt+Enter?
Shift с инверсией ассоциируется. Enter = поиск вперед, Shift+Enter = поиск назад.
А у нас уже есть Alt+Enter = поиск сначала. Тогда Ctrl+Alt+Enter = поиск сначала и всех вхождений. Вроде последовательно получается :-)

Offline
Posts: 157
Joined: Thu Nov 26, 2015 8:03 pm
Location: Rostov-on-Don

Post by Eskander88 »

Подскажите как привязать горячие клавиши к параметрам QSearch::Plugin, которые отображаются в меню по Правому-Клику-Мышки на панели плагина?

Интересуют вкл/выкл параметров:
- Поиск: использовать всегда спец.симв
- Поиск: использовать регулярные выражения
- Поиск: захватывает \n в регулярных выражениях
- Поиск: подхватывать выделенный текст

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

Post by DV »

Eskander88 wrote:Подскажите как привязать горячие клавиши к параметрам
Думаю, что никак.

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

Post by DV »

yozhic wrote:Искал в файле 59 Мб, пока только литерально (...) Для нахождения 51289 совпадений плагину (как и скрипту) понадобилась 1 минута – все это время интерфейс был недоступен. С 317130 совпадениями плагин справился за 7,5 минут, а скрипт за 5 минут.
Меня смущает, что Notepad++ справляется с той же задачей раз в 10-20 быстрее. Явно надо что-то оптимизировать.

Offline
Posts: 157
Joined: Thu Nov 26, 2015 8:03 pm
Location: Rostov-on-Don

Post by Eskander88 »

DV wrote:Спасибо, нашёл, в чём ошибка.
На данный момент результаты поиска выглядят вот так:
Image

Пока что вылавливаю ошибки, мультипоточность ещё не прикручивал.
При поиске в большом файле (10 - 100 МБ) при большом количестве найденных результатов (2000 и более) интерфейс замирает секунд на 10-15.
DV,
могли бы вы поделится: как вы настроили данный вывод результатов поиска QSearch::Plugin в Log::Output?

Offline
Posts: 874
Joined: Sat Jan 16, 2010 2:03 pm

Post by opk44 »

Eskander88 wrote:могли бы вы поделится...
Так, вроде ничего ни от кого не спрятано: ссылка.
Только, это если вы Си-код разбирать готовы...
Post Reply