2016-10-04 6 views
0

Comment est-il possible d'accéder au nom de la méthode (et de ses arguments) lors de l'insertion d'un YASnippet dans un bloc de code Java (ou JavaScript)?YASnippet dynamique, insertion du nom et des arguments de la méthode

L'objectif est d'être en mesure d'étendre

logm 

dans (par exemple):

log("notify() called with: " + "context = [" + context + "]"); 

si elle est insérée dans le corps de la fonction:

public void notify(final EventHandlerContext context) { 
.... 
} 

(Un tel le modèle Live existe dans IntelliJ IDEA.)

Répondre

1

Vous pouvez évaluer du code Lisp arbitraire dans l'extrait. Donc, si vous avez une fonction pour saisir le nom/les arguments de la méthode, vous pouvez l'appeler à partir du code de l'extrait. Par exemple, voici une tentative rapide pour obtenir le nom de la méthode - vous pourriez probablement trouver une meilleure fonction quelque part dans les bibliothèques cc-cmds ou eclim.

(defun java-method-name() 
    (save-excursion 
    (c-beginning-of-defun) 
    (when (re-search-forward "\\([A-Za-z]+\\)(") 
     (match-string 1)))) 

extrait

# -*- mode: snippet -*- 
# name: logm 
# key: logm 
# -- 
log("`(java-method-name)`() called with: " + ${1:etc:..}) 
+0

Afin de répondre pleinement le quesiton, seriez-vous en mesure de repérer les fonctions qui obtiendraient les noms des params? – user3341592