QSearch plugin

Discuss and announce AkelPad plugins
  • Author
  • Message
Offline
Posts: 157
Joined: Thu Nov 26, 2015 8:03 pm
Location: Rostov-on-Don

Post by Eskander88 »

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

opk44,
т.е это не кастомная настройка, а именно обновлённый код самого QSearch::Plugin?

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

Post by DV »

opk44 wrote:Только, это если вы Си-код разбирать готовы...
Есть готовая версия на пробу:
https://github.com/d0vgan/AkelPad-Plugs ... h/releases
Качаем архив QSearch-dev-df05fea-190123.zip, в нем 32-битная и 64-битная QSearch.dll.
В настройках плагина (QSearch.ini) указываем:
new_ui=2

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

Post by DV »

Отмечу без лишней скромности, что теперь результаты поиска отображаются примерно в 50 раз быстрее:
https://github.com/d0vgan/AkelPad-Plugs ... 974-190223

Кому интересно, как так получилось, см. функции qsShowFindResults_LogOutput_AddOccurrence и qsShowFindResults_LogOutput_Done в файле "QSearchDlg.c".

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

Post by yozhic »

теперь результаты поиска отображаются примерно в 50 раз быстрее
Без лишней сдержанности: впечатлило очень. А еще и мультипоточность прикручивать будете? Неужели теперь эта мощь так и останется в одной только кнопочке?! К ней теперь список хотелок сам напрашивается: Count only, Show in Log panel only matched, Open matched in new tab, Copy matched in clipboard...

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

Post by DV »

Ещё чуток оптимизировал, чтобы лишний раз не высчитывать длину добавляемой строки.
Мы уже стали быстрее Notepad++, особенно при очень большом количестве вхождений (50000 и более). Отложим мультипоточность на потом.
На уровне кода уже можно показывать результаты поиска в новой вкладке или же не показывать совсем (только подсчитывать). Осталось добавить под это какие-то настройки.

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

Post by Infocatcher »

DV wrote:Есть готовая версия на пробу:
https://github.com/d0vgan/AkelPad-Plugs ... h/releases
Качаем архив QSearch-dev-df05fea-190123.zip, в нем 32-битная и 64-битная QSearch.dll.
В настройках плагина (QSearch.ini) указываем:
new_ui=2
О! Удобно.
А нет ли возможности подхватывать синтаксическую тему документа по типу того, как можно делать в скриптах (1, 2)?

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

Post by DV »

Самые последние наработки на пробу:
https://github.com/d0vgan/AkelPad-Plugs ... 637-190309
(!) Теперь кнопка "Найти все" имеет собственное всплывающее меню.

P.S. Хотел успеть к 8 Марта, не успел :)

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

Post by DV »

Infocatcher wrote:А нет ли возможности подхватывать синтаксическую тему документа
Поэкспериментирую.

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

Post by Infocatcher »

Мне кажется, в «N найдено.» точка не нужна, обычно в интерфейсных вещах без точек везде.

По раскраске, пример:

Результат запуска

Code: Select all

var s = ""; AkelPad.Call("Log::Output", 4, s, s.length, 2, 0, ".js");
Image

Image

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

Post by DV »

Это уже похоже на Release Candidate:
https://github.com/d0vgan/AkelPad-Plugs ... e93-190316
Учтены предыдущие замечания, обновлена документация (обновлённую документацию можно скачать вместе с исходниками).

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

Post by yozhic »

Release Candidate
Пожалуйста, при выводе в файл добавьте возможность выводить не полную строку содержащую совпадение, а только само совпадение. Это бы очень пригодилось, как мне кажется, особенно при поиске с регулярками. Учитывая скорость обработки, плагин сейчас по факту самый удобный инструмент для экстракта совпадений.

P.S.
P.S. Хотел успеть к 8 Марта, не успел
Поскольку тогда было накануне прощеного воскресенья, задержка прощается :)

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

Post by yozhic »

Может быть стоит добавить возможность выбора: применять раскраску в панели Log или не применять? У меня, например, вот какой случай:
Image

Это подсветка для словарей dsl, где заголовок каждой статьи выделяется особо – он должен бросаться в глаза, так редактировать легче. А в панели Log все строки расцениваются заголовками и раскрашиваются избыточно.

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

Post by DV »

Новое условие добавить легко, вместе с описанием єто займет всего вечер.
Вот сделать UI под такие настройки будет не столь бістро.
Я представляю себе диалог настроек примерно так:

Code: Select all

-----------------------------------
Search results format:
-----------------------------------

[v] Header: Searching for "%s" ...
[v] Position: (Ln,Pos)
[v] Length: (Len)
(*) Line
( ) Match only
[v] Footer: %d found.

[v] Apply the color scheme

-----------------------------------
Example:
-----------------------------------

Searching for "word" ...
(101,15)(4)  A line with a word.
(102,5)(4)   The word.
2 found.


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

Post by yozhic »

сделать UI под такие настройки будет не столь бістро
В смысле не быстро придумать как все это разместить? Я тогда рискну предложить вариант (прошу строго не судить, поскольку я из лучших побуждений).

Надписи у чекбоксов можно немного сократить, чтобы выиграть место. Например, вместо Match case, просто Case – вполне понятно о чем речь. А дополнительное разъяснение, если нужно, поместить во всплывающую подсказку. Освободив место, можно добавить еще один чекбокс для выбора направления вывода Find all (Count only, Log panel, New File). Поскольку опции три, применить к чекбоксу стиль BS_3STATE – пустой квадратик, затемненный квадратик, галочка – в AkelPad этот стиль уже применяется в диалоге настройки Toolbar, у чекбокса Big icons (размер кнопок в 16, 24 и 32 пикселя). Может получиться примерно так:
Image

Кажется наглядно: на картинке вывод в Log panel. Вроде логично получается: пустой квадратик = Count only (т.е. без вывода), затемненный квадратик = Log panel (т.е. вывод рядом в панель, «наполовину») и галочка = New File (т.е. вывод «по полной», аж в другой файл :)). Тогда в контекстном меню кнопки можно разместить настройки: Auto Count only, Match only, Apply the color scheme. Активность Match only отображать на самой кнопке знаком равно «=». Тоже, вроде, логично: вся строка – это звездочка «*», а точно совпадение – это равно «=». Примерно так:
Image

Русские надписи тоже могут быть краткими: Регистр, Слово, Вывод, Подсветка.

Пример использования сокращений на подобных панельках можно подсмотреть у Яна Гойваретса в EditPad. Вот его панелька поиска и замены:
Image
Только у него к чекбоксам применен еще стиль BS_PUSHLIKE, что дополнительно экономит место.

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

Post by yozhic »

Ух, обнаглею совсем и предложу еще одну «революционную» добавку :)

Теперь, поскольку скорость поиска отличная, я стал пользоваться плагином намного чаще. И пока еще не привык к обозначению активности RegExp рядом с надписью Whole word^. Результат: часто сбиваюсь из-за того, что не вижу активен ли RegExp или нет. Кроме того из контекстного меню переключается он дольше, чем хотелось бы. А что, если бы и его тоже вынести на панельку чекбоксом? Причем воспользоваться и здесь тремя состояниями: пустой квадратик = литеральная строка, затемненный = esc-символы («половина силы»), галочка = RegExp («полная сила»). Какую тогда надпись, чтобы было коротко и понятно? Мне кажется, подошло бы Metasymbols (Метасимволы). Термин этот распространенный, в руководствах по регуляркам постоянно встречается. Опять логично – три состояния чекбокса «Метасимволы»: не применять, применять простейшие (esc, wildcards), применять по полной (RegExp). И контекстное меню разгрузится на две строки, и визуально будет вполне удобно, и переключать ощуттимо быстрее. Например так:
Image

Вы меня простите, что я тут так разошелся – это я на радостях, очень уж нововведения по душе пришлись :)
Post Reply