From 4a0e10fb2c584ae5cbd95041373944663fa8755d Mon Sep 17 00:00:00 2001 From: watiko Date: Sun, 7 Feb 2016 09:58:52 +0900 Subject: vim-patch:7.4.734 Problem: ml_get error when using "p" in a Visual selection in the last line. Solution: Change the behavior at the last line. (Yukihiro Nakadaira) https://github.com/vim/vim/commit/d009e8682686a56f7565e6e093a42cd0596e121f --- .../legacy/094_visual_mode_operators_spec.lua | 157 +++++++++++++++++++++ 1 file changed, 157 insertions(+) (limited to 'test') diff --git a/test/functional/legacy/094_visual_mode_operators_spec.lua b/test/functional/legacy/094_visual_mode_operators_spec.lua index c4aebe4ecc..04302334ae 100644 --- a/test/functional/legacy/094_visual_mode_operators_spec.lua +++ b/test/functional/legacy/094_visual_mode_operators_spec.lua @@ -24,6 +24,20 @@ local function source_user_functions() ]]) end +local function put_abc() + source([[ + $put ='a' + $put ='b' + $put ='c']]) +end + +local function define_select_mode_maps() + source([[ + snoremap End> + snoremap Down> + snoremap Del> ]]) +end + describe('Visual mode and operator', function() before_each(function() clear() @@ -150,4 +164,147 @@ describe('Visual mode and operator', function() ok ok]]) end) + + describe('characterwise visual mode:', function() + it('replace last line', function() + source([[ + $put ='a' + let @" = 'x']]) + feed('v$p') + + expect([[ + + x]]) + end) + + it('delete middle line', function() + put_abc() + feed('kkv$d') + + expect([[ + + b + c]]) + end) + + it('delete middle two line', function() + put_abc() + feed('kkvj$d') + + expect([[ + + c]]) + end) + + it('delete last line', function() + put_abc() + feed('v$d') + + expect([[ + + a + b + ]]) + end) + + it('delete last two line', function() + put_abc() + feed('kvj$d') + + expect([[ + + a + ]]) + end) + end) + + describe('characterwise select mode:', function() + before_each(function() + define_select_mode_maps() + end) + + it('delete middle line', function() + put_abc() + feed('kkgh') + + expect([[ + + b + c]]) + end) + + it('delete middle two line', function() + put_abc() + feed('kkgh') + + expect([[ + + c]]) + end) + + it('delete last line', function() + put_abc() + feed('gh') + + expect([[ + + a + b + ]]) + end) + + it('delete last two line', function() + put_abc() + feed('kgh') + + expect([[ + + a + ]]) + end) + end) + + describe('linewise select mode:', function() + before_each(function() + define_select_mode_maps() + end) + + it('delete middle line', function() + put_abc() + feed(' kkgH ') + + expect([[ + + b + c]]) + end) + + it('delete middle two line', function() + put_abc() + feed('kkgH') + + expect([[ + + c]]) + end) + + it('delete last line', function() + put_abc() + feed('gH') + + expect([[ + + a + b]]) + end) + + it('delete last two line', function() + put_abc() + feed('kgH') + + expect([[ + + a]]) + end) + end) end) -- cgit