LINUX.ORG.RU

Плагины для Qt Creator

 , ,


0

2

Кто нибудь делал плагины для Qt Creator? Интересует достаточно глубокая интеграция, в частности ближайшая задача - подсветка разными цветами фона строк в текстовом редакторе (по определенному алгоритму, который будет брать данные о том как раскрашивать в том числе и из внешних источников). Написал отдельную программу которая все это делает (свой небольшой редактор), но пришел к выводу что удобнее все-же внутри IDE, т.к. не хочется придумывать свою IDE и делать огромный объем работы который уже сделан в том же Qt Creator. Или возможно есть какие-то плагины с открытым кодом которые делают нечто подобное?

Сам не лазил, но QtC заточен под плагины, так что должно работать. Краем уха слышал, что они там апи постоянно ломают.

Начать можно с https://github.com/filcuc/NimQtCreatorPlugin и дальше по ссылкам.

RazrFalcon ★★★★★
()
Последнее исправление: RazrFalcon (всего исправлений: 1)

QtCreator - и есть набор плагинов. Само ядро по сути тупо загрузчик плагинов, которые друг от друга зависят.

Конкретно твоя задача должна решаться относительно просто.

pon4ik ★★★★★
()
Ответ на: комментарий от pon4ik

Выяснилось следующее. Создание своей подсветки синтаксиса (например плагина для другого языка) делается достаточно просто с помощью создания своего SyntaxHighlighter. Однако встраивание в существующие highlighter'ы не предусмотрено. То есть если я хочу сделать что-то свое для С/С++ - то мне нужно скопипастить целиком код cppeditpr/cpphighlighter и добавить туда свое, а затем перехватить создание документов и создавать их там. Боюсь, такая копипаста может повлечь за собой необходимость копипастить еще какие-то классы. Да и не хочется это делать, совсем криво получается.

К сожалению, модуль CppEditor почти ничего не экспортирует (и в частности CppHighlighter), так что очевидный вариант отнаследоваться от CppHighlighter не прокатил. И даже агрегация не прокатила, т.к. объект CppHighlighter просто не создать вне модуля CppEditor.

Однако это не все. Есть еще способ, но он кажется еще более сложным. На нем реализована дополнительная подсветка макропеременных (#define FOO), имен переменных в структурах и классах, подчеркивание ошибок и еще что-то. Там похоже обработка в отдельном потоке, который отслеживает изменения в коде и дополнительно раскрашивает текст. С этим я еще не разбирался... Но дело в том что хайлайтеры имеют простой встроенный механизм переподсветки не всего документа а только тех строк которые изменены, за счет того что с каждой строкой ассоциируется state. Как реализован механизм дополнительной подсветки я еще не знаю, буду смотреть...

NeoCode
() автор топика
Ответ на: комментарий от NeoCode

Звучит так, будто ты детально разобрался в вопросе, думаю имеет смысл написать про это багу на треккере qtc, с изложением проблемы (плохо кастомизируется подсветка) и конкретной прикладной задачей, когда нужно её кастомизировать.

Без пулл риквеста дело затянется, но если ты предложишь нормальный интерфейс кастомизации, то скорее всего, тебе пойдут на встречу.

Заодно - отметишься в крупном проекте.

pon4ik ★★★★★
()
Ответ на: комментарий от NeoCode

Ты кстати не cquery интегрировать собрался случаем?

pon4ik ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.