【发布时间】:2014-04-10 22:14:15
【问题描述】:
全部,
我正在使用 QScintilla 来语法高亮并自动完成我的领域特定语言 (DSL)。
我通过重新实现 (QsciLexerCustom) 编写了一个自定义词法分析器,并且我正在尝试使用自动完成功能。 我的问题是自动完成功能不像我想要的那样工作。 我希望我的自定义词法分析器像 QsciLexerPython 一样工作。也就是说,如果我在 api 中添加“toto.titi.tata”,当我输入“toto”时。在我的 qscintilla 编辑器中,它建议我使用“titi.tata”。截至目前,它建议我 toto.titi.tata。 :(
我尝试将“autoCompletionWordSeparators”添加到我的词法分析器,但它不起作用。 如何让我的自定义词法分析器像 QsciLexerPython 一样自动完成工作? 非常感谢!
Lexer = customlexer(self.text)
api = QsciAPIs(Lexer)
api.add('toto.titi.tata')
api.prepare()
Lexer.setAPIs(api)
self.text.setLexer(Lexer)
class lexer(QsciLexerCustom):
def __init__(self, parent):
QsciLexerCustom.__init__(self, parent)
def autoCompletionWordSeparators(self):
return ['.']
【问题讨论】:
-
这没有回答问题,但我已经在 QScintilla 中为自定义词法分析器实现了自动完成功能,但我还必须创建一个自定义解析器来查找代码中的类和函数定义。使用 SendScintilla(),您可以轻松地通过 QScintilla 使用低级 Scintilla api 调用来显示自动完成框,但是填充它需要自定义解析器。
-
这也可能有帮助:qscintilla.com
标签: autocomplete lexer qscintilla