void RefreshMarkers() { TypeReferencesResult res = null; try { var ParseCache = DCodeCompletionSupport.EnumAvailableModules(Document); res = TypeReferenceFinder.Scan(SyntaxTree, ParseCache); RemoveMarkers(false); var txtDoc = Document.Editor.Document; DocumentLine curLine = null; int ln = -1; int len = 0; foreach (var id in res.TypeMatches) { var loc = DeepASTVisitor.ExtractIdLocation(id, out len); if (ln != loc.Line) { curLine = Document.Editor.GetLine(ln = loc.Line); } var m = new HighlightMarker(txtDoc, curLine, "keyword.semantic.type", loc.Column, TypeReferenceFinder.ExtractId(id)); txtDoc.AddMarker(curLine, m); markers.Add(m); } } catch { } }
void RefreshMarkers() { TypeReferencesResult res=null; try { var ParseCache = DCodeCompletionSupport.EnumAvailableModules(Document); res = TypeReferenceFinder.Scan(SyntaxTree, ParseCache); RemoveMarkers(false); var txtDoc = Document.Editor.Document; DocumentLine curLine=null; int ln=-1; int len = 0; foreach (var id in res.TypeMatches) { var loc = DeepASTVisitor.ExtractIdLocation(id, out len); if(ln!=loc.Line) curLine = Document.Editor.GetLine(ln = loc.Line); var m = new HighlightMarker(txtDoc, curLine, "keyword.semantic.type", loc.Column, TypeReferenceFinder.ExtractId(id)); txtDoc.AddMarker(curLine, m); markers.Add(m); } } catch { } }
private static void OnTextPropertyChanged(BindableObject bindableObject /*, string oldValue, string newValue*/) { var label = bindableObject as Label; if (label == null) { return; } string fulltext = GetFullText(label); string highlightedText = GetHighlightedText(label); if (string.IsNullOrEmpty(fulltext) || string.IsNullOrEmpty(highlightedText)) { // Clear text highlighting label.Text = fulltext; return; } var foregroundColor = GetForeground(label); var backgroundColor = GetBackground(label); var fontAttributes = GetFontAttributes(label); label.FormattedText = string.Empty; var highlightMarker = new HighlightMarker(fulltext, highlightedText); using (var enumerator = highlightMarker.GetEnumerator()) { var formattedText = new FormattedString(); while (enumerator.MoveNext()) { int fromIndex = enumerator.Current.FromIndex; int length = enumerator.Current.Length; bool isHighlighted = enumerator.Current.IsHighlighted; var span = new Span { Text = fulltext.Substring(fromIndex, length) }; if (isHighlighted) { span.ForegroundColor = foregroundColor; span.BackgroundColor = backgroundColor; span.FontAttributes = fontAttributes; } formattedText.Spans.Add(span); } label.FormattedText = formattedText; } }
public void ShouldNotMarkIfSearchStringNotFound() { // Arrange. const string FullText = ""; const string SearchText = "loremipsum"; var highlightMarker = new HighlightMarker(FullText, SearchText); // Act. var highlightList = highlightMarker.ToList(); // Assert highlightList.Should().NotBeNull(); highlightList.Should().HaveCount(1); AssertHighlightIndex(highlightList.ElementAt(0), fromIndex: 0, length: 0, isHighlighted: false); }
public void ShouldNotMarkIfEmptyString() { // Arrange. const string FullText = "full text for highlight marking"; const string SearchText = ""; var highlightMarker = new HighlightMarker(FullText, SearchText); // Act. var highlightList = highlightMarker.ToList(); // Assert highlightList.Should().NotBeNull(); highlightList.Should().HaveCount(1); AssertHighlightIndex(highlightList.ElementAt(0), fromIndex: 0, length: FullText.Length, isHighlighted: false); }
public void ShouldMarkSingleWordInTheEnd() { // Arrange const string FullText = "full text for highlight marking"; const string SearchText = "marking"; var highlightMarker = new HighlightMarker(FullText, SearchText); // Act var highlightList = highlightMarker.ToList(); // Assert highlightList.Should().NotBeNull(); highlightList.Should().HaveCount(2); AssertHighlightIndex(highlightList.ElementAt(0), fromIndex: 0, length: 24, isHighlighted: false); AssertHighlightIndex(highlightList.ElementAt(1), fromIndex: 24, length: 7, isHighlighted: true); }
public void ShouldSplitWithCustomDelimiters() { // Arrange const string FullText = "full text for highlight marking"; const string SearchText = "full, for;king"; var highlightMarker = new HighlightMarker(FullText, SearchText, highlightProcessor: null, searchTextDelimiters: new[] { ',', ';' }); // Act var highlightList = highlightMarker.ToList(); // Assert highlightList.Should().NotBeNull(); highlightList.Should().HaveCount(5); AssertHighlightIndex(highlightList.ElementAt(0), fromIndex: 0, length: 4, isHighlighted: true); AssertHighlightIndex(highlightList.ElementAt(1), fromIndex: 4, length: 5, isHighlighted: false); AssertHighlightIndex(highlightList.ElementAt(2), fromIndex: 9, length: 4, isHighlighted: true); AssertHighlightIndex(highlightList.ElementAt(3), fromIndex: 13, length: 14, isHighlighted: false); AssertHighlightIndex(highlightList.ElementAt(4), fromIndex: 27, length: 4, isHighlighted: true); }
public void ShouldSupportHighlightProcessor() { // Arrange const string FullText = "ääääää"; const string SearchText = "a"; var highlightMarkerWithoutProcessors = new HighlightMarker(FullText, SearchText); var highlightMarkerWithTestProcessor = new HighlightMarker(FullText, SearchText, highlightProcessor: new TestHighlightProcessor("ä", "a")); // Act var highlightListWithoutProcessing = highlightMarkerWithoutProcessors.ToList(); var highlightListWithProcessing = highlightMarkerWithTestProcessor.ToList(); // Assert highlightListWithoutProcessing.Should().NotBeNull(); highlightListWithoutProcessing.Should().HaveCount(1); AssertHighlightIndex(highlightListWithoutProcessing.ElementAt(0), fromIndex: 0, length: 6, isHighlighted: false); highlightListWithProcessing.Should().NotBeNull(); highlightListWithProcessing.Should().HaveCount(1); AssertHighlightIndex(highlightListWithProcessing.ElementAt(0), fromIndex: 0, length: 6, isHighlighted: true); }
public void ShouldMarkSingleLetter() { // Arrange const string FullText = "full text for highlight marking"; const string SearchText = "g"; var highlightMarker = new HighlightMarker(FullText, SearchText); // Act var highlightList = highlightMarker.ToList(); // Assert highlightList.Should().NotBeNull(); highlightList.Should().HaveCount(6); AssertHighlightIndex(highlightList.ElementAt(0), fromIndex: 0, length: 16, isHighlighted: false); AssertHighlightIndex(highlightList.ElementAt(1), fromIndex: 16, length: 1, isHighlighted: true); AssertHighlightIndex(highlightList.ElementAt(2), fromIndex: 17, length: 3, isHighlighted: false); AssertHighlightIndex(highlightList.ElementAt(3), fromIndex: 20, length: 1, isHighlighted: true); AssertHighlightIndex(highlightList.ElementAt(4), fromIndex: 21, length: 9, isHighlighted: false); AssertHighlightIndex(highlightList.ElementAt(5), fromIndex: 30, length: 1, isHighlighted: true); }