1
0
forked from aniani/vim

patch 8.1.0920: in Terminal-Normal mode job output messes up the window

Problem:    In Terminal-Normal mode job output messes up the window.
Solution:   Postpone scrolling and updating the buffer when in Terminal-Normal
            mode.
This commit is contained in:
Bram Moolenaar
2019-02-14 21:22:01 +01:00
parent 0f77d6afd5
commit 29ae223ddc
6 changed files with 242 additions and 33 deletions

View File

@@ -0,0 +1,20 @@
|4+0&#ffffff0|2| @72
|4|3| @72
|4@1| @72
|4|5| @72
|4|6| @72
|4|7| @72
|4|8| @72
>4|9| @72
|~+0#4040ff13&| @73
|!+2#ffffff16#00e0003|/|b|i|n|/|t|c|s|h| |[|T|e|r|m|i|n|a|l|]| @35|5|2|,|1| @10|B|o|t
| +0#0000000#ffffff0@74
|~+0#4040ff13&| @73
|~| @73
|~| @73
|~| @73
|~| @73
|~| @73
|~| @73
|[+1#0000000&|N|o| |N|a|m|e|]| @47|0|,|0|-|1| @9|A|l@1
| +0&&@74

View File

@@ -0,0 +1,20 @@
|4+0&#ffffff0|2| @72
|4|3| @72
|4@1| @72
|4|5| @72
|4|6| @72
|4|7| @72
>4|8| @72
|4|9| @72
|~+0#4040ff13&| @73
|!+2#ffffff16#00e0003|/|b|i|n|/|t|c|s|h| |[|T|e|r|m|i|n|a|l|]| @35|5|1|,|1| @10|B|o|t
| +0#0000000#ffffff0@74
|~+0#4040ff13&| @73
|~| @73
|~| @73
|~| @73
|~| @73
|~| @73
|~| @73
|[+1#0000000&|N|o| |N|a|m|e|]| @47|0|,|0|-|1| @9|A|l@1
| +0&&@74

View File

@@ -0,0 +1,20 @@
|4+0&#ffffff0|3| @72
|4@1| @72
|4|5| @72
|4|6| @72
|4|7| @72
|4|8| @72
|4|9| @72
|o|n|e| |m|o|r|e| |l|i|n|e| @61
> @74
|!+2#ffffff16#00e0003|/|b|i|n|/|t|c|s|h| |[|r|u|n@1|i|n|g|]| @36|4@1|,|1| @10|B|o|t
| +0#0000000#ffffff0@74
|~+0#4040ff13&| @73
|~| @73
|~| @73
|~| @73
|~| @73
|~| @73
|~| @73
|[+1#0000000&|N|o| |N|a|m|e|]| @47|0|,|0|-|1| @9|A|l@1
| +0&&@74

View File

@@ -299,6 +299,44 @@ func Test_terminal_scrollback()
call term_wait(buf)
exe buf . 'bwipe'
set termwinscroll&
call delete('Xtext')
endfunc
func Test_terminal_postponed_scrollback()
if !has('unix')
" tail -f only works on Unix
return
endif
call writefile(range(50), 'Xtext')
call writefile([
\ 'terminal',
\ 'call feedkeys("tail -n 100 -f Xtext\<CR>", "xt")',
\ 'sleep 100m',
\ 'call feedkeys("\<C-W>N", "xt")',
\ ], 'XTest_postponed')
let buf = RunVimInTerminal('-S XTest_postponed', {})
" Check that the Xtext lines are displayed and in Terminal-Normal mode
call VerifyScreenDump(buf, 'Test_terminal_01', {})
silent !echo 'one more line' >>Xtext
" Sceen will not change, move cursor to get a different dump
call term_sendkeys(buf, "k")
call VerifyScreenDump(buf, 'Test_terminal_02', {})
" Back to Terminal-Job mode, text will scroll and show the extra line.
call term_sendkeys(buf, "a")
call VerifyScreenDump(buf, 'Test_terminal_03', {})
call term_wait(buf)
call term_sendkeys(buf, "\<C-C>")
call term_wait(buf)
call term_sendkeys(buf, "exit\<CR>")
call term_wait(buf)
call term_sendkeys(buf, ":q\<CR>")
call StopVimInTerminal(buf)
call delete('XTest_postponed')
call delete('Xtext')
endfunc
func Test_terminal_size()
@@ -1512,6 +1550,8 @@ func Test_terminal_termwinkey()
let job = term_getjob(buf)
call feedkeys("\<C-L>\<C-C>", 'tx')
call WaitForAssert({-> assert_equal("dead", job_status(job))})
set termwinkey&
endfunc
func Test_terminal_out_err()