open solution diagnostic at line position

This commit is contained in:
Matt Parker
2025-10-30 01:05:20 +10:00
parent d6cadd963d
commit 318614b876

View File

@@ -3,6 +3,7 @@ using Godot;
using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis;
using ObservableCollections; using ObservableCollections;
using R3; using R3;
using SharpIDE.Application.Features.Analysis;
using SharpIDE.Application.Features.SolutionDiscovery; using SharpIDE.Application.Features.SolutionDiscovery;
using SharpIDE.Application.Features.SolutionDiscovery.VsPersistence; using SharpIDE.Application.Features.SolutionDiscovery.VsPersistence;
using SharpIDE.Godot.Features.Common; using SharpIDE.Godot.Features.Common;
@@ -117,8 +118,9 @@ public partial class ProblemsPanel : Control
private void OpenDocumentContainingDiagnostic(Diagnostic diagnostic) private void OpenDocumentContainingDiagnostic(Diagnostic diagnostic)
{ {
var filePath = diagnostic.Location.SourceTree?.GetMappedLineSpan(diagnostic.Location.SourceSpan).Path; var fileLinePositionSpan = diagnostic.Location.GetMappedLineSpan();
var file = Solution!.AllFiles.Single(f => f.Path == filePath); var file = Solution!.AllFiles.Single(f => f.Path == fileLinePositionSpan.Path);
GodotGlobalEvents.Instance.FileExternallySelected.InvokeParallelFireAndForget(file, null); var linePosition = new SharpIdeFileLinePosition(fileLinePositionSpan.StartLinePosition.Line, fileLinePositionSpan.StartLinePosition.Character);
GodotGlobalEvents.Instance.FileExternallySelected.InvokeParallelFireAndForget(file, linePosition);
} }
} }