public override Task<BraceMatchingResult?> GetMatchingBracesAsync (IReadonlyTextDocument editor, DocumentContext context, int offset, CancellationToken cancellationToken) { BraceMatchingResult? result = null; var matching = SimpleBracketMatcher.GetMatchingBracketOffset (editor, offset, cancellationToken); if (matching >= 0) { int start = Math.Min (offset, matching); int end = Math.Max (offset, matching); result = new BraceMatchingResult (new TextSegment (start, 1), new TextSegment (end, 1), offset == start); } return Task.FromResult (result); }
public override Task <BraceMatchingResult?> GetMatchingBracesAsync(IReadonlyTextDocument editor, DocumentContext context, int offset, CancellationToken cancellationToken) { BraceMatchingResult?result = null; var matching = SimpleBracketMatcher.GetMatchingBracketOffset(editor, offset, cancellationToken); if (matching >= 0) { int start = Math.Min(offset, matching); int end = Math.Max(offset, matching); result = new BraceMatchingResult(new TextSegment(start, 1), new TextSegment(end, 1), offset == start); } return(Task.FromResult(result)); }
void ITextEditorImpl.UpdateBraceMatchingResult (BraceMatchingResult? result) { var oldOffset = widget.TextEditor.TextViewMargin.HighlightBracketOffset; if (result.HasValue) { if (result.Value.IsCaretInLeft) { widget.TextEditor.TextViewMargin.HighlightBracketOffset = result.Value.RightSegment.Offset; } else { widget.TextEditor.TextViewMargin.HighlightBracketOffset = result.Value.LeftSegment.Offset; } } else { widget.TextEditor.TextViewMargin.HighlightBracketOffset = -1; } if (oldOffset >= 0) { widget.Document.CommitLineUpdate (widget.TextEditor.OffsetToLineNumber (oldOffset)); } if (widget.TextEditor.TextViewMargin.HighlightBracketOffset >= 0) { widget.Document.CommitLineUpdate (widget.TextEditor.OffsetToLineNumber (widget.TextEditor.TextViewMargin.HighlightBracketOffset)); } }
void ITextEditorImpl.UpdateBraceMatchingResult (BraceMatchingResult? result) { if (result.HasValue) { if (bracketMarkers.Count > 0 && result.Value.LeftSegment.Offset == bracketMarkers [0].Offset) return; ClearBracketMarkers (); bracketMarkers.Add (new BracketMatcherTextMarker (result.Value.LeftSegment.Offset, result.Value.LeftSegment.Length)); bracketMarkers.Add (new BracketMatcherTextMarker (result.Value.RightSegment.Offset, result.Value.RightSegment.Length)); bracketMarkers.ForEach (marker => widget.TextEditor.Document.AddMarker (marker)); } else { ClearBracketMarkers (); } }