Подсветка синтаксиса в Cocoa TextView?Переживания?Предложения?Идеи?[дубликат]

StackOverflow https://stackoverflow.com/questions/972812

Вопрос

Возможный Дубликат:
Раскраска синтаксиса для приложения Cocoa

Меня интересует подсветка синтаксиса в Какао Текстовый просмотр.

Я нашел несколько ресурсов:

  • подход с гибкостью, через гибкий шаблон, сопоставленный с textStorageDidProcessEditing в TextView делегировать.При таком подходе вся строка анализируется при каждом входном событии, следовательно, производительность снижается.

  • CocoaDev имеет собственная страница на тему подсветки синтаксиса:

    1. Использование NSTextStorageDidProcessEditingNotification, затем получите отредактированный диапазон и просто примените к нему раскраску.Диапазон может быть wordboundaries или чем угодно еще;это определенно повышает производительность.

    2. Упомянутый там: Xcode, например, раскрашивает только текст, который в данный момент отображается на экране, и откладывает раскрашивание остальной части документа до тех пор, пока вы не прокрутите его. Как бы это реализовать?

    3. Использование NSLayoutManager – через Временные атрибуты, [которые] используются только для рисования на экране и никоим образом не являются постоянными... как говорят документы, но это не окрашивает последний отредактированный диапазон, пока не будет введен пробел.

    4. Пользовательский помощник, подобный UKSyntaxColoredDocument UKSyntaxColoredДокумент – приятно, но определение языка выполняется через список свойств;как использовать дополнительные / существующие языковые определения?

Ни один из подходов не кажется мне действительно расширяемым или надежным (за исключением 4.может быть..).

Я знаю о надежных существующих библиотеках для SH, таких как пигменты;и из PyObjC.

Вопрос:Как можно было бы использовать какую-нибудь существующую библиотеку, напримерНравится пигменты иметь расширяемую и производительную подсветку синтаксиса в Cocoa TextView?

Примечание:Я знаю, что этот вопрос очень широкий (и слишком длинный).Опыт и предложения, а также решения приветствуются.Спасибо.


Нашел еще одну похожую тему по этому вопросу: Раскраска синтаксиса для приложения Cocoa

Это было полезно?

Решение

Я бы предложил взглянуть на исходный код, чтобы Смультрон.У него очень приятная подсветка синтаксиса.Он использует подкласс NSTextView для выполнения большей части тяжелой работы.Код использует менеджер компоновки для добавления атрибутов к тексту и использует некоторые другие хитрые приемы, чтобы выделить только ту часть документа, которая необходима.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top