"лелеять надежду" и "глубокая печаль" - крайне опасные движения души; первая ведёт к прелести, а вторая - к унынию и далее к неверию.
Безотносительно к АкелПаду)
Может с API, конечно, всё так печально... я использовал:
Добавлено: а, ну да, это ж я брал из всего текста, а не из выделения...
А нет ли возможности определить позицию начала выделения и от неё взять сколько-то?
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));
Posted: Sat Sep 19, 2015 5:09 pm
by DV
QSearch v.6.3
+ При активном DialogSwitcher нажатие Ctrl+F и Crtl+H в главном окне
редактирования позволяет подхватить выделенный в этом окне текст.
(В то время как нажатие Ctrl+F и Crtl+H в диалоге поиска/замены
оставляет в диалоге тот текст, который был.)
* AkelPad 4.9.6+
* восьмая годовщина QSearch
- при вызове или переключении на диалог поиска/замены из окна редактирования плагин QSearch педантично вычитывает либо весь, либо первые 16384 (подсмотрено в AkelEdit) символов выделенного текста из окна редактирования;
- затем вычитывает столько же символов из диалога поиска/замены;
- затем не менее педантично сравнивает их посимвольно.
Если все символы совпадают - значит, диалог поиска/замены уже подхватил выделенный в редакторе текст. Если же они не совпадают, то берётся предыдущий текст, который был в предыдущем диалоге поиска/замены или панели QSearch.
Posted: Sun Jan 17, 2016 5:56 pm
by nbsp
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.
Posted: Mon Jan 18, 2016 12:03 pm
by DV
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.
Posted: Mon Jan 18, 2016 5:17 pm
by YuS
DV wrote:
As you mentioned, ++ or *+ can be used to make it greedy explicitly.
Дело в том, что по описанию:
QSearch-Rus.txt wrote: Поиск с регулярными выражениями. Используется реализация регулярных
выражений в AkelPad.
А в AP, шаблон ".+", находит совпадение полностью со всем текстом.
В QSearch же совпадение будет только с одним символом, т.е. по сути, аналог шаблона ".+?". При этом, если использовать более расширенный шаблон, например, ".+." или "(.+)", то будет выбран именно весь текст, т.е. всё таки "+", в данном случае, является жадным квантификатором.
Тут надо, либо описание подкорректировать, либо работу регэкспов привести в соответствие... а вообще, имхо, не совсем понятно, зачем программно игнорировать квантификаторы в конце регэкспов?! Пусть себе выделяют то, что в шаблоне прописывает пользователь - если есть необходимость исключения выделения всего текста, надо просто составить соответствующий шаблон...
Posted: Sat Jan 23, 2016 1:55 pm
by DV
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.
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)?
[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"
Posted: Mon Mar 28, 2016 12:48 pm
by DV
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...
Posted: Mon Mar 28, 2016 7:58 pm
by DV
nbsp wrote:the option ". matches \n"
Собственно, да: не могу подобрать ни название этому пункту меню, ни место, куда его вставить во всплывающее меню.