在 VSCode 扩展名中设置文本文档的语言
Set language of a text document in a VSCode extension
我有一个 Visual Studio 代码扩展,我试图在其中打开一个
虚拟编辑器:
vscode.workspace.openTextDocument(vscode.Uri.parse(previewSchema + ":" + path))
context.subscriptions.push(extractHibernateLogCommand, vscode.Disposable.from(
vscode.workspace.registerTextDocumentContentProvider(previewSchema, hibernateExtractorProvider)
));
这些文档始终是 language:plain-文本。是否可以通过编程方式将此更改为 "SQL" 以获得正确的突出显示?
打开命令面板(查看->命令面板)
运行"Configure language specific settings"
在 Select 语言下拉菜单中应该有 SQL
的设置
我自己找到了解决办法:
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);
});
使用 TextDocumentContentProvider
时的解决方案似乎不可能。
Since VSCode 1.28 (September 2018), it's also possible to set the language mode for a document after it has been created using languages.setTextDocumentLanguage()
:
Set (and change) the language that is associated with the given document.
Note that calling this function will trigger the onDidCloseTextDocument
event followed by the onDidOpenTextDocument
event.
这是一个简单的示例,它打开包含 {}
的文档并将语言设置为 JSON:
vscode.workspace.openTextDocument({content: "{}"}).then(document => {
vscode.window.showTextDocument(document);
vscode.languages.setTextDocumentLanguage(document, "json");
});
我有一个 Visual Studio 代码扩展,我试图在其中打开一个 虚拟编辑器:
vscode.workspace.openTextDocument(vscode.Uri.parse(previewSchema + ":" + path))
context.subscriptions.push(extractHibernateLogCommand, vscode.Disposable.from(
vscode.workspace.registerTextDocumentContentProvider(previewSchema, hibernateExtractorProvider)
));
这些文档始终是 language:plain-文本。是否可以通过编程方式将此更改为 "SQL" 以获得正确的突出显示?
打开命令面板(查看->命令面板)
运行"Configure language specific settings"
在 Select 语言下拉菜单中应该有 SQL
我自己找到了解决办法:
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);
});
使用 TextDocumentContentProvider
时的解决方案似乎不可能。
Since VSCode 1.28 (September 2018), it's also possible to set the language mode for a document after it has been created using languages.setTextDocumentLanguage()
:
Set (and change) the language that is associated with the given document.
Note that calling this function will trigger the
onDidCloseTextDocument
event followed by theonDidOpenTextDocument
event.
这是一个简单的示例,它打开包含 {}
的文档并将语言设置为 JSON:
vscode.workspace.openTextDocument({content: "{}"}).then(document => {
vscode.window.showTextDocument(document);
vscode.languages.setTextDocumentLanguage(document, "json");
});