Open fregante opened 10 months ago
Ok, I think I figured out why this is happening:
When the file is created it is using an untitled
scheme
const file = vscode.Uri.from({
scheme: 'untitled',
path: `${tmpdir()}/${avoidsOverlappingFiles}/${filename}`,
});
from the documentation for onDidCloseTextDocument :
An event that is emitted when a text document is disposed or when the language id of a text document has been changed.
The onDidCloseTextDocument event is being triggered on save because the untitled document is "closed" when it gets saved to disk and becomes a file document.
A possible solution:
async function onDocumentClose(closedDocument: vscode.TextDocument) {
if (closedDocument.uri.scheme === 'untitled') {
// This is an untitled document. Skip further logic.
return;
}
if (closedDocument.isClosed) {
documents.delete(closedDocument.uri.toString());
}
}
the other issue is that the closedDocument.uri
is different between when it's unsaved vs saved to disk
untitled:/var/folders/br/l8jb39_j2sl_8mrr859y01_00000gn/
vs
file:///var/folders/br/l8jb39_j2sl_8mrr859y01_00000gn/
VSCode's document management is a joke. I think I just need to avoid using untitled://
This was also mentioned in another issue: autosave to avoid closure prompts
Can this be something like how git rebase --interactive
does it? I have exported EDITOR="code --wait --add"
on my terminal. When I run git rebase --interactive
, it creates a file and then tells vscode to open that file. Saving the file works fine, and on closing the editor it somehow triggers continue.
I don't remember if this is a consequence of VSCode's document management, but it's not a desired behavior. We're used to saving often so it should not trigger connection closure when one mistakenly saves a GhostText document.
Extracted from:
291