aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorwatiko <service@mail.watiko.net>2016-02-07 09:58:52 +0900
committerwatiko <service@mail.watiko.net>2016-02-11 15:13:30 +0900
commit4a0e10fb2c584ae5cbd95041373944663fa8755d (patch)
tree9fc10619cff40528c198f7baf35473f86f142205 /test
parent84281bf675f77f417d26a68611406ef43fd82f7f (diff)
downloadrneovim-4a0e10fb2c584ae5cbd95041373944663fa8755d.tar.gz
rneovim-4a0e10fb2c584ae5cbd95041373944663fa8755d.tar.bz2
rneovim-4a0e10fb2c584ae5cbd95041373944663fa8755d.zip
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
Diffstat (limited to 'test')
-rw-r--r--test/functional/legacy/094_visual_mode_operators_spec.lua157
1 files changed, 157 insertions, 0 deletions
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 <lt>End> <End>
+ snoremap <lt>Down> <Down>
+ snoremap <lt>Del> <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<End><Del>')
+
+ expect([[
+
+ b
+ c]])
+ end)
+
+ it('delete middle two line', function()
+ put_abc()
+ feed('kkgh<Down><End><Del>')
+
+ expect([[
+
+ c]])
+ end)
+
+ it('delete last line', function()
+ put_abc()
+ feed('gh<End><Del>')
+
+ expect([[
+
+ a
+ b
+ ]])
+ end)
+
+ it('delete last two line', function()
+ put_abc()
+ feed('kgh<Down><End><Del>')
+
+ 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<Del> ')
+
+ expect([[
+
+ b
+ c]])
+ end)
+
+ it('delete middle two line', function()
+ put_abc()
+ feed('kkgH<Down><Del>')
+
+ expect([[
+
+ c]])
+ end)
+
+ it('delete last line', function()
+ put_abc()
+ feed('gH<Del>')
+
+ expect([[
+
+ a
+ b]])
+ end)
+
+ it('delete last two line', function()
+ put_abc()
+ feed('kgH<Down><Del>')
+
+ expect([[
+
+ a]])
+ end)
+ end)
end)