XBrackets plugin

Discuss and announce AkelPad plugins
  • Author
  • Message
Offline
Posts: 876
Joined: Tue Jul 24, 2007 8:54 am

Post by Fr0sT »

VladSh, разумеется, что unquoting здесь ключевой. Простой quoting можно и через Insert("..\s..") сделать

Offline
Posts: 9
Joined: Sat Mar 12, 2011 11:54 am

Post by bolix »

Можно ли сделать подсветку парного символа другим цветом, если пара отсутствует?

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

Post by DV »

bolix,
Nope.

Offline
Posts: 9
Joined: Sat Mar 12, 2011 11:54 am

Post by bolix »

DV
Очень давно был пост
viewtopic.php?p=640#p640

И один из вариантов был:
Или подсвечивать скобки при любой позиции курсора между этими скобками? То есть:
[пример| текста]

Сейчас такое появилось?

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

Post by DV »

bolix,
И опять вынужден вас разочаровать. Такого функционала нет и не планируется.
Помимо поиска ближайшей скобки или кавычки подобное поведение может быть неоднозначным, например:
"Фигурная скобка { внутри | кавычек" и вне кавычек }.
| - каретка. Расстояние до символа '{' слева - 8 символов. Расстояние до символа '"' справа - 8 символов. Какую пару подсвечивать? Варианты равнозначны.
И даже в случае
{ квадратная скобка [ внутри| фигурной } и вне её ].
можно ли утверждать, что контекст квадратных скобок (которые ближе к каретке) более важен, чем фигурных? Непонятно.

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

Post by Infocatcher »

DV
С этим как раз просто:
1) ближайший символ имеет приоритет
2) если таких символов два, слева и справа, то брать тот, что слева (ну, или настройку сделать, какой из них выбирать)

Я-то думал, проблема в производительности. :D

[Собственно, подобная проблема]|{уже была однажды решена}
:)

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

Post by DV »

Infocatcher,
Проблема производительности будет вот здесь:
"а вот вам открывающая квадратная скобка [ без | закрывающей далее по тексту"
И здесь:
[вы уверены, что у закрывающей фигурной |кавычки } есть парная открывающая?]
И во всём бесконечном множестве подобных случаев.
То есть если сейчас XBrackets ищет парную скобку (читай: напрягает процессор) только когда каретка находится на позиции одной из скобок, то в рассмотренных выше случаях он будет искать парные скобки при любом передвижении каретки.

Offline
Posts: 2247
Joined: Tue Aug 07, 2007 2:03 pm
Location: Vinnitsa, Ukraine

Post by FeyFre »

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

Offline
Posts: 2247
Joined: Tue Aug 07, 2007 2:03 pm
Location: Vinnitsa, Ukraine

Post by FeyFre »

то в рассмотренных выше случаях он будет искать парные скобки при любом передвижении каретки.
Ну это явно не оптимально было бы. Можно ведь при поиске найти диапазон риска - место в тексте вокруг текущего положения каретки, при редактировании в которого нужно перепроверить наличие более подходящих кандидатов в подсвечиваемые скобки/кавычки. Всё что вне диапазона - ничего не делать.

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

Post by DV »

Собственно, у меня крутилась в голове эта идея: в качестве эксперимента предложить заинтересованным лицам набросать такой скрипт - ну а потом уж я, так и быть, перенёс бы предложенный код в XBrackets :)
По поводу возможных оптимизаций в диапазонах поиска - я немного обдумывал, как бы это можно было достичь. Особенно в таких ситуациях:
1 + 2*( 3 + 4*( 5 + 6*( 7 + 8 ) + 9 ) |+ 10*( 11 + 12 ) )
где любое перемещение каретки действительно меняет контекст текущих скобок.
Даже если мы, скажем, будем постоянно хранить и обновлять в памяти информацию о нескольких ближайших найденных скобках, это всё равно оставляет нас совершенно безоружными против операций типа Ctrl+V и Ctrl+X, которые могут изменить ситуацию самым неожиданным образом. Не говоря уже о том, что необходимо отслеживать каждый вводимый символ, потому что в случае скобки всю информацию о ближайших найденных скобках придётся пересмотреть...

Offline
Posts: 3217
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Post by VladSh »

DV wrote:то в рассмотренных выше случаях он будет искать парные скобки при любом передвижении каретки.
Не обязательно. Можно только по комбинации клавиш /имею ввиду выделение текста/.

Offline
Posts: 2247
Joined: Tue Aug 07, 2007 2:03 pm
Location: Vinnitsa, Ukraine

Post by FeyFre »

Тогда можно скриптом обойтись преспокойно.

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

Post by DV »

XBrackets v.5.4:
* AkelPad 4.8.1+
+ 'highlight.br_max_lines' (для ограничения кол-ва строк, которые просматривает XBrackets в поисках парной скобки)

Ручное ограничение кол-ва строк (например, highlight.br_max_lines=50000) актуально для слабых компьютеров, чтобы не было заметных задержек при поиске далёкой парной скобки в очень большом файле. Это ограничение не касается парных скобок, обнаруженных плагином Coder в процессе подсветки, так как в этом случае XBrackets не ищет парную скобку самостоятельно, а лишь запрашивает её местонахождение у AkelPad.

Offline
Posts: 582
Joined: Mon Apr 08, 2013 9:50 pm
Location: Win7SP1x64, APx64

Post by Drugmix »

DV, здравствуйте.

1. Вопрос: как решить проблему неверной подсветки закрывающей скобки (в случае нечётного количества скобок в RegExp шаблоне)

Code: Select all

RegExReplace(value, "i)^.*\\|\.ahk[^\w]*")
Группой из круглых скобок здесь является первая и последняя, а вместо этого подсвечиваются левая и средняя.
i) - эта скобка в шаблонах регулярных выражений используется как непарная для того, чтобы слева от неё можно было перечислять настройки для шаблона.
Я так понимаю, что для прописывания подобных правил - лучше было бы срастить Xbrackets и Coder плагины в один плагин, чтобы подобные правила можно было настраивать.

2. Баг репорт: обратите внимание на последние 2 скобки на картинке:
Image
они криво прорисованы из-за того, что функция 'Highlight brackets' в Вашем плагине вместо перекрашивания существующих символов - на самом деле рисует новые поверх старых, но делает это без учёта курсива/жирности текста (а также, возможно, и в случае иного декорирования текста), поэтому наложение не всегда точно совпадает с текстом под наложением.

3. Фиче реквест: расширьте, пожалуйста, эти настройки: Image
Всё дело в том, что у каждого языка свой синтаксис и в разных языках скобки (да и другие символы) могут escape'ироваться по-разному.
По этой же причине - следует переделать 'Skip brackets after // in these files:' в нечто вроде "Skip brackets in commentaries" и полагаться на .coder файлы, т.к. именно в них, насколько я понимаю, прописываются условия и триггер-символы для перевода кода в комментарии.

DV
Что Вы лично думаете об идее слияния XBrackets и Coder плагинов? Считаете ли это возможным? Считаете ли это нужным? Есть ли у Вас желание это сделать? Если нет - то почему Вы против этого?

Offline
Posts: 876
Joined: Tue Jul 24, 2007 8:54 am

Post by Fr0sT »

Да слияние давно уже просится, но пока ситуация прежняя :)
А насчет комментариев - у Coder нету выделенного понятия "Комментарий", есть только "Блок свертки" и "Стиль подсветки COMM". А так это и для toggleComment пригодилось бы.
Post Reply