0

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

这是我尝试过的:

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

但是当我展开片段时,文本[yas] elisp error!会出现在总和应该去的地方。我究竟做错了什么?

4

2 回答 2

1

很抱歉造成混乱。根据官方片段编写指南,您要查找的内容称为mirror. 不幸的是,镜像只能镜像单个变量,因此您似乎不走运。

这可能是因为yasnippet在您键入字段时需要知道要更新哪些镜像。(它不想全部更新它们,因为这可能代价高昂),因此它需要一种方法来确定哪些镜像受哪些字段影响。如果它允许任意替换,那将无法确定。(简单的关键字搜索是不够的,因为变量可能隐藏在元编程后面)。

于 2014-05-01T22:01:34.983 回答
1

joaotavora 最近指出,这可以通过以下方式完成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")))}
于 2018-02-18T14:18:54.790 回答