mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
vim-patch:partial:8.0.1592: terminal windows in a session are not properly restored
Problem: Terminal windows in a session are not properly restored.
Solution: Add "terminal" in 'sessionoptions'. When possible restore the
command running in a terminal.
4d8bac8bf5
Tests only. Nvim has no equivalent to "norestore" yet.
Co-authored-by: Bram Moolenaar <Bram@vim.org>
This commit is contained in:
parent
748eae6bb5
commit
4872e2da3c
@ -353,6 +353,108 @@ func Test_mksession_blank_windows()
|
||||
call delete('Xtest_mks.out')
|
||||
endfunc
|
||||
|
||||
if has('terminal')
|
||||
|
||||
func Test_mksession_terminal_shell()
|
||||
terminal
|
||||
mksession! Xtest_mks.out
|
||||
let lines = readfile('Xtest_mks.out')
|
||||
let term_cmd = ''
|
||||
for line in lines
|
||||
if line =~ '^terminal'
|
||||
let term_cmd = line
|
||||
elseif line =~ 'badd.*' . &shell
|
||||
call assert_report('unexpected shell line: ' . line)
|
||||
endif
|
||||
endfor
|
||||
call assert_match('terminal ++curwin ++cols=\d\+ ++rows=\d\+\s*$', term_cmd)
|
||||
|
||||
call Stop_shell_in_terminal(bufnr('%'))
|
||||
call delete('Xtest_mks.out')
|
||||
endfunc
|
||||
|
||||
func Test_mksession_terminal_no_restore_cmdarg()
|
||||
terminal ++norestore
|
||||
mksession! Xtest_mks.out
|
||||
let lines = readfile('Xtest_mks.out')
|
||||
let term_cmd = ''
|
||||
for line in lines
|
||||
if line =~ '^terminal'
|
||||
call assert_report('session must not restore teminal')
|
||||
endif
|
||||
endfor
|
||||
|
||||
call Stop_shell_in_terminal(bufnr('%'))
|
||||
call delete('Xtest_mks.out')
|
||||
endfunc
|
||||
|
||||
func Test_mksession_terminal_no_restore_funcarg()
|
||||
call term_start(&shell, {'norestore': 1})
|
||||
mksession! Xtest_mks.out
|
||||
let lines = readfile('Xtest_mks.out')
|
||||
let term_cmd = ''
|
||||
for line in lines
|
||||
if line =~ '^terminal'
|
||||
call assert_report('session must not restore teminal')
|
||||
endif
|
||||
endfor
|
||||
|
||||
call Stop_shell_in_terminal(bufnr('%'))
|
||||
call delete('Xtest_mks.out')
|
||||
endfunc
|
||||
|
||||
func Test_mksession_terminal_no_restore_func()
|
||||
terminal
|
||||
call term_setrestore(bufnr('%'), 'NONE')
|
||||
mksession! Xtest_mks.out
|
||||
let lines = readfile('Xtest_mks.out')
|
||||
let term_cmd = ''
|
||||
for line in lines
|
||||
if line =~ '^terminal'
|
||||
call assert_report('session must not restore teminal')
|
||||
endif
|
||||
endfor
|
||||
|
||||
call Stop_shell_in_terminal(bufnr('%'))
|
||||
call delete('Xtest_mks.out')
|
||||
endfunc
|
||||
|
||||
func Test_mksession_terminal_no_ssop()
|
||||
terminal
|
||||
set sessionoptions-=terminal
|
||||
mksession! Xtest_mks.out
|
||||
let lines = readfile('Xtest_mks.out')
|
||||
let term_cmd = ''
|
||||
for line in lines
|
||||
if line =~ '^terminal'
|
||||
call assert_report('session must not restore teminal')
|
||||
endif
|
||||
endfor
|
||||
|
||||
call Stop_shell_in_terminal(bufnr('%'))
|
||||
call delete('Xtest_mks.out')
|
||||
set sessionoptions&
|
||||
endfunc
|
||||
|
||||
func Test_mksession_terminal_restore_other()
|
||||
terminal
|
||||
call term_setrestore(bufnr('%'), 'other')
|
||||
mksession! Xtest_mks.out
|
||||
let lines = readfile('Xtest_mks.out')
|
||||
let term_cmd = ''
|
||||
for line in lines
|
||||
if line =~ '^terminal'
|
||||
let term_cmd = line
|
||||
endif
|
||||
endfor
|
||||
call assert_match('terminal ++curwin ++cols=\d\+ ++rows=\d\+ other', term_cmd)
|
||||
|
||||
call Stop_shell_in_terminal(bufnr('%'))
|
||||
call delete('Xtest_mks.out')
|
||||
endfunc
|
||||
|
||||
endif " has('terminal')
|
||||
|
||||
func Test_mkview_open_folds()
|
||||
enew!
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user