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)); }
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); }
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); }