假设我有一段类似foo.bar()
的代码,但我意识到需要将其更改为foo.unwrap().bar()
。如果我首先移动到点之后的位置,并开始键入unwrap
,我将达到类似foo.unw^bar()
的状态(其中^
表示光标位置)。此时,如果我使用company-complete-selection
来完成unwrap
,它将变成foo.unwrap()
,即bar
被吃掉了
请注意,这个“吃”被标点符号阻止,例如。如果我有foo..bar()
,并将自己定位在两个点之间,键入unw
,然后完成,我得到foo.unwrap^.bar()
,这就是我想要的(^
也是光标位置)。
我使用doom emacs,用lsp模式和rustic-mode(以及company-mode)编写rust代码。实际上,我不知道这是否是公司的问题,或者它是否是特定的。也许rust语言服务器(rust-analyzer)正在为公司提供“完成”,包括吃掉下面的单词?
我还没有测试这种类型的问题是否适用
- 在防 rust 缓冲器中
- 在其他编辑器中使用LSP与rust-analyzer
1条答案
按热度按时间vsikbqxv1#
变量
lsp-completion-default-behaviour
控制这个。您可以将其更改为:insert
而不是:replace
以获得该行为。