Imguicolortextedit
Синтаксис выделяет текстовый редактор для imgui

Демо -проект: https://github.com/balazsjako/colortexteditordemo
Это началось как моя попытка написать относительно простой виджет, который обеспечивает функциональность редактирования текста с помощью синтаксиса. Теперь есть другие участники, которые предоставляют ценные дополнения.
В то время как он опирается на https://github.com/ocornut/imgui's https://github.com/ocornut/imgui, он не следует за «чистым» одним виджетом - одним из функций. Поскольку редактор должен поддерживать относительно сложное и большое внутреннее состояние, не было практичным попытаться обеспечить полностью немедленное режим. Он хранит свое внутреннее состояние в экземпляре объекта, который повторно используется в рамках.
Код (до сих пор) работает в процессе, пожалуйста, сообщите, если вы найдете какие -либо проблемы.
Основные особенности
- Приблизительно типичный внешний вид редактора кода (Essential Mouse/Cheeboard Commands работают - я имею в виду, команды, которые я обычно использую :))
- отменить/повторно
- UTF-8 Поддержка
- Работает как с фиксированными, так и с шрифтами с переменной шириной
- Расширяемый синтаксис подсвечивания для нескольких языков
- Объявления идентификатора: Небольшой часть описания может быть связан с идентификатором. Редактор отображает его в всплеске инструментов, когда курсор мыши падает над идентификатором
- Маркеры ошибки: пользователь может указать список сообщений об ошибках вместе, что редактор будет поддерживать строки с красным задним ходом и отображать сообщение об ошибке в подъеме, когда курсор мыши падает над строкой
- Большие файлы: нет явного ограничения, установленного по размеру файла или количеству строк (ниже 2 ГБ, производительность не влияет при загрузке больших файлов (кроме синтаксического раскраски, см. Ниже)
- Поддержка цветовой палитры: вы можете переключаться между различными цветовыми палитрами или даже определить свой собственный
- Индикаторы пробелов (вкладка, пространство)
Известные проблемы
- Синтаксис Highlighing of Mast Languages - кроме C/C ++ - основан на std :: regex, которая является диаспонизирующей медленной. Из -за этого процесс выделения амортизируется между несколькими кадрами. C/C ++ имеет рукописный токенизатор, который намного быстрее.
Пожалуйста, опубликуйте свои скриншоты, если вы найдете этот маленький кусочек программного обеспечения полезным. :)
Способствовать
Если вы хотите внести свой вклад, пожалуйста, обратитесь к файлу.