
The tag squiggle line is present and the parser tags has quick info but my custome tagger shows the squiggle lines but without quick info prompt, how to fix this?
public ExpressionsSyntaxLanguage() :
base("Expressions") {
// Create a classification type provider and register its classification types
ExpressionsClassificationTypeProvider classificationTypeProvider = new ExpressionsClassificationTypeProvider();
classificationTypeProvider.RegisterAll();
// Register an ILexer service that can tokenize text
this.RegisterService<ILexer>(new ExpressionsLexer(classificationTypeProvider));
// Register an ICodeDocumentTaggerProvider service that creates a token tagger for
// each document using the language
this.RegisterService(new ExpressionsTokenTaggerProvider(classificationTypeProvider));
// Register a squiggle tag quick info provider
this.RegisterService(new SquiggleTagQuickInfoProvider());
// Register a parser
this.RegisterParser(new ExpressionsParser());
// Register a tagger provider for showing parse errors
this.RegisterService(new CodeDocumentTaggerProvider<ParseErrorTagger>(typeof(ParseErrorTagger)));
this.RegisterService<ICompletionProvider>(new ExpressionsCompletionProvider());
this.RegisterService(new TextViewTaggerProvider<ViewModelAwareTagger>(typeof(ViewModelAwareTagger)));
}
}
public class ViewModelAwareTagger : TaggerBase<ISquiggleTag>
{
private readonly IEditorView _view;
public ViewModelAwareTagger(IEditorView view) : base("Custom",
null, view.SyntaxEditor.Document, true)
{
_view = view;
}
public override IEnumerable<TagSnapshotRange<ISquiggleTag>> GetTags(NormalizedTextSnapshotRangeCollection snapshotRanges, object parameter)
{
if (snapshotRanges != null)
{
foreach (var snapshotRange in snapshotRanges)
{
var text = snapshotRange.Text;
if (_view.SyntaxEditor.Tag is PropertyDescriptorPropertyModel descriptorPropertyModel && descriptorPropertyModel.Target is BaseFirmwareViewModel vm)
{
foreach (var error in LogicalExpressionValidationHelper.Validate(text, vm))
{
var tag = new SquiggleTag(ClassificationTypes.SyntaxError, new PlainTextContentProvider(error.Message));
var targetSnapshotRange = snapshotRange;
if (targetSnapshotRange.IsZeroLength)
{
targetSnapshotRange = new TextSnapshotRange(targetSnapshotRange.Snapshot, targetSnapshotRange.StartOffset, targetSnapshotRange.StartOffset + 1);
}
yield return new TagSnapshotRange<ISquiggleTag>(TextSnapshotRange.FromSpan(targetSnapshotRange.Snapshot,
targetSnapshotRange.StartOffset + error.MatchIndex, error.MatchLength), tag);
}
}
}
}
}
}
[Modified 4 days ago]