2009-12-11 12 views
2

Les modèles Eclipse peuvent automatiquement insérer du texte et des variables lors du codage. Lorsque des variables sont utilisées avec le formulaire $ {variable}, la valeur est insérée automatiquement.Instructions conditionnelles dans les modèles Eclipse

Ma question est de savoir si vous pouvez ajouter des sections à ces modèles conditionnellement. Pouvez-vous avoir un modèle de définition de méthode qui remplira plusieurs variables et en ajoutera des définitions locales, mais seulement si elles sont remplies?

def method(${var1}, ${var2}, ${var3}): 
    self.${var1} = ${var1} 
    self.${var2} = ${var2} 
    self.${var3} = ${var3} 

Ainsi, le $ {var2} et les variables locales $ {} de Var3 n'existerait que si leurs définitions existaient dans la définition de la méthode?

Cette question est spécifiquement pour le développement de Python avec PyDev mais les réponses pour d'autres langues seraient également les bienvenues.

Répondre

2

Cela peut être fait par le biais de scripts Jython dans Pydev dans la dernière génération nocturne (qui sera 1.5.4).

Voir http://pydev.org/download.html pour plus de détails sur l'obtention. En peu de temps, vous pouvez définir une variable dans les scripts et la programmer dans Jython comme vous le souhaitez (et vous pouvez mettre à jour le cache des modèles à la volée après la création de votre variable).

Il y a des variables définies par défaut comme ça: http://github.com/aptana/Pydev/blob/master/plugins/org.python.pydev.jython/jysrc/pytemplate_defaults.py

Ce module a des commentaires sur la façon de procéder (et vous pouvez utiliser ce module comme exemple).

+0

Wow, génial! Et a répondu par Fabio Zadrozny lui-même! –

1

Actuellement, ce n'est pas possible dans les modèles d'éditeur Eclipse.

Vous pouvez définir des VariableResolvers personnalisés qui génèrent tout ce que vous voulez. Cependant, je ne pense pas que cela ferait ce que vous cherchez. Un résolveur de variable peut renvoyer "", vous devriez avoir fondamentalement le modèle entier dans le résolveur; pas très réutilisable dans d'autres modèles.

Désolé - Je ne vois aucun moyen de le faire (bien que j'aimerais avoir cette capacité).

Questions connexes