Я тоже хочу это и попытался создать пользовательский TemplateVariableResolver
, чтобы сделать это. (У меня уже есть один пользовательский преобразователь, который генерирует новые UUID в стиле http://dev.eclipse.org/blogs/jdtui/2007/12/04/text-templates-2/.)
Я создал собственный распознаватель, связанный с capitalize
:
public class CapitalizingVariableResolver extends TemplateVariableResolver {
@Override
public void resolve(TemplateVariable variable, TemplateContext context) {
@SuppressWarnings("unchecked")
final List<String> params = variable.getVariableType().getParams();
if (params.isEmpty())
return;
final String currentValue = context.getVariable(params.get(0));
if (currentValue == null || currentValue.length() == 0)
return;
variable.setValue(currentValue.substring(0, 1).toUpperCase() + currentValue.substring(1));
}
}
(plugin.xml:)
<extension point="org.eclipse.ui.editors.templates">
<resolver
class="com.foo.CapitalizingVariableResolver"
contextTypeId="java"
description="Resolves to the value of the variable named by the first argument, but with its first letter capitalized."
name="capitalized"
type="capitalize">
</resolver>
</extension>
, который я бы использовал следующим образом: (я работаю на Java; я вижу, что вы, кажется, не)
public PropertyAccessor<${propertyType}> ${property:field}() {
return ${property};
}
public ${propertyType} get${capitalizedProperty:capitalize(property)}() {
return ${property}.get();
}
public void set${capitalizedProperty}(${propertyType} ${property}) {
this.${property}.set(${property});
}
Начиная с Eclipse 3.5, проблема, с которой я сталкиваюсь, заключается в том, что мой пользовательский распознаватель не получает возможности для повторного разрешения после указания значения для переменной property
. Похоже, что Java Development Tools (Eclipse JDT) выполняет переопределение этой зависимой переменной шаблона через механизм, называемый MultiVariableGuess
внутри JavaContext
(см. addDependency()
). К сожалению, для нас этот механизм, похоже, не раскрывается, поэтому я / мы не можем использовать его для того же (без большого количества операций копирования и вставки или другой избыточной работы).
На этом этапе я на некоторое время снова сдаюсь и буду продолжать вводить имена в нижнем и верхнем регистре отдельно в две независимые переменные шаблона.