rename and delete fs events for files

This commit is contained in:
Matt Parker
2025-10-22 00:50:02 +10:00
parent a403cb3389
commit 588299ef39
5 changed files with 60 additions and 0 deletions

View File

@@ -23,6 +23,15 @@ public class FileChangedService(RoslynAnalysis roslynAnalysis, IdeOpenTabsFileMa
public SharpIdeSolutionModel SolutionModel { get; set; } = null!;
public async Task SharpIdeFileRenamed(SharpIdeFile file, string oldFilePath)
{
if (file.IsRoslynWorkspaceFile)
{
await HandleWorkspaceFileRenamed(file, oldFilePath);
}
// TODO: handle csproj moved
}
public async Task SharpIdeFileMoved(SharpIdeFile file, string oldFilePath)
{
if (file.IsRoslynWorkspaceFile)
@@ -145,4 +154,15 @@ public class FileChangedService(RoslynAnalysis roslynAnalysis, IdeOpenTabsFileMa
GlobalEvents.Instance.SolutionAltered.InvokeParallelFireAndForget();
await _roslynAnalysis.UpdateSolutionDiagnostics(newCts.Token);
}
private async Task HandleWorkspaceFileRenamed(SharpIdeFile file, string oldFilePath)
{
var newCts = new CancellationTokenSource();
var oldCts = Interlocked.Exchange(ref _updateSolutionDiagnosticsCts, newCts);
await oldCts.CancelAsync();
oldCts.Dispose();
await _roslynAnalysis.MoveDocument(file, oldFilePath);
GlobalEvents.Instance.SolutionAltered.InvokeParallelFireAndForget();
await _roslynAnalysis.UpdateSolutionDiagnostics(newCts.Token);
}
}