J'ai une extension Visual Studio Code où j'essaye d'ouvrir un éditeur virtuel:

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

context.subscriptions.push(extractHibernateLogCommand, vscode.Disposable.from(
    vscode.workspace.registerTextDocumentContentProvider(previewSchema, hibernateExtractorProvider)
));

Ces documents sont toujours en langage: texte brut. Est-il possible de changer cela par programme en "SQL" pour avoir la mise en évidence correcte?

Code complet

10
GreenRover 16 août 2017 à 09:38

2 réponses

Meilleure réponse

J'ai trouvé une solution par moi-même:

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);
});

Une solution lors de l'utilisation de TextDocumentContentProvider ne semble pas possible.

Le commit avec mon changement

2
Gama11 12 avril 2018 à 12:44

Depuis VSCode 1.28 (septembre 2018 ), il est également possible de définir le mode de langue d'un document après sa création en utilisant languages.setTextDocumentLanguage():

Définissez (et modifiez) la langue associée au document donné.

Notez que l'appel de cette fonction déclenchera l'événement onDidCloseTextDocument suivi de l'événement onDidOpenTextDocument.

Voici un exemple simple qui ouvre un document contenant {} et définit la langue sur JSON:

vscode.workspace.openTextDocument({content: "{}"}).then(document => {
    vscode.window.showTextDocument(document);
    vscode.languages.setTextDocumentLanguage(document, "json");
});
3
Community 20 juin 2020 à 09:12