diff options
Diffstat (limited to 'test/functional/terminal/cursor_spec.lua')
-rw-r--r-- | test/functional/terminal/cursor_spec.lua | 582 |
1 files changed, 262 insertions, 320 deletions
diff --git a/test/functional/terminal/cursor_spec.lua b/test/functional/terminal/cursor_spec.lua index 8285bcc26e..73fd97203e 100644 --- a/test/functional/terminal/cursor_spec.lua +++ b/test/functional/terminal/cursor_spec.lua @@ -1,9 +1,8 @@ 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 feed, clear = helpers.feed, helpers.clear 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 poke_eventloop = helpers.poke_eventloop @@ -20,16 +19,12 @@ describe(':terminal cursor', function() 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: } | - | - | - | - | + |*4 {3:-- TERMINAL --} | ]]) end) @@ -39,11 +34,7 @@ describe(':terminal cursor', function() screen:expect([[ tty ready | {2:^ } | - | - | - | - | - | + |*5 ]]) end) @@ -94,21 +85,14 @@ describe(':terminal cursor', function() hide_cursor() screen:expect([[ tty ready | - | - | - | - | - | + |*5 {3:-- TERMINAL --} | ]]) show_cursor() screen:expect([[ tty ready | {1: } | - | - | - | - | + |*4 {3:-- TERMINAL --} | ]]) -- same for when the terminal is unfocused @@ -117,42 +101,33 @@ describe(':terminal cursor', function() screen:expect([[ tty ready | ^ | - | - | - | - | - | + |*5 ]]) show_cursor() screen:expect([[ tty ready | {2:^ } | - | - | - | - | - | + |*5 ]]) 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') + command('highlight TermCursor ctermfg=45 ctermbg=46 cterm=NONE') + 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}, + [1] = { foreground = 45, background = 46 }, + [2] = { foreground = 55, background = 56 }, + [3] = { bold = true }, }) - screen:attach({rgb=false}) - command('call termopen(["'..testprg('tty-test')..'"])') + screen:attach({ rgb = false }) + command('call termopen(["' .. testprg('tty-test') .. '"])') feed('i') poke_eventloop() end) @@ -161,21 +136,14 @@ describe('cursor with customized highlighting', function() screen:expect([[ tty ready | {1: } | - | - | - | - | + |*4 {3:-- TERMINAL --} | ]]) feed('<c-\\><c-n>') screen:expect([[ tty ready | {2:^ } | - | - | - | - | - | + |*5 ]]) end) end) @@ -184,20 +152,37 @@ describe('buffer cursor position is correct in terminal without number column', local screen local function setup_ex_register(str) - screen = thelpers.screen_setup(0, '["'..nvim_prog - ..[[", "-u", "NONE", "-i", "NONE", "-E", "--cmd", "let @r = ']]..str..[['", ]] + screen = thelpers.setup_child_nvim({ + '-u', + 'NONE', + '-i', + 'NONE', + '-E', + '--cmd', + string.format('let @r = "%s"', str), -- <Left> and <Right> don't always work - ..[["--cmd", "cnoremap <C-X> <Left>", "--cmd", "cnoremap <C-O> <Right>"]]..']', 70) + '--cmd', + 'cnoremap <C-X> <Left>', + '--cmd', + 'cnoremap <C-O> <Right>', + '--cmd', + 'set notermguicolors', + }, { + cols = 70, + }) + screen:set_default_attr_ids({ + [1] = { foreground = 253, background = 11 }, + [2] = { reverse = true }, + [3] = { bold = true }, + [4] = { background = 11 }, + }) -- Also check for real cursor position, as it is used for stuff like input methods screen._handle_busy_start = function() end screen._handle_busy_stop = function() end screen:expect([[ - | - | - | - | + |*4 Entering Ex mode. Type "visual" to go to Normal mode. | - :{1:^ } | + :{2:^ } | {3:-- TERMINAL --} | ]]) end @@ -212,76 +197,58 @@ describe('buffer cursor position is correct in terminal without number column', it('at the end', function() feed('<C-R>r') screen:expect([[ - | - | - | - | + |*4 Entering Ex mode. Type "visual" to go to Normal mode. | - :aaaaaaaa{1:^ } | + :aaaaaaaa{2:^ } | {3:-- TERMINAL --} | ]]) - eq({6, 9}, eval('nvim_win_get_cursor(0)')) + eq({ 6, 9 }, eval('nvim_win_get_cursor(0)')) feed([[<C-\><C-N>]]) screen:expect([[ - | - | - | - | + |*4 Entering Ex mode. Type "visual" to go to Normal mode. | - :aaaaaaa^a{2: } | + :aaaaaaa^a{4: } | | ]]) - eq({6, 8}, eval('nvim_win_get_cursor(0)')) + 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([[ - | - | - | - | + |*4 Entering Ex mode. Type "visual" to go to Normal mode. | - :aaaaaa{1:^a}a | + :aaaaaa{2:^a}a | {3:-- TERMINAL --} | ]]) - eq({6, 7}, eval('nvim_win_get_cursor(0)')) + eq({ 6, 7 }, eval('nvim_win_get_cursor(0)')) feed([[<C-\><C-N>]]) screen:expect([[ - | - | - | - | + |*4 Entering Ex mode. Type "visual" to go to Normal mode. | - :aaaaa^a{2:a}a | + :aaaaa^a{4:a}a | | ]]) - eq({6, 6}, eval('nvim_win_get_cursor(0)')) + 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([[ - | - | - | - | + |*4 Entering Ex mode. Type "visual" to go to Normal mode. | - :a{1:^a}aaaaaa | + :a{2:^a}aaaaaa | {3:-- TERMINAL --} | ]]) - eq({6, 2}, eval('nvim_win_get_cursor(0)')) + eq({ 6, 2 }, eval('nvim_win_get_cursor(0)')) feed([[<C-\><C-N>]]) screen:expect([[ - | - | - | - | + |*4 Entering Ex mode. Type "visual" to go to Normal mode. | - :^a{2:a}aaaaaa | + :^a{4:a}aaaaaa | | ]]) - eq({6, 1}, eval('nvim_win_get_cursor(0)')) + eq({ 6, 1 }, eval('nvim_win_get_cursor(0)')) end) end) @@ -293,164 +260,135 @@ describe('buffer cursor position is correct in terminal without number column', it('at the end', function() feed('<C-R>r') screen:expect([[ - | - | - | - | + |*4 Entering Ex mode. Type "visual" to go to Normal mode. | - :µµµµµµµµ{1:^ } | + :µµµµµµµµ{2:^ } | {3:-- TERMINAL --} | ]]) - eq({6, 17}, eval('nvim_win_get_cursor(0)')) + eq({ 6, 17 }, eval('nvim_win_get_cursor(0)')) feed([[<C-\><C-N>]]) screen:expect([[ - | - | - | - | + |*4 Entering Ex mode. Type "visual" to go to Normal mode. | - :µµµµµµµ^µ{2: } | + :µµµµµµµ^µ{4: } | | ]]) - eq({6, 15}, eval('nvim_win_get_cursor(0)')) + 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([[ - | - | - | - | + |*4 Entering Ex mode. Type "visual" to go to Normal mode. | - :µµµµµµ{1:^µ}µ | + :µµµµµµ{2:^µ}µ | {3:-- TERMINAL --} | ]]) - eq({6, 13}, eval('nvim_win_get_cursor(0)')) + eq({ 6, 13 }, eval('nvim_win_get_cursor(0)')) feed([[<C-\><C-N>]]) screen:expect([[ - | - | - | - | + |*4 Entering Ex mode. Type "visual" to go to Normal mode. | - :µµµµµ^µ{2:µ}µ | + :µµµµµ^µ{4:µ}µ | | ]]) - eq({6, 11}, eval('nvim_win_get_cursor(0)')) + 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([[ - | - | - | - | + |*4 Entering Ex mode. Type "visual" to go to Normal mode. | - :µ{1:^µ}µµµµµµ | + :µ{2:^µ}µµµµµµ | {3:-- TERMINAL --} | ]]) - eq({6, 3}, eval('nvim_win_get_cursor(0)')) + eq({ 6, 3 }, eval('nvim_win_get_cursor(0)')) feed([[<C-\><C-N>]]) screen:expect([[ - | - | - | - | + |*4 Entering Ex mode. Type "visual" to go to Normal mode. | - :^µ{2:µ}µµµµµµ | + :^µ{4:µ}µµµµµµ | | ]]) - eq({6, 1}, eval('nvim_win_get_cursor(0)')) + 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 skip(is_os('win'), "Encoding problem?") then return end - - before_each(function() - setup_ex_register('µ̳µ̳µ̳µ̳µ̳µ̳µ̳µ̳') - end) - - it('at the end', function() - feed('<C-R>r') - screen:expect([[ - | - | - | - | + describe( + 'in a line with single-cell composed multibyte characters and no trailing spaces,', + function() + if skip(is_os('win'), 'Encoding problem?') then + return + end + + before_each(function() + setup_ex_register('µ̳µ̳µ̳µ̳µ̳µ̳µ̳µ̳') + end) + + it('at the end', function() + feed('<C-R>r') + screen:expect([[ + |*4 Entering Ex mode. Type "visual" to go to Normal mode. | - :µ̳µ̳µ̳µ̳µ̳µ̳µ̳µ̳{1:^ } | + :µ̳µ̳µ̳µ̳µ̳µ̳µ̳µ̳{2:^ } | {3:-- TERMINAL --} | ]]) - eq({6, 33}, eval('nvim_win_get_cursor(0)')) - feed([[<C-\><C-N>]]) - screen:expect([[ - | - | - | - | + eq({ 6, 33 }, eval('nvim_win_get_cursor(0)')) + feed([[<C-\><C-N>]]) + screen:expect([[ + |*4 Entering Ex mode. Type "visual" to go to Normal mode. | - :µ̳µ̳µ̳µ̳µ̳µ̳µ̳^µ̳{2: } | + :µ̳µ̳µ̳µ̳µ̳µ̳µ̳^µ̳{4: } | | ]]) - eq({6, 29}, eval('nvim_win_get_cursor(0)')) - end) + 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([[ - | - | - | - | + it('near the end', function() + feed('<C-R>r<C-X><C-X>') + screen:expect([[ + |*4 Entering Ex mode. Type "visual" to go to Normal mode. | - :µ̳µ̳µ̳µ̳µ̳µ̳{1:^µ̳}µ̳ | + :µ̳µ̳µ̳µ̳µ̳µ̳{2:^µ̳}µ̳ | {3:-- TERMINAL --} | ]]) - eq({6, 25}, eval('nvim_win_get_cursor(0)')) - feed([[<C-\><C-N>]]) - screen:expect([[ - | - | - | - | + eq({ 6, 25 }, eval('nvim_win_get_cursor(0)')) + feed([[<C-\><C-N>]]) + screen:expect([[ + |*4 Entering Ex mode. Type "visual" to go to Normal mode. | - :µ̳µ̳µ̳µ̳µ̳^µ̳{2:µ̳}µ̳ | + :µ̳µ̳µ̳µ̳µ̳^µ̳{4:µ̳}µ̳ | | ]]) - eq({6, 21}, eval('nvim_win_get_cursor(0)')) - end) + 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([[ - | - | - | - | + it('near the start', function() + feed('<C-R>r<C-B><C-O>') + screen:expect([[ + |*4 Entering Ex mode. Type "visual" to go to Normal mode. | - :µ̳{1:^µ̳}µ̳µ̳µ̳µ̳µ̳µ̳ | + :µ̳{2:^µ̳}µ̳µ̳µ̳µ̳µ̳µ̳ | {3:-- TERMINAL --} | ]]) - eq({6, 5}, eval('nvim_win_get_cursor(0)')) - feed([[<C-\><C-N>]]) - screen:expect([[ - | - | - | - | + eq({ 6, 5 }, eval('nvim_win_get_cursor(0)')) + feed([[<C-\><C-N>]]) + screen:expect([[ + |*4 Entering Ex mode. Type "visual" to go to Normal mode. | - :^µ̳{2:µ̳}µ̳µ̳µ̳µ̳µ̳µ̳ | + :^µ̳{4:µ̳}µ̳µ̳µ̳µ̳µ̳µ̳ | | ]]) - eq({6, 1}, eval('nvim_win_get_cursor(0)')) - end) - end) + 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 skip(is_os('win'), "Encoding problem?") then return end + if skip(is_os('win'), 'Encoding problem?') then + return + end before_each(function() setup_ex_register('哦哦哦哦哦哦哦哦') @@ -459,76 +397,58 @@ describe('buffer cursor position is correct in terminal without number column', it('at the end', function() feed('<C-R>r') screen:expect([[ - | - | - | - | + |*4 Entering Ex mode. Type "visual" to go to Normal mode. | - :哦哦哦哦哦哦哦哦{1:^ } | + :哦哦哦哦哦哦哦哦{2:^ } | {3:-- TERMINAL --} | ]]) - eq({6, 25}, eval('nvim_win_get_cursor(0)')) + eq({ 6, 25 }, eval('nvim_win_get_cursor(0)')) feed([[<C-\><C-N>]]) screen:expect([[ - | - | - | - | + |*4 Entering Ex mode. Type "visual" to go to Normal mode. | - :哦哦哦哦哦哦哦^哦{2: } | + :哦哦哦哦哦哦哦^哦{4: } | | ]]) - eq({6, 22}, eval('nvim_win_get_cursor(0)')) + 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([[ - | - | - | - | + |*4 Entering Ex mode. Type "visual" to go to Normal mode. | - :哦哦哦哦哦哦{1:^哦}哦 | + :哦哦哦哦哦哦{2:^哦}哦 | {3:-- TERMINAL --} | ]]) - eq({6, 19}, eval('nvim_win_get_cursor(0)')) + eq({ 6, 19 }, eval('nvim_win_get_cursor(0)')) feed([[<C-\><C-N>]]) screen:expect([[ - | - | - | - | + |*4 Entering Ex mode. Type "visual" to go to Normal mode. | - :哦哦哦哦哦^哦{2:哦}哦 | + :哦哦哦哦哦^哦{4:哦}哦 | | ]]) - eq({6, 16}, eval('nvim_win_get_cursor(0)')) + 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([[ - | - | - | - | + |*4 Entering Ex mode. Type "visual" to go to Normal mode. | - :哦{1:^哦}哦哦哦哦哦哦 | + :哦{2:^哦}哦哦哦哦哦哦 | {3:-- TERMINAL --} | ]]) - eq({6, 4}, eval('nvim_win_get_cursor(0)')) + eq({ 6, 4 }, eval('nvim_win_get_cursor(0)')) feed([[<C-\><C-N>]]) screen:expect([[ - | - | - | - | + |*4 Entering Ex mode. Type "visual" to go to Normal mode. | - :^哦{2:哦}哦哦哦哦哦哦 | + :^哦{4:哦}哦哦哦哦哦哦 | | ]]) - eq({6, 1}, eval('nvim_win_get_cursor(0)')) + eq({ 6, 1 }, eval('nvim_win_get_cursor(0)')) end) end) @@ -536,27 +456,21 @@ describe('buffer cursor position is correct in terminal without number column', setup_ex_register('aaaaaaaa ') feed('<C-R>r') screen:expect([[ - | - | - | - | + |*4 Entering Ex mode. Type "visual" to go to Normal mode. | - :aaaaaaaa {1:^ } | + :aaaaaaaa {2:^ } | {3:-- TERMINAL --} | ]]) matches('^:aaaaaaaa [ ]*$', eval('nvim_get_current_line()')) - eq({6, 13}, eval('nvim_win_get_cursor(0)')) + eq({ 6, 13 }, eval('nvim_win_get_cursor(0)')) feed([[<C-\><C-N>]]) screen:expect([[ - | - | - | - | + |*4 Entering Ex mode. Type "visual" to go to Normal mode. | - :aaaaaaaa ^ {2: } | + :aaaaaaaa ^ {4: } | | ]]) - eq({6, 12}, eval('nvim_win_get_cursor(0)')) + eq({ 6, 12 }, eval('nvim_win_get_cursor(0)')) end) end) @@ -564,10 +478,31 @@ describe('buffer cursor position is correct in terminal with number column', fun local screen local function setup_ex_register(str) - screen = thelpers.screen_setup(0, '["'..nvim_prog - ..[[", "-u", "NONE", "-i", "NONE", "-E", "--cmd", "let @r = ']]..str..[['", ]] + screen = thelpers.setup_child_nvim({ + '-u', + 'NONE', + '-i', + 'NONE', + '-E', + '--cmd', + string.format('let @r = "%s"', str), -- <Left> and <Right> don't always work - ..[["--cmd", "cnoremap <C-X> <Left>", "--cmd", "cnoremap <C-O> <Right>"]]..']', 70) + '--cmd', + 'cnoremap <C-X> <Left>', + '--cmd', + 'cnoremap <C-O> <Right>', + '--cmd', + 'set notermguicolors', + }, { + cols = 70, + }) + screen:set_default_attr_ids({ + [1] = { foreground = 253, background = 11 }, + [2] = { reverse = true }, + [3] = { bold = true }, + [4] = { background = 11 }, + [7] = { foreground = 130 }, + }) -- Also check for real cursor position, as it is used for stuff like input methods screen._handle_busy_start = function() end screen._handle_busy_stop = function() end @@ -577,7 +512,7 @@ describe('buffer cursor position is correct in terminal with number column', fun {7: 3 } | {7: 4 } | {7: 5 }Entering Ex mode. Type "visual" to go to Normal mode. | - {7: 6 }:{1:^ } | + {7: 6 }:{2:^ } | {3:-- TERMINAL --} | ]]) end @@ -600,10 +535,10 @@ describe('buffer cursor position is correct in terminal with number column', fun {7: 3 } | {7: 4 } | {7: 5 }Entering Ex mode. Type "visual" to go to Normal mode. | - {7: 6 }:aaaaaaaa{1:^ } | + {7: 6 }:aaaaaaaa{2:^ } | {3:-- TERMINAL --} | ]]) - eq({6, 9}, eval('nvim_win_get_cursor(0)')) + eq({ 6, 9 }, eval('nvim_win_get_cursor(0)')) feed([[<C-\><C-N>]]) screen:expect([[ {7: 1 } | @@ -611,10 +546,10 @@ describe('buffer cursor position is correct in terminal with number column', fun {7: 3 } | {7: 4 } | {7: 5 }Entering Ex mode. Type "visual" to go to Normal mode. | - {7: 6 }:aaaaaaa^a{2: } | + {7: 6 }:aaaaaaa^a{4: } | | ]]) - eq({6, 8}, eval('nvim_win_get_cursor(0)')) + eq({ 6, 8 }, eval('nvim_win_get_cursor(0)')) end) it('near the end', function() @@ -625,10 +560,10 @@ describe('buffer cursor position is correct in terminal with number column', fun {7: 3 } | {7: 4 } | {7: 5 }Entering Ex mode. Type "visual" to go to Normal mode. | - {7: 6 }:aaaaaa{1:^a}a | + {7: 6 }:aaaaaa{2:^a}a | {3:-- TERMINAL --} | ]]) - eq({6, 7}, eval('nvim_win_get_cursor(0)')) + eq({ 6, 7 }, eval('nvim_win_get_cursor(0)')) feed([[<C-\><C-N>]]) screen:expect([[ {7: 1 } | @@ -636,10 +571,10 @@ describe('buffer cursor position is correct in terminal with number column', fun {7: 3 } | {7: 4 } | {7: 5 }Entering Ex mode. Type "visual" to go to Normal mode. | - {7: 6 }:aaaaa^a{2:a}a | + {7: 6 }:aaaaa^a{4:a}a | | ]]) - eq({6, 6}, eval('nvim_win_get_cursor(0)')) + eq({ 6, 6 }, eval('nvim_win_get_cursor(0)')) end) it('near the start', function() @@ -650,10 +585,10 @@ describe('buffer cursor position is correct in terminal with number column', fun {7: 3 } | {7: 4 } | {7: 5 }Entering Ex mode. Type "visual" to go to Normal mode. | - {7: 6 }:a{1:^a}aaaaaa | + {7: 6 }:a{2:^a}aaaaaa | {3:-- TERMINAL --} | ]]) - eq({6, 2}, eval('nvim_win_get_cursor(0)')) + eq({ 6, 2 }, eval('nvim_win_get_cursor(0)')) feed([[<C-\><C-N>]]) screen:expect([[ {7: 1 } | @@ -661,10 +596,10 @@ describe('buffer cursor position is correct in terminal with number column', fun {7: 3 } | {7: 4 } | {7: 5 }Entering Ex mode. Type "visual" to go to Normal mode. | - {7: 6 }:^a{2:a}aaaaaa | + {7: 6 }:^a{4:a}aaaaaa | | ]]) - eq({6, 1}, eval('nvim_win_get_cursor(0)')) + eq({ 6, 1 }, eval('nvim_win_get_cursor(0)')) end) end) @@ -681,10 +616,10 @@ describe('buffer cursor position is correct in terminal with number column', fun {7: 3 } | {7: 4 } | {7: 5 }Entering Ex mode. Type "visual" to go to Normal mode. | - {7: 6 }:µµµµµµµµ{1:^ } | + {7: 6 }:µµµµµµµµ{2:^ } | {3:-- TERMINAL --} | ]]) - eq({6, 17}, eval('nvim_win_get_cursor(0)')) + eq({ 6, 17 }, eval('nvim_win_get_cursor(0)')) feed([[<C-\><C-N>]]) screen:expect([[ {7: 1 } | @@ -692,10 +627,10 @@ describe('buffer cursor position is correct in terminal with number column', fun {7: 3 } | {7: 4 } | {7: 5 }Entering Ex mode. Type "visual" to go to Normal mode. | - {7: 6 }:µµµµµµµ^µ{2: } | + {7: 6 }:µµµµµµµ^µ{4: } | | ]]) - eq({6, 15}, eval('nvim_win_get_cursor(0)')) + eq({ 6, 15 }, eval('nvim_win_get_cursor(0)')) end) it('near the end', function() @@ -706,10 +641,10 @@ describe('buffer cursor position is correct in terminal with number column', fun {7: 3 } | {7: 4 } | {7: 5 }Entering Ex mode. Type "visual" to go to Normal mode. | - {7: 6 }:µµµµµµ{1:^µ}µ | + {7: 6 }:µµµµµµ{2:^µ}µ | {3:-- TERMINAL --} | ]]) - eq({6, 13}, eval('nvim_win_get_cursor(0)')) + eq({ 6, 13 }, eval('nvim_win_get_cursor(0)')) feed([[<C-\><C-N>]]) screen:expect([[ {7: 1 } | @@ -717,10 +652,10 @@ describe('buffer cursor position is correct in terminal with number column', fun {7: 3 } | {7: 4 } | {7: 5 }Entering Ex mode. Type "visual" to go to Normal mode. | - {7: 6 }:µµµµµ^µ{2:µ}µ | + {7: 6 }:µµµµµ^µ{4:µ}µ | | ]]) - eq({6, 11}, eval('nvim_win_get_cursor(0)')) + eq({ 6, 11 }, eval('nvim_win_get_cursor(0)')) end) it('near the start', function() @@ -731,10 +666,10 @@ describe('buffer cursor position is correct in terminal with number column', fun {7: 3 } | {7: 4 } | {7: 5 }Entering Ex mode. Type "visual" to go to Normal mode. | - {7: 6 }:µ{1:^µ}µµµµµµ | + {7: 6 }:µ{2:^µ}µµµµµµ | {3:-- TERMINAL --} | ]]) - eq({6, 3}, eval('nvim_win_get_cursor(0)')) + eq({ 6, 3 }, eval('nvim_win_get_cursor(0)')) feed([[<C-\><C-N>]]) screen:expect([[ {7: 1 } | @@ -742,98 +677,105 @@ describe('buffer cursor position is correct in terminal with number column', fun {7: 3 } | {7: 4 } | {7: 5 }Entering Ex mode. Type "visual" to go to Normal mode. | - {7: 6 }:^µ{2:µ}µµµµµµ | + {7: 6 }:^µ{4:µ}µµµµµµ | | ]]) - eq({6, 1}, eval('nvim_win_get_cursor(0)')) + 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 skip(is_os('win'), "Encoding problem?") then return end + describe( + 'in a line with single-cell composed multibyte characters and no trailing spaces,', + function() + if skip(is_os('win'), 'Encoding problem?') then + return + end - before_each(function() - setup_ex_register('µ̳µ̳µ̳µ̳µ̳µ̳µ̳µ̳') - end) + before_each(function() + setup_ex_register('µ̳µ̳µ̳µ̳µ̳µ̳µ̳µ̳') + end) - it('at the end', function() - feed('<C-R>r') - screen:expect([[ + 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:^ } | + {7: 6 }:µ̳µ̳µ̳µ̳µ̳µ̳µ̳µ̳{2:^ } | {3:-- TERMINAL --} | ]]) - eq({6, 33}, eval('nvim_win_get_cursor(0)')) - feed([[<C-\><C-N>]]) - screen:expect([[ + 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: } | + {7: 6 }:µ̳µ̳µ̳µ̳µ̳µ̳µ̳^µ̳{4: } | | ]]) - eq({6, 29}, eval('nvim_win_get_cursor(0)')) - end) + 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([[ + 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:^µ̳}µ̳ | + {7: 6 }:µ̳µ̳µ̳µ̳µ̳µ̳{2:^µ̳}µ̳ | {3:-- TERMINAL --} | ]]) - eq({6, 25}, eval('nvim_win_get_cursor(0)')) - feed([[<C-\><C-N>]]) - screen:expect([[ + 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:µ̳}µ̳ | + {7: 6 }:µ̳µ̳µ̳µ̳µ̳^µ̳{4:µ̳}µ̳ | | ]]) - eq({6, 21}, eval('nvim_win_get_cursor(0)')) - end) + 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([[ + 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:^µ̳}µ̳µ̳µ̳µ̳µ̳µ̳ | + {7: 6 }:µ̳{2:^µ̳}µ̳µ̳µ̳µ̳µ̳µ̳ | {3:-- TERMINAL --} | ]]) - eq({6, 5}, eval('nvim_win_get_cursor(0)')) - feed([[<C-\><C-N>]]) - screen:expect([[ + 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:µ̳}µ̳µ̳µ̳µ̳µ̳µ̳ | + {7: 6 }:^µ̳{4:µ̳}µ̳µ̳µ̳µ̳µ̳µ̳ | | ]]) - eq({6, 1}, eval('nvim_win_get_cursor(0)')) - end) - end) + 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 skip(is_os('win'), "Encoding problem?") then return end + if skip(is_os('win'), 'Encoding problem?') then + return + end before_each(function() setup_ex_register('哦哦哦哦哦哦哦哦') @@ -847,10 +789,10 @@ describe('buffer cursor position is correct in terminal with number column', fun {7: 3 } | {7: 4 } | {7: 5 }Entering Ex mode. Type "visual" to go to Normal mode. | - {7: 6 }:哦哦哦哦哦哦哦哦{1:^ } | + {7: 6 }:哦哦哦哦哦哦哦哦{2:^ } | {3:-- TERMINAL --} | ]]) - eq({6, 25}, eval('nvim_win_get_cursor(0)')) + eq({ 6, 25 }, eval('nvim_win_get_cursor(0)')) feed([[<C-\><C-N>]]) screen:expect([[ {7: 1 } | @@ -858,10 +800,10 @@ describe('buffer cursor position is correct in terminal with number column', fun {7: 3 } | {7: 4 } | {7: 5 }Entering Ex mode. Type "visual" to go to Normal mode. | - {7: 6 }:哦哦哦哦哦哦哦^哦{2: } | + {7: 6 }:哦哦哦哦哦哦哦^哦{4: } | | ]]) - eq({6, 22}, eval('nvim_win_get_cursor(0)')) + eq({ 6, 22 }, eval('nvim_win_get_cursor(0)')) end) it('near the end', function() @@ -872,10 +814,10 @@ describe('buffer cursor position is correct in terminal with number column', fun {7: 3 } | {7: 4 } | {7: 5 }Entering Ex mode. Type "visual" to go to Normal mode. | - {7: 6 }:哦哦哦哦哦哦{1:^哦}哦 | + {7: 6 }:哦哦哦哦哦哦{2:^哦}哦 | {3:-- TERMINAL --} | ]]) - eq({6, 19}, eval('nvim_win_get_cursor(0)')) + eq({ 6, 19 }, eval('nvim_win_get_cursor(0)')) feed([[<C-\><C-N>]]) screen:expect([[ {7: 1 } | @@ -883,10 +825,10 @@ describe('buffer cursor position is correct in terminal with number column', fun {7: 3 } | {7: 4 } | {7: 5 }Entering Ex mode. Type "visual" to go to Normal mode. | - {7: 6 }:哦哦哦哦哦^哦{2:哦}哦 | + {7: 6 }:哦哦哦哦哦^哦{4:哦}哦 | | ]]) - eq({6, 16}, eval('nvim_win_get_cursor(0)')) + eq({ 6, 16 }, eval('nvim_win_get_cursor(0)')) end) it('near the start', function() @@ -897,10 +839,10 @@ describe('buffer cursor position is correct in terminal with number column', fun {7: 3 } | {7: 4 } | {7: 5 }Entering Ex mode. Type "visual" to go to Normal mode. | - {7: 6 }:哦{1:^哦}哦哦哦哦哦哦 | + {7: 6 }:哦{2:^哦}哦哦哦哦哦哦 | {3:-- TERMINAL --} | ]]) - eq({6, 4}, eval('nvim_win_get_cursor(0)')) + eq({ 6, 4 }, eval('nvim_win_get_cursor(0)')) feed([[<C-\><C-N>]]) screen:expect([[ {7: 1 } | @@ -908,10 +850,10 @@ describe('buffer cursor position is correct in terminal with number column', fun {7: 3 } | {7: 4 } | {7: 5 }Entering Ex mode. Type "visual" to go to Normal mode. | - {7: 6 }:^哦{2:哦}哦哦哦哦哦哦 | + {7: 6 }:^哦{4:哦}哦哦哦哦哦哦 | | ]]) - eq({6, 1}, eval('nvim_win_get_cursor(0)')) + eq({ 6, 1 }, eval('nvim_win_get_cursor(0)')) end) end) @@ -924,11 +866,11 @@ describe('buffer cursor position is correct in terminal with number column', fun {7: 3 } | {7: 4 } | {7: 5 }Entering Ex mode. Type "visual" to go to Normal mode. | - {7: 6 }:aaaaaaaa {1:^ } | + {7: 6 }:aaaaaaaa {2:^ } | {3:-- TERMINAL --} | ]]) matches('^:aaaaaaaa [ ]*$', eval('nvim_get_current_line()')) - eq({6, 13}, eval('nvim_win_get_cursor(0)')) + eq({ 6, 13 }, eval('nvim_win_get_cursor(0)')) feed([[<C-\><C-N>]]) screen:expect([[ {7: 1 } | @@ -936,9 +878,9 @@ describe('buffer cursor position is correct in terminal with number column', fun {7: 3 } | {7: 4 } | {7: 5 }Entering Ex mode. Type "visual" to go to Normal mode. | - {7: 6 }:aaaaaaaa ^ {2: } | + {7: 6 }:aaaaaaaa ^ {4: } | | ]]) - eq({6, 12}, eval('nvim_win_get_cursor(0)')) + eq({ 6, 12 }, eval('nvim_win_get_cursor(0)')) end) end) |