AkelPad Forum Index AkelPad
Support forum
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

QSearch plugin
Goto page Previous  1, 2, 3 ... 35, 36, 37, 38  Next
 
Post new topic   Reply to topic    AkelPad Forum Index -> Plugins
View previous topic :: View next topic  
Author Message
VladSh



Joined: 29 Nov 2006
Posts: 3075
Location: Киев, Русь

PostPosted: Tue Jun 23, 2015 2:20 pm    Post subject: Reply with quote

DV
...

"лелеять надежду" и "глубокая печаль" - крайне опасные движения души; первая ведёт к прелести, а вторая - к унынию и далее к неверию.
Безотносительно к АкелПаду)


Может с API, конечно, всё так печально... я использовал:
Code:
result = AkelPad.GetTextRange(0, nMax);

Добавлено: а, ну да, это ж я брал из всего текста, а не из выделения...
А нет ли возможности определить позицию начала выделения и от неё взять сколько-то?
Back to top
View user's profile Send private message Visit poster's website
Instructor
Site Admin


Joined: 06 Jul 2006
Posts: 6223

PostPosted: Wed Jun 24, 2015 6:05 am    Post subject: Reply with quote

DV
Может так?
Code:
#define IDC_COMBOBOXEDIT       1001
...
        case DLGTYPE_FIND:
        case DLGTYPE_REPLACE:
            if ( bModelessDlgIsFocused || !bQSearchDlgIsFocused )
            {
                HWND hFindTextWnd = GetDlgItem(hModelessDlg, IDC_SEARCH_FIND);
                HWND hFindTextEditWnd = GetDlgItem(hFindTextWnd, IDC_COMBOBOXEDIT);
                if (SendMessage(hFindTextEditWnd, EM_GETMODIFY, 0, 0))
                    bSetText = TRUE;
...
Back to top
View user's profile Send private message Send e-mail
DV



Joined: 16 Nov 2006
Posts: 990
Location: Kyiv, Ukraine

PostPosted: Wed Jun 24, 2015 2:35 pm    Post subject: Reply with quote

В этом случае EM_GETMODIFY всё время 0 возвращает. Под Windows 7.
Похоже, таки надо текст сравнивать. Но такой подход меня не воодушевляет.
Back to top
View user's profile Send private message
Instructor
Site Admin


Joined: 06 Jul 2006
Posts: 6223

PostPosted: Fri Jul 10, 2015 5:11 pm    Post subject: Reply with quote

DV
Проверил - возвращает 1, если текст изменен:
Code:
var hMainWnd=AkelPad.GetMainWnd();
var oSys=AkelPad.SystemFunction();
var hModelessDlg=AkelPad.SendMessage(hMainWnd, 1275 /*AKD_GETMODELESS*/, 0, 0);
var hFindTextWnd=oSys.Call("user32::GetDlgItem", hModelessDlg, 3052 /*IDC_SEARCH_FIND*/);
var hFindTextEditWnd=oSys.Call("user32::GetDlgItem", hFindTextWnd, 1001 /*IDC_COMBOBOXEDIT*/);
WScript.Echo("" + AkelPad.SendMessage(hFindTextEditWnd, 0x00B8 /*EM_GETMODIFY*/, 0, 0));
Back to top
View user's profile Send private message Send e-mail
DV



Joined: 16 Nov 2006
Posts: 990
Location: Kyiv, Ukraine

PostPosted: Sat Sep 19, 2015 5:09 pm    Post subject: Reply with quote

QSearch v.6.3
+ При активном DialogSwitcher нажатие Ctrl+F и Crtl+H в главном окне
редактирования позволяет подхватить выделенный в этом окне текст.
(В то время как нажатие Ctrl+F и Crtl+H в диалоге поиска/замены
оставляет в диалоге тот текст, который был.)
* AkelPad 4.9.6+
* восьмая годовщина QSearch Smile

Детали реализация подхвата текста

- при вызове или переключении на диалог поиска/замены из окна редактирования плагин QSearch педантично вычитывает либо весь, либо первые 16384 (подсмотрено в AkelEdit) символов выделенного текста из окна редактирования;
- затем вычитывает столько же символов из диалога поиска/замены;
- затем не менее педантично сравнивает их посимвольно.
Если все символы совпадают - значит, диалог поиска/замены уже подхватил выделенный в редакторе текст. Если же они не совпадают, то берётся предыдущий текст, который был в предыдущем диалоге поиска/замены или панели QSearch.
Back to top
View user's profile Send private message
nbsp



Joined: 17 Jan 2016
Posts: 19

PostPosted: Sun Jan 17, 2016 5:56 pm    Post subject: Reply with quote

When searching for ".+" ("Search: Use regular expressions" is selected), the search is non-greedy and finds only 1 character, similar to the non-greedy version ".+?". Only the possessive version ".++" performs greedy search.

Searching ".+" ("Regular expressions" checked) using the "Find..." dialog does perform a greedy search as expected.
Back to top
View user's profile Send private message
DV



Joined: 16 Nov 2006
Posts: 990
Location: Kyiv, Ukraine

PostPosted: Mon Jan 18, 2016 12:03 pm    Post subject: Reply with quote

nbsp wrote:
When searching for ".+" ("Search: Use regular expressions" is selected), the search is non-greedy and finds only 1 character

Indeed, this is intentional. The motivation:
QSearch-Eng.txt wrote:
v.5.4 (May 2013)
* now the search ignores "+", "*", "+?" and "*?" at the end of regexp to avoid selection to the end of the file

The purpose of "avoid selection to the end of the file" is highly noticeable in the on-the-fly mode, when + or * appears in the middle of the RegEx being typed.
As you mentioned, ++ or *+ can be used to make it greedy explicitly.
Back to top
View user's profile Send private message
YuS



Joined: 15 Sep 2013
Posts: 424

PostPosted: Mon Jan 18, 2016 5:17 pm    Post subject: Reply with quote

DV wrote:

As you mentioned, ++ or *+ can be used to make it greedy explicitly.

Дело в том, что по описанию:
QSearch-Rus.txt wrote:
Поиск с регулярными выражениями. Используется реализация регулярных
выражений в AkelPad.

А в AP, шаблон ".+", находит совпадение полностью со всем текстом.
В QSearch же совпадение будет только с одним символом, т.е. по сути, аналог шаблона ".+?". При этом, если использовать более расширенный шаблон, например, ".+." или "(.+)", то будет выбран именно весь текст, т.е. всё таки "+", в данном случае, является жадным квантификатором.
Тут надо, либо описание подкорректировать, либо работу регэкспов привести в соответствие... а вообще, имхо, не совсем понятно, зачем программно игнорировать квантификаторы в конце регэкспов?! Пусть себе выделяют то, что в шаблоне прописывает пользователь - если есть необходимость исключения выделения всего текста, надо просто составить соответствующий шаблон...
Back to top
View user's profile Send private message
DV



Joined: 16 Nov 2006
Posts: 990
Location: Kyiv, Ukraine

PostPosted: Sat Jan 23, 2016 1:55 pm    Post subject: Reply with quote

QSearch v.6.5
+ added: 'adj_incompl_regexp'
This manual option controls whether "incomplete" regular expression is adjusted or not. Refer to QSearch-Eng.txt for details.
Back to top
View user's profile Send private message
nbsp



Joined: 17 Jan 2016
Posts: 19

PostPosted: Sat Mar 26, 2016 1:54 am    Post subject: Reply with quote

When searching for the following regex:
Code:
(?<=").+?\K\b\\\b
it seams that the QSearch plugin always uses the option ". matches \n", although it is not set in the AkelPad Find dialog.

That is, the QSearch plugin matches both the cyan colored "\" (in line 4) and the red colored "\" (in line 7). The Find dialog without the ". matches \n" option set finds only the red colored "\". Is it possible to control whether that option is set or not in QSearch (a checkbox menu option, perhaps)?

Quote:
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Wow6432Node\CLSID\{9BE31822-FDAD-461B-AD51-BE1D1C159921}\ProgID]
@="VideoLAN.VLCPlugin.2"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Wow6432Node\CLSID\{9BE31822-FDAD-461B-AD51-BE1D1C159921}\Programmable]

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Wow6432Node\CLSID\{9BE31822-FDAD-461B-AD51-BE1D1C159921}\ToolboxBitmap32]
@="D:\\_programs\\TC UP 6.7\\Plugins\\Media\\VLC\App\\VLC\\axvlc.dll,1"
Back to top
View user's profile Send private message
DV



Joined: 16 Nov 2006
Posts: 990
Location: Kyiv, Ukraine

PostPosted: Mon Mar 28, 2016 12:48 pm    Post subject: Reply with quote

nbsp wrote:
the option ". matches \n"

I've just recently noticed this option in AkelPad's Find Dialog, and I also thought it would be good to add this in QSearch.
What I don't know, though, is how to call this option in QSearch? It looks like one of "Search: ..." options, but it relates only to regular expressions...
Back to top
View user's profile Send private message
DV



Joined: 16 Nov 2006
Posts: 990
Location: Kyiv, Ukraine

PostPosted: Mon Mar 28, 2016 7:58 pm    Post subject: Reply with quote

nbsp wrote:
the option ". matches \n"

Собственно, да: не могу подобрать ни название этому пункту меню, ни место, куда его вставить во всплывающее меню.

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

выглядит как-то нескладно: строка насчёт \n слишком длинная, да и плохо вписывается.

Такой вариант:
Code:
Поиск: Останавливаться в конце файла
RegExp: . совпадает с \n
Окно: Расположить сверху

тоже как-то не очень...
Back to top
View user's profile Send private message
Infocatcher



Joined: 06 Aug 2007
Posts: 1764

PostPosted: Tue Mar 29, 2016 7:35 am    Post subject: Reply with quote

DV
А если так:
Code:
Поиск: Использовать регулярные выражения
Поиск: . захватывает переводы строк

Логичнее рядом с регулярными выражениями, как мне кажется.

И если не выбраны регулярные выражения – отключать этот пункт.


Last edited by Infocatcher on Tue Mar 29, 2016 7:37 am; edited 2 times in total
Back to top
View user's profile Send private message Visit poster's website
YuS



Joined: 15 Sep 2013
Posts: 424

PostPosted: Tue Mar 29, 2016 7:35 am    Post subject: Reply with quote

DV wrote:
nbsp wrote:
the option ". matches \n"

Собственно, да: не могу подобрать ни название этому пункту меню
...

А зачем изобретать? Можно глянуть как это уже сделано:
eng: ". matches \n"
rus: ". захватывает \n"



или:



Last edited by YuS on Tue Mar 29, 2016 7:43 am; edited 1 time in total
Back to top
View user's profile Send private message
Infocatcher



Joined: 06 Aug 2007
Posts: 1764

PostPosted: Tue Mar 29, 2016 7:39 am    Post subject: Reply with quote

Кстати, если честно, я бы и во встроенном диалоге поиска заменил бы. Very Happy
Вот у меня файл с \r\n (или \r), а все равно захватывает.
Back to top
View user's profile Send private message Visit poster's website
Display posts from previous:   
Post new topic   Reply to topic    AkelPad Forum Index -> Plugins All times are GMT
Goto page Previous  1, 2, 3 ... 35, 36, 37, 38  Next
Page 36 of 38

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


SourceForge.net Logo Powered by phpBB © 2001, 2005 phpBB Group