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)