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 回答