2016-03-23 11 views
2

emacs yas-minor-modeでは、place-holderをyas-choose-valueにリストされた値で使用したいと思います。 可能ですか? 以下のコードは私がしたいことです。 それはうまくいきません。しかしながら"place-holder"を "yas-choose-value"の値に使用できますか?

# -*- mode: snippet -*- 
# name: my_func 
# key: my_func 
# -- 
function_${1:$$(yas-choose-value '("x1(arg1=${2:foo}", "arg2=${3:bar)" "x2(arg1=${2:hoge})" "x3()"))} 
$0 

私は、次のような動作を期待しています。

(ステップ-1)ヤスがエキスパンド "my_func" について実行される

Iが "X1"、 "X2" と "X3"

(ステップからの1つを選択することができなければなりません-2)引数は(ステップ1で選択た内容に応じて変更されるべきである)

  • "X1" が選択された場合、

    function_x1(arg1=foo, arg2=bar) 
    

    を補足する必要があります。 "foo"と "bar"の位置はプレースホルダーで、デフォルト値です。

  • "X2" が選択されている場合、

    function_x2(arg1=hoge) 
    

    が補完されなければなりません。 "hoge"の位置はプレースホルダーで、デフォルト値です。

  • "X3" が選択された場合、

    function_x3() 
    

    が補完されるべきです。引数なし。

+2

あなたの質問を編集して、もう少し明確にすることを検討する価値はあるかもしれません:具体的にはうまくいかないのですか? – johnkavanagh

+0

ありがとうございました。期待通りの操作を加えました。 – elgoog

答えて

0

これはあなたが探している機能があると思います。これを撃つ。

# -*- mode: snippet -*- 
# name: my_func 
# key: my_func 
# -- 
function_`(yas-choose-value '("x1(arg1=${1:foo}, arg2=${2:bar})" "x2(arg1=${1:hoge})" "x3()"))` 
$0 
+0

あなたの答えをありがとう。私はあなたのスニペットを試しました。しかし、(ステップ2)私の環境ではうまく動作しません。たとえば、「x2」が選択されている場合、プレースホルダ$ {1:hoge}を編集したいとします。しかし、それは通常の文字列として扱われ、編集できませんでした。 – elgoog

+0

あなたの環境は?私はemacs 24.5とyas snippits 0.8.0を持っています。関数を選択するための最初のステップとしてダイアログボックスが表示されますか? – Sandy

+0

私はemacs 24.5.1とyasnippet 0.91を使用しています。はい、「my_func」と入力して「yas-expand」を実行すると、次のものを選択するダイアログ(helmインターフェイスとして)ダイアログ が表示されます。 X1(ARG1 = $ {1:FOO}、ARG2 = $ {2:バー}):ただし、 X3() 、それらから1を選びだした後、 X2({ホーヘ1} ARG1 = $)プレーンテキストとしてバッファに入力されます。 $ {1:foo}、$ {2:bar}と$ {1:hoge}はプレースホルダとして扱われません。 – elgoog

関連する問題