public void ShouldIdentifyPositionsAtClassScope()
        {
            CodeNavigator navigator = new CodeNavigator(snapshot);

            Assert.IsFalse(navigator.IsInClassScope(snapshot.GetLineFromLineNumber(1).End - 1));
            Assert.IsFalse(navigator.IsInClassScope(snapshot.GetLineFromLineNumber(2).End - 1));
            Assert.IsFalse(navigator.IsInClassScope(snapshot.GetLineFromLineNumber(3).End - 1));
            Assert.IsFalse(navigator.IsInClassScope(snapshot.GetLineFromLineNumber(4).Start));

            Assert.IsTrue(navigator.IsInClassScope(snapshot.GetLineFromLineNumber(4).End - 1));
            Assert.IsTrue(navigator.IsInClassScope(snapshot.GetLineFromLineNumber(5).End - 1));
            Assert.IsTrue(navigator.IsInClassScope(snapshot.GetLineFromLineNumber(6).End - 1));

            Assert.IsFalse(navigator.IsInClassScope(snapshot.GetLineFromLineNumber(7).End - 1));
            Assert.IsFalse(navigator.IsInClassScope(snapshot.GetLineFromLineNumber(8).End - 1));
            Assert.IsFalse(navigator.IsInClassScope(snapshot.GetLineFromLineNumber(9).End - 1));
            Assert.IsFalse(navigator.IsInClassScope(snapshot.GetLineFromLineNumber(10).End - 1));
            Assert.IsFalse(navigator.IsInClassScope(snapshot.GetLineFromLineNumber(11).End - 1));

            Assert.IsTrue(navigator.IsInClassScope(snapshot.GetLineFromLineNumber(12).End - 1));
            Assert.IsTrue(navigator.IsInClassScope(snapshot.GetLineFromLineNumber(13).Start));

            Assert.IsFalse(navigator.IsInClassScope(snapshot.GetLineFromLineNumber(13).End - 1));
            Assert.IsFalse(navigator.IsInClassScope(snapshot.GetLineFromLineNumber(14).End - 1));
            Assert.IsFalse(navigator.IsInClassScope(snapshot.GetLineFromLineNumber(15).Start));

            Assert.IsTrue(navigator.IsInClassScope(snapshot.GetLineFromLineNumber(15).End - 1));
            Assert.IsTrue(navigator.IsInClassScope(snapshot.GetLineFromLineNumber(16).End - 1));
            Assert.IsTrue(navigator.IsInClassScope(snapshot.GetLineFromLineNumber(17).End - 1));
        }
Beispiel #2
0
        public override CommandResult Invoke(Guid group, int id, object inputArg, ref object outputArg)
        {
            var viewPoint = CodeNavigator.FindCurrentItemDefinition(TextView, _textBuffer);

            if (viewPoint.HasValue)
            {
                TextView.Caret.MoveTo(new SnapshotPoint(TextView.TextBuffer.CurrentSnapshot, viewPoint.Value));
                TextView.Caret.EnsureVisible();
                return(CommandResult.Executed);
            }
            return(CommandResult.NotSupported);
        }
        public void ShouldNavigateDownThroughCodeIgnoringCommentsAndStrings()
        {
            int           p         = snapshot.GetLineFromLineNumber(17).End - 1;
            CodeNavigator navigator = new CodeNavigator(snapshot);

            List <int> positions = new List <int>();

            foreach (int c in navigator.DownFrom(p))
            {
                positions.Add(c);
            }
            Assert.AreEqual(2, positions.Count);
            VerifyCharAndLineAtPosition(positions[0], '}', 23);
            VerifyCharAndLineAtPosition(positions[1], '}', 24);
        }
Beispiel #4
0
        public override CommandResult Invoke(Guid group, int id, object inputArg, ref object outputArg)
        {
            string itemName;
            var    viewPoint = CodeNavigator.FindCurrentItemDefinition(TextView, _textBuffer, out itemName);

            if (viewPoint.HasValue)
            {
                TextView.Caret.MoveTo(new SnapshotPoint(TextView.TextBuffer.CurrentSnapshot, viewPoint.Value));
                TextView.Caret.EnsureVisible();
            }
            else
            {
                // Try View(item) in case this is internal function
                _objectViewer?.ViewObjectDetails(_session, REnvironments.GlobalEnv, itemName, itemName).DoNotWait();
            }
            return(CommandResult.Executed);
        }
        public void ShouldNavigateUpOneLevel()
        {
            int           p         = snapshot.GetLineFromLineNumber(3).End - 1;
            CodeNavigator navigator = new CodeNavigator(snapshot);

            Stack <int> positions = new Stack <int>();

            foreach (int c in navigator.UpFrom(p))
            {
                positions.Push(c);
            }

            Assert.AreEqual(2, positions.Count);

            Assert.AreEqual(0, positions.Pop());

            VerifyCharAndLineAtPosition(positions.Pop(), '{', 2);
        }
        public void ShouldNavigateDownThroughCodeIncludingStatementsInSameScope()
        {
            int           p         = snapshot.GetLineFromLineNumber(6).End - 1;
            CodeNavigator navigator = new CodeNavigator(snapshot);

            List <int> positions = new List <int>();

            foreach (int c in navigator.DownFrom(p))
            {
                positions.Add(c);
            }
            Assert.AreEqual(5, positions.Count);
            VerifyCharAndLineAtPosition(positions[0], ';', 9);
            VerifyCharAndLineAtPosition(positions[1], ';', 10);
            VerifyCharAndLineAtPosition(positions[2], ';', 11);
            VerifyCharAndLineAtPosition(positions[3], ';', 11);
            VerifyCharAndLineAtPosition(positions[4], '}', 12);
        }
        public void ShouldNavigateUpThroughCodeIgnoringCommentsAndStrings()
        {
            int           p         = snapshot.GetLineFromLineNumber(10).End - 1;
            CodeNavigator navigator = new CodeNavigator(snapshot);

            Stack <int> positions = new Stack <int>();

            foreach (int c in navigator.UpFrom(p))
            {
                positions.Push(c);
            }

            Assert.AreEqual(0, positions.Pop());

            VerifyCharAndLineAtPosition(positions.Pop(), '{', 2);
            VerifyCharAndLineAtPosition(positions.Pop(), '{', 4);
            VerifyCharAndLineAtPosition(positions.Pop(), ';', 5);
            VerifyCharAndLineAtPosition(positions.Pop(), '{', 7);
            VerifyCharAndLineAtPosition(positions.Pop(), ';', 9);
            VerifyCharAndLineAtPosition(positions.Pop(), ';', 10);
        }
        public void ShouldNavigateUpThroughCodeIgnoringCodeAtDeeperScope()
        {
            int           p         = snapshot.GetLineFromLineNumber(21).End - 1;
            CodeNavigator navigator = new CodeNavigator(snapshot);

            Stack <int> positions = new Stack <int>();

            foreach (int c in navigator.UpFrom(p))
            {
                positions.Push(c);
            }

            Assert.AreEqual(0, positions.Pop());
            VerifyCharAndLineAtPosition(positions.Pop(), '{', 2);
            VerifyCharAndLineAtPosition(positions.Pop(), '{', 15);
            VerifyCharAndLineAtPosition(positions.Pop(), ';', 16);
            VerifyCharAndLineAtPosition(positions.Pop(), '{', 18);
            VerifyCharAndLineAtPosition(positions.Pop(), '{', 19);
            VerifyCharAndLineAtPosition(positions.Pop(), '{', 20);
            VerifyCharAndLineAtPosition(positions.Pop(), ';', 21);
        }