2016-04-22 4 views
1

現在、ヤスニッペットを定義することを学んでいますが、使用方法が分からないようです。 たとえば、 'def'キーを標準関数定義に展開するルビースニペットを定義したいとします。これは非常に簡単ですが、生成された関数のパラメータの数をキーに依存させたいとします。たとえば、 'def>n'というキーを展開すると、で関数定義が必要です。nパラメーター。どうすればこれを達成できますか?yasnippetのダイナミクスキー

編集

基本的に私は、HTMLプラグインエメットが所有している行動を持つダイナミクススニペットを作りたいです。 Emmetの次の略語「p * 3> div * 2」がそれぞれ2つのdivペアを持つ3組のpタグを作成するのと同じように、 を「def * 3> 2」にすることができますそれぞれ2つの引数を持つ3つの関数定義を生成します。これは単なる例ですが、基本的には量指定子とネスティングのプロパティが必要です。

答えて

1

あなたが手伝ってくれるようにしようとしています。あなたが話していた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 (crushlist (split-string yas-text ">")))} 

が、それは何らかの理由で私のために動作しませんでした

ご質問がある場合(あなたが見つけるなら、私に知らせてください!)あなたの実際のスニペットを実装する方法については、 私にコメントを残して、私は助けようとします。

+0

これを明確にするために、このスニペットの例で使用するキーは何ですか?私はそれが単に "p * 3> div * 2"ではないと仮定しています。 –

+0

そうですね、私が作ったのはあなたが鍵を置くということでした。次にそれを展開します。 p * 3> div * 2と入力してから、その後 – Jules

+0

@ Y.Khurshidのヒットタブが機能しましたか? – Jules

関連する問題