Itération 122442
Itération 122442

Reputation: 2972

In VSCode extension, how to fill an untitled unsaved file with content read from another file?

Using VSCode 1.61.2, I am making an extension that must open an empty, unsaved file in the editor.

The first part, without filling the document, is done like bellow, and works well:

vscode.workspace.openTextDocument({
    language: "json",
    content: "toto"
})

However, I would like the content to be filled with the content of a file located in the extension code source. The file is located at:

src/my-file.json

So far I have:

vscode.workspace.openTextDocument("src/my-file.json").then((file) => {
    vscode.workspace.openTextDocument({
        language: "json",
        content: file.getText()
    })
})

However, this throws:

rejected promise not handled within 1 second: Error: cannot open file:///src/my-file.json. Detail: Unable to read file '\src\my-file.json' (Error: Unable to resolve nonexistent file '\src\my-file.json')

I highly suspect the workspace refers to the user workspace, thus the file does not exist, which explain the error.

However, if I am right, I did not find anything in the api that allows to read extension files.

How can I read my extension source files and write it into an empty unsaved file in the editor ?

Upvotes: 0

Views: 644

Answers (1)

rioV8
rioV8

Reputation: 28683

Create the path in the extension

let srcfolder = path.join(__dirname, 'src', 'my-file.json');

Or use the ExtensionContext that is the argument of the activate function, use the member extensionUri this is also web extension save, use vscode.workspace.fs to read the file

Upvotes: 2

Related Questions