res = AkelPad.Call("XBrackets::SelToMatchingBracket", 1, lpBuffer);
что здесь делает единица?
Единица - это часть API.
Если единица не указана, вызов SelToMatchingBracket выделяет до парной скобки (действие по умолчанию).
Если единица указана, вызов SelToMatchingBracket заполняет буфер, переданный вторым параметром (после единицы). Вызвать SelToMatchingBracket с дополнительными параметрами можно либо из скрипта, либо из другого плагина.
Новая версия плагина находится в разработке!
Добавляется возможность расширить выделение скобок до ближайших скобок вокруг них.
Пример, как это работает: https://gifyu.com/image/tzf0
XBrackets v.7.7
+ добавлено: nearestbr.selto_flags = 2 (расширяет выделение ближайших скобок)
Влияет на работу функции XBrackets::SelToMatchingBracket, позволяя ей захватывать внешние скобки вокруг уже выделенных.
Примечание: если вы уже используете XBrackets, установите значение nearestbr.selto_flags = 2 вручную в файле "XBrackets.ini" или в Реестре под "HKEY_CURRENT_USER\SOFTWARE\Akelsoft\AkelPad\Plugs\XBrackets".
DV wrote:XBrackets v.7.7
+ добавлено: nearestbr.selto_flags = 2 (расширяет выделение ближайших скобок)
Влияет на работу функции XBrackets::SelToMatchingBracket, позволяя ей захватывать внешние скобки вокруг уже выделенных.
О! Удобства, спасибо!
Я правильно понимаю, то при включенном Coder'е будут учтены результаты его работы?
Например, на вот таком сферическом (и специально поломанном) коде подсветка парных скобок работает, но при этом SelToNearestBrackets эти {} корректно игнорирует:
function convertSource(file, text) {
//…
text = text
.replace(/\r\n?|\n\r?/g, "\r\n")
.replace(/[ \t]+([\n{\r]|$)/g, "$1}");
//…
}
И, соответственно, правильно ли я понимаю, что при использовании SelToNearestBrackets можно ориентироваться на постветку Coder'а (то есть если поствека/фолдинг не поломались, то и выделит все как надо)?
Infocatcher wrote:Я правильно понимаю, то при включенном Coder'е будут учтены результаты его работы?
Да. Реализация GoToNearestBracket и SelToNearestBrackets достаточно сильно опирается на плагин Coder, и без него будет "хромать" (хотя с обычным текстом справляется довольно неплохо). Эти функции используют собственный алгоритм поиска парных скобок (более "тяжёлый" алгоритм), который отличается от алгоритма, использующегося при подсветке скобок.
On a very long file, 10000 lines Javascipt, it doesn't look like it works anymore "Go to matching backet".
With same function isoled in other smart file work.
Diamen wrote:On a very long file, 10000 lines Javascipt, it doesn't look like it works anymore "Go to matching backet".
With same function isoled in other smart file work.
What about "Go to nearest bracket"? (It may look surprising, but "Go to matching backet" and "Go to nearest bracket" actually use different approaches and are implemented differently).
I tested XBrackets with a .js file of 11 MB (186000 lines), and it worked.
Could it be that you are using XBrackets without the Coder plugin? In such case, XBrackets may not highlighted/jump to brackets in case of ambiguity.
You may experiment with the option "highlight.hlt_xmode" described in the "XBrackets-Eng.txt" file.
This isolated code works for me, with and without the Coder plugin.
Probably the problem is in the context (something around this code) or maybe in some specific characters (such as Unicode whitespaces or special brackets/quotes that have not been copied/pasted to the forum with the very same character codes as in the original text).
Diamen
Ah, yes, something similar came to my mind lately last night.
XBrackets heavily relies on Coder's parsing when Coder is available. (That's why I suggested to play with the "highlight.hlt_xmode" option - to see whether something changes when the AEM_ things are disabled).
In short, if the Coder's rules (defined in the corresponding "*.coder" file) introduce some negative effects on brackets/braces/quotes parsing, these negative effects will be inherited by XBrackets (since XBrackets heavily relies on Coder's parsing when Coder is available).