我试图编写一个片段,其输入(制表位字段)是两个数字,并返回它们的总和。但我不知道如何同时引用这两个字段的值,似乎我无法在嵌入式elisp代码中引用制表位的值。
以下是我的尝试:
First number: $1
Second number: $2
Sum of two numbers: `(+ (string-to-number $1) (string-to-number $2))`
但是,当我展开代码段时,文字[yas] elisp error!
会显示总和应该去的地方。我做错了什么?
答案 0 :(得分:1)
抱歉这个混乱。根据{{3}},您要找的是mirror
。不幸的是,镜像只能镜像一个变量,所以你似乎运气不好。
这可能是因为yasnippet
需要知道在键入字段时要更新的镜像。 (它并不想全部更新它们,因为这可能代价很高),因此需要一种方法来确定哪些镜像受哪些字段的影响。如果它允许任意替换,则无法确定。 (简单的关键字搜索不够,因为变量可能隐藏在元编程之后)。
答案 1 :(得分:1)
joaotavora recently pointed可以使用yas-field-value
:
First number: ${1:0}
Second number: ${2:0}
Sum of two numbers: ${2:$(+ (string-to-number (or (yas-field-value 1) "0")) (string-to-number (or yas-text "0")))}