2009-10-16 10 views

Respuesta

6

No hay muchas cosas que pueda pasar a una plantilla de código. Por ejemplo, ${word_selection} contiene la selección actual.

Pero lo que muchas personas están desaparecidas es que se puede definir sus propias variables:

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

Ni ${type}${name} ni están en la lista de la que se obtiene cuando se hace clic en el botón "Insert variable ...". Eclipse lo nota y le permite recorrerlos con Tab y mantendrá el contenido de estos "campos de plantilla" personalizados sincronizados (para que la parte siguiente al new se complete si escribe en el primer campo).

See this answer for other useful Eclipse templates.

[EDITAR] Según las respuestas en la publicación de blog que mencionas, esto solo es posible en este momento con plantillas de editor, no plantillas de código. Sugiero archivar un error contra el texto JDT para abrir la API para esto.

+0

quise decir del complemento eclipse, cuando defino mi propia plantilla. – IAdapter

+0

¿Cuál es la diferencia de plantillas de código y editor? – fastcodejava

+1

El IDE utiliza las plantillas de código cuando genera código para usted (como en "Generar compiladores y ajustadores"). Las plantillas del editor es lo que obtienes cuando escribes una palabra clave (que defines) y presionas Ctrl + Espacio. –

1

Esta solución está dirigida a Eclipse 4.2 Juno, no he probado esto en ningún otro entorno.

Todo lo que tienes que hacer es pasar tus parámetros, y entonces los tendrás disponibles.

Digamos que queríamos crear un TemplateVariableResolver que marque la primera letra de un parámetro pasado.

Vas a rellenar su primera plugin.xml de la siguiente manera:

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

También crearía su resolución personalizada:

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

Finalmente en la plantilla de código:

String name = ${Uppercase(james,laPenn)}; 
Cuestiones relacionadas