Каков наилучший способ реализовать подсветку синтаксиса исходного кода в Cocoa?[закрыто]
-
09-09-2019 - |
Вопрос
Я работаю над приложением Cocoa, которое должно уметь анализировать и выделять исходный код, написанный на таких языках, как Objective-C, SQL, JavaScript, Python и т.д.Текст также должен быть доступен для редактирования (например, с помощью NSTextView).
Пожалуйста, посоветуйте, как лучше всего реализовать такую функцию в Mac OS X 10.5.
Нет необходимости поддерживать автозаполнение и другие дополнительные функции.Простое форматирование по ключевым словам, строкам, #includes и числам, но с отличной производительностью - это просто нормально.
Кроме того, было бы здорово, если бы поддерживалась настройка по языкам.
Спасибо!
Решение
При подготовке проекта, который потребует чего-то подобного, я нашел следующее (но не оценил их подробно):
- В /Developer/Examples/OpenGL/Cocoa/GLSLEditorSample реализована подсветка синтаксиса.
- ИДЕКит, “фреймворк с открытым исходным кодом, который обеспечивает редактирование исходного кода программиста, включая раскраску синтаксиса, всплывающие функции и разделение фреймов”.Это не обновлялось некоторое время (оно рекламирует совместимость с 10.2 и 10.3 и поставляется с Project Builder project – может быть преобразовано с помощью Xcode 2.5).
- UKSyntaxColoredTextDocument - Документ с цветным текстом.
Другие советы
Я бы поддержал совет Ахрумана - особенно внимательно посмотрите на UKSyntaxColoredTextDocument Ули, поскольку это укажет вам правильное направление относительно того, какие классы и т.д.вам придется узнать об этом подробнее.
Это еще один отличный источник информации:
http://www.cocoadev.com/index.pl?ImplementSyntaxHighlighting
Удачи - правильную подсветку синтаксиса добиться сложно, но на этом пути будет очень весело!
Недавно мне пришлось искать решение для подсветки синтаксиса для Cocoa, и после поиска в Stack Overflow Google и GitHub не смогли найти ничего современного, простого в повторном использовании и все еще находящегося в активной разработке.
Похоже, что большинство маркеров синтаксиса в наши дни написаны для Интернета.К счастью, на самом деле довольно легко встроить их в WebView для использования в любом приложении Cocoa.Связь с редактором может осуществляться через WebKit's Протокол WebScriptObject.
Вот пример оболочки для популярного текстового редактора JavaScript Кодовое зеркало для Какао:https://github.com/swisspol/CodeMirrorView
Вы можете использовать Pygments, написанный на python, для генерации HTML-представления исходного кода, который затем может быть представлен в веб-представлении.
(Обратите внимание, как отражено в комментарии ниже - этот ответ был на исходный вопрос, в котором не упоминался редактируемый текст.)
Вы могли бы рассмотреть возможность использования flex, как описано (на немецком языке) здесь [1].Вы можете найти пример такого подхода здесь [2].
[1] http://www.osxentwicklerforum.de/thread.php?postid=14764 [2] http://objectiveous.github.com/davenport/