ultisnips:如何 "freeze" vim.current.window.cursor 片段的值

ultisnips: How to "freeze" vim.current.window.cursor value for snippet

我有一个曾经运行良好的片段 (neovim 0.2.0)

snippet #= "comment ===" b
# `!p snip.rv = '=' * (78 - vim.current.window.cursor[1])`
# ${1:comments} 
# `!p snip.rv = '=' * (78 - vim.current.window.cursor[1])`
endsnippet

这个片段基本上是在触发时写 python 评论块, 其中“=”的长度取决于光标的位置。

这几天(我不知道是哪个更新导致的),只要我输入我的评论,“=”的长度就在减少。

看起来 vim.current.window.cursor[1] 不断被重新评估。

知道如何 "freeze" 值吗?

我终于找到了:

snippet #= "comment ===" b
`!p
if not snip.c:
    width = int(vim.eval("78 - virtcol('.')"))
snip.rv = '# ' + '=' * width`
# ${1:comments}
`!p snip.rv = '# ' + '=' * width`
endsnippet