# HG changeset patch # User Bram Moolenaar # Date 1652908502 -7200 # Node ID 6c67aeb82b65b7b192e900797920571f71b1b28d # Parent 868e70a39d73df2d10a96ae7068e652f9b626a50 patch 8.2.4980: when 'shortmess' contains 'A' loading session may still warn Commit: https://github.com/vim/vim/commit/aaadb5b6f76ea03e5eb460121f3dbf46ad04ce50 Author: Bram Moolenaar Date: Wed May 18 22:07:47 2022 +0100 patch 8.2.4980: when 'shortmess' contains 'A' loading session may still warn Problem: When 'shortmess' contains 'A' loading a session may still warn for an existing swap file. (Melker ?sterberg) Solution: Keep the 'A' flag to 'shortmess' in the session file. (closes #10443) diff --git a/src/session.c b/src/session.c --- a/src/session.c +++ b/src/session.c @@ -692,10 +692,15 @@ makeopens( && 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) + // set 'shortmess' for the following. Add the 'A' flag if it was there + if (put_line(fd, "if &shortmess =~ 'A'") == FAIL + || put_line(fd, " set shortmess=aoOA") == FAIL + || put_line(fd, "else") == FAIL + || put_line(fd, " set shortmess=aoO") == FAIL + || put_line(fd, "endif") == FAIL) goto fail; + // Now save the current files, current buffer first. // Put all buffers into the buffer list. // Do it very early to preserve buffer order after loading session (which // can be disrupted by prior `edit` or `tabedit` calls). diff --git a/src/testdir/test_mksession.vim b/src/testdir/test_mksession.vim --- a/src/testdir/test_mksession.vim +++ b/src/testdir/test_mksession.vim @@ -1078,6 +1078,28 @@ func Test_mksession_shortmess() set sessionoptions& endfunc +" Test that when Vim loading session has 'A' in 'shortmess' it does not +" complain about an existing swapfile. +func Test_mksession_shortmess_with_A() + edit Xtestfile + write + let fname = swapname('%') + let cont = readblob(fname) + set sessionoptions-=options + mksession Xtestsession + bwipe! + + " Recreate the swap file to pretend the file is being edited + call writefile(cont, fname) + set shortmess+=A + source Xtestsession + + set shortmess& + set sessionoptions& + call delete('Xtestsession') + call delete(fname) +endfunc + " Test for mksession with 'compatible' option func Test_mksession_compatible() mksession! Xtest_mks1.out diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -747,6 +747,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 4980, +/**/ 4979, /**/ 4978,