Mercurial > vim
diff src/testdir/test_prompt_buffer.vim @ 14029:d9fc15c833d5 v8.1.0032
patch 8.1.0032: BS in prompt buffer starts new line
commit https://github.com/vim/vim/commit/6b810d92a9cd9378ab46ea0db07079cb789f9faa
Author: Bram Moolenaar <Bram@vim.org>
Date: Mon Jun 4 17:28:44 2018 +0200
patch 8.1.0032: BS in prompt buffer starts new line
Problem: BS in prompt buffer starts new line.
Solution: Do not allows BS over the prompt. Make term_sendkeys() handle
special keys. Add a test.
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Mon, 04 Jun 2018 17:30:08 +0200 |
parents | eb5ee7479d31 |
children | fba38a3491f5 |
line wrap: on
line diff
--- a/src/testdir/test_prompt_buffer.vim +++ b/src/testdir/test_prompt_buffer.vim @@ -7,16 +7,20 @@ endif source shared.vim source screendump.vim -func Test_prompt_basic() +func CanTestPromptBuffer() " We need to use a terminal window to be able to feed keys without leaving " Insert mode. if !has('terminal') - return + return 0 endif if has('win32') - " TODO: make this work on MS-Windows - return + " TODO: make the tests work on MS-Windows + return 0 endif + return 1 +endfunc + +func WriteScript(name) call writefile([ \ 'func TextEntered(text)', \ ' if a:text == "exit"', @@ -44,8 +48,17 @@ func Test_prompt_basic() \ 'set buftype=prompt', \ 'call prompt_setcallback(bufnr(""), function("TextEntered"))', \ 'startinsert', - \ ], 'Xpromptscript') - let buf = RunVimInTerminal('-S Xpromptscript', {}) + \ ], a:name) +endfunc + +func Test_prompt_basic() + if !CanTestPromptBuffer() + return + endif + let scriptName = 'XpromptscriptBasic' + call WriteScript(scriptName) + + let buf = RunVimInTerminal('-S ' . scriptName, {}) call WaitForAssert({-> assert_equal('%', term_getline(buf, 1))}) call term_sendkeys(buf, "hello\<CR>") @@ -57,5 +70,34 @@ func Test_prompt_basic() call WaitForAssert({-> assert_equal('other buffer', term_getline(buf, 1))}) call StopVimInTerminal(buf) - call delete('Xpromptscript') + call delete(scriptName) endfunc + +func Test_prompt_editing() + if !CanTestPromptBuffer() + return + endif + let scriptName = 'XpromptscriptEditing' + call WriteScript(scriptName) + + let buf = RunVimInTerminal('-S ' . scriptName, {}) + call WaitForAssert({-> assert_equal('%', term_getline(buf, 1))}) + + let bs = "\<BS>" + call term_sendkeys(buf, "hello" . bs . bs) + call WaitForAssert({-> assert_equal('% hel', term_getline(buf, 1))}) + + let left = "\<Left>" + call term_sendkeys(buf, left . left . left . bs . '-') + call WaitForAssert({-> assert_equal('% -hel', term_getline(buf, 1))}) + + let end = "\<End>" + call term_sendkeys(buf, end . "x") + call WaitForAssert({-> assert_equal('% -helx', term_getline(buf, 1))}) + + call term_sendkeys(buf, "\<C-U>exit\<CR>") + call WaitForAssert({-> assert_equal('other buffer', term_getline(buf, 1))}) + + call StopVimInTerminal(buf) + call delete(scriptName) +endfunc