reckfellENGINE

SyntaxHighlighter

Ресурс подсветки текста с картой цветовых переходов и собственным кэшем.

На этой странице
class SyntaxHighlighterReckfellSharpНаследует Resource

Создайте отдельный SyntaxHighlighter для каждого TextEdit и назначьте через TextEdit.SyntaxHighlighter. Ресурс хранит контекст одного редактора: назначение другому перепривязывает его, даже если первый ещё ссылается на тот же ресурс. Не используйте один экземпляр одновременно в нескольких редакторах.

Для своей подсветки наследуйте SyntaxHighlighter и переопределите _GetLineSyntaxHighlighting. Верните Dictionary: ключ — колонка в кодовых точках Unicode, значение — вложенный Dictionary с ключом "color" и Color. Цвет действует до следующего ключа или конца строки. Например, переходы в 0 и 5 задают два диапазона; это не массив цвета каждого символа.

Вызывайте GetLineSyntaxHighlighting, чтобы получить данные через кэш. Возвращённый словарь разделяется с кэшем: читайте его, но не очищайте и не редактируйте на месте. Dispose C#-обёртки словаря не равен Clear. Изменения строк автоматически инвалидируют соответствующие данные.

При смене собственных правил очистите кэш через ClearHighlightingCache или обновите состояние через UpdateCache, затем вызовите EmitChanged: TextEdit хранит ещё и свой кэш и слушает Changed ресурса. Сам ClearHighlightingCache не гарантирует обновление уже нарисованного редактора.

GetTextEdit возвращает заимствованную ссылку. Не освобождайте редактор через неё. Согласуйте время жизни ресурса с редактором и не запрашивайте подсветку после удаления редактора; наличие внешней ссылки на ресурс не продлевает жизнь UI.

Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.

Конструкторы1

SyntaxHighlighterКонструктор
# SyntaxHighlighter
C#
public SyntaxHighlighter();

Создаёт ресурс без привязанного редактора. Базовая реализация не задаёт правила языка; переопределите _GetLineSyntaxHighlighting или используйте CodeHighlighter.

Методы7

ClearHighlightingCachevoid
# ClearHighlightingCache
C#
public void ClearHighlightingCache();

Очищает карты строк и вызывает hook очистки, не обновляя все настройки. Для обновления TextEdit после смены правил дополнительно вызовите EmitChanged: у редактора есть отдельный кэш.

GetLineSyntaxHighlightingReckfell.Collections.Dictionary
# GetLineSyntaxHighlighting
C#
public Reckfell.Collections.Dictionary GetLineSyntaxHighlighting(int line);

Возвращает кэшированную карту переходов колонка → {"color": Color}. Без редактора карта пустая. Вызывайте этот метод, а не виртуальный hook напрямую. Словарь общий с кэшем: не меняйте его на месте; освобождайте C#-обёртку после чтения.

Параметры
ИмяТипПо умолчанию
lineint—
line

Индекс существующей логической строки; колонки результата считаются в кодовых точках Unicode.

Возвращает Reckfell.Collections.Dictionary

Возвращает кэшированную карту переходов колонка → {"color": Color}. Без редактора карта пустая. Вызывайте этот метод, а не виртуальный hook напрямую. Словарь общий с кэшем: не меняйте его на месте; освобождайте C#-обёртку после чтения.

GetTextEditTextEdit
# GetTextEdit
C#
public TextEdit GetTextEdit();

Заимствованный контекст одного TextEdit, null до привязки. Не продлевает жизнь редактора и не разрешает пользоваться контекстом после его удаления. При совместном ресурсе возвращается последний привязанный редактор.

Возвращает TextEdit

Заимствованный контекст одного TextEdit, null до привязки. Не продлевает жизнь редактора и не разрешает пользоваться контекстом после его удаления. При совместном ресурсе возвращается последний привязанный редактор.

UpdateCachevoid
# UpdateCache
C#
public void UpdateCache();

Сначала очищает карты, затем вызывает hook обновления при живом привязанном редакторе. CodeHighlighter обновляет базовый цвет текста. После внешней смены правил/данных уведомите редактор через EmitChanged.

_ClearHighlightingCachevoid
# _ClearHighlightingCache
C#
public virtual void _ClearHighlightingCache();

Hook для сброса собственного состояния анализа, например многострочных областей. Вызывается из ClearHighlightingCache/UpdateCache. Переопределение заменяет стандартный hook, поэтому для полного своего анализатора предпочтительна база SyntaxHighlighter.

_GetLineSyntaxHighlightingReckfell.Collections.Dictionary
# _GetLineSyntaxHighlighting
C#
public virtual Reckfell.Collections.Dictionary _GetLineSyntaxHighlighting(int line);

Виртуальный hook вычисления карты для одной строки при промахе кэша. Верните Dictionary с целыми колонками в кодовых точках Unicode и вложенными Dictionary с Color под ключом "color". Получайте текст через живой GetTextEdit; не вызывайте GetLineSyntaxHighlighting этой же строки рекурсивно.

Параметры
ИмяТипПо умолчанию
lineint—
line

Индекс существующей логической строки; колонки результата считаются в кодовых точках Unicode.

Возвращает Reckfell.Collections.Dictionary

Виртуальный hook вычисления карты для одной строки при промахе кэша. Верните Dictionary с целыми колонками в кодовых точках Unicode и вложенными Dictionary с Color под ключом "color". Получайте текст через живой GetTextEdit; не вызывайте GetLineSyntaxHighlighting этой же строки рекурсивно.

_UpdateCachevoid
# _UpdateCache
C#
public virtual void _UpdateCache();

Hook обновления собственных данных после очистки карт. Вызывается UpdateCache только при привязанном редакторе. Не изменяйте текст редактора во время вычисления подсветки.

Документация Reckfell EngineНаверх ↑
БЫСТРЫЙ ПЕРЕХОДНачало работыEntity и иерархияC# & .NET 10Сцены и префабы
Руководства и полный API Reckfell K
reckfellENGINE
RECKFELL ACCOUNT

Вход в аккаунт

Войдите в аккаунт Reckfell.

Один аккаунт для всей платформы Reckfell.