我正在尝试使用
OmniSharp.Extensions.LanguageServer
nuget 包为 VSCode 编写一个具有自动完成服务的扩展。我想在用户选择完成项时插入代码片段。
如果我将完成项的
Label
属性设置为我的代码片段的文本,它就会起作用。但是,我的标签现在在完成列表中看起来很难看,因为它们必须包含换行符和制表符。所以我正在寻找另一种解决方案。
根据 Vscode
CompletionItem
类文档,看起来我需要使用属性 InsertText
代替或补充 Label
:
选择此完成时应插入文档中的字符串或片段。当错误时,使用
。label
问题:
就我而言,即使我将
InsertText
设置为非虚假值,VSCode 仍会插入 Label
属性的值。
什么可能导致这种行为?这是 Omnisharp 中的错误,还是有另一个我不知道的配置,我必须设置它来强制 VSCode 插入
InsertText
的值而不是 Label
的值?
我发现了:我也在使用
ComplitionItem.TextEdit
属性。它导致设置的 ComplitionItem.InsertText
属性被忽略。根据文档,ComplitionItem.TextEdit
是
已弃用 - 使用
和CompletionItem.InsertText
代替。CompletionItem.Range