Могу ли я создать yasnippet с повторяющимся списком переменной длины

Javascript Angular имеет своеобразный шаблон для создания контроллеров, который выглядит так:

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

Объект '$ scope', 'foo', 'bar' повторяется как список параметров в функции внутри квадратного квадрата.

Я думал, что могу сделать это менее подверженным ошибкам, написав yasnippet. Это выглядит так:

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

Это работает отлично, но только если есть один параметр (в позиции $ 3), например, если я просто использую $ scope . Если я хочу использовать более одного, он ломается.

Есть ли способ записи фрагмента, чтобы он сделал список цитированных строк с разделителями-запятыми и повторил список без кавычек, помеченных запятыми, где-то еще внутри фрагмента?

1

1 ответы

Я думаю, что-то вроде этого может работать:

# -*- 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;
}])

И в действии:

enter image description here

2
добавлено