diff options
author | Josh Rahm <joshuarahm@gmail.com> | 2023-11-29 22:40:31 +0000 |
---|---|---|
committer | Josh Rahm <joshuarahm@gmail.com> | 2023-11-29 22:40:31 +0000 |
commit | 339e2d15cc26fe86988ea06468d912a46c8d6f29 (patch) | |
tree | a6167fc8fcfc6ae2dc102f57b2473858eac34063 /test/functional/legacy/prompt_buffer_spec.lua | |
parent | 067dc73729267c0262438a6fdd66e586f8496946 (diff) | |
parent | 4a8bf24ac690004aedf5540fa440e788459e5e34 (diff) | |
download | rneovim-339e2d15cc26fe86988ea06468d912a46c8d6f29.tar.gz rneovim-339e2d15cc26fe86988ea06468d912a46c8d6f29.tar.bz2 rneovim-339e2d15cc26fe86988ea06468d912a46c8d6f29.zip |
Merge remote-tracking branch 'upstream/master' into fix_repeatcmdline
Diffstat (limited to 'test/functional/legacy/prompt_buffer_spec.lua')
-rw-r--r-- | test/functional/legacy/prompt_buffer_spec.lua | 133 |
1 files changed, 80 insertions, 53 deletions
diff --git a/test/functional/legacy/prompt_buffer_spec.lua b/test/functional/legacy/prompt_buffer_spec.lua index 63338b8dba..5c3f8a6f8c 100644 --- a/test/functional/legacy/prompt_buffer_spec.lua +++ b/test/functional/legacy/prompt_buffer_spec.lua @@ -3,10 +3,11 @@ local Screen = require('test.functional.ui.screen') local feed = helpers.feed local source = helpers.source local clear = helpers.clear -local feed_command = helpers.feed_command +local command = helpers.command local poke_eventloop = helpers.poke_eventloop local meths = helpers.meths local eq = helpers.eq +local neq = helpers.neq describe('prompt buffer', function() local screen @@ -15,65 +16,78 @@ describe('prompt buffer', function() clear() screen = Screen.new(25, 10) screen:attach() + command('set laststatus=0 nohidden') + end) + + local function source_script() source([[ func TextEntered(text) if a:text == "exit" + " Reset &modified to allow the buffer to be closed. set nomodified stopinsert close else + " Add the output above the current prompt. call append(line("$") - 1, 'Command: "' . a:text . '"') + " Reset &modified to allow the buffer to be closed. set nomodified call timer_start(20, {id -> TimerFunc(a:text)}) endif endfunc func TimerFunc(text) + " Add the output above the current prompt. call append(line("$") - 1, 'Result: "' . a:text .'"') + " Reset &modified to allow the buffer to be closed. + set nomodified endfunc func SwitchWindows() call timer_start(0, {-> execute("wincmd p", "")}) endfunc - ]]) - feed_command("set noshowmode | set laststatus=0") - feed_command("call setline(1, 'other buffer')") - feed_command("new") - feed_command("set buftype=prompt") - feed_command("call prompt_setcallback(bufnr(''), function('TextEntered'))") - feed_command("eval bufnr('')->prompt_setprompt('cmd: ')") - end) - after_each(function() - screen:detach() - end) - - it('works', function() + call setline(1, "other buffer") + set nomodified + new + set buftype=prompt + call prompt_setcallback(bufnr(''), function("TextEntered")) + eval bufnr("")->prompt_setprompt("cmd: ") + startinsert + ]]) screen:expect([[ - ^ | + cmd: ^ | ~ | ~ | ~ | - [Prompt] | + [Prompt] [+] | other buffer | ~ | ~ | ~ | - | + -- INSERT -- | ]]) - feed("i") + end + + after_each(function() + screen:detach() + end) + + -- oldtest: Test_prompt_basic() + it('works', function() + source_script() feed("hello\n") screen:expect([[ cmd: hello | Command: "hello" | Result: "hello" | cmd: ^ | - [Prompt] [+] | + [Prompt] | other buffer | ~ | ~ | ~ | - | + -- INSERT -- | ]]) feed("exit\n") screen:expect([[ @@ -90,20 +104,9 @@ describe('prompt buffer', function() ]]) end) + -- oldtest: Test_prompt_editing() it('editing', function() - screen:expect([[ - ^ | - ~ | - ~ | - ~ | - [Prompt] | - other buffer | - ~ | - ~ | - ~ | - | - ]]) - feed("i") + source_script() feed("hello<BS><BS>") screen:expect([[ cmd: hel^ | @@ -115,7 +118,7 @@ describe('prompt buffer', function() ~ | ~ | ~ | - | + -- INSERT -- | ]]) feed("<Left><Left><Left><BS>-") screen:expect([[ @@ -128,7 +131,7 @@ describe('prompt buffer', function() ~ | ~ | ~ | - | + -- INSERT -- | ]]) feed("<C-O>lz") screen:expect([[ @@ -141,7 +144,7 @@ describe('prompt buffer', function() ~ | ~ | ~ | - | + -- INSERT -- | ]]) feed("<End>x") screen:expect([[ @@ -154,7 +157,7 @@ describe('prompt buffer', function() ~ | ~ | ~ | - | + -- INSERT -- | ]]) feed("<C-U>exit\n") screen:expect([[ @@ -171,21 +174,9 @@ describe('prompt buffer', function() ]]) end) + -- oldtest: Test_prompt_switch_windows() it('switch windows', function() - feed_command("set showmode") - feed("i") - screen:expect([[ - cmd: ^ | - ~ | - ~ | - ~ | - [Prompt] [+] | - other buffer | - ~ | - ~ | - ~ | - -- INSERT -- | - ]]) + source_script() feed("<C-O>:call SwitchWindows()<CR>") screen:expect{grid=[[ cmd: | @@ -227,13 +218,49 @@ describe('prompt buffer', function() ]]) end) + -- oldtest: Test_prompt_while_writing_to_hidden_buffer() it('keeps insert mode after aucmd_restbuf in callback', function() + source_script() source [[ let s:buf = nvim_create_buf(1, 1) call timer_start(0, {-> nvim_buf_set_lines(s:buf, -1, -1, 0, ['walrus'])}) - startinsert ]] poke_eventloop() - eq({ mode = "i", blocking = false }, meths.get_mode()) + eq({ mode = 'i', blocking = false }, meths.get_mode()) + end) + + -- oldtest: Test_prompt_appending_while_hidden() + it('accessing hidden prompt buffer does not start insert mode', function() + local prev_win = meths.get_current_win() + source([[ + new prompt + set buftype=prompt + set bufhidden=hide + + func s:TextEntered(text) + if a:text == 'exit' + close + endif + let g:entered = a:text + endfunc + call prompt_setcallback(bufnr(), function('s:TextEntered')) + + func DoAppend() + call appendbufline('prompt', '$', 'Test') + return '' + endfunc + ]]) + feed('asomething<CR>') + eq('something', meths.get_var('entered')) + neq(prev_win, meths.get_current_win()) + feed('exit<CR>') + eq(prev_win, meths.get_current_win()) + eq({ mode = 'n', blocking = false }, meths.get_mode()) + command('call DoAppend()') + eq({ mode = 'n', blocking = false }, meths.get_mode()) + feed('i') + eq({ mode = 'i', blocking = false }, meths.get_mode()) + command('call DoAppend()') + eq({ mode = 'i', blocking = false }, meths.get_mode()) end) end) |