XBrackets plugin

Discuss and announce AkelPad plugins
  • Author
  • Message
Offline
Posts: 294
Joined: Tue Jul 27, 2010 11:18 pm

Post by Serge Yolkin »

DV
У меня тоже все работает. Спасибо за версию. То, что доктор прописал.

Offline
Posts: 122
Joined: Sat Mar 19, 2011 10:20 pm

Post by DrakonHaSh »

AkelPad-4.6.0-setup.exe
=>
распаковываю из инсталлятора только
AkelFiles\
AkelPad.exe
создаю AkelPad.ini:
[Options]
SaveSettings=2

запускаю AkelPad.exe, alt-p, запускаю XBrackets (running)
ввожу
" " " "
все работает как предполагается, добавляю в конце любой символ
" " " "х
=>
вторая пара скобок перестает подсвечиваться вообще


----------------------------------
DV wrote:
DrakonHaSh wrote:опция пропуск "экранированных" скобок
У меня работает, что с подсветкой Coder, что без.
могу выложить настройки и файл на котором это безобразие происходит

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

Post by DV »

DrakonHaSh wrote:" " " "х
вторая пара скобок перестает подсвечиваться вообще
Всё верно, поскольку предполагает открывающую кавычку. Это делает поиск парной кавычки однозначно неоднозначным :), а в случае неоднозначности плагин ничего не подсвечивает.
DrakonHaSh wrote:могу выложить настройки и файл на котором это безобразие происходит
В студию!

Offline
Posts: 122
Joined: Sat Mar 19, 2011 10:20 pm

Post by DrakonHaSh »

DV wrote:
DrakonHaSh wrote:" " " "х
вторая пара скобок перестает подсвечиваться вообще
Всё верно, поскольку предполагает открывающую кавычку. Это делает поиск парной кавычки однозначно неоднозначным :), а в случае неоднозначности плагин ничего не подсвечивает.
если вместо x поставить перевод строки будет та же проблема.
" "(\n)
" "(\n)
та же проблема - 2-я пара скобок не подсвечивается. короче нейроалгоритм нуждается в дальнейшей эволюции :)
DV wrote:
DrakonHaSh wrote:могу выложить настройки и файл на котором это безобразие происходит
В студию!
http://rghost.ru/6624261
AkelPad.exe "cmd просмотра"

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

Post by DV »

DrakonHaSh wrote:AkelPad.exe "cmd просмотра"
Ага, все эти вещи имеют одинаковую причину: сейчас символ перевода строки рассматривается с тем же приоритетом, что пробел или табуляция. Т.е.

Code: Select all

abc
" " " "
def
считается аналогичным

Code: Select all

abc " " " " def
, а в этом случае направление поиска парной кавычки неопределено.
Наверное, имеет смысл приравнять '\n' и '\r' к '\0', который считается признаком конца файла (AnyRichEdit_GetCharAt возвращает '\0' для позиции вне файла).

И ещё полноценные проверки символов в диапазонах, возвращаемых AkelEdit+Coder, надо будет добавить.

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

Post by DV »

XBrackets v.4.5
+ улучшен алгоритм поиска парной кавычки
- исправлено: в многосимвольном комментарии мог подсвечиваться не тот символ

Offline
Posts: 120
Joined: Sat Jan 12, 2008 10:16 am
Location: Shantou, China

Post by cnnnc »

Hi, DV
My OS1: WinXP SP3 ChineseSimplified
OS2 on VirtualBox 1.66: WinXP SP3 en
AkelPad: 4.6.0+
Xbrackets: 4.5.0

I found a bug about XBrackets or AkelPad. To reproduce that, follow the step below:
make sure manual setting to autocomplete.sel_autobr=1, and others as its default.

For example there have a string like:

Code: Select all

var hMainWnd=AkelPad.GetMainWnd();
Select "AkelPad.GetMainWnd()", and press " key, or others like {, (, [.

A messagebox appear like below - translated by "Google Translate":
"0x0042ac1f" ​​command reference "0x00220031" memory. The memory could not be "read".

To terminate the program, click "OK."
To debug the program, click "Cancel. "
Maybe sometimes it not occur that error, please restart AkelPad and try once and once again.

In VM there is different:
Sometimes Akelpad is still alive, but click the closebutton or press ESC key it has not a messagebox for me to save the file before exit;
Sometimes AkelPad is terminated without any message;
sometimes AkelPad is terminated with a Message about abnormal or crach.

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

Post by DV »

cnnnc wrote:I found a bug about XBrackets or AkelPad.
Seems I allocated nSelLen bytes instead of nSelLen*sizeof(wchar_t) bytes to read the selected text inside AutoBracketsFunc. Looks like a stupid misprint appeared in v.4.4 while porting to x64.

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

Post by DV »

XBrackets v.4.6
- fixed: memory allocation bug appeared in v.4.4 (in AutoBracketsFunc, when calling sys_memalloc)

Offline
Posts: 14
Joined: Thu Oct 07, 2010 4:36 pm

Post by poma »

А можно в XML и производных сделать автозакрытие тегов такого типа:
Я ввожу <div class="mod"> и как только закрываю скобку akelpad добавляет </div>? Выглядит довольно несложным для реализации, нужно только следить что тег не самозакрывающийся (<br />)

Offline
Posts: 294
Joined: Tue Jul 27, 2010 11:18 pm

Post by Serge Yolkin »

Есть потребность в следующей фиче: быстро заменить пару кавычек/скобок на другие кавычки/скобки из поддерживаемых плагином. Особенно, когда прмер кода на языке, отличном от того, на котором пишем. Действие для этой фичи (если, конечно, такое возможно) желательно обсудить: или какая-то менюшечка по хоткею, или сочетание кноп с нужной кавычкой в конце, но для этого надо, либо подождать от Instructor реализации настройки хоткеев в одном окне с подсветкой занятых, либо использовать модификатор Win, кажется, он нигде не использовался.

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

Post by DV »

Serge Yolkin wrote:Есть потребность в следующей фиче: быстро заменить пару кавычек/скобок на другие кавычки/скобки
Для подобных целей напрашивается скрипт (под плагин Scripts). Но сразу же отмечу, что замена пары скобок "" на что-то другое не является тривиальным случаем и потребует сложной обработки. (Потому что открывающая и закрывающая кавычка одинаковы и в общем случае неизвестно, наткнулись мы на открывающую кавычку или же на закрывающую. В том случае, если скрипт будет обрабатывать весь файл, надо будет вести учёт встреченных кавычек - первая будет открывающей, следующая - закрывающей и т.д.)

Offline
Posts: 294
Joined: Tue Jul 27, 2010 11:18 pm

Post by Serge Yolkin »

DV
Да нет, все проще: выделяем ОДНУ кавычку - если парная подсветилась (стандартный функционал плагина), доступно действие по замене обеих (меня бы болше устроили горячие кнопы, но не настаиваю); если ничего не подсветилось - соответственно, ничего и недоступно.
Добавлено:
Я ж потому здесь и спросил, что работа плага по парсингу полностью устраивает, перепарсивать распарсенное еще раз не надо!

Offline
Posts: 294
Joined: Tue Jul 27, 2010 11:18 pm

Post by Serge Yolkin »

DV
Я извиняюсь за настырность, но все же хотелось бы получить ответ на предыдущий пост. Во избежание взаимного недопонимания: запрошенная функциональность не связана с дополнительной обработки файла или изменением существующих алгоритмов. По аналогии с Ctrl+`, в том случае, если при текущей позиции курсора плагин подсвечивает парные скобки/кавычки, становится доступным действие по замене УЖЕ найденых и подсвеченных скобок/кавычек...

Резон: при работе с длинной строкой, найденной в инете в качестве примера, находим "неправильно для текущего языка программирования закавыченный" фрагмент. Убиваем первую кавычку, меняем ее на "правильную", и мучительно ищем ответную, поскольку теперь она, разумеется, не подсвечена. Под кавычкой понимаем весь набор поддерживаемых плагином символов, тем более, что его можно настроить.

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

Post by DV »

Эх... Не хочется делать этого в XBrackets по двум причинам. А именно: первой и второй. Так и быть, опишу их :)
1. Лень мне код писать :)
2. Когда речь идёт о замене "неправильных скобок", то ведь логично заменять их во всём файле разом, а не каждую пару отдельно?
Исходя из вышесказанного, скрипт мне видится более удобным решением (не говоря уже о том, что в этом случае мне ничего делать не придётся ;))
Post Reply