예제 #1
0
 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);
 }
예제 #2
0
 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);
 }
예제 #3
0
 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);
 }
예제 #4
0
                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);
                }
예제 #5
0
        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);
        }
예제 #6
0
        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);
        }
예제 #7
0
                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);
                }
예제 #8
0
                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);
                }
예제 #9
0
 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);
 }
예제 #10
0
            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()));
            }
예제 #11
0
                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);
                }
예제 #12
0
        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));
 }
예제 #14
0
        /// <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);
        }
예제 #15
0
 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);
 }
예제 #16
0
 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);
 }
예제 #17
0
        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());
        }
예제 #18
0
 public RoslynOutliningRegionTag(
     ITextEditorFactoryService textEditorFactoryService,
     IProjectionBufferFactoryService projectionBufferFactoryService,
     IEditorOptionsFactoryService editorOptionsFactoryService,
     ITextSnapshot snapshot,
     BlockSpan blockSpan)
 {
     _state = new BlockTagState(
         textEditorFactoryService, projectionBufferFactoryService,
         editorOptionsFactoryService, snapshot, blockSpan);
 }
예제 #19
0
            public RegionTag(
                AbstractStructureTaggerProvider <TRegionTag> provider,
                ITextSnapshot snapshot,
                BlockSpan outliningSpan)
            {
                _provider      = provider;
                _subjectBuffer = snapshot.TextBuffer;
                BlockSpan      = outliningSpan;

                _hintSpan = snapshot.CreateTrackingSpan(BlockSpan.HintSpan.ToSpan(), SpanTrackingMode.EdgeExclusive);
            }
예제 #20
0
        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);
        }
예제 #21
0
                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);
                }
예제 #22
0
        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());
        }
예제 #23
0
                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);
                }
예제 #24
0
                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);
 }
예제 #26
0
        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);
        }
예제 #27
0
        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);
        }
예제 #28
0
                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);
                }
예제 #29
0
                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);
                }
예제 #30
0
        /// <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;
        }
예제 #31
0
        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));
        }
예제 #33
0
        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);
 }
예제 #35
0
        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);
        }
예제 #36
0
 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());
 }
예제 #37
0
 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);
 }
예제 #38
0
 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);
 }
예제 #39
0
파일: BlockSpanTest.cs 프로젝트: Yzzl/VsVim
 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()));
 }
예제 #40
0
 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);
 }
예제 #41
0
 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());
 }
예제 #42
0
 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);
 }
예제 #43
0
 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);
 }
예제 #44
0
 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);
 }
예제 #45
0
 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);
 }
예제 #46
0
 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);
 }
예제 #47
0
 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());
 }
예제 #48
0
 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());
 }
예제 #49
0
        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);
        }
예제 #50
0
 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);
 }
예제 #51
0
 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());
 }
예제 #52
0
 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);
 }
예제 #53
0
 public void InsideLine()
 {
     Create("cat dog");
     var blockSpan = new BlockSpan(_textBuffer.GetPoint(1), tabStop: 4, spaces: 1, height: 1);
     Assert.Equal(1, blockSpan.ColumnSpaces);
 }
예제 #54
0
 public void TabStart()
 {
     Create("\tcat dog");
     var blockSpan = new BlockSpan(_textBuffer.GetPoint(1), tabStop: 4, spaces: 1, height: 1);
     Assert.Equal(4, blockSpan.ColumnSpaces);
 }
예제 #55
0
                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);
                }
예제 #56
0
 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);
 }
예제 #57
0
 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);
 }