Подсветка синтаксиса в Cocoa TextView?Переживания?Предложения?Идеи?[дубликат]
-
13-09-2019 - |
Вопрос
Возможный Дубликат:
Раскраска синтаксиса для приложения Cocoa
Меня интересует подсветка синтаксиса в Какао Текстовый просмотр.
Я нашел несколько ресурсов:
подход с гибкостью, через гибкий шаблон, сопоставленный с
textStorageDidProcessEditing
вTextView
делегировать.При таком подходе вся строка анализируется при каждом входном событии, следовательно, производительность снижается.CocoaDev имеет собственная страница на тему подсветки синтаксиса:
Использование
NSTextStorageDidProcessEditingNotification
, затем получите отредактированный диапазон и просто примените к нему раскраску.Диапазон может быть wordboundaries или чем угодно еще;это определенно повышает производительность.Упомянутый там: Xcode, например, раскрашивает только текст, который в данный момент отображается на экране, и откладывает раскрашивание остальной части документа до тех пор, пока вы не прокрутите его. Как бы это реализовать?
Использование
NSLayoutManager
– через Временные атрибуты, [которые] используются только для рисования на экране и никоим образом не являются постоянными... как говорят документы, но это не окрашивает последний отредактированный диапазон, пока не будет введен пробел.Пользовательский помощник, подобный UKSyntaxColoredDocument UKSyntaxColoredДокумент – приятно, но определение языка выполняется через список свойств;как использовать дополнительные / существующие языковые определения?
Ни один из подходов не кажется мне действительно расширяемым или надежным (за исключением 4.может быть..).
Я знаю о надежных существующих библиотеках для SH, таких как пигменты;и из PyObjC.
Вопрос:Как можно было бы использовать какую-нибудь существующую библиотеку, напримерНравится пигменты иметь расширяемую и производительную подсветку синтаксиса в Cocoa TextView
?
Примечание:Я знаю, что этот вопрос очень широкий (и слишком длинный).Опыт и предложения, а также решения приветствуются.Спасибо.
Нашел еще одну похожую тему по этому вопросу: Раскраска синтаксиса для приложения Cocoa
Решение
Я бы предложил взглянуть на исходный код, чтобы Смультрон.У него очень приятная подсветка синтаксиса.Он использует подкласс NSTextView для выполнения большей части тяжелой работы.Код использует менеджер компоновки для добавления атрибутов к тексту и использует некоторые другие хитрые приемы, чтобы выделить только ту часть документа, которая необходима.