more file operations
This commit is contained in:
@@ -32,6 +32,14 @@ public class FileChangedService(RoslynAnalysis roslynAnalysis, IdeOpenTabsFileMa
|
||||
// TODO: handle csproj added
|
||||
}
|
||||
|
||||
public async Task SharpIdeFileRemoved(SharpIdeFile file)
|
||||
{
|
||||
if (file.IsRoslynWorkspaceFile)
|
||||
{
|
||||
await HandleWorkspaceFileRemoved(file);
|
||||
}
|
||||
}
|
||||
|
||||
// All file changes should go via this service
|
||||
public async Task SharpIdeFileChanged(SharpIdeFile file, string newContents, FileChangeType changeType)
|
||||
{
|
||||
@@ -106,4 +114,15 @@ public class FileChangedService(RoslynAnalysis roslynAnalysis, IdeOpenTabsFileMa
|
||||
GlobalEvents.Instance.SolutionAltered.InvokeParallelFireAndForget();
|
||||
await _roslynAnalysis.UpdateSolutionDiagnostics(newCts.Token);
|
||||
}
|
||||
|
||||
private async Task HandleWorkspaceFileRemoved(SharpIdeFile file)
|
||||
{
|
||||
var newCts = new CancellationTokenSource();
|
||||
var oldCts = Interlocked.Exchange(ref _updateSolutionDiagnosticsCts, newCts);
|
||||
await oldCts.CancelAsync();
|
||||
oldCts.Dispose();
|
||||
await _roslynAnalysis.RemoveDocument(file);
|
||||
GlobalEvents.Instance.SolutionAltered.InvokeParallelFireAndForget();
|
||||
await _roslynAnalysis.UpdateSolutionDiagnostics(newCts.Token);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user