XBrackets plugin
- Author
- Message
-
Offline
- Posts: 9
- Joined: Sat Mar 12, 2011 11:54 am
DV
Очень давно был пост
viewtopic.php?p=640#p640
И один из вариантов был:
Или подсвечивать скобки при любой позиции курсора между этими скобками? То есть:
[пример| текста]
Сейчас такое появилось?
Очень давно был пост
viewtopic.php?p=640#p640
И один из вариантов был:
Или подсвечивать скобки при любой позиции курсора между этими скобками? То есть:
[пример| текста]
Сейчас такое появилось?
-
Offline
- Posts: 1250
- Joined: Thu Nov 16, 2006 11:53 am
- Location: Kyiv, Ukraine
bolix,
И опять вынужден вас разочаровать. Такого функционала нет и не планируется.
Помимо поиска ближайшей скобки или кавычки подобное поведение может быть неоднозначным, например:
И даже в случае
И опять вынужден вас разочаровать. Такого функционала нет и не планируется.
Помимо поиска ближайшей скобки или кавычки подобное поведение может быть неоднозначным, например:
| - каретка. Расстояние до символа '{' слева - 8 символов. Расстояние до символа '"' справа - 8 символов. Какую пару подсвечивать? Варианты равнозначны."Фигурная скобка { внутри | кавычек" и вне кавычек }.
И даже в случае
можно ли утверждать, что контекст квадратных скобок (которые ближе к каретке) более важен, чем фигурных? Непонятно.{ квадратная скобка [ внутри| фигурной } и вне её ].
-
Offline
- Posts: 1862
- Joined: Mon Aug 06, 2007 1:07 pm
- Contact:
-
Offline
- Posts: 1250
- Joined: Thu Nov 16, 2006 11:53 am
- Location: Kyiv, Ukraine
Infocatcher,
Проблема производительности будет вот здесь:
То есть если сейчас XBrackets ищет парную скобку (читай: напрягает процессор) только когда каретка находится на позиции одной из скобок, то в рассмотренных выше случаях он будет искать парные скобки при любом передвижении каретки.
Проблема производительности будет вот здесь:
И здесь:"а вот вам открывающая квадратная скобка [ без | закрывающей далее по тексту"
И во всём бесконечном множестве подобных случаев.[вы уверены, что у закрывающей фигурной |кавычки } есть парная открывающая?]
То есть если сейчас XBrackets ищет парную скобку (читай: напрягает процессор) только когда каретка находится на позиции одной из скобок, то в рассмотренных выше случаях он будет искать парные скобки при любом передвижении каретки.
-
Offline
- Posts: 2247
- Joined: Tue Aug 07, 2007 2:03 pm
- Location: Vinnitsa, Ukraine
-
Offline
- Posts: 2247
- Joined: Tue Aug 07, 2007 2:03 pm
- Location: Vinnitsa, Ukraine
Ну это явно не оптимально было бы. Можно ведь при поиске найти диапазон риска - место в тексте вокруг текущего положения каретки, при редактировании в которого нужно перепроверить наличие более подходящих кандидатов в подсвечиваемые скобки/кавычки. Всё что вне диапазона - ничего не делать.то в рассмотренных выше случаях он будет искать парные скобки при любом передвижении каретки.
-
Offline
- Posts: 1250
- Joined: Thu Nov 16, 2006 11:53 am
- Location: Kyiv, Ukraine
Собственно, у меня крутилась в голове эта идея: в качестве эксперимента предложить заинтересованным лицам набросать такой скрипт - ну а потом уж я, так и быть, перенёс бы предложенный код в XBrackets
По поводу возможных оптимизаций в диапазонах поиска - я немного обдумывал, как бы это можно было достичь. Особенно в таких ситуациях:
Даже если мы, скажем, будем постоянно хранить и обновлять в памяти информацию о нескольких ближайших найденных скобках, это всё равно оставляет нас совершенно безоружными против операций типа Ctrl+V и Ctrl+X, которые могут изменить ситуацию самым неожиданным образом. Не говоря уже о том, что необходимо отслеживать каждый вводимый символ, потому что в случае скобки всю информацию о ближайших найденных скобках придётся пересмотреть...
По поводу возможных оптимизаций в диапазонах поиска - я немного обдумывал, как бы это можно было достичь. Особенно в таких ситуациях:
где любое перемещение каретки действительно меняет контекст текущих скобок.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:
-
Offline
- Posts: 1250
- Joined: Thu Nov 16, 2006 11:53 am
- Location: Kyiv, Ukraine
XBrackets v.5.4:
* AkelPad 4.8.1+
+ 'highlight.br_max_lines' (для ограничения кол-ва строк, которые просматривает XBrackets в поисках парной скобки)
Ручное ограничение кол-ва строк (например, highlight.br_max_lines=50000) актуально для слабых компьютеров, чтобы не было заметных задержек при поиске далёкой парной скобки в очень большом файле. Это ограничение не касается парных скобок, обнаруженных плагином Coder в процессе подсветки, так как в этом случае XBrackets не ищет парную скобку самостоятельно, а лишь запрашивает её местонахождение у AkelPad.
* 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
DV, здравствуйте.
1. Вопрос: как решить проблему неверной подсветки закрывающей скобки (в случае нечётного количества скобок в RegExp шаблоне)
Группой из круглых скобок здесь является первая и последняя, а вместо этого подсвечиваются левая и средняя.
i) - эта скобка в шаблонах регулярных выражений используется как непарная для того, чтобы слева от неё можно было перечислять настройки для шаблона.
Я так понимаю, что для прописывания подобных правил - лучше было бы срастить Xbrackets и Coder плагины в один плагин, чтобы подобные правила можно было настраивать.
2. Баг репорт: обратите внимание на последние 2 скобки на картинке:
они криво прорисованы из-за того, что функция 'Highlight brackets' в Вашем плагине вместо перекрашивания существующих символов - на самом деле рисует новые поверх старых, но делает это без учёта курсива/жирности текста (а также, возможно, и в случае иного декорирования текста), поэтому наложение не всегда точно совпадает с текстом под наложением.
3. Фиче реквест: расширьте, пожалуйста, эти настройки:
Всё дело в том, что у каждого языка свой синтаксис и в разных языках скобки (да и другие символы) могут escape'ироваться по-разному.
По этой же причине - следует переделать 'Skip brackets after // in these files:' в нечто вроде "Skip brackets in commentaries" и полагаться на .coder файлы, т.к. именно в них, насколько я понимаю, прописываются условия и триггер-символы для перевода кода в комментарии.
DV
Что Вы лично думаете об идее слияния XBrackets и Coder плагинов? Считаете ли это возможным? Считаете ли это нужным? Есть ли у Вас желание это сделать? Если нет - то почему Вы против этого?
1. Вопрос: как решить проблему неверной подсветки закрывающей скобки (в случае нечётного количества скобок в RegExp шаблоне)
Code: Select all
RegExReplace(value, "i)^.*\\|\.ahk[^\w]*")
i) - эта скобка в шаблонах регулярных выражений используется как непарная для того, чтобы слева от неё можно было перечислять настройки для шаблона.
Я так понимаю, что для прописывания подобных правил - лучше было бы срастить Xbrackets и Coder плагины в один плагин, чтобы подобные правила можно было настраивать.
2. Баг репорт: обратите внимание на последние 2 скобки на картинке:
они криво прорисованы из-за того, что функция 'Highlight brackets' в Вашем плагине вместо перекрашивания существующих символов - на самом деле рисует новые поверх старых, но делает это без учёта курсива/жирности текста (а также, возможно, и в случае иного декорирования текста), поэтому наложение не всегда точно совпадает с текстом под наложением.
3. Фиче реквест: расширьте, пожалуйста, эти настройки:
Всё дело в том, что у каждого языка свой синтаксис и в разных языках скобки (да и другие символы) могут escape'ироваться по-разному.
По этой же причине - следует переделать 'Skip brackets after // in these files:' в нечто вроде "Skip brackets in commentaries" и полагаться на .coder файлы, т.к. именно в них, насколько я понимаю, прописываются условия и триггер-символы для перевода кода в комментарии.
DV
Что Вы лично думаете об идее слияния XBrackets и Coder плагинов? Считаете ли это возможным? Считаете ли это нужным? Есть ли у Вас желание это сделать? Если нет - то почему Вы против этого?