aboutsummaryrefslogtreecommitdiff
path: root/test/functional/legacy/prompt_buffer_spec.lua
diff options
context:
space:
mode:
authorJosh Rahm <joshuarahm@gmail.com>2023-11-30 20:35:25 +0000
committerJosh Rahm <joshuarahm@gmail.com>2023-11-30 20:35:25 +0000
commit1b7b916b7631ddf73c38e3a0070d64e4636cb2f3 (patch)
treecd08258054db80bb9a11b1061bb091c70b76926a /test/functional/legacy/prompt_buffer_spec.lua
parenteaa89c11d0f8aefbb512de769c6c82f61a8baca3 (diff)
parent4a8bf24ac690004aedf5540fa440e788459e5e34 (diff)
downloadrneovim-aucmd_textputpost.tar.gz
rneovim-aucmd_textputpost.tar.bz2
rneovim-aucmd_textputpost.zip
Merge remote-tracking branch 'upstream/master' into aucmd_textputpostaucmd_textputpost
Diffstat (limited to 'test/functional/legacy/prompt_buffer_spec.lua')
-rw-r--r--test/functional/legacy/prompt_buffer_spec.lua133
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)