mirror of
https://github.com/vim/vim.git
synced 2025-07-26 11:04:33 -04:00
patch 8.2.4645: 'shortmess' changed when session does not store options
Problem: 'shortmess' changed when session does not store options. Solution: Save and restore 'shortmess' if needed. (James Charti, closes #10037)
This commit is contained in:
parent
1624639ec8
commit
fd01280d01
@ -686,6 +686,11 @@ makeopens(
|
||||
if (put_line(fd, "endif") == FAIL)
|
||||
goto fail;
|
||||
|
||||
// save 'shortmess' if not storing options
|
||||
if ((ssop_flags & SSOP_OPTIONS) == 0
|
||||
&& put_line(fd, "let s:shortmess_save = &shortmess") == FAIL)
|
||||
goto fail;
|
||||
|
||||
// Now save the current files, current buffer first.
|
||||
if (put_line(fd, "set shortmess=aoO") == FAIL)
|
||||
goto fail;
|
||||
@ -956,10 +961,23 @@ makeopens(
|
||||
if (put_line(fd, "unlet! s:wipebuf") == FAIL)
|
||||
goto fail;
|
||||
|
||||
// Re-apply 'winheight', 'winwidth' and 'shortmess'.
|
||||
if (fprintf(fd, "set winheight=%ld winwidth=%ld shortmess=%s",
|
||||
p_wh, p_wiw, p_shm) < 0 || put_eol(fd) == FAIL)
|
||||
// Re-apply 'winheight' and 'winwidth'.
|
||||
if (fprintf(fd, "set winheight=%ld winwidth=%ld",
|
||||
p_wh, p_wiw) < 0 || put_eol(fd) == FAIL)
|
||||
goto fail;
|
||||
|
||||
// Restore 'shortmess'.
|
||||
if (ssop_flags & SSOP_OPTIONS)
|
||||
{
|
||||
if (fprintf(fd, "set shortmess=%s", p_shm) < 0 || put_eol(fd) == FAIL)
|
||||
goto fail;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (put_line(fd, "let &shortmess = s:shortmess_save") == FAIL)
|
||||
goto fail;
|
||||
}
|
||||
|
||||
if (tab_firstwin->w_next != NULL)
|
||||
{
|
||||
// Restore 'winminheight' and 'winminwidth'.
|
||||
|
@ -1007,6 +1007,49 @@ func Test_mksession_winminheight()
|
||||
set sessionoptions&
|
||||
endfunc
|
||||
|
||||
" Test for mksession with and without options restores shortmess
|
||||
func Test_mksession_shortmess()
|
||||
" Without options
|
||||
set sessionoptions-=options
|
||||
split
|
||||
mksession! Xtest_mks.out
|
||||
let found_save = 0
|
||||
let found_restore = 0
|
||||
let lines = readfile('Xtest_mks.out')
|
||||
for line in lines
|
||||
let line = trim(line)
|
||||
|
||||
if line ==# 'let s:shortmess_save = &shortmess'
|
||||
let found_save += 1
|
||||
endif
|
||||
|
||||
if found_save !=# 0 && line ==# 'let &shortmess = s:shortmess_save'
|
||||
let found_restore += 1
|
||||
endif
|
||||
endfor
|
||||
call assert_equal(1, found_save)
|
||||
call assert_equal(1, found_restore)
|
||||
call delete('Xtest_mks.out')
|
||||
close
|
||||
set sessionoptions&
|
||||
|
||||
" With options
|
||||
set sessionoptions+=options
|
||||
split
|
||||
mksession! Xtest_mks.out
|
||||
let found_restore = 0
|
||||
let lines = readfile('Xtest_mks.out')
|
||||
for line in lines
|
||||
if line =~# 's:shortmess_save'
|
||||
let found_restore += 1
|
||||
endif
|
||||
endfor
|
||||
call assert_equal(0, found_restore)
|
||||
call delete('Xtest_mks.out')
|
||||
close
|
||||
set sessionoptions&
|
||||
endfunc
|
||||
|
||||
" Test for mksession with 'compatible' option
|
||||
func Test_mksession_compatible()
|
||||
mksession! Xtest_mks1.out
|
||||
|
@ -750,6 +750,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
4645,
|
||||
/**/
|
||||
4644,
|
||||
/**/
|
||||
|
Loading…
x
Reference in New Issue
Block a user