mirror of
https://github.com/neovim/neovim.git
synced 2024-12-25 05:35:10 -07:00
e61228a214
Before calling "attach" a screen object is just a dummy container for (row, col) values whose purpose is to be sent as part of the "attach" function call anyway. Just create the screen in an attached state directly. Keep the complete (row, col, options) config together. It is still completely valid to later detach and re-attach as needed, including to another session.
96 lines
3.3 KiB
Lua
96 lines
3.3 KiB
Lua
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('i<Tab>foo<CR><Esc>')
|
|
-- 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) .. '<Esc>')
|
|
-- 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<C-R>')
|
|
screen:expect([[
|
|
{18:^"} |
|
|
{1:~ }|*4
|
|
{5:-- INSERT --}|
|
|
]])
|
|
feed('=')
|
|
screen:expect([[
|
|
{18:"} |
|
|
{1:~ }|*4
|
|
=^ |
|
|
]])
|
|
feed([['r'<CR><Esc>]])
|
|
expect('r')
|
|
-- Test for inserting null and empty list
|
|
feed('a<C-R>=v:_null_list<CR><Esc>')
|
|
feed('a<C-R>=[]<CR><Esc>')
|
|
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<C-R>')
|
|
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('<CR>')
|
|
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('<Esc>')
|
|
screen:expect([[
|
|
^: |
|
|
{1:~ }|*4
|
|
|
|
|
]])
|
|
end)
|
|
end)
|