From 5bb7f2e02e056b3dca5c55d83b99bee2aa52b101 Mon Sep 17 00:00:00 2001 From: Dirk Baeumer Date: Tue, 5 Jul 2016 14:50:02 +0200 Subject: [PATCH] Fixes #8719: Closing a file without saving is not cleaning markers --- .../src/features/bufferSyncSupport.ts | 35 +------------------ .../typescript/src/typescriptService.ts | 1 + 2 files changed, 2 insertions(+), 34 deletions(-) diff --git a/extensions/typescript/src/features/bufferSyncSupport.ts b/extensions/typescript/src/features/bufferSyncSupport.ts index b51fae64f3a..7add4446ab8 100644 --- a/extensions/typescript/src/features/bufferSyncSupport.ts +++ b/extensions/typescript/src/features/bufferSyncSupport.ts @@ -4,9 +4,6 @@ *--------------------------------------------------------------------------------------------*/ 'use strict'; -import * as fs from 'fs'; -import * as path from 'path'; - import { workspace, TextDocument, TextDocumentChangeEvent, TextDocumentContentChangeEvent, Disposable } from 'vscode'; import * as Proto from '../protocol'; import { ITypescriptServiceClient } from '../typescriptService'; @@ -83,7 +80,6 @@ export default class BufferSyncSupport { private diagnostics: Diagnostics; private disposables: Disposable[] = []; private syncedBuffers: Map; - private closedFiles: Map; private projectValidationRequested: boolean; @@ -104,7 +100,6 @@ export default class BufferSyncSupport { this.diagnosticDelayer = new Delayer(100); this.syncedBuffers = Object.create(null); - this.closedFiles = Object.create(null); } public listen(): void { @@ -112,19 +107,6 @@ export default class BufferSyncSupport { workspace.onDidCloseTextDocument(this.onDidCloseTextDocument, this, this.disposables); workspace.onDidChangeTextDocument(this.onDidChangeTextDocument, this, this.disposables); workspace.textDocuments.forEach(this.onDidOpenTextDocument, this); - workspace.createFileSystemWatcher('**/*', true, true, false).onDidDelete((resource) => { - let filepath = this.client.asAbsolutePath(resource); - if (!filepath) { - return; - } - if (!this.syncedBuffers[filepath]) { - // The file is not synced (open in an editor) and got - // removed from disk. Make sure it is not in the closedFiles - // list since we shouldn't revalidate it. - delete this.closedFiles[filepath]; - this.diagnostics.delete(filepath); - } - }); } public get validate(): boolean { @@ -165,7 +147,6 @@ export default class BufferSyncSupport { } let syncedBuffer = new SyncedBuffer(document, filepath, this, this.client); this.syncedBuffers[filepath] = syncedBuffer; - delete this.closedFiles[filepath]; syncedBuffer.open(); this.requestDiagnostic(filepath); } @@ -179,14 +160,7 @@ export default class BufferSyncSupport { if (!syncedBuffer) { return; } - // If the file still exists on disk keep on validating the file. - if (fs.existsSync(filepath) && this.extensions[path.extname(filepath)]) { - this.closedFiles[filepath] = true; - } else { - // Ensure we don't have the file in the map and clear all errors. - delete this.closedFiles[filepath]; - this.diagnostics.delete(filepath); - } + this.diagnostics.delete(filepath); delete this.syncedBuffers[filepath]; syncedBuffer.close(); } @@ -246,13 +220,6 @@ export default class BufferSyncSupport { } }); - // Now add all files that we have requested diagnostics for but are now - // closed. Otherwise it might be confusing that interfile dependent markers - // don't get fixed. - Object.keys(this.closedFiles).forEach((file) => { - files.push(file); - }); - let args: Proto.GeterrRequestArgs = { delay: 0, files: files diff --git a/extensions/typescript/src/typescriptService.ts b/extensions/typescript/src/typescriptService.ts index d2d66153304..c6827c9d995 100644 --- a/extensions/typescript/src/typescriptService.ts +++ b/extensions/typescript/src/typescriptService.ts @@ -41,5 +41,6 @@ export interface ITypescriptServiceClient { execute(command:'occurrences', args: Proto.FileLocationRequestArgs, token?: CancellationToken): Promise; execute(command:'projectInfo', args: Proto.ProjectInfoRequestArgs, token?: CancellationToken): Promise; execute(command:'reloadProjects', args: any, expectedResult:boolean, token?: CancellationToken): Promise; + execute(command:'reload', args: Proto.ReloadRequestArgs, expectedResult: boolean, token?: CancellationToken): Promise; execute(command:string, args:any, expectedResult:boolean| CancellationToken, token?: CancellationToken):Promise; } \ No newline at end of file -- GitLab