public void CreateForSelectionPoints_Block_ForwardsMultipleLines() { Create("big cat", "big dog"); var visualSpan = VisualSpan.CreateForSelectionPoints(VisualKind.Block, _textBuffer.GetPoint(1), _textBuffer.GetPointInLine(1, 3)); var blockSpan = new BlockSpan(_textBuffer.GetPoint(1), 2, 2); Assert.Equal(blockSpan, visualSpan.AsBlock().Item); }
public void CreateForSelection_Block_Empty() { Create("hello world"); var visualSpan = VisualSpan.CreateForSelection(_textView, VisualKind.Block); var blockSpan = new BlockSpan(_textBuffer.GetPoint(0), 0, 1); Assert.AreEqual(blockSpan, visualSpan.AsBlock().Item); }
public void CreateForSelectionPoints_Block_Backwards() { Create("big cat", "big dog"); var visualSpan = VisualSpan.CreateForSelectionPoints(VisualKind.Block, _textBuffer.GetPoint(2), _textBuffer.GetPoint(0)); var blockSpan = new BlockSpan(_textBuffer.GetPoint(0), 2, 1); Assert.Equal(blockSpan, visualSpan.AsBlock().Item); }
public void Empty() { Create("hello world"); var visualSpan = VisualSpan.CreateForSelection(_textView, VisualKind.Block, _vimBuffer.LocalSettings.TabStop); var blockSpan = new BlockSpan(_textBuffer.GetPoint(0), tabStop: _vimBuffer.LocalSettings.TabStop, spaces: 1, height: 1); Assert.Equal(blockSpan, visualSpan.AsBlock().BlockSpan); }
public void CreateForSelection_Block_Empty() { Create("hello world"); var visualSpan = VisualSpan.CreateForSelection(_textView, VisualKind.Block); var blockSpan = new BlockSpan(_textBuffer.GetPoint(0), 0, 1); Assert.Equal(blockSpan, visualSpan.AsBlock().Item); }
public void CreateForSelectionPoints_Block_BackwardsMultipleLines() { Create("big cat", "big dog"); var visualSpan = VisualSpan.CreateForSelectionPoints(VisualKind.Block, _textBuffer.GetPoint(2), _textBuffer.GetPointInLine(1, 1)); var blockSpan = new BlockSpan(_textBuffer.GetPoint(1), 1, 2); Assert.Equal(blockSpan, visualSpan.AsBlock().Item); }
public void Backwards() { Create("big cat", "big dog"); var visualSpan = VisualSpan.CreateForSelectionPoints(VisualKind.Block, _textBuffer.GetPoint(2), _textBuffer.GetPoint(0), _vimBuffer.LocalSettings.TabStop); var blockSpan = new BlockSpan(_textBuffer.GetPoint(0), _vimBuffer.LocalSettings.TabStop, 2, 1); Assert.Equal(blockSpan, visualSpan.AsBlock().Item); }
public void ForwardsMultipleLines() { Create("big cat", "big dog"); var visualSpan = VisualSpan.CreateForSelectionPoints(VisualKind.Block, _textBuffer.GetPoint(1), _textBuffer.GetPointInLine(1, 3), _vimBuffer.LocalSettings.TabStop); var blockSpan = new BlockSpan(_textBuffer.GetPoint(1), _vimBuffer.LocalSettings.TabStop, 2, 2); Assert.Equal(blockSpan, visualSpan.AsBlock().Item); }
public void CreateForSelectionPoints_Block_Empty() { Create("dog cat"); var point = _textBuffer.GetPoint(2); var visualSpan = VisualSpan.CreateForSelectionPoints(VisualKind.Block, point, point); var blockSpan = new BlockSpan(point, 0, 1); Assert.Equal(blockSpan, visualSpan.AsBlock().Item); }
public void PartialTab() { Create("trucker", "\tdog"); var blockSpan = new BlockSpan(_textBuffer.GetPoint(position: 2), tabStop: 4, spaces: 3, height: 2); Assert.Equal( new[] { "uck", " d" }, blockSpan.BlockOverlapColumnSpans.Select(x => x.GetText())); }
public void Empty() { Create("dog cat"); var point = _textBuffer.GetPoint(2); var visualSpan = VisualSpan.CreateForSelectionPoints(VisualKind.Block, point, point, _vimBuffer.LocalSettings.TabStop); var blockSpan = new BlockSpan(point, _vimBuffer.LocalSettings.TabStop, spaces: 1, height: 1); Assert.Equal(blockSpan, visualSpan.AsBlock().BlockSpan); }
public void CreateForSelectionPoints_Block_Empty() { Create("dog cat"); var point = _textBuffer.GetPoint(2); var visualSpan = VisualSpan.CreateForSelectionPoints(VisualKind.Block, point, point); var blockSpan = new BlockSpan(point, 0, 1); Assert.Equal(blockSpan, visualSpan.AsBlock().Item); }
protected override IBlockTag CreateTag( IBlockTag parentTag, ITextSnapshot snapshot, BlockSpan region) { return(new RoslynBlockTag( this.TextEditorFactoryService, this.ProjectionBufferFactoryService, this.EditorOptionsFactoryService, parentTag, snapshot, region)); }
/// <summary> /// Returns BlockSpan instance from specified data /// </summary> protected static BlockSpan CreateBlockSpan(int startLine, int startColumn, int endLine, int endColumn) { BlockSpan span = new BlockSpan(); span.StartLine = startLine; span.StartIndex = startColumn; span.EndLine = endLine; span.EndIndex = endColumn; return(span); }
internal static void AssertRegion(BlockSpan expected, BlockSpan actual) { Assert.Equal(expected.TextSpan.Start, actual.TextSpan.Start); Assert.Equal(expected.TextSpan.End, actual.TextSpan.End); Assert.Equal(expected.HintSpan.Start, actual.HintSpan.Start); Assert.Equal(expected.HintSpan.End, actual.HintSpan.End); Assert.Equal(expected.BannerText, actual.BannerText); Assert.Equal(expected.AutoCollapse, actual.AutoCollapse); Assert.Equal(expected.IsDefaultCollapsed, actual.IsDefaultCollapsed); }
protected void EnterBlock(BlockSpan blockSpan) { var visualSpan = VisualSpan.NewBlock(blockSpan); var visualSelection = VisualSelection.CreateForward(visualSpan); visualSelection.SelectAndMoveCaret(_textView); Assert.False(_context.IsEmpty); _context.RunAll(); Assert.True(_context.IsEmpty); _vimBuffer.SwitchMode(ModeKind.VisualBlock, ModeArgument.None); }
public void TestToStringWithoutHintSpan() { var span = TextSpan.FromBounds(0, 1); var bannerText = "Foo"; var autoCollapse = true; var outliningRegion = new BlockSpan(true, span, bannerText: bannerText, autoCollapse: autoCollapse); Assert.Equal("{Span=[0..1), BannerText=\"Foo\", AutoCollapse=True, IsDefaultCollapsed=False}", outliningRegion.ToString()); }
public RoslynOutliningRegionTag( ITextEditorFactoryService textEditorFactoryService, IProjectionBufferFactoryService projectionBufferFactoryService, IEditorOptionsFactoryService editorOptionsFactoryService, ITextSnapshot snapshot, BlockSpan blockSpan) { _state = new BlockTagState( textEditorFactoryService, projectionBufferFactoryService, editorOptionsFactoryService, snapshot, blockSpan); }
public RegionTag( AbstractStructureTaggerProvider <TRegionTag> provider, ITextSnapshot snapshot, BlockSpan outliningSpan) { _provider = provider; _subjectBuffer = snapshot.TextBuffer; BlockSpan = outliningSpan; _hintSpan = snapshot.CreateTrackingSpan(BlockSpan.HintSpan.ToSpan(), SpanTrackingMode.EdgeExclusive); }
private void EnterBlock(BlockSpan blockSpan) { var visualSpan = VisualSpan.NewBlock(blockSpan); var visualSelection = VisualSelection.CreateForVisualSpan(visualSpan); CommonUtil.SelectAndUpdateCaret(_textView, visualSelection); Assert.IsFalse(_context.IsEmpty); _context.RunAll(); Assert.IsTrue(_context.IsEmpty); _buffer.SwitchMode(ModeKind.VisualBlock, ModeArgument.None); }
public void ForwardSimple() { Create("cats", "dogs"); var visualSelection = VisualSelection.CreateForPoints( VisualKind.Block, _textBuffer.GetPointInLine(0, 1), _textBuffer.GetPointInLine(1, 3), tabStop: 4); var blockSpan = new BlockSpan(_textBuffer.GetPointInLine(0, 1), tabStop: 4, spaces: 3, height: 2); Assert.Equal(blockSpan, visualSelection.AsBlock().Item1); }
public void TestToStringWithoutHintSpan() { var span = TextSpan.FromBounds(0, 1); var bannerText = "Goo"; var autoCollapse = true; var outliningRegion = new BlockSpan( isCollapsible: true, textSpan: span, type: BlockTypes.Nonstructural, bannerText: bannerText, autoCollapse: autoCollapse); Assert.Equal("{Span=[0..1), BannerText=\"Goo\", AutoCollapse=True, IsDefaultCollapsed=False}", outliningRegion.ToString()); }
public void BackwardsCaretOnColumnZero() { Create("cat", "dog"); var visualSelection = VisualSelection.CreateForPoints( VisualKind.Block, _textBuffer.GetPointInLine(0, 1), _textBuffer.GetPointInLine(1, 0), tabStop: 4); var blockSpan = new BlockSpan(_textBuffer.GetPoint(0), tabStop: 4, spaces: 2, height: 2); Assert.Equal(blockSpan, visualSelection.AsBlock().Item1); }
public void EnsureUsingSpaces() { Create(4, "cat", "\tdog"); var visualSelection = VisualSelection.CreateForPoints( VisualKind.Block, _textBuffer.GetPointInLine(0, 2), _textBuffer.GetPointInLine(1, 1), tabStop: 4); var blockSpan = new BlockSpan(_textBuffer.GetPointInLine(0, 2), tabStop: 4, spaces: 3, height: 2); Assert.Equal(blockSpan, visualSelection.AsBlock().Item1); }
public RoslynRegionTag( AbstractStructureTaggerProvider <IBlockTag2> provider, IBlockTag2 parent, ITextSnapshot snapshot, BlockSpan outliningSpan) : base(provider, snapshot, outliningSpan) { Parent = parent; Level = parent == null ? 0 : parent.Level + 1; Span = outliningSpan.TextSpan.ToSnapshotSpan(snapshot); StatementSpan = outliningSpan.HintSpan.ToSnapshotSpan(snapshot); }
public RoslynOutliningRegionTag( ITextEditorFactoryService textEditorFactoryService, IProjectionBufferFactoryService projectionBufferFactoryService, IEditorOptionsFactoryService editorOptionsFactoryService, ITextSnapshot snapshot, BlockSpan outliningSpan) { _textEditorFactoryService = textEditorFactoryService; _projectionBufferFactoryService = projectionBufferFactoryService; _editorOptionsFactoryService = editorOptionsFactoryService; _subjectBuffer = snapshot.TextBuffer; BlockSpan = outliningSpan; _hintSpan = snapshot.CreateTrackingSpan(BlockSpan.HintSpan.ToSpan(), SpanTrackingMode.EdgeExclusive); }
public BlockTagState( ICocoaTextEditorFactoryService textEditorFactoryService, IProjectionBufferFactoryService projectionBufferFactoryService, IEditorOptionsFactoryService editorOptionsFactoryService, ITextSnapshot snapshot, BlockSpan blockSpan) { _textEditorFactoryService = textEditorFactoryService; _projectionBufferFactoryService = projectionBufferFactoryService; _editorOptionsFactoryService = editorOptionsFactoryService; _subjectBuffer = snapshot.TextBuffer; BlockSpan = blockSpan; _hintSpan = snapshot.CreateTrackingSpan(BlockSpan.HintSpan.ToSpan(), SpanTrackingMode.EdgeExclusive); }
public void CaretInTabAnchorAboveTab() { Create(4, "trucker", "\tcat"); var blockSpan = new BlockSpan(_textBuffer.GetPoint(1), tabStop: 4, spaces: 1, height: 2); var visualSpan = VisualSpan.NewBlock(blockSpan); visualSpan.Select(_textView, SearchPath.Forward); Assert.Equal( new[] { _textBuffer.GetLineSpan(0, 0, 4), _textBuffer.GetLineSpan(1, 0, 1) }, _textView.Selection.SelectedSpans); }
public void SimpleCaretPastTab2() { Create("trucker", "\tcat"); var blockSpan = new BlockSpan(_textBuffer.GetPoint(1), tabStop: 2, spaces: 3, height: 2); var visualSpan = VisualSpan.NewBlock(blockSpan); visualSpan.Select(_textView, SearchPath.Forward); Assert.Equal( new[] { _textBuffer.GetLineSpan(0, 1, 3), _textBuffer.GetLineSpan(1, 1, 2) }, _textView.Selection.SelectedSpans); }
/// <summary> /// For given BlockSpan located in specified file, its absolute position parameters are calculated /// </summary> protected static void CalculateAbsolutePosition(string path, BlockSpan span) { IVsTextLines view = VLDocumentViewsManager.GetTextLinesForFile(path, true); object o; view.CreateTextPoint(span.StartLine, span.StartIndex, out o); TextPoint tp = (TextPoint)o; span.AbsoluteCharOffset = tp.AbsoluteCharOffset + span.StartLine - 1; view.CreateTextPoint(span.EndLine, span.EndIndex, out o); TextPoint tp2 = (TextPoint)o; span.AbsoluteCharLength = tp2.AbsoluteCharOffset + span.EndLine - 1 - span.AbsoluteCharOffset; }
public void TestProperties() { var span = TextSpan.FromBounds(0, 1); var hintSpan = TextSpan.FromBounds(2, 3); var bannerText = "Foo"; var autoCollapse = true; var outliningRegion = new BlockSpan(true, span, hintSpan, bannerText: bannerText, autoCollapse: autoCollapse); Assert.Equal(span, outliningRegion.TextSpan); Assert.Equal(hintSpan, outliningRegion.HintSpan); Assert.Equal(bannerText, outliningRegion.BannerText); Assert.Equal(autoCollapse, outliningRegion.AutoCollapse); }
protected override IOutliningRegionTag CreateTag( IOutliningRegionTag parentTag, ITextSnapshot snapshot, BlockSpan blockSpan) { // Don't make outlining spans for non-collapsible block spans if (!blockSpan.IsCollapsible) { return(null); } return(new RoslynOutliningRegionTag( this.TextEditorFactoryService, this.ProjectionBufferFactoryService, this.EditorOptionsFactoryService, snapshot, blockSpan)); }
public void TestProperties() { var span = TextSpan.FromBounds(0, 1); var hintSpan = TextSpan.FromBounds(2, 3); var bannerText = "Goo"; var autoCollapse = true; var outliningRegion = new BlockSpan( isCollapsible: true, textSpan: span, hintSpan: hintSpan, type: BlockTypes.Nonstructural, bannerText: bannerText, autoCollapse: autoCollapse); Assert.Equal(span, outliningRegion.TextSpan); Assert.Equal(hintSpan, outliningRegion.HintSpan); Assert.Equal(bannerText, outliningRegion.BannerText); Assert.Equal(autoCollapse, outliningRegion.AutoCollapse); }
public RoslynBlockTag( ITextEditorFactoryService textEditorFactoryService, IProjectionBufferFactoryService projectionBufferFactoryService, IEditorOptionsFactoryService editorOptionsFactoryService, IBlockTag parent, ITextSnapshot snapshot, BlockSpan blockSpan) : base(textEditorFactoryService, projectionBufferFactoryService, editorOptionsFactoryService, snapshot, blockSpan) { Parent = parent; Level = parent == null ? 0 : parent.Level + 1; Span = blockSpan.TextSpan.ToSnapshotSpan(snapshot); StatementSpan = blockSpan.HintSpan.ToSnapshotSpan(snapshot); }
public void GetCommandStatusVisualBlockMode() { const int expectedLineCount = 2; const int expectedColumnCount = 3; var textBuffer = CreateTextBuffer("cat", "dog", "fish"); var span = new BlockSpan(textBuffer.GetPoint(0), 4, expectedColumnCount, expectedLineCount); var selection = new VisualSelection.Block(span, BlockCaretLocation.TopLeft); _vimBuffer.BufferedKeyInputsImpl = FSharpList <KeyInput> .Empty; _visualMode.SetupGet(x => x.VisualSelection).Returns(selection); _vimBuffer.ModeImpl = _visualMode.Object; _vimBuffer.ModeKindImpl = ModeKind.VisualBlock; var actual = CommandMarginUtil.GetShowCommandText(_vimBuffer); Assert.Equal($"{expectedLineCount}x{expectedColumnCount}", actual); }
public void Backwards() { Create("big cats", "big dogs"); _textView.MoveCaretTo(2); _vimBuffer.ProcessNotation("<C-Q>jh"); Assert.Equal(ModeKind.VisualBlock, _vimBuffer.ModeKind); var blockSpan = new BlockSpan(_textView.GetPoint(1), tabStop: _tabStop, spaces: 2, height: 2); Assert.Equal(blockSpan, _vimBuffer.GetSelectionBlockSpan()); }
private void EnterBlock(BlockSpan blockSpan) { var visualSpan = VisualSpan.NewBlock(blockSpan); var visualSelection = VisualSelection.CreateForVisualSpan(visualSpan); CommonUtil.SelectAndUpdateCaret(_textView, visualSelection); Assert.IsFalse(_context.IsEmpty); _context.RunAll(); Assert.IsTrue(_context.IsEmpty); _buffer.SwitchMode(ModeKind.VisualBlock, ModeArgument.None); }
public void SimpleCaretPastTab2() { Create("trucker", "\tcat"); var blockSpan = new BlockSpan(_textBuffer.GetPoint(1), tabStop: 2, spaces: 3, height: 2); var visualSpan = VisualSpan.NewBlock(blockSpan); visualSpan.Select(_textView, Path.Forward); Assert.Equal( new[] { _textBuffer.GetLineSpan(0, 1, 3), _textBuffer.GetLineSpan(1, 1, 2) }, _textView.Selection.SelectedSpans); }
public void PartialTab() { Create("trucker", "\tdog"); var blockSpan = new BlockSpan(_textBuffer.GetPoint(position: 2), tabStop: 4, spaces: 3, height: 2); Assert.Equal( new[] { "uck", " d" }, blockSpan.BlockOverlapSpans.Select(x => x.GetText())); }
public void EnsureUsingSpaces() { Create(4, "cat", "\tdog"); var visualSelection = VisualSelection.CreateForPoints( VisualKind.Block, _textBuffer.GetPointInLine(0, 2), _textBuffer.GetPointInLine(1, 1), tabStop: 4); var blockSpan = new BlockSpan(_textBuffer.GetPointInLine(0, 2), tabStop: 4, spaces: 3, height: 2); Assert.Equal(blockSpan, visualSelection.AsBlock().Item1); }
public void Select_Block_Backwards() { Create("big cats", "big dogs"); _textView.MoveCaretTo(2); _vimBuffer.ProcessNotation("<C-Q>jh"); Assert.AreEqual(ModeKind.VisualBlock, _vimBuffer.ModeKind); var blockSpan = new BlockSpan(_textView.GetPoint(1), 2, 2); Assert.AreEqual(blockSpan, _textView.GetSelectionBlockSpan()); }
public void EndPoint_MultiLine() { Create("cat", "dog", "fish"); var blockSpan = new BlockSpan(_textBuffer.GetPoint(0), 2, 2); Assert.AreEqual(_textBuffer.GetLine(1).Start.Add(2), blockSpan.End); }
public void Empty() { Create("dog cat"); var point = _textBuffer.GetPoint(2); var visualSpan = VisualSpan.CreateForSelectionPoints(VisualKind.Block, point, point, _vimBuffer.LocalSettings.TabStop); var blockSpan = new BlockSpan(point, _vimBuffer.LocalSettings.TabStop, spaces: 1, height: 1); Assert.Equal(blockSpan, visualSpan.AsBlock().Item); }
public void BackwardsMultipleLines() { Create("big cat", "big dog"); var visualSpan = VisualSpan.CreateForSelectionPoints(VisualKind.Block, _textBuffer.GetPoint(2), _textBuffer.GetPointInLine(1, 1), _vimBuffer.LocalSettings.TabStop); var blockSpan = new BlockSpan(_textBuffer.GetPoint(1), _vimBuffer.LocalSettings.TabStop, 1, 2); Assert.Equal(blockSpan, visualSpan.AsBlock().Item); }
public void Empty() { Create("hello world"); var visualSpan = VisualSpan.CreateForSelection(_textView, VisualKind.Block, _vimBuffer.LocalSettings.TabStop); var blockSpan = new BlockSpan(_textBuffer.GetPoint(0), tabStop: _vimBuffer.LocalSettings.TabStop, spaces: 1, height: 1); Assert.Equal(blockSpan, visualSpan.AsBlock().Item); }
public void CaretInTabAnchorAboveTab() { Create(4, "trucker", "\tcat"); var blockSpan = new BlockSpan(_textBuffer.GetPoint(1), tabStop: 4, spaces: 1, height: 2); var visualSpan = VisualSpan.NewBlock(blockSpan); visualSpan.Select(_textView, Path.Forward); Assert.Equal( new[] { _textBuffer.GetLineSpan(0, 0, 4), _textBuffer.GetLineSpan(1, 0, 1) }, _textView.Selection.SelectedSpans); }
public void InitialNonStartPoint() { Create("big cats", "big dogs", "big trees"); var point = _textBuffer.GetPointInLine(1, 3); _textView.MoveCaretTo(point); _vimBuffer.ProcessNotation("<C-Q>"); Assert.Equal(ModeKind.VisualBlock, _vimBuffer.ModeKind); var blockSpan = new BlockSpan(point, tabStop: _tabStop, spaces: 1, height: 1); Assert.Equal(blockSpan, _vimBuffer.GetSelectionBlockSpan()); }
public void InitialState() { Create("hello world"); _vimBuffer.ProcessNotation("<C-Q>"); Assert.Equal(ModeKind.VisualBlock, _vimBuffer.ModeKind); var blockSpan = new BlockSpan(_textBuffer.GetPoint(0), tabStop: _tabStop, spaces: 1, height: 1); Assert.Equal(blockSpan, _vimBuffer.GetSelectionBlockSpan()); }
public void Switch_CharacterToBlock() { Create("big dog", "big cat", "big tree", "big fish"); _textView.MoveCaretTo(1); _vimBuffer.Process("vjl"); Assert.AreEqual(ModeKind.VisualCharacter, _vimBuffer.ModeKind); _vimBuffer.Process(KeyInputUtil.CharWithControlToKeyInput('q')); Assert.AreEqual(ModeKind.VisualBlock, _vimBuffer.ModeKind); var tuple = _vimBuffer.VisualBlockMode.VisualSelection.AsBlock(); var blockSpan = new BlockSpan( _textBuffer.GetPoint(1), 2, 2); Assert.AreEqual(blockSpan, tuple.Item1); Assert.AreEqual(BlockCaretLocation.BottomRight, tuple.Item2); }
public void BackwardsCaretOnColumnZero() { Create("cat", "dog"); var visualSelection = VisualSelection.CreateForPoints( VisualKind.Block, _textBuffer.GetPointInLine(0, 1), _textBuffer.GetPointInLine(1, 0), tabStop: 4); var blockSpan = new BlockSpan(_textBuffer.GetPoint(0), tabStop: 4, spaces: 2, height: 2); Assert.Equal(blockSpan, visualSelection.AsBlock().Item1); }
public void Select_Block_InitialState() { Create("hello world"); _vimBuffer.ProcessNotation("<C-Q>"); Assert.AreEqual(ModeKind.VisualBlock, _vimBuffer.ModeKind); var blockSpan = new BlockSpan(_textBuffer.GetPoint(0), 1, 1); Assert.AreEqual(blockSpan, _textView.GetSelectionBlockSpan()); }
public void ForwardSimple() { Create("cats", "dogs"); var visualSelection = VisualSelection.CreateForPoints( VisualKind.Block, _textBuffer.GetPointInLine(0, 1), _textBuffer.GetPointInLine(1, 3), tabStop: 4); var blockSpan = new BlockSpan(_textBuffer.GetPointInLine(0, 1), tabStop: 4, spaces: 3, height: 2); Assert.Equal(blockSpan, visualSelection.AsBlock().Item1); }
public void InsideLine() { Create("cat dog"); var blockSpan = new BlockSpan(_textBuffer.GetPoint(1), tabStop: 4, spaces: 1, height: 1); Assert.Equal(1, blockSpan.ColumnSpaces); }
public void TabStart() { Create("\tcat dog"); var blockSpan = new BlockSpan(_textBuffer.GetPoint(1), tabStop: 4, spaces: 1, height: 1); Assert.Equal(4, blockSpan.ColumnSpaces); }
public void SimpleCaretPastTab() { Create("trucker", "\tcat"); var blockSpan = new BlockSpan(_textBuffer.GetPoint(1), tabStop: 2, spaces: 2, height: 2); var visualSpan = VisualSpan.NewBlock(blockSpan); visualSpan.Select(_textView, Path.Forward); // It may seem odd for the second span to start on column 1 since the tab is partially // included in the line. However Visual Studio has this behavior. It won't select a // character at the start / end of a selection unless it's completely included Assert.Equal( new[] { _textBuffer.GetLineSpan(0, 1, 2), _textBuffer.GetLineSpan(1, 1, 1) }, _textView.Selection.SelectedSpans); }
public void EndPoint_SingleLine() { Create("cat", "dog"); var blockSpan = new BlockSpan(_textBuffer.GetPoint(0), 2, 1); Assert.AreEqual(_textBuffer.GetLine(0).Start.Add(2), blockSpan.End); }
public void EndPartiallyThroughTab() { Create("cat", "\tdog"); var blockSpan = new BlockSpan(_textBuffer.GetPoint(0), tabStop: 4, spaces: 1, height: 2); Assert.Equal(_textBuffer.GetPointInLine(1, 1), blockSpan.End); }