2009-10-16 11 views
7

मैं एक प्लगइन बनाना चाहता हूं जो एक नया कोड टेम्पलेट (like this blog post) परिभाषित करता है। मैं टेम्पलेट में पैरामीटर कैसे पास कर सकता हूं? ${name:param} की तरह?ग्रहण-प्लगइन में कोड-टेम्पलेट में पैरामीटर कैसे पास करें

उत्तर

6

ऐसी कई चीजें नहीं हैं जिन्हें आप कोड टेम्पलेट में पास कर सकते हैं। उदाहरण के लिए ${word_selection} में वर्तमान चयन शामिल है।

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

न तो ${type} और न ही ${name} सूची है जो आप जब आप "चर डालें ..." बटन पर क्लिक पाने में हैं:

लेकिन क्या कई लोगों को याद कर रहे हैं कि आप अपने खुद के वैरिएबल निर्धारित कर सकते है। ग्रहण नोटिस और आपको टैब के साथ उनके माध्यम से चक्र करने की अनुमति देता है और यह इन कस्टम "टेम्पलेट फ़ील्ड" की सामग्री को सिंक में रखेगा (इसलिए यदि आप पहले फ़ील्ड में टाइप करते हैं तो new के बाद का हिस्सा भर जाता है)।

See this answer for other useful Eclipse templates

[संपादित करें] ब्लॉग पोस्ट में दिए गए उत्तरों के जवाब के अनुसार, यह फिलहाल संपादक टेम्पलेट्स के साथ ही कोड टेम्पलेट्स के साथ संभव है। मैं इसके लिए एपीआई खोलने के लिए जेडीटी टेक्स्ट के खिलाफ एक बग फाइल करने का सुझाव देता हूं।

+0

मेरा ग्रहण प्लगइन से था, जब मैं अपना खुद का टेम्पलेट परिभाषित करता हूं। – IAdapter

+0

अंतर कोड टेम्पलेट्स और संपादक टेम्पलेट्स क्या है? – fastcodejava

+1

कोड टेम्पलेट्स आईडीई द्वारा उपयोग किए जाते हैं जब यह आपके लिए कोड उत्पन्न करता है (जैसे "गेटर्स और सेटर्स जेनरेट करें")। जब आप एक कीवर्ड टाइप करते हैं (जिसे आप परिभाषित करते हैं) और Ctrl + Space दबाते हैं तो संपादक टेम्पलेट्स आपको मिलता है। –

1

यह समाधान ग्रहण 4.2 जूनो के उद्देश्य से है, मैंने किसी अन्य वातावरण में इसका परीक्षण नहीं किया है।

आपको बस इतना करना है कि आप अपने पैरामीटर पास करें, और फिर आप उन्हें उपलब्ध कराएंगे।

कहें कि हम एक टेम्पलेट VariableResolver बनाना चाहते हैं जो पास पैरामीटर के पहले अक्षर को अपरकेस करेगा।

आपको पहले अपने plugin.xml पॉप्युलेट जाएगा इस प्रकार है:

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

<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> 

तुम भी अपने कस्टम समाधानकर्ता बनाएंगे

संबंधित मुद्दे