[英]Eclipse Custom Variable for Java Code Templates
如何添加要插入 Java 代碼模板的新變量。 如何將變量添加到 Window->Preferences->Java->Code Style->Code Templates->Code->New Java Files->Edit->Insert Variable... 的列表中?
目前我的新文件是通過以下方式創建的:
${filecomment}
${package_declaration}
${typecomment}
${type_declaration}
我希望他們用類似的東西來創建:
${begin_filecomment}
${package_declaration}
${typecomment}
${type_declaration}
${end_filecomment}
其中 begin_filecomment 和 end_filecomment 出現在插入變量列表中。
是的,您確實可以在此列表中添加一個變量。 查看名為的擴展點
org.eclipse.ui.editors.templates
你會知道怎么做的。
我很確定“變量”列表是由 Eclipse 生成的,並且無法添加新的模板變量。
您希望${begin_filecomment}
和${end_filecomment}
是什么? 只需在編輯框中輸入內容 - 沒有任何內容表明您不能將靜態內容放入其中。
要貢獻一個新變量,您需要創建一個插件並實現 org.eclipse.ui.editors.templates 擴展點。
您必須提供一個 org.eclipse.jface.text.templates.TemplateVariableResolver 的子類,它將實現各種解析方法來將占位符解析為您想要的值。
有關擴展點的幫助和提供 ant 變量的示例,請參見此處。
正如 matt b 所說,您通常只需要將文本定義為樣板文件,因此為此實現一個變量是多余的。
我沒試過,但也許你可以編輯 JDT jar 中的模板文件:
eclipse\plugins\org.eclipse.jdt.ui_*.jar\templates\
為了增加對話,我還想在模板中插入一個自定義變量。 我的問題是我想在模板中插入一個來自 jsp/jstl 定義的變量。
( <c:set var="myVariable" value="${requestScope.variableName}" />
)
這顯然會導致一些問題,因為模板已經使用${}
語法來幫助解析自己的變量。
如此簡單的解決方案,我在模板中的模式中添加了一個額外的$
。 兩個$$
符號將它解析為一個$
符號,因此給了我我想要的東西。 希望這對發帖者或有類似情況的人有所幫助。
這是我的筆記。 我希望它對你有幫助。
我的 Eclipse 版本:2020-09 (4.17.0)
添加 GlobalTemplateVariables
罐子:org.eclipse.text.jar
public static class MyID extends SimpleTemplateVariableResolver { private static String value = System.getProperty("myID"); public MyID() { super("myID", TextTemplateMessages.getString("GlobalVariables.variable.description.myID")); //$NON-NLS-1$ //$NON-NLS-2$ } @Override protected String resolve(TemplateContext context) { if (value == null) { return TextTemplateMessages.getString("GlobalVariables.variable.description.myID"); } return value; // $NON-NLS-1$ } }
# global variables GlobalVariables.variable.description.myid=myID
爪哇
Java -> 代碼風格 -> 代碼模板
罐子:org.eclipse.jdt.core.manipulation.jar
public CodeTemplateContextType(String contextName) { super(contextName); fIsComment= false; // global addResolver(new GlobalTemplateVariables.Dollar()); addResolver(new GlobalTemplateVariables.Date()); addResolver(new GlobalTemplateVariables.Year()); addResolver(new GlobalTemplateVariables.Time()); addResolver(new GlobalTemplateVariables.User()); addResolver(new GlobalTemplateVariables.MyID()); addResolver(new Todo());
Java -> 編輯器 -> 模板
罐子:org.eclipse.jdt.core.manipulation.jar
public void initializeContextTypeResolvers() { addResolver((TemplateVariableResolver)new GlobalTemplateVariables.Cursor()); addResolver((TemplateVariableResolver)new GlobalTemplateVariables.WordSelection()); addResolver((TemplateVariableResolver)new GlobalTemplateVariables.Selection("line_selection", JavaTemplateMessages.CompilationUnitContextType_variable_description_line_selection)); addResolver((TemplateVariableResolver)new GlobalTemplateVariables.Dollar()); addResolver((TemplateVariableResolver)new GlobalTemplateVariables.Date()); addResolver((TemplateVariableResolver)new GlobalTemplateVariables.Year()); addResolver((TemplateVariableResolver)new GlobalTemplateVariables.Time()); addResolver((TemplateVariableResolver)new GlobalTemplateVariables.User()); addResolver((TemplateVariableResolver)new GlobalTemplateVariables.MyID());
JSP
Web -> JSP 文件 -> 編輯器 -> 模板
罐子:org.eclipse.jst.jsp.ui.jar
public TemplateContextTypeJSP() { addResolver((TemplateVariableResolver)new GlobalTemplateVariables.Cursor()); addResolver((TemplateVariableResolver)new GlobalTemplateVariables.Date()); addResolver((TemplateVariableResolver)new GlobalTemplateVariables.Dollar()); addResolver((TemplateVariableResolver)new GlobalTemplateVariables.LineSelection()); addResolver((TemplateVariableResolver)new GlobalTemplateVariables.Time()); addResolver((TemplateVariableResolver)new GlobalTemplateVariables.User()); addResolver((TemplateVariableResolver)new GlobalTemplateVariables.WordSelection()); addResolver((TemplateVariableResolver)new GlobalTemplateVariables.Year()); addResolver((TemplateVariableResolver)new GlobalTemplateVariables.MyID());
JavaScript
Web -> 客戶端 JavaScript -> 代碼模板
罐子:org.eclipse.wst.jsdt.ui.jar
public CodeTemplateContextType(String contextName) { super(contextName); this.fIsComment = false; addResolver((TemplateVariableResolver)new GlobalTemplateVariables.Dollar()); addResolver((TemplateVariableResolver)new GlobalTemplateVariables.Date()); addResolver((TemplateVariableResolver)new GlobalTemplateVariables.Year()); addResolver((TemplateVariableResolver)new GlobalTemplateVariables.Time()); addResolver((TemplateVariableResolver)new GlobalTemplateVariables.User()); addResolver((TemplateVariableResolver)new GlobalTemplateVariables.MyID()); addResolver(new Todo());
Web -> 客戶端 JavaScript -> 模板
罐子:org.eclipse.wst.jsdt.ui.jar
public JavaContextType() { super("javaScript"); addResolver((TemplateVariableResolver)new GlobalTemplateVariables.Cursor()); addResolver((TemplateVariableResolver)new GlobalTemplateVariables.WordSelection()); addResolver((TemplateVariableResolver)new GlobalTemplateVariables.LineSelection()); addResolver((TemplateVariableResolver)new GlobalTemplateVariables.Dollar()); addResolver((TemplateVariableResolver)new GlobalTemplateVariables.Date()); addResolver((TemplateVariableResolver)new GlobalTemplateVariables.Year()); addResolver((TemplateVariableResolver)new GlobalTemplateVariables.Time()); addResolver((TemplateVariableResolver)new GlobalTemplateVariables.User()); addResolver((TemplateVariableResolver)new GlobalTemplateVariables.MyID());
HTML
Web -> HTML 文件 -> Ediotr -> 模板
罐子:org.eclipse.wst.html.ui.jar
public TemplateContextTypeHTML() { addResolver((TemplateVariableResolver)new GlobalTemplateVariables.Cursor()); addResolver((TemplateVariableResolver)new GlobalTemplateVariables.Date()); addResolver((TemplateVariableResolver)new GlobalTemplateVariables.Dollar()); addResolver((TemplateVariableResolver)new GlobalTemplateVariables.LineSelection()); addResolver((TemplateVariableResolver)new GlobalTemplateVariables.Time()); addResolver((TemplateVariableResolver)new GlobalTemplateVariables.User()); addResolver((TemplateVariableResolver)new GlobalTemplateVariables.WordSelection()); addResolver((TemplateVariableResolver)new GlobalTemplateVariables.Year()); addResolver((TemplateVariableResolver)new GlobalTemplateVariables.MyID()); addResolver((TemplateVariableResolver)new EncodingTemplateVariableResolverHTML());
CSS
網頁 -> CSS 文件 -> Ediotr -> 模板
罐子:org.eclipse.wst.css.ui.jar
public TemplateContextTypeCSS() { addResolver((TemplateVariableResolver)new GlobalTemplateVariables.Cursor()); addResolver((TemplateVariableResolver)new GlobalTemplateVariables.Date()); addResolver((TemplateVariableResolver)new GlobalTemplateVariables.Dollar()); addResolver((TemplateVariableResolver)new GlobalTemplateVariables.LineSelection()); addResolver((TemplateVariableResolver)new GlobalTemplateVariables.Time()); addResolver((TemplateVariableResolver)new GlobalTemplateVariables.User()); addResolver((TemplateVariableResolver)new GlobalTemplateVariables.WordSelection()); addResolver((TemplateVariableResolver)new GlobalTemplateVariables.Year()); addResolver((TemplateVariableResolver)new GlobalTemplateVariables.MyID()); addResolver((TemplateVariableResolver)new EncodingTemplateVariableResolverCSS());
XML
XML -> XML 文件 -> Ediotr -> 模板
罐子:org.eclipse.wst.xml.ui.jar
public TemplateContextTypeXML() { addResolver((TemplateVariableResolver)new GlobalTemplateVariables.Cursor()); addResolver((TemplateVariableResolver)new GlobalTemplateVariables.Date()); addResolver((TemplateVariableResolver)new GlobalTemplateVariables.Dollar()); addResolver((TemplateVariableResolver)new GlobalTemplateVariables.LineSelection()); addResolver((TemplateVariableResolver)new GlobalTemplateVariables.Time()); addResolver((TemplateVariableResolver)new GlobalTemplateVariables.User()); addResolver((TemplateVariableResolver)new GlobalTemplateVariables.WordSelection()); addResolver((TemplateVariableResolver)new GlobalTemplateVariables.Year()); addResolver((TemplateVariableResolver)new GlobalTemplateVariables.MyID()); addResolver((TemplateVariableResolver)new EncodingTemplateVariableResolverXML());
然后在 -vmargs 之后在 eclipse.ini 中添加自定義變量
-DmyID=7777
然后你可以在你的模板中使用它
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.