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);
            }
        }
コード例 #2
0
        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;
            }
        }
コード例 #3
0
        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);
            }
        }