我正在使用RSyntaxtextarea在我的swing应用程序中编写JavaScript代码,并通过JavaScriptLanguageSupport获得自动建议。
我被这个问题阻止了:
我想将此变量添加到解析器中:
var person = {
firstName: "John",
lastName : "Doe",
id : 5566,
};
所以在我的 textPane 上,我可以写:"person.",并获取 firstName、lasName 和 id 作为自动签名,就像这样:
例
我的文本窗格:
RSyntaxTextArea expTextArea = new RSyntaxTextArea(1, 20);
expTextArea.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_JAVASCRIPT);
RTextScrollPane sp1 = new RTextScrollPane(expTextArea);
JavaScriptLanguageSupport languageSupport = new JavaScriptLanguageSupport();
JavaScriptParser javaParser = new JavaScriptParser(languageSupport, expTextArea);
languageSupport.install(expTextArea);
我试图调用javaParser.setVariablesAndFunctions
但我无法理解这种方法是如何工作的:
JavaScriptVariableDeclaration subject = new JavaScriptVariableDeclaration("s",1,null new CodeBlock(1));
VariableResolver vr = new VariableResolver();
vr.addLocalVariable(subject);
javaParser.setVariablesAndFunctions(vr);
我认为您在这里要做的是实现自定义自动完成。
不幸的是,在CompletionProvider中有很多方法可以实现。方法可能是破解 DefaultCompletionProvider 以返回自定义补全(自己解析插入符号的左侧文本,该部分并不难)。
之后,可以直接从自定义完成提供程序创建自动完成对象。
我可能会自己尝试这些东西,但不确定什么时候有时间。