typescript - 相同的 CompletionItemProvider 适用于 javascript 但不适用于 json 文件
问题描述
context.subscriptions.push(vscode.languages.registerCompletionItemProvider(['json', 'javascript'], {
provideCompletionItems: completionProvider,
}, ...['"', '/']))
}
completionProvider (document: vscode.TextDocument, position: vscode.Position) => {
return ['foo', 'foo2', 'foo3'].map(item => ({ label: item }))
}
它可以用于 js 文件,但不能用于 json 文件。JSON类型的文件有什么机制可以防止智能吗? 在此处输入图像描述
解决方案
这是一段有效的代码:
context.subscriptions.push(vscode.languages.registerCompletionItemProvider(
['json', 'javascript'],
{
provideCompletionItems(document, position) {
return ['foo', 'foo2', 'foo3'].map(item => {
let completionItem = new vscode.CompletionItem(item); // change to this
completionItem.range = new vscode.Range(position, position); // you need this for json
return completionItem;
})
}
},
...['"', "/"]
)
);
该range
选项专门用于json
文件。它与一个词的含义有关,例如json
与不同。javascript
请参阅JSON 完成的自定义扩展在双引号中不起作用和https://stackoverflow.com/a/64593598/836330。
推荐阅读
- php - 在 html/php 中的单独表行中显示目录中的文件名
- python - 如何在图像上添加遮罩以模糊它们的交点?
- mysql - 为什么 MySQL 从 5.7 升级到 8.0 后出现重复输入错误?
- apache-nifi - 是否可以进行 Nifi 应用程序备份和恢复?
- asp.net-core - Entity Framework Core 未加载 1 到 0 外键实体
- java - 服务层和spring事务中的验证
- java - Spring JpaRepository ENUM 不匹配
- akka-stream - Akka Streams:具有自定义逻辑的扇出运算符
- request - 创建peyment(条纹)时出错
- javascript - 如果传递的项目存在于 arrayOfArrays 内的所有数组中,则返回 true