private void ApplyBraceCompletionResult(BraceCompletionResult result) { _threadingContext.ThrowIfNotOnUIThread(); using var edit = SubjectBuffer.CreateEdit(); foreach (var change in result.TextChanges) { edit.Replace(change.Span.ToSpan(), change.NewText); } edit.ApplyAndLogExceptions(); try { Contract.ThrowIfFalse(SubjectBuffer.CurrentSnapshot[OpeningPoint.GetPosition(SubjectBuffer.CurrentSnapshot)] == OpeningBrace, "The opening point does not match the opening brace character"); Contract.ThrowIfFalse(SubjectBuffer.CurrentSnapshot[ClosingPoint.GetPosition(SubjectBuffer.CurrentSnapshot) - 1] == ClosingBrace, "The closing point does not match the closing brace character"); } catch (Exception e) when(FatalError.ReportAndCatch(e)) { return; } var caretLine = SubjectBuffer.CurrentSnapshot.GetLineFromLineNumber(result.CaretLocation.Line); TextView.TryMoveCaretToAndEnsureVisible(new VirtualSnapshotPoint(caretLine, result.CaretLocation.Character)); }
private BraceCompletionContext GetBraceCompletionContext(ParsedDocument document) { _threadingContext.ThrowIfNotOnUIThread(); var snapshot = SubjectBuffer.CurrentSnapshot; var closingSnapshotPoint = ClosingPoint.GetPosition(snapshot); var openingSnapshotPoint = OpeningPoint.GetPosition(snapshot); // The user is actively typing so the caret position should not be null. var caretPosition = this.GetCaretPosition().Value.Position; return(new BraceCompletionContext(document, openingSnapshotPoint, closingSnapshotPoint, caretPosition)); }
private BraceCompletionContext?GetBraceCompletionContext() { this.AssertIsForeground(); var snapshot = SubjectBuffer.CurrentSnapshot; var document = snapshot.GetOpenDocumentInCurrentContextWithChanges(); if (document == null) { return(null); } var closingSnapshotPoint = ClosingPoint.GetPosition(snapshot); var openingSnapshotPoint = OpeningPoint.GetPosition(snapshot); // The user is actively typing so the caret position should not be null. var caretPosition = this.GetCaretPosition().Value.Position; return(new BraceCompletionContext(document, openingSnapshotPoint, closingSnapshotPoint, caretPosition)); }