5

私はスニペット (Go 用) を書いていますが、次のフィールドに移動するときにフィールドを条件付きで変換したいと考えています。具体的には、編集しないままにする場合はフィールドを空にし、編集したままにする場合は括弧で囲みます。

私の失敗したスニペット、私が望むものを表現しているが、編集されたフィールドの変換に失敗しています:

func ${1:$$(when (and yas-modified-p yas-moving-away-p) 
             (concat "(" yas-text ")"))} FuncName

私が望むのは、t Typeフィールドに入力すると、スニペットが次のように展開されることです。

func (t Type) FuncName

編集されていないフィールドをスキップすると、次のように展開されます。

func FuncName

(concat ...)に変更すると、トレースがミニ バッファーに出力されるので、条件が期待どおりに実行されることはわかっていますが(message "XXX")、変換が機能しない理由がわかりません。

4

3 に答える 3

1

ドキュメントでは、戻り値をスニペットに組み込むために、elisp フォームを「バッククォート」でラップする必要があることが示唆されています (シェル スクリプトのコマンド置換によく似ています)。

ソース

于 2013-10-25T02:43:03.107 に答える
1

スニペットを次のように開始する方が簡単ではないでしょうか

func () FuncName

空のままの場合は括弧を削除しますか?

于 2013-10-26T02:07:41.323 に答える