0

入力 (タブ ストップ フィールド) が 2 つの数値で、それらの合計を返すスニペットを作成しようとしています。しかし、両方のフィールドの値を同時に参照する方法がわかりません。また、埋め込まれた 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

そして混乱してごめんなさい。公式のスニペット作成ガイドによると、探しているのは a 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 に答える