在VSCode扩展中设置文本文档的语言

Gre*_*ver 9 visual-studio-code vscode-extensions

我有一个Visual Studio Code扩展,我尝试打开一个虚拟编辑器:

vscode.workspace.openTextDocument(vscode.Uri.parse(previewSchema + ":" + path))

context.subscriptions.push(extractHibernateLogCommand, vscode.Disposable.from(
    vscode.workspace.registerTextDocumentContentProvider(previewSchema, hibernateExtractorProvider)
));
Run Code Online (Sandbox Code Playgroud)

这些文件总是语言:纯文本.是否可以通过编程方式将其更改为"SQL"以获得正确的突出显示?

完整代码

Gam*_*a11 6

从 VSCode 1.28(2018 年 9 月)开始,还可以使用以下命令在创建文档languages.setTextDocumentLanguage()设置文档的语言模式:

设置(和更改)与给定文档关联的语言。

请注意,调用此函数将触发该onDidCloseTextDocument事件,然后再触发该onDidOpenTextDocument事件。

{}下面是一个简单的示例,它打开包含并将语言设置为 JSON 的文档:

vscode.workspace.openTextDocument({content: "{}"}).then(document => {
    vscode.window.showTextDocument(document);
    vscode.languages.setTextDocumentLanguage(document, "json");
});
Run Code Online (Sandbox Code Playgroud)


Gre*_*ver 2

我自己找到了解决办法:

let options: Object = {
  content: string,
  language: "sql"
};

vscode.workspace.openTextDocument(options).then(doc => {
  vscode.window.showTextDocument(doc, vscode.ViewColumn.One);
}, err => {
  vscode.window.showErrorMessage(err);
});
Run Code Online (Sandbox Code Playgroud)

使用时的解决方案TextDocumentContentProvider似乎不可能。

我的更改的提交