CodeHighlighter
Настраиваемая лексическая подсветка ключевых слов, чисел, вызовов и цветовых областей.
CodeHighlighter — готовая лексическая реализация для TextEdit, не компилятор и не семантический анализатор C#. Назначьте отдельный экземпляр каждому редактору, настройте цвета токенов, затем добавьте ключевые слова и области комментариев/строк. Готовый набор правил языка автоматически не загружается.
KeywordColors и MemberKeywordColors сопоставляют точные слова с Color с учётом регистра. MemberKeywordColors применяется к отдельным словам; после точки используется правило MemberVariableColor. Важное ограничение: чёрный с alpha = 1 в таблице ключевых слов служит маркером отсутствия цвета и не применяется, даже если HasKeywordColor возвращает true. Для такого точного цвета используйте собственный SyntaxHighlighter.
Таблицы ключевых слов разделяются с переданными словарями и результатами getters. Изменение содержимого на месте не инвалидирует кэш; ClearKeywordColors очищает и общий словарь вызывающего кода. Предпочитайте Add/Remove-методы или отдельные заранее подготовленные таблицы. После смены правил вызовите EmitChanged; после изменения общего словаря сначала ClearHighlightingCache, затем EmitChanged.
AddColorRegion задаёт буквальные символы начала/конца области. Пустой конец всегда ограничивает область строкой; lineOnly = true делает это и при заданном конце. Более длинное начало проверяется раньше короткого. ColorRegions использует ключ "начало конец", но не сохраняет lineOnly: чтение и обратное назначение словаря может превратить однострочную область в многострочную. Для точной настройки используйте AddColorRegion.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Конструкторы1
CodeHighlighterКонструктор
public CodeHighlighter();Создаёт лексический highlighter с пустыми таблицами ключевых слов и областей. Назначьте редактор и настройте палитру; это не готовая конфигурация синтаксиса конкретного языка.
Свойства7
ColorRegionsСвойство
public Reckfell.Collections.Dictionary ColorRegions { get; set; }Dictionary снимка областей: ключ "начало конец", либо только "начало" для области до конца строки; значение Color. Присваивание заменяет области, не связывая их с контейнером. Формат не хранит явный lineOnly при непустом конце; для него используйте AddColorRegion.
FunctionColorСвойство
public Color FunctionColor { get; set; }Лексический цвет имён перед открывающей скобкой вызова. Это правило текста, не семантическое определение типа токена компилятором. Setter очищает кэш ресурса; для обновления редактора вызовите EmitChanged.
KeywordColorsСвойство
public Reckfell.Collections.Dictionary KeywordColors { get; set; }Общий Dictionary: точное слово → Color. Присваивание заменяет таблицу и очищает кэш ресурса. Изменение общего словаря на месте кэш не очищает. Чёрный с alpha = 1 не применяется как цвет ключевого слова. Для обновления редактора используйте EmitChanged.
MemberKeywordColorsСвойство
public Reckfell.Collections.Dictionary MemberKeywordColors { get; set; }Общий Dictionary цветов отдельных member-слов. После точки такое правило не применяется; используется MemberVariableColor. Присваивание очищает кэш ресурса, изменение содержимого общего словаря — нет. Чёрный с alpha = 1 трактуется как отсутствие цвета.
MemberVariableColorСвойство
public Color MemberVariableColor { get; set; }Лексический цвет слов после точки. Это правило текста, не семантическое определение типа токена компилятором. Setter очищает кэш ресурса; для обновления редактора вызовите EmitChanged.
NumberColorСвойство
public Color NumberColor { get; set; }Лексический цвет чисел. Это правило текста, не семантическое определение типа токена компилятором. Setter очищает кэш ресурса; для обновления редактора вызовите EmitChanged.
SymbolColorСвойство
public Color SymbolColor { get; set; }Лексический цвет символов пунктуации. Это правило текста, не семантическое определение типа токена компилятором. Setter очищает кэш ресурса; для обновления редактора вызовите EmitChanged.
Методы28
AddColorRegionvoid
public void AddColorRegion(string startKey, string endKey, Color color, bool lineOnly = false);Добавляет буквальную область комментария/строки. Разделители состоят из символов пунктуации; используйте непустое начало без пробелов. Начало должно быть уникальным: для замены сначала RemoveColorRegion. Пустой конец всегда означает line-only; lineOnly = true ограничивает строкой и при заданном конце. Длинные начала проверяются раньше коротких.
| Имя | Тип | По умолчанию |
|---|---|---|
startKey | string | — |
endKey | string | — |
color | Color | — |
lineOnly | bool | false |
startKeyУникальный непустой открывающий разделитель из символов пунктуации.
endKeyЗакрывающий разделитель; пустая строка принудительно ограничивает область одной строкой.
colorColor правила; у ключевых/member-слов чёрный с alpha = 1 трактуется как отсутствие цвета.
lineOnlyНе переносить область на следующую строку даже при непустом endKey.
AddKeywordColorvoid
public void AddKeywordColor(string keyword, Color color);Добавляет или заменяет цвет точного ключевого слова с учётом регистра и очищает кэш ресурса. Это не regex. После изменения правил уведомите редактор через EmitChanged.
| Имя | Тип | По умолчанию |
|---|---|---|
keyword | string | — |
color | Color | — |
keywordТочное ключевое слово с учётом регистра, не regex.
colorColor правила; у ключевых/member-слов чёрный с alpha = 1 трактуется как отсутствие цвета.
AddMemberKeywordColorvoid
public void AddMemberKeywordColor(string memberKeyword, Color color);Добавляет или заменяет цвет точного отдельного member-слова. Не предназначено для имени после точки. Очищает кэш ресурса; затем уведомите редактор через EmitChanged.
| Имя | Тип | По умолчанию |
|---|---|---|
memberKeyword | string | — |
color | Color | — |
memberKeywordТочное отдельное member-слово; у setter таблицы — Dictionary слов и Color.
colorColor правила; у ключевых/member-слов чёрный с alpha = 1 трактуется как отсутствие цвета.
ClearColorRegionsvoid
public void ClearColorRegions();Удаляет все цветовые области и очищает кэш их многострочного состояния. Таблицы ключевых слов сохраняются.
ClearKeywordColorsvoid
public void ClearKeywordColors();Очищает общую таблицу ключевых слов и кэш. Если таблица была передана извне, исходный Dictionary также становится пустым.
ClearMemberKeywordColorsvoid
public void ClearMemberKeywordColors();Очищает общую member-таблицу и кэш ресурса. Переданный извне Dictionary тоже очищается.
GetColorRegionsReckfell.Collections.Dictionary
public Reckfell.Collections.Dictionary GetColorRegions();Dictionary снимка областей: ключ "начало конец", либо только "начало" для области до конца строки; значение Color. Присваивание заменяет области, не связывая их с контейнером. Формат не хранит явный lineOnly при непустом конце; для него используйте AddColorRegion.
Reckfell.Collections.DictionaryDictionary снимка областей: ключ "начало конец", либо только "начало" для области до конца строки; значение Color. Присваивание заменяет области, не связывая их с контейнером. Формат не хранит явный lineOnly при непустом конце; для него используйте AddColorRegion.
GetFunctionColorColor
public Color GetFunctionColor();Лексический цвет имён перед открывающей скобкой вызова. Это правило текста, не семантическое определение типа токена компилятором. Setter очищает кэш ресурса; для обновления редактора вызовите EmitChanged.
ColorЛексический цвет имён перед открывающей скобкой вызова. Это правило текста, не семантическое определение типа токена компилятором. Setter очищает кэш ресурса; для обновления редактора вызовите EmitChanged.
GetKeywordColorColor
public Color GetKeywordColor(string keyword);Сохранённый цвет существующего ключевого слова. Сначала проверьте HasKeywordColor: отсутствие правила — ошибка, не способ получить цвет темы.
| Имя | Тип | По умолчанию |
|---|---|---|
keyword | string | — |
keywordТочное ключевое слово с учётом регистра, не regex.
ColorСохранённый цвет существующего ключевого слова. Сначала проверьте HasKeywordColor: отсутствие правила — ошибка, не способ получить цвет темы.
GetKeywordColorsReckfell.Collections.Dictionary
public Reckfell.Collections.Dictionary GetKeywordColors();Общий Dictionary: точное слово → Color. Присваивание заменяет таблицу и очищает кэш ресурса. Изменение общего словаря на месте кэш не очищает. Чёрный с alpha = 1 не применяется как цвет ключевого слова. Для обновления редактора используйте EmitChanged.
Reckfell.Collections.DictionaryОбщий Dictionary: точное слово → Color. Присваивание заменяет таблицу и очищает кэш ресурса. Изменение общего словаря на месте кэш не очищает. Чёрный с alpha = 1 не применяется как цвет ключевого слова. Для обновления редактора используйте EmitChanged.
GetMemberKeywordColorColor
public Color GetMemberKeywordColor(string memberKeyword);Цвет существующего member-правила. Перед запросом проверьте HasMemberKeywordColor; отсутствующий ключ вызывает ошибку.
| Имя | Тип | По умолчанию |
|---|---|---|
memberKeyword | string | — |
memberKeywordТочное отдельное member-слово; у setter таблицы — Dictionary слов и Color.
ColorЦвет существующего member-правила. Перед запросом проверьте HasMemberKeywordColor; отсутствующий ключ вызывает ошибку.
GetMemberKeywordColorsReckfell.Collections.Dictionary
public Reckfell.Collections.Dictionary GetMemberKeywordColors();Общий Dictionary цветов отдельных member-слов. После точки такое правило не применяется; используется MemberVariableColor. Присваивание очищает кэш ресурса, изменение содержимого общего словаря — нет. Чёрный с alpha = 1 трактуется как отсутствие цвета.
Reckfell.Collections.DictionaryОбщий Dictionary цветов отдельных member-слов. После точки такое правило не применяется; используется MemberVariableColor. Присваивание очищает кэш ресурса, изменение содержимого общего словаря — нет. Чёрный с alpha = 1 трактуется как отсутствие цвета.
GetMemberVariableColorColor
public Color GetMemberVariableColor();Лексический цвет слов после точки. Это правило текста, не семантическое определение типа токена компилятором. Setter очищает кэш ресурса; для обновления редактора вызовите EmitChanged.
ColorЛексический цвет слов после точки. Это правило текста, не семантическое определение типа токена компилятором. Setter очищает кэш ресурса; для обновления редактора вызовите EmitChanged.
GetNumberColorColor
public Color GetNumberColor();Лексический цвет чисел. Это правило текста, не семантическое определение типа токена компилятором. Setter очищает кэш ресурса; для обновления редактора вызовите EmitChanged.
ColorЛексический цвет чисел. Это правило текста, не семантическое определение типа токена компилятором. Setter очищает кэш ресурса; для обновления редактора вызовите EmitChanged.
GetSymbolColorColor
public Color GetSymbolColor();Лексический цвет символов пунктуации. Это правило текста, не семантическое определение типа токена компилятором. Setter очищает кэш ресурса; для обновления редактора вызовите EmitChanged.
ColorЛексический цвет символов пунктуации. Это правило текста, не семантическое определение типа токена компилятором. Setter очищает кэш ресурса; для обновления редактора вызовите EmitChanged.
HasColorRegionbool
public bool HasColorRegion(string startKey);Зарегистрировано ли точное начало области. Не проверяет, находится ли позиция текста внутри этой области.
| Имя | Тип | По умолчанию |
|---|---|---|
startKey | string | — |
startKeyУникальный непустой открывающий разделитель из символов пунктуации.
boolЗарегистрировано ли точное начало области. Не проверяет, находится ли позиция текста внутри этой области.
HasKeywordColorbool
public bool HasKeywordColor(string keyword);Есть ли ключ в таблице. true не гарантирует видимый цвет: чёрный с alpha = 1 служит маркером отсутствия цвета.
| Имя | Тип | По умолчанию |
|---|---|---|
keyword | string | — |
keywordТочное ключевое слово с учётом регистра, не regex.
boolЕсть ли ключ в таблице. true не гарантирует видимый цвет: чёрный с alpha = 1 служит маркером отсутствия цвета.
HasMemberKeywordColorbool
public bool HasMemberKeywordColor(string memberKeyword);Есть ли ключ в member-таблице. Не гарантирует применение правила к квалифицированному имени после точки.
| Имя | Тип | По умолчанию |
|---|---|---|
memberKeyword | string | — |
memberKeywordТочное отдельное member-слово; у setter таблицы — Dictionary слов и Color.
boolЕсть ли ключ в member-таблице. Не гарантирует применение правила к квалифицированному имени после точки.
RemoveColorRegionvoid
public void RemoveColorRegion(string startKey);Удаляет область по точному открывающему разделителю и очищает кэш ресурса. Для добавления новых правил затем вызовите EmitChanged.
| Имя | Тип | По умолчанию |
|---|---|---|
startKey | string | — |
startKeyУникальный непустой открывающий разделитель из символов пунктуации.
RemoveKeywordColorvoid
public void RemoveKeywordColor(string keyword);Удаляет правило ключевого слова и очищает кэш ресурса. При общем словаре удаление видно всем его владельцам. Не удаляет слово из текста.
| Имя | Тип | По умолчанию |
|---|---|---|
keyword | string | — |
keywordТочное ключевое слово с учётом регистра, не regex.
RemoveMemberKeywordColorvoid
public void RemoveMemberKeywordColor(string memberKeyword);Удаляет member-правило из общей таблицы и очищает кэш ресурса. Текст документа не меняется.
| Имя | Тип | По умолчанию |
|---|---|---|
memberKeyword | string | — |
memberKeywordТочное отдельное member-слово; у setter таблицы — Dictionary слов и Color.
SetColorRegionsvoid
public void SetColorRegions(Reckfell.Collections.Dictionary colorRegions);Dictionary снимка областей: ключ "начало конец", либо только "начало" для области до конца строки; значение Color. Присваивание заменяет области, не связывая их с контейнером. Формат не хранит явный lineOnly при непустом конце; для него используйте AddColorRegion.
| Имя | Тип | По умолчанию |
|---|---|---|
colorRegions | Reckfell.Collections.Dictionary | — |
colorRegionsDictionary "начало конец" → Color; явный lineOnly при непустом конце не кодируется.
SetFunctionColorvoid
public void SetFunctionColor(Color color);Лексический цвет имён перед открывающей скобкой вызова. Это правило текста, не семантическое определение типа токена компилятором. Setter очищает кэш ресурса; для обновления редактора вызовите EmitChanged.
| Имя | Тип | По умолчанию |
|---|---|---|
color | Color | — |
colorColor правила; у ключевых/member-слов чёрный с alpha = 1 трактуется как отсутствие цвета.
SetKeywordColorsvoid
public void SetKeywordColors(Reckfell.Collections.Dictionary keywords);Общий Dictionary: точное слово → Color. Присваивание заменяет таблицу и очищает кэш ресурса. Изменение общего словаря на месте кэш не очищает. Чёрный с alpha = 1 не применяется как цвет ключевого слова. Для обновления редактора используйте EmitChanged.
| Имя | Тип | По умолчанию |
|---|---|---|
keywords | Reckfell.Collections.Dictionary | — |
keywordsОбщий Dictionary со строковыми ключами и Color; не изменяйте на месте без очистки кэша.
SetMemberKeywordColorsvoid
public void SetMemberKeywordColors(Reckfell.Collections.Dictionary memberKeyword);Общий Dictionary цветов отдельных member-слов. После точки такое правило не применяется; используется MemberVariableColor. Присваивание очищает кэш ресурса, изменение содержимого общего словаря — нет. Чёрный с alpha = 1 трактуется как отсутствие цвета.
| Имя | Тип | По умолчанию |
|---|---|---|
memberKeyword | Reckfell.Collections.Dictionary | — |
memberKeywordТочное отдельное member-слово; у setter таблицы — Dictionary слов и Color.
SetMemberVariableColorvoid
public void SetMemberVariableColor(Color color);Лексический цвет слов после точки. Это правило текста, не семантическое определение типа токена компилятором. Setter очищает кэш ресурса; для обновления редактора вызовите EmitChanged.
| Имя | Тип | По умолчанию |
|---|---|---|
color | Color | — |
colorColor правила; у ключевых/member-слов чёрный с alpha = 1 трактуется как отсутствие цвета.
SetNumberColorvoid
public void SetNumberColor(Color color);Лексический цвет чисел. Это правило текста, не семантическое определение типа токена компилятором. Setter очищает кэш ресурса; для обновления редактора вызовите EmitChanged.
| Имя | Тип | По умолчанию |
|---|---|---|
color | Color | — |
colorColor правила; у ключевых/member-слов чёрный с alpha = 1 трактуется как отсутствие цвета.
SetSymbolColorvoid
public void SetSymbolColor(Color color);Лексический цвет символов пунктуации. Это правило текста, не семантическое определение типа токена компилятором. Setter очищает кэш ресурса; для обновления редактора вызовите EmitChanged.
| Имя | Тип | По умолчанию |
|---|---|---|
color | Color | — |
colorColor правила; у ключевых/member-слов чёрный с alpha = 1 трактуется как отсутствие цвета.