我想创建一个定义新代码模板(like this blog post)的插件。如何将参数传递到模板中?比如${name:param}
?
答案 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)};