gpt4 book ai didi

python - 在现有的 Scintilla 词法分析器上创建和着色新结构

转载 作者:行者123 更新时间:2023-11-28 19:22:25 24 4
gpt4 key购买 nike

全部,

我正在使用 QScintilla 来语法高亮我的领域特定语言 (DSL)。

由于我的 DSL 基于 python,所以我使用现有的 Python Lexer for QScintilla。我设法创建新的关键字如下:

self.text = Qscintilla(self)
pythonLexer = QsciLexerPython(self.text)
self.text.setLexer(pythonLexer)
self.text.SendScintilla(QsciScintilla.SCI_SETKEYWORDS,1,bytes('WARNING', 'utf-8'))

现在,我该如何选择一种颜色来突出显示我新创建的关键字?

非常感谢!

最佳答案

QsciLexerPython 在突出显示关键字集方面非常有限,因为它只给了您两个可以玩的。此限制是由底层 Scintilla 库中的 Python Lexer 类强加的,因此对此无能为力(除非您想创建补丁)。

但是,如果您只需要突出显示一组额外的关键字,那么您可以继承QsciLexerPython 并重新实现它的keywords。方法:

class CustomLexer(QsciLexerPython):
def keywords(self, keyset):
if keyset == QsciLexerPython.HighlightedIdentifier:
return b'WARNING'
return QsciLexerPython.keywords(self, keyset)

有了它,您就可以 set the color, font, etc对于样式:

    pythonLexer = CustomLexer(self.text)
pythonLexer.setColor(
QColor('purple'), QsciLexerPython.HighlightedIdentifier)
...

(PS:注意关键字只能包含0-255范围内的单字节字符)

关于python - 在现有的 Scintilla 词法分析器上创建和着色新结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22021294/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com