1

新しい変数を Java ソースに挿入するために、次のスニペットを作成しました。

# -*- mode: snippet -*-
# name: variable
# key: v
# --
$1 ${1:$(java-default-variable-name text)} = new $1($2);
$0

型に基づいて変数を宣言および作成します。

AtomicInteger-> AtomicInteger ai = new AtomicInteger();

欠けているのは、デフォルトの名前が気に入らない場合、スニペット内で別の変数名を指定できないことです。私は書いてみました:

$1 ${2:$(java-default-variable-name $1)}

また

$1 ${2:`(java-default-variable-name $1)`}

しかし、うまくいきません。フィールド $1 をフィールド $2 に変換する方法はありますか?

4

1 に答える 1

2

java-default-variable-name の正確なコンテキストがわかりません - 文字列を取り、別の文字列を返すと思いますか?

もしそうなら、これはおおよそあなたが求めているものだと思います:

$1 ${2:varname$(let* ((end (- (point) 1))
           (start (save-excursion (backward-word) (point)))
           (type (buffer-substring start end)))
         (if (equal yas/text "varname")
            (java-default-variable-name type)
            yas/text))} = new $1($3);

$0

于 2012-08-24T10:53:28.860 に答える