visual-studio-code - 如何在vscode中强制更新代码镜头

标签 visual-studio-code vscode-extensions language-server-protocol

我正在 Metals 中使用代码镜头处理“运行代码”操作(Scala 语言服务器)。在我们的用例中,我们只能在编译完成后提供这些代码镜头。如果用户在编译期间或之后没有修改源文件,vscode 将不会发送代码镜头请求。这可能会导致编译前出现“陈旧代码镜头”的丑陋状态。

深入研究 vscode-languageserver-node 的内部结构,我注意到 CodeLensProvider 可以发出 onDidChangeCodeLenses 事件,但它没有反射(reflect)在 LSP ( https://github.com/microsoft/language-server-protocol/issues/192 ) 中,因此我无法将此事件发送到 vscode。

可能会强制重新加载代码镜头的另一件事是 ICodeEditor::setModel 方法,但我不确定这是否可以直接从 vscode 扩展完成,因为我无法获得对代码编辑器的引用。

这如何从语言服务器或 vscode 扩展中完成?或者还有其他首选方法吗?

最佳答案

不幸的是,语言服务器协议(protocol)确实还不支持这个。我前段时间打开的相应功能请求可以找到here .

我能够通过实现 dummy CodeLensProvider 来解决这个问题在扩展端相同的语言 ID(VSCode API 通常允许为语言功能注册多个提供程序)。它只在必要时调用 onDidChangeCodeLenses 事件,实际实现仍在语言服务器端。

关于visual-studio-code - 如何在vscode中强制更新代码镜头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57477684/

相关文章:

python - Matplotlib 绘图未在 VS Code 中显示

visual-studio-code - 如何在 VSCode 中更改编辑器缩进的颜色

typescript - 如何在VSCode中实现 "Go To Definition"扩展

typescript - Emacs LSP 模式 - 是否可以避免单击鼠标来完成建议的操作?

javascript - VS Code 在 Angular js 中使用 get 显示错误

visual-studio-code - VS Code 中的可点击链接 API

javascript - VScode 扩展向 showInputBox 添加取消事件

node.js - 如何像我们做扩展一样在VSCODE上发布LSP语言服务器

python - VSCode 的 vscode-python 扩展是语言服务还是只是扩展?

c# - "Predefined type ' System.* ' is not defined or imported"错误,visual studio 代码,omnisharp