如何在eclipse-plugin中将参数传递给代码模板

时间:2009-10-16 11:26:05

标签: eclipse templates parameters eclipse-plugin

我想创建一个定义新代码模板(like this blog post)的插件。如何将参数传递到模板中?比如${name:param}

2 个答案:

答案 0 :(得分:6)

您可以将许多内容传递到代码模板中。例如,${word_selection}包含当前选择。

但是很多人缺少的是你可以定义自己的变量:

private static final ${type} ${name} = new ${type} (${cursor});

单击“插入变量...”按钮时,列表中没有${type}${name}。 Eclipse注意到并允许您使用 Tab 循环显示它们,它将使这些自定义“模板字段”的内容保持同步(因此,如果键入new,则填写后的部分在第一个领域)。

See this answer for other useful Eclipse templates

[编辑]根据您提到的博客文章中的答案,目前只能使用编辑器模板,而不是代码模板。我建议针对JDT Text提交一个错误,为此打开API。

答案 1 :(得分:1)

此解决方案针对Eclipse 4.2 Juno,我尚未在任何其他环境中对此进行测试。

您只需传递参数,然后就可以使用它们。

假设我们想要创建一个TemplateVariableResolver,它将大写传递参数的第一个字母。

您将首先按如下方式填充plugin.xml:

<extension point="org.eclipse.ui.editors.templates">
    <resolver class="org.eclipse.ui.templates.UppercaseResolver"
        contextTypeId="java"
        description="${Uppercase(word[, word...])}  uppercase's the provided words"
        name="Uppercase words" type="Uppercase"/>
</extension>

您还可以创建自定义解析器:

public void resolve(TemplateVariable variable, TemplateContext context) {
    if (variable.getVariableType().getParams().size() > 0) {
        StringBuffer result = new StringBuffer();
        for(String value : (List<String>) variable.getVariableType().getParams()) {
            value = value.substring(0,1).toUpperCase() + value.substring(1);
            result.append(value);
        }
        variable.setValue(result.toString());
    }
}

最后在你的代码模板中:

String name = ${Uppercase(james,laPenn)};