Я знаю, что этот вопрос был дан ответ, но как, как я и многие другие новые пользователи пришли сюда и будут знать, что варианты упомянутые выше ответы немного продвинутого уровня. Я отправляю этот ответ для дальнейших ссылок для некоторых других новых пользователей
Создание синтаксиса Ярлык с python и Qt является хорошим выбором. Поскольку python - очень мощный язык, а QT - отличная инфраструктура для разработки приложений GUI.
Ярлык синтаксиса - это самое простое выражение регулярного выражения с объектом QTextEdit. Вы просто разбираете выражения Regex, а затем выбираете конкретный QTextFormat для такого регулярного выражения и применяете этот текстовый формат к этому блоку. Вот пример кода простой подсветки синтаксиса, реализованного в Python с использованием Qt4 функции выделения, реализованный в классе syntaxHighlighter Drived из QSyntaxHighlighter
def highlightBlock(self, text):
for pattern, format in self.highlightingRules:
expression = QtCore.QRegExp(pattern)
index = expression.indexIn(text)
while index >= 0:
length = expression.matchedLength()
self.setFormat(index, length, format)
index = expression.indexIn(text, index + length)
self.setCurrentBlockState(0)
startIndex = 0
if self.previousBlockState() != 1:
startIndex = self.commentStartExpression.indexIn(text)
while startIndex >= 0:
endIndex = self.commentEndExpression.indexIn(text, startIndex)
if endIndex == -1:
self.setCurrentBlockState(1)
commentLength = len(text) - startIndex
else:
commentLength = endIndex - startIndex + self.commentEndExpression.matchedLength()
self.setFormat(startIndex, commentLength,
self.multiLineCommentFormat)
startIndex = self.commentStartExpression.indexIn(text,
startIndex + commentLength);
Использование этого примера я создал подсветку синтаксиса Assembly в Python с Qt4 для 8051 микроконтроллера.Для получения дополнительной справки и хорошей отправной точки вы найдете can refer to that code.
Вы можете начать с изучения регулярного выражения, хотя я не уверен, что так работает большинство синтаксисов highliting. Но он обычно используется на веб-сайтах. – aIKid
Взгляните на [Pygments] (http://pygments.org), который является синтаксисом синтаксиса с открытым исходным кодом Python. – Jimothy
Я думаю, что pygments - это синтаксис синтаксиса командной строки ... но я хочу реализовать подсветку синтаксиса на лету. Можно ли сделать подсветку синтаксиса с помощью pygments? @Jimothy – dragfire