fix file updates
This commit is contained in:
@@ -33,12 +33,6 @@ public class IdeOpenTabsFileManager(RoslynAnalysis roslynAnalysis)
|
|||||||
|
|
||||||
var newLazyTask = new Lazy<Task<string>>(() => Task.FromResult(newText));
|
var newLazyTask = new Lazy<Task<string>>(() => Task.FromResult(newText));
|
||||||
_openFiles[file] = newLazyTask;
|
_openFiles[file] = newLazyTask;
|
||||||
// Potentially should be event based?
|
|
||||||
if (file.IsRoslynWorkspaceFile)
|
|
||||||
{
|
|
||||||
await _roslynAnalysis.UpdateDocument(file, newText);
|
|
||||||
GlobalEvents.Instance.SolutionAltered.InvokeParallelFireAndForget();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task ReloadFileFromDisk(SharpIdeFile file)
|
public async Task ReloadFileFromDisk(SharpIdeFile file)
|
||||||
|
|||||||
@@ -65,17 +65,21 @@ public partial class SharpIdeCodeEdit : CodeEdit
|
|||||||
GlobalEvents.Instance.SolutionAltered.Subscribe(OnSolutionAltered);
|
GlobalEvents.Instance.SolutionAltered.Subscribe(OnSolutionAltered);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private CancellationTokenSource _solutionAlteredCts = new();
|
||||||
private async Task OnSolutionAltered()
|
private async Task OnSolutionAltered()
|
||||||
{
|
{
|
||||||
if (_currentFile is null) return;
|
if (_currentFile is null) return;
|
||||||
GD.Print("Solution altered, updating project diagnostics for current file");
|
GD.Print($"[{_currentFile.Name}] Solution altered, updating project diagnostics for file");
|
||||||
var documentSyntaxHighlighting = _roslynAnalysis.GetDocumentSyntaxHighlighting(_currentFile);
|
await _solutionAlteredCts.CancelAsync();
|
||||||
var razorSyntaxHighlighting = _roslynAnalysis.GetRazorDocumentSyntaxHighlighting(_currentFile);
|
_solutionAlteredCts = new CancellationTokenSource();
|
||||||
|
var ct = _solutionAlteredCts.Token;
|
||||||
|
var documentSyntaxHighlighting = _roslynAnalysis.GetDocumentSyntaxHighlighting(_currentFile, ct);
|
||||||
|
var razorSyntaxHighlighting = _roslynAnalysis.GetRazorDocumentSyntaxHighlighting(_currentFile, ct);
|
||||||
await Task.WhenAll(documentSyntaxHighlighting, razorSyntaxHighlighting);
|
await Task.WhenAll(documentSyntaxHighlighting, razorSyntaxHighlighting);
|
||||||
await this.InvokeAsync(async () => SetSyntaxHighlightingModel(await documentSyntaxHighlighting, await razorSyntaxHighlighting));
|
await this.InvokeAsync(async () => SetSyntaxHighlightingModel(await documentSyntaxHighlighting, await razorSyntaxHighlighting));
|
||||||
var documentDiagnostics = await _roslynAnalysis.GetDocumentDiagnostics(_currentFile);
|
var documentDiagnostics = await _roslynAnalysis.GetDocumentDiagnostics(_currentFile, ct);
|
||||||
await this.InvokeAsync(() => SetDiagnostics(documentDiagnostics));
|
await this.InvokeAsync(() => SetDiagnostics(documentDiagnostics));
|
||||||
var projectDiagnostics = await _roslynAnalysis.GetProjectDiagnosticsForFile(_currentFile);
|
var projectDiagnostics = await _roslynAnalysis.GetProjectDiagnosticsForFile(_currentFile, ct);
|
||||||
await this.InvokeAsync(() => SetProjectDiagnostics(projectDiagnostics));
|
await this.InvokeAsync(() => SetProjectDiagnostics(projectDiagnostics));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user