尝试写了一下,目前效果可以,基本上通过这个 advice 解决了问题!我目前使用的是 evil 模式,也是有效的。
tab 循环候选时不破坏输入,只在按下 回车键 触发 corfu-insert 时生效,删除多出来的 >
(advice-add 'corfu-insert
:after (lambda()
(when (or
(string-equal (file-name-extension buffer-file-name) "c")
(string-equal (file-name-extension buffer-file-name) "cpp")
(string-equal (file-name-extension buffer-file-name) "h")
)
(if (and
(string-equal (char-to-string (char-after)) ">")
(string-equal (char-to-string (char-before)) ">")
)
(delete-char -1)
)
)
)
)