¿Puedo crear un yasnippet con una lista de longitud variable que se repite?

Javascript Angular tiene un patrón peculiar para crear controladores que se ve así:

myApp.controller('myController', ['$scope', 'foo', 'bar', 
                 function($scope, foo, bar) {
                     //do stuff...
                 }]);

La cosa '$ scope', 'foo', 'bar' se repite como la lista de parámetros en la función dentro de la matriz entre corchetes.

Pensé que podría hacer que esto sea menos propenso a errores escribiendo un yasnippet. Se parece a esto:

# -*- mode: snippet -*-
# name: angctl
# key: angctl
# --
$1.controller('$2', ['$3', function($3) {
$0;
}]);

Esto funciona bien, pero solo si hay un parámetro (en la posición de $ 3), como si solo estuviera usando $ scope . Si quiero usar más de uno, se descompone.

¿Hay alguna forma de escribir el fragmento de código para que haga una lista delimitada por comas de cadenas citadas y repita una lista delimitada por comas de cadenas sin comillas en otro lugar dentro del fragmento?

1

1 Respuestas

Supongo que algo como esto podría funcionar:

# -*- mode: snippet -*-
# name: angctl
# key: angctl
# --
$1.controller('$2', [${3:$(mapconcat (lambda (x) (format "'%s'" x))
                                     (split-string yas-text "," t "[ \t]") ", ")}, function($3) {
$0;
}])

Y en acción:

enter image description here

2
agregado