Подсветка синтаксиса Pixilang для Kate

Pixilang - это такой пиксель-ориентированный язык программирования.

Вот сегодня набросал файл подсветки синтаксиса для текстового редактора Kate (wikipedia). Может кому сгодится. Файл я создал на основе подсветки для C, также заглядывал в другие файлы подсветки и в документацию.

Чтобы установить файл подсветки нужно скопировать pixilang.xml его в $KDEDIR/share/apps/katepart/syntax.

Скачать файл подсветки pixilang.xml.gz

Скриншоты:

Kate screenshot

Kate screenshot

Kate screenshot

Kate screenshot

Kate screenshot

Kate screenshot

Примечания

1. В ходе создания этого файла возникло несколько проблем индентификации сущностей в пикси. Пример:

INCLUDE "somefile.txt"

// Не зная контекста совершенно невозможно понять zxc это переменная или подпрограмма.
abc = 123 + zxc
Так получается намного понятнее:
INCLUDE "somefile.txt"

abc = 123 + zxc()
Поэтому не любой вызов подпрограммы подсвечивается. Подсвечивается только вызов со скобками() и одиночная команда вроде:
zxc
Хотя zxc может быть и переменной, все же обычно это вызов подпрограммы.

2. Еще у меня было желание делать сворачиваемыми подпрограммы. Типичная подпрограмма:

sub_prog1:
// что-то делаем
ret
Если определить метку "sub_prog1:" в качестве начала блока и комманду "ret" (также блок могут завершить "go" или "goto") в качетве конца, то в этом примере все работает хорошо. но если метки используются не для создания продпрограмм, а сами по себе, то возникает не очень красивая ситуация, как на одном из скриншотов, когда закрывается только "вложенная" (или лучше сказать "следующая") метка, а вышестоящая метка тенется до конца файла. Кому не нравится такое поведение можно вообще убрать свертывание для подпрограмм. Для этого необходимо закомментировать строки в файле разметки:
        
        <RegExpr attribute="Label" context="#stay" String="[\w_]+:" beginRegion="Subprog1"   />
        <RegExpr attribute="Keyword" context="#stay" String="ret" endRegion="Subprog1" />
        <RegExpr attribute="Keyword" context="#stay" String="(^|\s)+(goto)(^|\s)+" endRegion="Subprog1" />
        <RegExpr attribute="Keyword" context="#stay" String="(^|\s)+(go)($|\s)+" endRegion="Subprog1" />
        
А строку чуть выше, наоборот расскоментировать, чтобы осталась подсветка меток:
        <!--  Highlight labels UNCOMMENT ONLY IF YOU DON'T WANT USE subprograms folding (see below) -->
        <!-- <RegExpr attribute="Label" context="#stay" String="[\w_]+:" /> -->

3. Можно специальными комментариями задавать сворачиваемые блоки:

//BEGIN initial values
mouse_is_down=0
select_forecolor=1
//END
См. скриншоты.

А если у кого есть какие пожелания, или кто ошибки найдет - обращайтесь :)

Ссылки


Zuf
Back