local n = require('test.functional.testnvim')() local Screen = require('test.functional.ui.screen') local clear = n.clear local command = n.command local expect = n.expect local feed = n.feed local sleep = vim.uv.sleep before_each(clear) describe('edit', function() -- oldtest: Test_autoindent_remove_indent() it('autoindent removes indent when Insert mode is stopped', function() command('set autoindent') -- leaving insert mode in a new line with indent added by autoindent, should -- remove the indent. feed('ifoo') -- Need to delay for sometime, otherwise the code in getchar.c will not be -- exercised. sleep(50) -- when a line is wrapped and the cursor is at the start of the second line, -- leaving insert mode, should move the cursor back to the first line. feed('o' .. ('x'):rep(20) .. '') -- Need to delay for sometime, otherwise the code in getchar.c will not be -- exercised. sleep(50) expect('\tfoo\n\n' .. ('x'):rep(20)) end) -- oldtest: Test_edit_insert_reg() it('inserting a register using CTRL-R', function() local screen = Screen.new(10, 6) feed('a') screen:expect([[ {18:^"} | {1:~ }|*4 {5:-- INSERT --}| ]]) feed('=') screen:expect([[ {18:"} | {1:~ }|*4 =^ | ]]) feed([['r']]) expect('r') -- Test for inserting null and empty list feed('a=v:_null_list') feed('a=[]') expect('r') end) -- oldtest: Test_edit_ctrl_r_failed() it('positioning cursor after CTRL-R expression failed', function() local screen = Screen.new(60, 6) feed('i') screen:expect([[ {18:^"} | {1:~ }|*4 {5:-- INSERT --} | ]]) feed('=0z') screen:expect([[ {18:"} | {1:~ }|*4 ={26:0}{9:z}^ | ]]) -- trying to insert a blob produces an error feed('') screen:expect([[ {18:"} | {1:~ }| {3: }| ={26:0}{9:z} | {9:E976: Using a Blob as a String} | {6:Press ENTER or type command to continue}^ | ]]) feed(':') screen:expect([[ :^ | {1:~ }|*4 {5:-- INSERT --} | ]]) -- ending Insert mode should put the cursor back on the ':' feed('') screen:expect([[ ^: | {1:~ }|*4 | ]]) end) end)