GhostText icon indicating copy to clipboard operation
GhostText copied to clipboard

Connection is lost after save

Open fregante opened this issue 2 years ago • 4 comments

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

fregante avatar Aug 21 '23 06:08 fregante

Ok, I think I figured out why this is happening:

When the file is created it is using an untitled scheme

https://github.com/fregante/GhostText-for-VSCode/blob/d414e46f25df9e78f8a8c126e9fc913dadff2f55/source/extension.ts#L37-L40

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.

kevintraver avatar Aug 21 '23 16:08 kevintraver

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/

kevintraver avatar Aug 21 '23 16:08 kevintraver

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

fregante avatar Aug 22 '23 05:08 fregante

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.

Moulick avatar Feb 27 '24 14:02 Moulick