2017-05-22 6 views
0

Was wäre der richtige Weg, um einen Ordner und eine Datei von einer Erweiterung als Teil derselben Operation zu öffnen?VSCode: Öffnen eines Ordners und einer Datei aus derselben Routine

Scheint wie eine einfache Aufgabe, aber ich verbrachte eine ganze Weile und kann es nicht lösen. Ich kann das eine oder andere aber nicht beides als eine einzelne Operation leicht machen.

commands.executeCommand('vscode.openFolder', 
         Uri.parse('E:\\dev\\proj')) 
     .then(() => commands.executeCommand('vscode.open', 
              Uri.file('E:\\dev\\files\\file.json')); 

Der obige Code öffnet einen Ordner, aber nicht die Datei. Aus dem Debugger sehe ich, dass vscode.open Befehl ausgelöst wird, aber Datei nicht geöffnet ist. Und wenn 'vscode.open' nur die Datei wie erwartet öffnet.

Es scheint, als ob nach dem Öffnen des Ordners der gesamte Ausführungskontext weg ist.

Ich habe dieses brutale Experiment:

setTimeout(() => commands.executeCommand('vscode.open', 
              Uri.file('E:\\dev\\files\\file.json'), 3000); 
commands.executeCommand('vscode.openFolder', 
         Uri.parse('E:\\dev\\proj')) 

Und es geschmäht, dass Rückruf SetTimeout die nie, wenn die vscode.openFolder aufgerufen wird, aufgerufen wird.

Wir freuen uns über jede Hilfe/Hinweis.

Antwort

0

Ich habe die Ursache des Problems gefunden. Aber nicht die Lösung.

Offenbar beendet das Öffnen des Ordners den Ausführungskontext vollständig. Dies ist, was die VSCode Dokumentation sagt:

Note that opening in the same window will shutdown the current extension host process and start a new one on the given folder unless the newWindow parameter is set to true.

So scheint derzeit keine Möglichkeit der Öffnung im aktuellen Fenster eines Ordner mit einer bestimmten Datei geöffnet und aktiv zu sein.

Verwandte Themen