我编写了这个片段,用于在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?
答案 0 :(得分: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