From 59454e6b3193bbe6e313135ef355bf957cc57e90 Mon Sep 17 00:00:00 2001 From: Matt Parker <61717342+MattParkerDev@users.noreply.github.com> Date: Wed, 19 Nov 2025 23:52:56 +1000 Subject: [PATCH] only update in-memory file text from external change if open --- .../Features/FilePersistence/IdeOpenTabsFileManager.cs | 8 ++++++++ .../Features/FileWatching/FileChangedService.cs | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/SharpIDE.Application/Features/FilePersistence/IdeOpenTabsFileManager.cs b/src/SharpIDE.Application/Features/FilePersistence/IdeOpenTabsFileManager.cs index c3ecd04..2fa561f 100644 --- a/src/SharpIDE.Application/Features/FilePersistence/IdeOpenTabsFileManager.cs +++ b/src/SharpIDE.Application/Features/FilePersistence/IdeOpenTabsFileManager.cs @@ -34,6 +34,14 @@ public class IdeOpenTabsFileManager(ILogger logger) _openFiles[file] = newLazyTask; } + public async Task UpdateFileTextInMemoryIfOpen(SharpIdeFile file, string newText) + { + if (!_openFiles.ContainsKey(file)) return; + + var newLazyTask = new Lazy>(() => Task.FromResult(newText)); + _openFiles[file] = newLazyTask; + } + public async Task SaveFileAsync(SharpIdeFile file) { if (!_openFiles.ContainsKey(file)) throw new InvalidOperationException("File is not open in memory."); diff --git a/src/SharpIDE.Application/Features/FileWatching/FileChangedService.cs b/src/SharpIDE.Application/Features/FileWatching/FileChangedService.cs index df0d196..68f573a 100644 --- a/src/SharpIDE.Application/Features/FileWatching/FileChangedService.cs +++ b/src/SharpIDE.Application/Features/FileWatching/FileChangedService.cs @@ -68,7 +68,7 @@ public class FileChangedService(RoslynAnalysis roslynAnalysis, IdeOpenTabsFileMa // Disk is already up to date // Update any open tabs // update in memory - await _openTabsFileManager.UpdateFileTextInMemory(file, newContents); + await _openTabsFileManager.UpdateFileTextInMemoryIfOpen(file, newContents); file.FileContentsChangedExternally.InvokeParallelFireAndForget(linePosition); } else if (changeType is FileChangeType.CodeActionChange)