vscode 当鼠标悬停在 package.json 依赖项上时,在同一单词上移动光标会重新加载悬停效果,

nue99wik  于 4个月前  发布在  Vscode
关注(0)|答案(4)|浏览(85)

当所有扩展都被禁用时,是否会出现这个问题?:是的

  • VS Code 版本:1.87.0
  • OS 版本:Windows_NT x64 10.0.19045

重现步骤:
video.mp4
当你想查看悬停效果时,但不小心移动了光标一点,这有点烦人。此外,在上面移动光标会显著增加 CPU 和 RAM 的使用量,因为每次悬停都会生成一个 npm 示例

3yhwsihp

3yhwsihp2#

悬停功能来自
vscode/extensions/npm/src/features/jsonContributions.ts
第60行 in 08d9a15
| | constresult: Hover={ |
它包含字符串字面量的range范围。我以为这会用来在鼠标移动到单词上时保持悬停。
尝试在Typescript中进行相同的操作,似乎当鼠标移动到一个单词上时,悬停不会消失。
不知道为什么在这个例子中会有所不同。

q5lcpyga

q5lcpyga3#

我认为TypeScript版本也会重新运行,但它计算得足够快,以至于在ts文件中移动光标时,你不会感觉到CPU使用率的增加。

也许缓存结果在这方面会有帮助?

顺便说一下,在每个悬停上生成一个npm会消耗大量的资源。如果我们已经有了一个不依赖于它的Web实现,我想知道为什么我们仍然在桌面客户端上使用它?

vscode/extensions/npm/src/features/packageJSONContribution.ts
第277行到第282行
| | if(this.npmCommandPath){ |
| | info=awaitthis.npmView(this.npmCommandPath,pack,resource); |
| | } |
| | if(!info&&this.onlineEnabled()){ |
| | info=awaitthis.npmjsView(pack); |
| | } |

thtygnil

thtygnil4#

通常情况下,当前悬停的实现方式是在编辑器鼠标移动时重新计算悬停内容。然而,我们可以实现一个机制来缓存提供者的悬停内容,并在编辑器鼠标移动到相同范围时显示它。我将把这个问题标记为待办工作。
正如@Legend-Master在上一条评论中提到的,计算速度很快,因此在某些情况下,悬停会在下一个位置无缝出现。

相关问题