123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936 |
- local helpers = require('test.functional.helpers')(after_each)
- local Screen = require('test.functional.ui.screen')
- local thelpers = require('test.functional.terminal.helpers')
- local feed, clear, nvim = helpers.feed, helpers.clear, helpers.nvim
- local testprg, command = helpers.testprg, helpers.command
- local nvim_prog = helpers.nvim_prog
- local eq, eval = helpers.eq, helpers.eval
- local matches = helpers.matches
- local feed_command = helpers.feed_command
- local hide_cursor = thelpers.hide_cursor
- local show_cursor = thelpers.show_cursor
- describe(':terminal cursor', function()
- local screen
- before_each(function()
- clear()
- screen = thelpers.screen_setup()
- end)
- it('moves the screen cursor when focused', function()
- thelpers.feed_data('testing cursor')
- screen:expect([[
- tty ready |
- testing cursor{1: } |
- |
- |
- |
- |
- {3:-- TERMINAL --} |
- ]])
- end)
- it('is highlighted when not focused', function()
- feed('<c-\\><c-n>')
- screen:expect([[
- tty ready |
- {2:^ } |
- |
- |
- |
- |
- |
- ]])
- end)
- describe('with number column', function()
- before_each(function()
- feed('<c-\\><c-n>:set number<cr>')
- end)
- it('is positioned correctly when unfocused', function()
- screen:expect([[
- {7: 1 }tty ready |
- {7: 2 }^rows: 6, cols: 46 |
- {7: 3 }{2: } |
- {7: 4 } |
- {7: 5 } |
- {7: 6 } |
- :set number |
- ]])
- end)
- it('is positioned correctly when focused', function()
- screen:expect([[
- {7: 1 }tty ready |
- {7: 2 }^rows: 6, cols: 46 |
- {7: 3 }{2: } |
- {7: 4 } |
- {7: 5 } |
- {7: 6 } |
- :set number |
- ]])
- feed('i')
- helpers.poke_eventloop()
- screen:expect([[
- {7: 1 }tty ready |
- {7: 2 }rows: 6, cols: 46 |
- {7: 3 }{1: } |
- {7: 4 } |
- {7: 5 } |
- {7: 6 } |
- {3:-- TERMINAL --} |
- ]])
- end)
- end)
- describe('when invisible', function()
- it('is not highlighted and is detached from screen cursor', function()
- if helpers.pending_win32(pending) then return end
- hide_cursor()
- screen:expect([[
- tty ready |
- |
- |
- |
- |
- |
- {3:-- TERMINAL --} |
- ]])
- show_cursor()
- screen:expect([[
- tty ready |
- {1: } |
- |
- |
- |
- |
- {3:-- TERMINAL --} |
- ]])
- -- same for when the terminal is unfocused
- feed('<c-\\><c-n>')
- hide_cursor()
- screen:expect([[
- tty ready |
- ^ |
- |
- |
- |
- |
- |
- ]])
- show_cursor()
- screen:expect([[
- tty ready |
- {2:^ } |
- |
- |
- |
- |
- |
- ]])
- end)
- end)
- end)
- describe('cursor with customized highlighting', function()
- local screen
- before_each(function()
- clear()
- nvim('command', 'highlight TermCursor ctermfg=45 ctermbg=46 cterm=NONE')
- nvim('command', 'highlight TermCursorNC ctermfg=55 ctermbg=56 cterm=NONE')
- screen = Screen.new(50, 7)
- screen:set_default_attr_ids({
- [1] = {foreground = 45, background = 46},
- [2] = {foreground = 55, background = 56},
- [3] = {bold = true},
- })
- screen:attach({rgb=false})
- command('call termopen(["'..testprg('tty-test')..'"])')
- feed_command('startinsert')
- end)
- it('overrides the default highlighting', function()
- screen:expect([[
- tty ready |
- {1: } |
- |
- |
- |
- |
- {3:-- TERMINAL --} |
- ]])
- feed('<c-\\><c-n>')
- screen:expect([[
- tty ready |
- {2:^ } |
- |
- |
- |
- |
- |
- ]])
- end)
- end)
- describe('buffer cursor position is correct in terminal without number column', function()
- local screen
- local function setup_ex_register(str)
- screen = thelpers.screen_setup(0, '["'..nvim_prog
- ..[[", "-u", "NONE", "-i", "NONE", "-E", "--cmd", "let @r = ']]..str..[['", ]]
- -- <Left> and <Right> don't always work
- ..[["--cmd", "cnoremap <C-X> <Left>", "--cmd", "cnoremap <C-O> <Right>"]]..']', 70)
- screen:expect([[
- |
- |
- |
- |
- Entering Ex mode. Type "visual" to go to Normal mode. |
- :{1: } |
- {3:-- TERMINAL --} |
- ]])
- end
- before_each(clear)
- describe('in a line with no multibyte characters or trailing spaces,', function()
- before_each(function()
- setup_ex_register('aaaaaaaa')
- end)
- it('at the end', function()
- feed('<C-R>r')
- screen:expect([[
- |
- |
- |
- |
- Entering Ex mode. Type "visual" to go to Normal mode. |
- :aaaaaaaa{1: } |
- {3:-- TERMINAL --} |
- ]])
- eq({6, 9}, eval('nvim_win_get_cursor(0)'))
- feed([[<C-\><C-N>]])
- screen:expect([[
- |
- |
- |
- |
- Entering Ex mode. Type "visual" to go to Normal mode. |
- :aaaaaaa^a{2: } |
- |
- ]])
- eq({6, 8}, eval('nvim_win_get_cursor(0)'))
- end)
- it('near the end', function()
- feed('<C-R>r<C-X><C-X>')
- screen:expect([[
- |
- |
- |
- |
- Entering Ex mode. Type "visual" to go to Normal mode. |
- :aaaaaa{1:a}a |
- {3:-- TERMINAL --} |
- ]])
- eq({6, 7}, eval('nvim_win_get_cursor(0)'))
- feed([[<C-\><C-N>]])
- screen:expect([[
- |
- |
- |
- |
- Entering Ex mode. Type "visual" to go to Normal mode. |
- :aaaaa^a{2:a}a |
- |
- ]])
- eq({6, 6}, eval('nvim_win_get_cursor(0)'))
- end)
- it('near the start', function()
- feed('<C-R>r<C-B><C-O>')
- screen:expect([[
- |
- |
- |
- |
- Entering Ex mode. Type "visual" to go to Normal mode. |
- :a{1:a}aaaaaa |
- {3:-- TERMINAL --} |
- ]])
- eq({6, 2}, eval('nvim_win_get_cursor(0)'))
- feed([[<C-\><C-N>]])
- screen:expect([[
- |
- |
- |
- |
- Entering Ex mode. Type "visual" to go to Normal mode. |
- :^a{2:a}aaaaaa |
- |
- ]])
- eq({6, 1}, eval('nvim_win_get_cursor(0)'))
- end)
- end)
- describe('in a line with single-cell multibyte characters and no trailing spaces,', function()
- before_each(function()
- setup_ex_register('µµµµµµµµ')
- end)
- it('at the end', function()
- feed('<C-R>r')
- screen:expect([[
- |
- |
- |
- |
- Entering Ex mode. Type "visual" to go to Normal mode. |
- :µµµµµµµµ{1: } |
- {3:-- TERMINAL --} |
- ]])
- eq({6, 17}, eval('nvim_win_get_cursor(0)'))
- feed([[<C-\><C-N>]])
- screen:expect([[
- |
- |
- |
- |
- Entering Ex mode. Type "visual" to go to Normal mode. |
- :µµµµµµµ^µ{2: } |
- |
- ]])
- eq({6, 15}, eval('nvim_win_get_cursor(0)'))
- end)
- it('near the end', function()
- feed('<C-R>r<C-X><C-X>')
- screen:expect([[
- |
- |
- |
- |
- Entering Ex mode. Type "visual" to go to Normal mode. |
- :µµµµµµ{1:µ}µ |
- {3:-- TERMINAL --} |
- ]])
- eq({6, 13}, eval('nvim_win_get_cursor(0)'))
- feed([[<C-\><C-N>]])
- screen:expect([[
- |
- |
- |
- |
- Entering Ex mode. Type "visual" to go to Normal mode. |
- :µµµµµ^µ{2:µ}µ |
- |
- ]])
- eq({6, 11}, eval('nvim_win_get_cursor(0)'))
- end)
- it('near the start', function()
- feed('<C-R>r<C-B><C-O>')
- screen:expect([[
- |
- |
- |
- |
- Entering Ex mode. Type "visual" to go to Normal mode. |
- :µ{1:µ}µµµµµµ |
- {3:-- TERMINAL --} |
- ]])
- eq({6, 3}, eval('nvim_win_get_cursor(0)'))
- feed([[<C-\><C-N>]])
- screen:expect([[
- |
- |
- |
- |
- Entering Ex mode. Type "visual" to go to Normal mode. |
- :^µ{2:µ}µµµµµµ |
- |
- ]])
- eq({6, 1}, eval('nvim_win_get_cursor(0)'))
- end)
- end)
- describe('in a line with single-cell composed multibyte characters and no trailing spaces,', function()
- if helpers.pending_win32(pending) then return end -- These tests fail on Windows. Encoding problem?
- before_each(function()
- setup_ex_register('µ̳µ̳µ̳µ̳µ̳µ̳µ̳µ̳')
- end)
- it('at the end', function()
- feed('<C-R>r')
- screen:expect([[
- |
- |
- |
- |
- Entering Ex mode. Type "visual" to go to Normal mode. |
- :µ̳µ̳µ̳µ̳µ̳µ̳µ̳µ̳{1: } |
- {3:-- TERMINAL --} |
- ]])
- eq({6, 33}, eval('nvim_win_get_cursor(0)'))
- feed([[<C-\><C-N>]])
- screen:expect([[
- |
- |
- |
- |
- Entering Ex mode. Type "visual" to go to Normal mode. |
- :µ̳µ̳µ̳µ̳µ̳µ̳µ̳^µ̳{2: } |
- |
- ]])
- eq({6, 29}, eval('nvim_win_get_cursor(0)'))
- end)
- it('near the end', function()
- feed('<C-R>r<C-X><C-X>')
- screen:expect([[
- |
- |
- |
- |
- Entering Ex mode. Type "visual" to go to Normal mode. |
- :µ̳µ̳µ̳µ̳µ̳µ̳{1:µ̳}µ̳ |
- {3:-- TERMINAL --} |
- ]])
- eq({6, 25}, eval('nvim_win_get_cursor(0)'))
- feed([[<C-\><C-N>]])
- screen:expect([[
- |
- |
- |
- |
- Entering Ex mode. Type "visual" to go to Normal mode. |
- :µ̳µ̳µ̳µ̳µ̳^µ̳{2:µ̳}µ̳ |
- |
- ]])
- eq({6, 21}, eval('nvim_win_get_cursor(0)'))
- end)
- it('near the start', function()
- feed('<C-R>r<C-B><C-O>')
- screen:expect([[
- |
- |
- |
- |
- Entering Ex mode. Type "visual" to go to Normal mode. |
- :µ̳{1:µ̳}µ̳µ̳µ̳µ̳µ̳µ̳ |
- {3:-- TERMINAL --} |
- ]])
- eq({6, 5}, eval('nvim_win_get_cursor(0)'))
- feed([[<C-\><C-N>]])
- screen:expect([[
- |
- |
- |
- |
- Entering Ex mode. Type "visual" to go to Normal mode. |
- :^µ̳{2:µ̳}µ̳µ̳µ̳µ̳µ̳µ̳ |
- |
- ]])
- eq({6, 1}, eval('nvim_win_get_cursor(0)'))
- end)
- end)
- describe('in a line with double-cell multibyte characters and no trailing spaces,', function()
- if helpers.pending_win32(pending) then return end -- These tests fail on Windows. Encoding problem?
- before_each(function()
- setup_ex_register('哦哦哦哦哦哦哦哦')
- end)
- it('at the end', function()
- feed('<C-R>r')
- screen:expect([[
- |
- |
- |
- |
- Entering Ex mode. Type "visual" to go to Normal mode. |
- :哦哦哦哦哦哦哦哦{1: } |
- {3:-- TERMINAL --} |
- ]])
- eq({6, 25}, eval('nvim_win_get_cursor(0)'))
- feed([[<C-\><C-N>]])
- screen:expect([[
- |
- |
- |
- |
- Entering Ex mode. Type "visual" to go to Normal mode. |
- :哦哦哦哦哦哦哦^哦{2: } |
- |
- ]])
- eq({6, 22}, eval('nvim_win_get_cursor(0)'))
- end)
- it('near the end', function()
- feed('<C-R>r<C-X><C-X>')
- screen:expect([[
- |
- |
- |
- |
- Entering Ex mode. Type "visual" to go to Normal mode. |
- :哦哦哦哦哦哦{1:哦}哦 |
- {3:-- TERMINAL --} |
- ]])
- eq({6, 19}, eval('nvim_win_get_cursor(0)'))
- feed([[<C-\><C-N>]])
- screen:expect([[
- |
- |
- |
- |
- Entering Ex mode. Type "visual" to go to Normal mode. |
- :哦哦哦哦哦^哦{2:哦}哦 |
- |
- ]])
- eq({6, 16}, eval('nvim_win_get_cursor(0)'))
- end)
- it('near the start', function()
- feed('<C-R>r<C-B><C-O>')
- screen:expect([[
- |
- |
- |
- |
- Entering Ex mode. Type "visual" to go to Normal mode. |
- :哦{1:哦}哦哦哦哦哦哦 |
- {3:-- TERMINAL --} |
- ]])
- eq({6, 4}, eval('nvim_win_get_cursor(0)'))
- feed([[<C-\><C-N>]])
- screen:expect([[
- |
- |
- |
- |
- Entering Ex mode. Type "visual" to go to Normal mode. |
- :^哦{2:哦}哦哦哦哦哦哦 |
- |
- ]])
- eq({6, 1}, eval('nvim_win_get_cursor(0)'))
- end)
- end)
- it('at the end of a line with trailing spaces #16234', function()
- setup_ex_register('aaaaaaaa ')
- feed('<C-R>r')
- screen:expect([[
- |
- |
- |
- |
- Entering Ex mode. Type "visual" to go to Normal mode. |
- :aaaaaaaa {1: } |
- {3:-- TERMINAL --} |
- ]])
- matches('^:aaaaaaaa [ ]*$', eval('nvim_get_current_line()'))
- eq({6, 13}, eval('nvim_win_get_cursor(0)'))
- feed([[<C-\><C-N>]])
- screen:expect([[
- |
- |
- |
- |
- Entering Ex mode. Type "visual" to go to Normal mode. |
- :aaaaaaaa ^ {2: } |
- |
- ]])
- eq({6, 12}, eval('nvim_win_get_cursor(0)'))
- end)
- end)
- describe('buffer cursor position is correct in terminal with number column', function()
- local screen
- local function setup_ex_register(str)
- screen = thelpers.screen_setup(0, '["'..nvim_prog
- ..[[", "-u", "NONE", "-i", "NONE", "-E", "--cmd", "let @r = ']]..str..[['", ]]
- -- <Left> and <Right> don't always work
- ..[["--cmd", "cnoremap <C-X> <Left>", "--cmd", "cnoremap <C-O> <Right>"]]..']', 70)
- screen:expect([[
- {7: 1 } |
- {7: 2 } |
- {7: 3 } |
- {7: 4 } |
- {7: 5 }Entering Ex mode. Type "visual" to go to Normal mode. |
- {7: 6 }:{1: } |
- {3:-- TERMINAL --} |
- ]])
- end
- before_each(function()
- clear()
- command('set number')
- end)
- describe('in a line with no multibyte characters or trailing spaces,', function()
- before_each(function()
- setup_ex_register('aaaaaaaa')
- end)
- it('at the end', function()
- feed('<C-R>r')
- screen:expect([[
- {7: 1 } |
- {7: 2 } |
- {7: 3 } |
- {7: 4 } |
- {7: 5 }Entering Ex mode. Type "visual" to go to Normal mode. |
- {7: 6 }:aaaaaaaa{1: } |
- {3:-- TERMINAL --} |
- ]])
- eq({6, 9}, eval('nvim_win_get_cursor(0)'))
- feed([[<C-\><C-N>]])
- screen:expect([[
- {7: 1 } |
- {7: 2 } |
- {7: 3 } |
- {7: 4 } |
- {7: 5 }Entering Ex mode. Type "visual" to go to Normal mode. |
- {7: 6 }:aaaaaaa^a{2: } |
- |
- ]])
- eq({6, 8}, eval('nvim_win_get_cursor(0)'))
- end)
- it('near the end', function()
- feed('<C-R>r<C-X><C-X>')
- screen:expect([[
- {7: 1 } |
- {7: 2 } |
- {7: 3 } |
- {7: 4 } |
- {7: 5 }Entering Ex mode. Type "visual" to go to Normal mode. |
- {7: 6 }:aaaaaa{1:a}a |
- {3:-- TERMINAL --} |
- ]])
- eq({6, 7}, eval('nvim_win_get_cursor(0)'))
- feed([[<C-\><C-N>]])
- screen:expect([[
- {7: 1 } |
- {7: 2 } |
- {7: 3 } |
- {7: 4 } |
- {7: 5 }Entering Ex mode. Type "visual" to go to Normal mode. |
- {7: 6 }:aaaaa^a{2:a}a |
- |
- ]])
- eq({6, 6}, eval('nvim_win_get_cursor(0)'))
- end)
- it('near the start', function()
- feed('<C-R>r<C-B><C-O>')
- screen:expect([[
- {7: 1 } |
- {7: 2 } |
- {7: 3 } |
- {7: 4 } |
- {7: 5 }Entering Ex mode. Type "visual" to go to Normal mode. |
- {7: 6 }:a{1:a}aaaaaa |
- {3:-- TERMINAL --} |
- ]])
- eq({6, 2}, eval('nvim_win_get_cursor(0)'))
- feed([[<C-\><C-N>]])
- screen:expect([[
- {7: 1 } |
- {7: 2 } |
- {7: 3 } |
- {7: 4 } |
- {7: 5 }Entering Ex mode. Type "visual" to go to Normal mode. |
- {7: 6 }:^a{2:a}aaaaaa |
- |
- ]])
- eq({6, 1}, eval('nvim_win_get_cursor(0)'))
- end)
- end)
- describe('in a line with single-cell multibyte characters and no trailing spaces,', function()
- before_each(function()
- setup_ex_register('µµµµµµµµ')
- end)
- it('at the end', function()
- feed('<C-R>r')
- screen:expect([[
- {7: 1 } |
- {7: 2 } |
- {7: 3 } |
- {7: 4 } |
- {7: 5 }Entering Ex mode. Type "visual" to go to Normal mode. |
- {7: 6 }:µµµµµµµµ{1: } |
- {3:-- TERMINAL --} |
- ]])
- eq({6, 17}, eval('nvim_win_get_cursor(0)'))
- feed([[<C-\><C-N>]])
- screen:expect([[
- {7: 1 } |
- {7: 2 } |
- {7: 3 } |
- {7: 4 } |
- {7: 5 }Entering Ex mode. Type "visual" to go to Normal mode. |
- {7: 6 }:µµµµµµµ^µ{2: } |
- |
- ]])
- eq({6, 15}, eval('nvim_win_get_cursor(0)'))
- end)
- it('near the end', function()
- feed('<C-R>r<C-X><C-X>')
- screen:expect([[
- {7: 1 } |
- {7: 2 } |
- {7: 3 } |
- {7: 4 } |
- {7: 5 }Entering Ex mode. Type "visual" to go to Normal mode. |
- {7: 6 }:µµµµµµ{1:µ}µ |
- {3:-- TERMINAL --} |
- ]])
- eq({6, 13}, eval('nvim_win_get_cursor(0)'))
- feed([[<C-\><C-N>]])
- screen:expect([[
- {7: 1 } |
- {7: 2 } |
- {7: 3 } |
- {7: 4 } |
- {7: 5 }Entering Ex mode. Type "visual" to go to Normal mode. |
- {7: 6 }:µµµµµ^µ{2:µ}µ |
- |
- ]])
- eq({6, 11}, eval('nvim_win_get_cursor(0)'))
- end)
- it('near the start', function()
- feed('<C-R>r<C-B><C-O>')
- screen:expect([[
- {7: 1 } |
- {7: 2 } |
- {7: 3 } |
- {7: 4 } |
- {7: 5 }Entering Ex mode. Type "visual" to go to Normal mode. |
- {7: 6 }:µ{1:µ}µµµµµµ |
- {3:-- TERMINAL --} |
- ]])
- eq({6, 3}, eval('nvim_win_get_cursor(0)'))
- feed([[<C-\><C-N>]])
- screen:expect([[
- {7: 1 } |
- {7: 2 } |
- {7: 3 } |
- {7: 4 } |
- {7: 5 }Entering Ex mode. Type "visual" to go to Normal mode. |
- {7: 6 }:^µ{2:µ}µµµµµµ |
- |
- ]])
- eq({6, 1}, eval('nvim_win_get_cursor(0)'))
- end)
- end)
- describe('in a line with single-cell composed multibyte characters and no trailing spaces,', function()
- if helpers.pending_win32(pending) then return end -- These tests fail on Windows. Encoding problem?
- before_each(function()
- setup_ex_register('µ̳µ̳µ̳µ̳µ̳µ̳µ̳µ̳')
- end)
- it('at the end', function()
- feed('<C-R>r')
- screen:expect([[
- {7: 1 } |
- {7: 2 } |
- {7: 3 } |
- {7: 4 } |
- {7: 5 }Entering Ex mode. Type "visual" to go to Normal mode. |
- {7: 6 }:µ̳µ̳µ̳µ̳µ̳µ̳µ̳µ̳{1: } |
- {3:-- TERMINAL --} |
- ]])
- eq({6, 33}, eval('nvim_win_get_cursor(0)'))
- feed([[<C-\><C-N>]])
- screen:expect([[
- {7: 1 } |
- {7: 2 } |
- {7: 3 } |
- {7: 4 } |
- {7: 5 }Entering Ex mode. Type "visual" to go to Normal mode. |
- {7: 6 }:µ̳µ̳µ̳µ̳µ̳µ̳µ̳^µ̳{2: } |
- |
- ]])
- eq({6, 29}, eval('nvim_win_get_cursor(0)'))
- end)
- it('near the end', function()
- feed('<C-R>r<C-X><C-X>')
- screen:expect([[
- {7: 1 } |
- {7: 2 } |
- {7: 3 } |
- {7: 4 } |
- {7: 5 }Entering Ex mode. Type "visual" to go to Normal mode. |
- {7: 6 }:µ̳µ̳µ̳µ̳µ̳µ̳{1:µ̳}µ̳ |
- {3:-- TERMINAL --} |
- ]])
- eq({6, 25}, eval('nvim_win_get_cursor(0)'))
- feed([[<C-\><C-N>]])
- screen:expect([[
- {7: 1 } |
- {7: 2 } |
- {7: 3 } |
- {7: 4 } |
- {7: 5 }Entering Ex mode. Type "visual" to go to Normal mode. |
- {7: 6 }:µ̳µ̳µ̳µ̳µ̳^µ̳{2:µ̳}µ̳ |
- |
- ]])
- eq({6, 21}, eval('nvim_win_get_cursor(0)'))
- end)
- it('near the start', function()
- feed('<C-R>r<C-B><C-O>')
- screen:expect([[
- {7: 1 } |
- {7: 2 } |
- {7: 3 } |
- {7: 4 } |
- {7: 5 }Entering Ex mode. Type "visual" to go to Normal mode. |
- {7: 6 }:µ̳{1:µ̳}µ̳µ̳µ̳µ̳µ̳µ̳ |
- {3:-- TERMINAL --} |
- ]])
- eq({6, 5}, eval('nvim_win_get_cursor(0)'))
- feed([[<C-\><C-N>]])
- screen:expect([[
- {7: 1 } |
- {7: 2 } |
- {7: 3 } |
- {7: 4 } |
- {7: 5 }Entering Ex mode. Type "visual" to go to Normal mode. |
- {7: 6 }:^µ̳{2:µ̳}µ̳µ̳µ̳µ̳µ̳µ̳ |
- |
- ]])
- eq({6, 1}, eval('nvim_win_get_cursor(0)'))
- end)
- end)
- describe('in a line with double-cell multibyte characters and no trailing spaces,', function()
- if helpers.pending_win32(pending) then return end -- These tests fail on Windows. Encoding problem?
- before_each(function()
- setup_ex_register('哦哦哦哦哦哦哦哦')
- end)
- it('at the end', function()
- feed('<C-R>r')
- screen:expect([[
- {7: 1 } |
- {7: 2 } |
- {7: 3 } |
- {7: 4 } |
- {7: 5 }Entering Ex mode. Type "visual" to go to Normal mode. |
- {7: 6 }:哦哦哦哦哦哦哦哦{1: } |
- {3:-- TERMINAL --} |
- ]])
- eq({6, 25}, eval('nvim_win_get_cursor(0)'))
- feed([[<C-\><C-N>]])
- screen:expect([[
- {7: 1 } |
- {7: 2 } |
- {7: 3 } |
- {7: 4 } |
- {7: 5 }Entering Ex mode. Type "visual" to go to Normal mode. |
- {7: 6 }:哦哦哦哦哦哦哦^哦{2: } |
- |
- ]])
- eq({6, 22}, eval('nvim_win_get_cursor(0)'))
- end)
- it('near the end', function()
- feed('<C-R>r<C-X><C-X>')
- screen:expect([[
- {7: 1 } |
- {7: 2 } |
- {7: 3 } |
- {7: 4 } |
- {7: 5 }Entering Ex mode. Type "visual" to go to Normal mode. |
- {7: 6 }:哦哦哦哦哦哦{1:哦}哦 |
- {3:-- TERMINAL --} |
- ]])
- eq({6, 19}, eval('nvim_win_get_cursor(0)'))
- feed([[<C-\><C-N>]])
- screen:expect([[
- {7: 1 } |
- {7: 2 } |
- {7: 3 } |
- {7: 4 } |
- {7: 5 }Entering Ex mode. Type "visual" to go to Normal mode. |
- {7: 6 }:哦哦哦哦哦^哦{2:哦}哦 |
- |
- ]])
- eq({6, 16}, eval('nvim_win_get_cursor(0)'))
- end)
- it('near the start', function()
- feed('<C-R>r<C-B><C-O>')
- screen:expect([[
- {7: 1 } |
- {7: 2 } |
- {7: 3 } |
- {7: 4 } |
- {7: 5 }Entering Ex mode. Type "visual" to go to Normal mode. |
- {7: 6 }:哦{1:哦}哦哦哦哦哦哦 |
- {3:-- TERMINAL --} |
- ]])
- eq({6, 4}, eval('nvim_win_get_cursor(0)'))
- feed([[<C-\><C-N>]])
- screen:expect([[
- {7: 1 } |
- {7: 2 } |
- {7: 3 } |
- {7: 4 } |
- {7: 5 }Entering Ex mode. Type "visual" to go to Normal mode. |
- {7: 6 }:^哦{2:哦}哦哦哦哦哦哦 |
- |
- ]])
- eq({6, 1}, eval('nvim_win_get_cursor(0)'))
- end)
- end)
- it('at the end of a line with trailing spaces #16234', function()
- setup_ex_register('aaaaaaaa ')
- feed('<C-R>r')
- screen:expect([[
- {7: 1 } |
- {7: 2 } |
- {7: 3 } |
- {7: 4 } |
- {7: 5 }Entering Ex mode. Type "visual" to go to Normal mode. |
- {7: 6 }:aaaaaaaa {1: } |
- {3:-- TERMINAL --} |
- ]])
- matches('^:aaaaaaaa [ ]*$', eval('nvim_get_current_line()'))
- eq({6, 13}, eval('nvim_win_get_cursor(0)'))
- feed([[<C-\><C-N>]])
- screen:expect([[
- {7: 1 } |
- {7: 2 } |
- {7: 3 } |
- {7: 4 } |
- {7: 5 }Entering Ex mode. Type "visual" to go to Normal mode. |
- {7: 6 }:aaaaaaaa ^ {2: } |
- |
- ]])
- eq({6, 12}, eval('nvim_win_get_cursor(0)'))
- end)
- end)
|