gpt4 book ai didi

java - Eclipse 中的模板变量 - var()

转载 作者:太空宇宙 更新时间:2023-11-04 14:57:28 25 4
gpt4 key购买 nike

我正在为 C 语言开发一个 Eclipse 插件。目前我正在开发内容辅助,我想为最常见的语言结构引入模板。

在我的工作中,我遵循 this tutorial :

我想利用模板(例如指定 here ),例如:${id:var(type[,type]*)},例如为函数提供模板调用每个函数参数的完成建议,但将其过滤掉以仅显示兼容类型的建议。不幸的是,我找不到任何相关的教程或示例。

如果有任何建议、链接、代码片段等,我将不胜感激。

提前致谢!

格热戈日

最佳答案

通过反复试验,我终于设法提供了这样的完成建议。我将简要解释它,但我不保证这是正确的方法,但它有效:)

如果我们有一个函数 foo(boolean bar, boolean baz) 我们可以创建相应的模板: foo(${bar:var(boolean)}, ${baz:var( boolean 值)})。要处理此类模板,我们可以注册自定义 TemplateVariableResolver:

public final class VariableResolver extends TemplateVariableResolver {

public VariableResolver() {
super("var", "some description");
}

@Override
public void resolve(TemplateVariable variable, TemplateContext context) {
final String name = variable.getName(); /* bar or baz */
final List params = variable.getVariableType().getParams(); /* ["boolean"] */
variable.setValues(computeSuggestions(name, params));
variable.setResolved(true);
}

private String[] computeSuggestions(String name, List params) {
return new String[] {"true", "false"};
// TODO: more sophisticated proposals
}

// overwrite other methods!
}

下一步是让您的 CompletionProcessor 扩展 TempateCompletionProcessor

这是 TemplateCompletionProcessorcomputeCompletionProposals() 的(简化的)默认实现

public ICompletionProposal[] computeCompletionProposals(ITextViewer viewer, int offset) {
/* some code */
TemplateContext context= createContext(viewer, region);
if (context == null)
return new ICompletionProposal[0];

context.setVariable("selection", selection.getText()); // name of the selection variables {line, word}_selection //$NON-NLS-1$

Template[] templates= getTemplates(context.getContextType().getId());
/* some code */
return (ICompletionProposal[]) matches.toArray(new ICompletionProposal[matches.size()]);
}

然后 VariableResolver 应该在 computeCompletionProposals 或其他地方注册:

context.getContextType().addResolver(new VariableResolver());

因此,如果 getTemplates() 将返回我们的示例模板并且用户将使用它,对于参数 barbaz resolve( ) 将被调用,以便我们可以为每个 foo 函数参数提供关于这些参数类型的建议。

关于java - Eclipse 中的模板变量 - var(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23028618/

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