【问题标题】:Autocomplete items added to autocomplete list does not show after saving the file添加到自动完成列表的自动完成项目在保存文件后不显示
【发布时间】:2019-12-21 23:05:56
【问题描述】:
This 示例在保存之前似乎可以正常工作。拥有“Untitled-1”可以正常工作,因为在将其保存到“test.py”之后,该项目似乎没有被添加到自动完成列表中。我已经在文件夹中多次运行“npm install”,但这似乎没有帮助。以下是不起作用的文件扩展名:
有效的扩展:
我正在运行这个:
- Ubuntu 18.04.2 LTS
- vscode 1.41.0
编辑:
我设法在我的 Windows 机器上重现了这个问题。复制说明:
- 克隆这个 Git
- 在完成样本文件夹中运行“npm install”
- 在 vscode 中打开 completions-sample 文件夹
- 选择“调试”下的“开始调试”以运行扩展程序
- 创建新文件,不要保存。
- 按 ctrl+shift+p 并选择“触发建议”。应该会弹出一个菜单,其中包含扩展代码中的项目,例如“Hello World!”。
- 通过保存为文件提供扩展名,例如“.py”。重复第 5 步,菜单将不包含任何自定义自动完成项。
我正在运行:
- Windows 10
- 全新安装 vscode 1.41.1
【问题讨论】:
标签:
typescript
visual-studio-code
【解决方案1】:
我在官方 vscode repo 上寻求帮助。显然,您需要在添加自动完成项时更改语言标识符。它默认设置为“纯文本”,这意味着您的自动完成项目只会显示在纯文本文档中。
let provider = vscode.languages.registerCompletionItemProvider('plaintext', {
provideCompletionItems(document: vscode.TextDocument, position: vscode.Position, token: vscode.CancellationToken, context: vscode.CompletionContext) {
// a simple completion item which inserts `Hello World!`
const simpleCompletion = new vscode.CompletionItem('Hello World!');
// return all completion items as array
return [
simpleCompletion
];
}
});
如果我想让这些项目显示为 python,我可以在 this 链接上找到它的语言 ID,并将代码更改为:
let provider = vscode.languages.registerCompletionItemProvider('python', {
provideCompletionItems(document: vscode.TextDocument, position: vscode.Position, token: vscode.CancellationToken, context: vscode.CompletionContext) {
// a simple completion item which inserts `Hello World!`
const simpleCompletion = new vscode.CompletionItem('Hello World!');
// return all completion items as array
return [
simpleCompletion
];
}
});