如何添加两个yasnippet字段的值

时间:2014-05-01 18:15:10

标签: emacs elisp yasnippet

我试图编写一个片段,其输入(制表位字段)是两个数字,并返回它们的总和。但我不知道如何同时引用这两个字段的值,似乎我无法在嵌入式elisp代码中引用制表位的值。

以下是我的尝试:

First number: $1
Second number: $2
Sum of two numbers: `(+ (string-to-number $1) (string-to-number $2))`

但是,当我展开代码段时,文字[yas] elisp error!会显示总和应该去的地方。我做错了什么?

2 个答案:

答案 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")))}