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);
		}
Ejemplo n.º 2
0
        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));
        }
Ejemplo n.º 3
0
		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 ();
			}
		}