Skip to content

Commit

Permalink
quick commit
Browse files Browse the repository at this point in the history
  • Loading branch information
danielscherzer committed Apr 25, 2024
1 parent a8a26a9 commit 9f7d8a9
Showing 1 changed file with 21 additions and 34 deletions.
55 changes: 21 additions & 34 deletions GLSL_Shared/Errors/SquiggleTagger.cs
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
using GLSLhelper;
using DMS.GLSL.Contracts;
using GLSLhelper;
using Microsoft.VisualStudio.Text;
using Microsoft.VisualStudio.Text.Adornments;
using Microsoft.VisualStudio.Text.Tagging;
using System;
using System.Collections.Generic;
using System.Linq;

namespace DMS.GLSL.Errors
{
Expand All @@ -21,51 +21,38 @@ internal SquiggleTagger(ITextBuffer buffer)
}
}

public IEnumerable<ITagSpan<IErrorTag>> GetTags(NormalizedSnapshotSpanCollection inputSpans)
{
if (!errors.Any()) yield break;
//TODO: parse error.message for offending words to narrow down span
//error.Message.
foreach (var inputSpan in inputSpans)
{
foreach (var error in errors)
{
var lineNumber = inputSpan.Start.GetContainingLine().LineNumber + 1;
if (error.LineNumber == lineNumber)
{
var tag = new ErrorTag(ConvertErrorType(error.Type), error.Message);
var span = new TagSpan<IErrorTag>(inputSpan, tag);
yield return span;
}
}
}
}

private string ConvertErrorType(MessageType type)
{
switch (type)
{
case MessageType.Error: return PredefinedErrorTypeNames.SyntaxError;
case MessageType.Warning: return PredefinedErrorTypeNames.Warning;
default: return PredefinedErrorTypeNames.Suggestion;
}
}
public IEnumerable<ITagSpan<IErrorTag>> GetTags(NormalizedSnapshotSpanCollection inputSpans) => _tags;

public void UpdateErrors(IEnumerable<ShaderLogLine> errorLog)
{
errors = errorLog;
_tags.Clear();
ErrorList.GetInstance().Clear();
foreach (var error in errors)

foreach (var error in errorLog)
{
var lineNumber = error.LineNumber.HasValue ? error.LineNumber.Value - 1 : 0;
ErrorList.GetInstance().Write(error.Message, lineNumber, filePath, error.Type);

var lineSpan = buffer.CurrentSnapshot.GetLineFromLineNumber(lineNumber).Extent; //TODO: parse error.message for offending words to trim down span
var tag = new ErrorTag(ConvertErrorType(error.Type), error.Message);
_tags.Add(new TagSpan<IErrorTag>(lineSpan, tag));
}
var span = new SnapshotSpan(buffer.CurrentSnapshot, 0, buffer.CurrentSnapshot.Length);
TagsChanged?.Invoke(this, new SnapshotSpanEventArgs(span));
}

private IEnumerable<ShaderLogLine> errors = new List<ShaderLogLine>();
private readonly List<ITagSpan<IErrorTag>> _tags = new List<ITagSpan<IErrorTag>>();
private readonly ITextBuffer buffer;
private readonly string filePath;

private static string ConvertErrorType(MessageType type)
{
switch (type)
{
case MessageType.Error: return PredefinedErrorTypeNames.SyntaxError;
case MessageType.Warning: return PredefinedErrorTypeNames.Warning;
default: return PredefinedErrorTypeNames.Suggestion;
}
}
}
}

0 comments on commit 9f7d8a9

Please sign in to comment.