Вверх ↑
Ответов: 1304
Рейтинг: 405
#1: 2016-06-28 16:49:59 ЛС | профиль | цитата
flint2, вкратце моё понимание всей всей цветовой кухни Синтилии. Есть лексический анализатор с его помощью разбирается код на запчасти и определяет поведением подсветки, то-есть чтобы подсветить код на Паскале мы должны выбрать синтаксис с которым будем работать.
#pas
CP(SCI_SETLEXER, SCLEX_PASCAL, 0);
теперь нам доступны предустановленные наборы лексических правил, смотрим к примеру в DScintillaTypes.pas врапер DScintillar75
#pas
/// <summary>Lexical states for SCLEX_PASCAL</summary>
SCE_PAS_DEFAULT = 0;
SCE_PAS_IDENTIFIER = 1;
SCE_PAS_COMMENT = 2;
SCE_PAS_COMMENT2 = 3;
SCE_PAS_COMMENTLINE = 4;
SCE_PAS_PREPROCESSOR = 5;
SCE_PAS_PREPROCESSOR2 = 6;
SCE_PAS_NUMBER = 7;
SCE_PAS_HEXNUMBER = 8;
SCE_PAS_WORD = 9;
SCE_PAS_STRING = 10;
SCE_PAS_STRINGEOL = 11;
SCE_PAS_CHARACTER = 12;
SCE_PAS_OPERATOR = 13;
SCE_PAS_ASM = 14;
видим нумерацию как у нас в парсере, кстати для других языков парсер придётся переделывать, нумерация для разных языков отличается.
соответственно мы можем каждый параметр настроить конкретно под себя. Пример настройки для цифр
#pas
CP(SCI_STYLESETBOLD, SCE_PAS_NUMBER, 1);
CP(SCI_STYLESETFONT, SCE_PAS_NUMBER, longint(PChar(_prop_Font.Name)));
CP(SCI_STYLESETSIZE, SCE_PAS_NUMBER, _prop_Font.size);
//или вместо SCE_PAS_NUMBER ставим 7
Есть ещё стили 255 штук, по сути наборы параметров таких как примеру глобальный задний фон, не подсвеченный текст шрифт, размер и тд., цвет выделения текста и тд. Все стили можно настроить под себя кроме зарезервированных с 33 по 39, кстати зарезервированный стиль 34, 35 я использовал для скобок. Вывод, все параметры надо загонять в один стиль к примеру в STYLE_DEFAULT(32), потом этот набор можно использовать для разных языков.
пример настроек лексера на пуребасике
code_37417.txt

карма: 3

0
файлы: 1code_37417.txt [5.1KB] [832]