Emacs 是否可以使用;占位符“;价值观为;“选择价值”是什么;?

Emacs 是否可以使用;占位符“;价值观为;“选择价值”是什么;?,emacs,yasnippet,Emacs,Yasnippet,在emacs yas次要模式中,我希望在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 我希望进行以下操

在emacs yas次要模式中,我希望在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)对“我的函数”执行扩展

我应该能够从“x1”、“x2”和“x3”中选择一个

(步骤2)应根据(步骤1)中的选择更改参数

  • 如果选择了“x1”

    function_x1(arg1=foo, arg2=bar)
    
    function_x2(arg1=hoge)
    
     function_x3()
    
    应该加以补充。 “foo”和“bar”的位置是占位符,它们是默认值

  • 如果选择“x2”,则

    function_x1(arg1=foo, arg2=bar)
    
    function_x2(arg1=hoge)
    
     function_x3()
    
    应该加以补充。 “hoge”的位置是占位符,是默认值

  • 如果选择了“x3”

    function_x1(arg1=foo, arg2=bar)
    
    function_x2(arg1=hoge)
    
     function_x3()
    
    应该加以补充。没有争论


我认为这具有您想要的功能。试试看

# -*- 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

也许值得考虑编辑你的问题,让事情更清楚一点:什么特别不好用?谢谢你的建议。我添加了预期操作。谢谢您的回答。我试过你的片段。但是,(步骤2)在我的环境中不起作用。例如,如果选择了“x2”,我想编辑占位符${1:hoge}。但它被视为普通字符串,我无法编辑它。您的环境是什么?我有emacs 24.5和yas snippits 0.8.0。您是否将对话框作为选择函数的第一步?我使用的是emacs 24.5.1和yasnippet 0.91。是的,当我键入“my_func”并执行“yas expand”时,我会得到一个对话框(作为helm界面)来选择以下选项。x1(arg1=${1:foo},arg2=${2:bar}),x2(arg1=${1:hoge}),x3(),但是,在从它们中选择一个之后,它将作为纯文本输入缓冲区${1:foo}、${2:bar}和${1:hoge}不被视为占位符。嗯,肯定有其他yas设置使它不适合您,因为它与我的设置完美配合:/但愿我能提供更多帮助。