VSCode 1.59.1版本Linux系统下自定义扩展hover功能失效问题
失效原因及修复方案
1. 配置格式不符合1.59版本新增的强校验规则
VSCode 1.59版本新增了扩展声明能力的强校验逻辑,且Linux平台下的配置校验严格度高于Windows和macOS:
- 你当前
package.json中contributes.capabilities.hoverProvider配置为字符串类型的"true",不符合VSCode API要求的布尔值类型。1.58及更早版本会自动做类型转换兼容,1.59版本在Linux下会直接判定该能力声明无效,导致hoverProvider注册不生效。 - 修复方案:对于直接调用
vscode.languages.registerHoverProvider注册的悬浮能力,不需要额外在contributes.capabilities里声明,直接删除该段配置即可;如果要保留声明,把字符串"true"改为布尔值true。
2. 单词范围识别规则的平台差异
VSCode 1.59版本调整了document.getWordRangeAtPosition方法的默认单词分割正则,Linux平台下默认会拆分包含下划线的连续字符串,导致无法完整识别ABSORBING_BOUNDARIES这类带下划线的目标单词。
- 修复方案:调用方法时显式传入匹配目标单词规则的自定义正则:
const range = document.getWordRangeAtPosition(position, /[A-Z_]+/);
3. 语言ID关联校验变严
1.59版本在Linux下调整了onLanguage激活事件的触发逻辑,只有文件明确关联到yales2test语言ID时才会触发扩展激活。如果没有配置文件后缀和语言ID的关联,打开对应文件时扩展不会激活,hover自然不会生效。
- 修复方案:在
package.json的contributes中补充语言关联配置,示例如下:
"contributes": { "languages": [ { "id": "yales2test", "extensions": [".yales2", ".y2"] // 替换为你的实际文件后缀 } ] }
内容的提问来源于stack exchange,提问作者supe345
相关产品推荐
相关产品推荐

