diff options
author | zeertzjq <zeertzjq@outlook.com> | 2023-04-03 08:36:14 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-04-03 08:36:14 +0800 |
commit | 10baf89712724b4b95f7c641f2012f051737003c (patch) | |
tree | eec22a0282d1c291ea54d3d0d4a7dd1feb2b91c9 /test/functional/legacy/prompt_buffer_spec.lua | |
parent | 53f36806f1b5107c0570ffbf57180a8e08f45b2e (diff) | |
download | rneovim-10baf89712724b4b95f7c641f2012f051737003c.tar.gz rneovim-10baf89712724b4b95f7c641f2012f051737003c.tar.bz2 rneovim-10baf89712724b4b95f7c641f2012f051737003c.zip |
vim-patch:9.0.1439: start Insert mode when accessing a hidden prompt buffer (#22867)
Problem: Start Insert mode when accessing a hidden prompt buffer.
Solution: Call leaving_window() in aucmd_restbuf(). (Thorben Tröbst,
closes vim/vim#12148, closes vim/vim#12147)
https://github.com/vim/vim/commit/cde8de034524d00aba4ff4142e658baff511e12d
Cherry-pick test_prompt_buffer.vim changes from patch 9.0.0631.
Co-authored-by: orbital <orbital@holgerines.de>
Diffstat (limited to 'test/functional/legacy/prompt_buffer_spec.lua')
-rw-r--r-- | test/functional/legacy/prompt_buffer_spec.lua | 45 |
1 files changed, 41 insertions, 4 deletions
diff --git a/test/functional/legacy/prompt_buffer_spec.lua b/test/functional/legacy/prompt_buffer_spec.lua index 602593d632..6c72cde855 100644 --- a/test/functional/legacy/prompt_buffer_spec.lua +++ b/test/functional/legacy/prompt_buffer_spec.lua @@ -3,9 +3,11 @@ local Screen = require('test.functional.ui.screen') local feed = helpers.feed local source = helpers.source local clear = helpers.clear +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 @@ -14,9 +16,11 @@ describe('prompt buffer', function() clear() screen = Screen.new(25, 10) screen:attach() - source([[ - set laststatus=0 nohidden + 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. @@ -63,7 +67,7 @@ describe('prompt buffer', function() ~ | -- INSERT -- | ]]) - end) + end after_each(function() screen:detach() @@ -71,6 +75,7 @@ describe('prompt buffer', function() -- oldtest: Test_prompt_basic() it('works', function() + source_script() feed("hello\n") screen:expect([[ cmd: hello | @@ -101,6 +106,7 @@ describe('prompt buffer', function() -- oldtest: Test_prompt_editing() it('editing', function() + source_script() feed("hello<BS><BS>") screen:expect([[ cmd: hel^ | @@ -170,6 +176,7 @@ describe('prompt buffer', function() -- oldtest: Test_prompt_switch_windows() it('switch windows', function() + source_script() feed("<C-O>:call SwitchWindows()<CR>") screen:expect{grid=[[ cmd: | @@ -213,11 +220,41 @@ describe('prompt buffer', function() -- 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'])}) ]] 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') + 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()) + command('call DoAppend()') + eq({ mode = 'n', blocking = false }, meths.get_mode()) end) end) |