file change handling
This commit is contained in:
@@ -31,7 +31,8 @@ public class IdeFileExternalChangeHandler
|
||||
var file = SolutionModel.AllFiles.SingleOrDefault(f => f.Path == filePath);
|
||||
if (file is not null)
|
||||
{
|
||||
await GlobalEvents.Instance.IdeFileChanged.InvokeParallelAsync(file);
|
||||
await file.FileContentsChangedExternallyFromDisk.InvokeParallelAsync();
|
||||
await GlobalEvents.Instance.IdeFileSavedToDisk.InvokeParallelAsync(file);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,22 +6,25 @@ using SharpIDE.Application.Features.SolutionDiscovery.VsPersistence;
|
||||
|
||||
namespace SharpIDE.Application.Features.FileWatching;
|
||||
|
||||
public class IdeFileChangeHandler
|
||||
public class IdeFileSavedToDiskHandler
|
||||
{
|
||||
public SharpIdeSolutionModel SolutionModel { get; set; } = null!;
|
||||
|
||||
public IdeFileChangeHandler()
|
||||
public IdeFileSavedToDiskHandler()
|
||||
{
|
||||
GlobalEvents.Instance.IdeFileChanged.Subscribe(HandleIdeFileChanged);
|
||||
GlobalEvents.Instance.IdeFileSavedToDisk.Subscribe(HandleIdeFileChanged);
|
||||
}
|
||||
|
||||
private async Task HandleIdeFileChanged(SharpIdeFile file)
|
||||
{
|
||||
await file.FileContentsChangedExternallyFromDisk.InvokeParallelAsync();
|
||||
if (file.IsCsprojFile)
|
||||
{
|
||||
await HandleCsprojChanged(file);
|
||||
}
|
||||
else if (file.IsRoslynWorkspaceFile)
|
||||
{
|
||||
await HandleWorkspaceFileChanged(file);
|
||||
}
|
||||
}
|
||||
|
||||
private async Task HandleCsprojChanged(SharpIdeFile file)
|
||||
@@ -32,4 +35,9 @@ public class IdeFileChangeHandler
|
||||
await RoslynAnalysis.ReloadProject(project);
|
||||
await RoslynAnalysis.UpdateSolutionDiagnostics();
|
||||
}
|
||||
|
||||
private async Task HandleWorkspaceFileChanged(SharpIdeFile file)
|
||||
{
|
||||
await RoslynAnalysis.UpdateSolutionDiagnostics();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user