in src/controllers/mainController.ts [545:590]
public onDidCloseTextDocument(doc: vscode.TextDocument): void {
if (this._connectionMgr === undefined) {
// Avoid processing events before initialization is complete
return;
}
let closedDocumentUri: string = doc.uri.toString();
let closedDocumentUriScheme: string = doc.uri.scheme;
// Stop timers if they have been started
if (this._lastSavedTimer) {
this._lastSavedTimer.end();
}
if (this._lastOpenedTimer) {
this._lastOpenedTimer.end();
}
// Determine which event caused this close event
// If there was a saveTextDoc event just before this closeTextDoc event and it
// was untitled then we know it was an untitled save
if (this._lastSavedUri &&
closedDocumentUriScheme === LocalizedConstants.untitledScheme &&
this._lastSavedTimer.getDuration() < Constants.untitledSaveTimeThreshold) {
// Untitled file was saved and connection will be transfered
this._connectionMgr.transferFileConnection(closedDocumentUri, this._lastSavedUri);
// If there was an openTextDoc event just before this closeTextDoc event then we know it was a rename
} else if (this._lastOpenedUri &&
this._lastOpenedTimer.getDuration() < Constants.renamedOpenTimeThreshold) {
// File was renamed and connection will be transfered
this._connectionMgr.transferFileConnection(closedDocumentUri, this._lastOpenedUri);
} else {
// Pass along the close event to the other handlers for a normal closed file
this._connectionMgr.onDidCloseTextDocument(doc);
this._outputContentProvider.onDidCloseTextDocument(doc);
}
// Reset special case timers and events
this._lastSavedUri = undefined;
this._lastSavedTimer = undefined;
this._lastOpenedTimer = undefined;
this._lastOpenedUri = undefined;
}