refactor diagnostic
This commit is contained in:
@@ -0,0 +1,6 @@
|
|||||||
|
using Microsoft.CodeAnalysis;
|
||||||
|
using Microsoft.CodeAnalysis.Text;
|
||||||
|
|
||||||
|
namespace SharpIDE.Application.Features.Analysis;
|
||||||
|
|
||||||
|
public readonly record struct SharpIdeDiagnostic(LinePositionSpan Span, Diagnostic Diagnostic);
|
||||||
@@ -32,7 +32,7 @@ public partial class SharpIdeCodeEdit : CodeEdit
|
|||||||
private CustomHighlighter _syntaxHighlighter = new();
|
private CustomHighlighter _syntaxHighlighter = new();
|
||||||
private PopupMenu _popupMenu = null!;
|
private PopupMenu _popupMenu = null!;
|
||||||
|
|
||||||
private ImmutableArray<(FileLinePositionSpan fileSpan, Diagnostic diagnostic)> _diagnostics = [];
|
private ImmutableArray<SharpIdeDiagnostic> _diagnostics = [];
|
||||||
private ImmutableArray<CodeAction> _currentCodeActionsInPopup = [];
|
private ImmutableArray<CodeAction> _currentCodeActionsInPopup = [];
|
||||||
private bool _fileChangingSuppressBreakpointToggleEvent;
|
private bool _fileChangingSuppressBreakpointToggleEvent;
|
||||||
|
|
||||||
@@ -391,21 +391,18 @@ public partial class SharpIdeCodeEdit : CodeEdit
|
|||||||
public override void _Draw()
|
public override void _Draw()
|
||||||
{
|
{
|
||||||
//UnderlineRange(_currentLine, _selectionStartCol, _selectionEndCol, new Color(1, 0, 0));
|
//UnderlineRange(_currentLine, _selectionStartCol, _selectionEndCol, new Color(1, 0, 0));
|
||||||
foreach (var (fileSpan, diagnostic) in _diagnostics)
|
foreach (var sharpIdeDiagnostic in _diagnostics)
|
||||||
{
|
{
|
||||||
if (diagnostic.Location.IsInSource)
|
var line = sharpIdeDiagnostic.Span.Start.Line;
|
||||||
|
var startCol = sharpIdeDiagnostic.Span.Start.Character;
|
||||||
|
var endCol = sharpIdeDiagnostic.Span.End.Character;
|
||||||
|
var color = sharpIdeDiagnostic.Diagnostic.Severity switch
|
||||||
{
|
{
|
||||||
var line = fileSpan.StartLinePosition.Line;
|
DiagnosticSeverity.Error => new Color(1, 0, 0),
|
||||||
var startCol = fileSpan.StartLinePosition.Character;
|
DiagnosticSeverity.Warning => new Color("ffb700"),
|
||||||
var endCol = fileSpan.EndLinePosition.Character;
|
_ => new Color(0, 1, 0) // Info or other
|
||||||
var color = diagnostic.Severity switch
|
};
|
||||||
{
|
UnderlineRange(line, startCol, endCol, color);
|
||||||
DiagnosticSeverity.Error => new Color(1, 0, 0),
|
|
||||||
DiagnosticSeverity.Warning => new Color("ffb700"),
|
|
||||||
_ => new Color(0, 1, 0) // Info or other
|
|
||||||
};
|
|
||||||
UnderlineRange(line, startCol, endCol, color);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -450,7 +447,7 @@ public partial class SharpIdeCodeEdit : CodeEdit
|
|||||||
}
|
}
|
||||||
|
|
||||||
[RequiresGodotUiThread]
|
[RequiresGodotUiThread]
|
||||||
private void SetDiagnosticsModel(ImmutableArray<(FileLinePositionSpan fileSpan, Diagnostic diagnostic)> diagnostics)
|
private void SetDiagnosticsModel(ImmutableArray<SharpIdeDiagnostic> diagnostics)
|
||||||
{
|
{
|
||||||
_diagnostics = diagnostics;
|
_diagnostics = diagnostics;
|
||||||
QueueRedraw();
|
QueueRedraw();
|
||||||
|
|||||||
Reference in New Issue
Block a user