gpt4 book ai didi

emacs - 离开字段的 yasnippet 条件转换

转载 作者:行者123 更新时间:2023-12-01 13:56:42 25 4
gpt4 key购买 nike

我正在编写一个片段(用于 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") ,我看到打印在迷你缓冲区中的跟踪,但我无法弄清楚为什么我的转换不起作用。

最佳答案

在您的示例中,在我看来,您的连接字符串的结果被丢弃了。我认为您需要将新字符串实际插入缓冲区。

我对 yasnippet 语法不是很熟悉,所以这可能不是最干净的解决方案,但以下似乎对我有用:

func ${1:$$(when (and yas-modified-p 
yas-moving-away-p)
(insert ")" )
(backward-char (+ 1 (length yas-text)))
(insert "("))} ${2:funcName} {
$0
}

关于emacs - 离开字段的 yasnippet 条件转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19577028/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com