diff --git a/CHANGELOG.md b/CHANGELOG.md index 23e395e..d9bd940 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.1.1 + +- Fixed a bug with corrupting previews of files that have been deleted and re-created + ## 1.1.0 - Implemented own ANSI escape parser diff --git a/package.json b/package.json index d557c71..e9c03d9 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "publisher": "iliazeus", "displayName": "ANSI Colors", "description": "ANSI color styling for text documents", - "version": "1.1.0", + "version": "1.1.1", "license": "MIT", "repository": { "url": "https://github.com/iliazeus/vscode-ansi" diff --git a/src/PrettyAnsiContentProvider.ts b/src/PrettyAnsiContentProvider.ts index c0dd331..5f61f63 100644 --- a/src/PrettyAnsiContentProvider.ts +++ b/src/PrettyAnsiContentProvider.ts @@ -1,6 +1,6 @@ import { posix as posixPath } from "path"; -import { EventEmitter, TextDocumentContentProvider, Uri, workspace } from "vscode"; +import { EventEmitter, FileSystemWatcher, TextDocumentContentProvider, Uri, workspace } from "vscode"; import * as ansi from "./ansi"; import { extensionId } from "./extension"; @@ -31,6 +31,7 @@ export class PrettyAnsiContentProvider implements TextDocumentContentProvider { public readonly onDidChange = this._onDidChange.event; private readonly _watchedUris = new Set(); + private readonly _fileSystemWatcher: FileSystemWatcher; private readonly _editorRedrawWatcher: EditorRedrawWatcher; @@ -48,9 +49,24 @@ export class PrettyAnsiContentProvider implements TextDocumentContentProvider { }) ); + this._fileSystemWatcher = workspace.createFileSystemWatcher("**/*", false, false, true); + this._disposables.push(this._fileSystemWatcher); + this._disposables.push( - workspace.onDidCloseTextDocument((document) => { - this._watchedUris.delete(document.uri.toString()); + this._fileSystemWatcher.onDidChange((actualUri) => { + if (this._watchedUris.has(actualUri.toString())) { + const providerUri = PrettyAnsiContentProvider.toProviderUri(actualUri); + this._onDidChange.fire(providerUri); + } + }) + ); + + this._disposables.push( + this._fileSystemWatcher.onDidCreate((actualUri) => { + if (this._watchedUris.has(actualUri.toString())) { + const providerUri = PrettyAnsiContentProvider.toProviderUri(actualUri); + this._onDidChange.fire(providerUri); + } }) ); }