2009-10-16 57 views

回答

6

你可以傳入代碼模板的東西並不多。例如${word_selection}包含當前選擇。

但是很多人缺少的是,你可以定義自己的變量:

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

無論${type}也不${name}是當你點擊「插入變量...」按鈕,你得到的名單。 Eclipse的通知,並允許你通過他們用循環標籤將保持同步,這些自定義「模板字段」(所以你new後的部分得到填補,如果你在第一個字段中鍵入)的內容。

See this answer for other useful Eclipse templates

[編輯]根據博客文章,你提的問題的答案,這是唯一可能在與編輯模板,而不是代碼模板的時刻。我建議提交一個針對JDT文本的錯誤來爲此打開API。

+0

我的意思是從Eclipse插件,當我定義我自己的模板。 – IAdapter

+0

代碼模板和編輯器模板有什麼區別? – fastcodejava

+1

IDE爲您生成代碼時使用代碼模板(如在「生成Getters和Setters」中)。編輯器模板是您輸入關鍵字(您定義的)時所獲得的結果,然後按Ctrl +空格鍵。 –

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)};