internal void CheckOverType(IBraceCompletionSession session, bool allowOverType = true) { var preClosingPoint = session.ClosingPoint.GetPoint(session.SubjectBuffer.CurrentSnapshot); Assert.Equal(session.ClosingBrace, preClosingPoint.Subtract(1).GetChar()); session.PreOverType(out var handled); if (!handled) { session.PostOverType(); } var postClosingPoint = session.ClosingPoint.GetPoint(session.SubjectBuffer.CurrentSnapshot); Assert.Equal(postClosingPoint.Subtract(1).GetChar(), session.ClosingBrace); var caret = session.TextView.GetCaretPoint(session.SubjectBuffer).Value; if (allowOverType) { Assert.Equal(postClosingPoint.Position, caret.Position); } else { Assert.True(caret.Position < postClosingPoint.Position); } }
public void PostTypeChar(char character) { // check for any waiting sessions if (_waitingSession != null) { // Verify the session is still valid before starting it // and inserting the closing brace. if (ValidateStart(_waitingSessionOpeningPoint, character)) { _stack.PushSession(_waitingSession); } _waitingSession = null; _waitingSessionOpeningPoint = null; } else if (_postSession != null) { _guardedOperations.CallExtensionPoint(() => { if (_postSession.ClosingBrace.Equals(character)) { _postSession.PostOverType(); } }); _postSession = null; } }
internal void CheckOverType(IBraceCompletionSession session, bool allowOverType = true) { var preClosingPoint = session.ClosingPoint.GetPoint(session.SubjectBuffer.CurrentSnapshot); Assert.Equal(preClosingPoint.Subtract(1).GetChar(), session.ClosingBrace); bool handled; session.PreOverType(out handled); if (!handled) { session.PostOverType(); } var postClosingPoint = session.ClosingPoint.GetPoint(session.SubjectBuffer.CurrentSnapshot); Assert.Equal(postClosingPoint.Subtract(1).GetChar(), session.ClosingBrace); var caret = session.TextView.GetCaretPoint(session.SubjectBuffer).Value; if (allowOverType) { Assert.Equal(postClosingPoint.Position, caret.Position); } else { Assert.True(caret.Position < postClosingPoint.Position); } }