助けようとするために、あなたが話していたhtmlの機能を実行するスニペットを作成しました。あなたはそれを編集してあなたが望むように変更できるはずですが、すべての作業があなたのために行われた場合、それはあまり楽しいものではありません;)。
私が最初にしたことは、からの変換を行う関数を定義することでした
"p*3>div*2"
に
<p>
<div>
</div>
<div>
</div>
</p>
<p>
<div>
</div>
<div>
</div>
</p>
<p>
<div>
</div>
<div>
</div>
</p>
その機能は次のとおりです。
(defun crushlist (my-list)
(if my-list
(let* ((elem (car my-list))
(char (first (split-string elem "*")))
(num (string-to-int(second (split-string elem "*")))))
(apply 'concat
(cl-loop for i from 1 to num
collect (concat "<" char ">
" (crushlist (cdr my-list)) "</" char ">
"))))
""))
スニペットは次のとおりです。
${1:$$(when yas-moving-away-p (move-beginning-of-line nil) (kill-line) (insert (crushlist (split-string yas-text ">"))))}
スニペットは次のようにすべきだと思います:
${1:$$(when yas-moving-away-p (crushlist (split-string yas-text ">")))}
しかし、それは何らかの理由でうまくいきませんでした(見つけたら教えてください!)
実際のスニペットの実装方法について質問がある場合は、コメントを残してください。お手伝いします。