自定义PyQt Qscintilla CPP词法分析器

时间:2014-04-10 03:22:36

标签: python pyqt keyword lexer qscintilla

我正在为个人项目编写RSL编辑器,我想定制QScintilla中提供的CPP词法分析器,因为我需要的只是一些额外的关键词要突出显示,但我真的不能了解如何添加它们。

任何帮助? 欢呼声

编辑 - 我一直在玩我发现的片段,并且我设法通过压缩CPP词法分析器并创建一个密钥集来获得新的关键字,但它只有在覆盖索引1上的现有密钥集时才有效

从PyQt4导入Qsci

class RSLLexer(Qsci.QsciLexerCPP): 
    def __init__(self, parent): 
        super(RSLLexer, self).__init__()

def keywords(self, keyset):
    if keyset == 1:
        return b'surface'
    return Qsci.QsciLexerCPP.keywords(self, keyset)

1 个答案:

答案 0 :(得分:2)

创建QsciLexerCPP的子类并重新实现keywords方法:

class RSLLexer(Qsci.QsciLexerCPP):
    def keywords(self, index):
        keywords = Qsci.QsciLexerCPP.keywords(self, index) or ''
        # primary keywords
        if index == 1:
            return 'foo ' + keywords
        # secondary keywords
        if index == 2:
            return 'bar ' + keywords
        # doc comment keywords
        if index == 3:
            return keywords
        # global classes
        if index == 4:
            return keywords
        return keywords

这些关键字集中的每一个都具有与之关联的不同样式,因此可以不同地突出显示它们。请参阅style enumeration了解要使用的内容。