Patch 9.0.0077
Problem:    When switching window in autocmd the restored cursor position may
            be wrong.
Solution:   Do not restore the cursor if it was not set. (closes #10775)
Files:      src/window.c, src/testdir/test_autocmd.vim,
            src/testdir/dumps/Test_autocmd_nested_switch.dump


*** ../vim-9.0.0076/src/window.c        2022-07-23 09:06:23.620970749 +0100
--- src/window.c        2022-07-26 13:42:51.188077625 +0100
***************
*** 6832,6841 ****
      FOR_ALL_TAB_WINDOWS(tp, wp)
        if (wp->w_buffer == curbuf)
        {
!           // Restore the value if the autocommand didn't change it.
!           if (EQUAL_POS(wp->w_save_cursor.w_cursor_corr, wp->w_cursor))
                wp->w_cursor = wp->w_save_cursor.w_cursor_save;
!           if (wp->w_save_cursor.w_topline_corr == wp->w_topline)
                wp->w_topline = wp->w_save_cursor.w_topline_save;
        }
  }
--- 6832,6844 ----
      FOR_ALL_TAB_WINDOWS(tp, wp)
        if (wp->w_buffer == curbuf)
        {
!           // Restore the value if the autocommand didn't change it and it was
!           // set.
!           if (EQUAL_POS(wp->w_save_cursor.w_cursor_corr, wp->w_cursor)
!                                 && wp->w_save_cursor.w_cursor_save.lnum != 0)
                wp->w_cursor = wp->w_save_cursor.w_cursor_save;
!           if (wp->w_save_cursor.w_topline_corr == wp->w_topline
!                                     && wp->w_save_cursor.w_topline_save != 0)
                wp->w_topline = wp->w_save_cursor.w_topline_save;
        }
  }
*** ../vim-9.0.0076/src/testdir/test_autocmd.vim        2022-07-23 
09:06:23.624970753 +0100
--- src/testdir/test_autocmd.vim        2022-07-26 13:38:09.004441383 +0100
***************
*** 2317,2325 ****
--- 2317,2346 ----
      au!
    augroup END
    set laststatus&
+   cclose
    bwipe!
  endfunc
  
+ func Test_autocmd_nested_switch_window()
+   " run this in a separate Vim so that SafeState works
+   CheckRunVimInTerminal
+ 
+   let lines =<< trim END
+       vim9script
+       ['()']->writefile('Xautofile')
+       autocmd VimEnter * ++nested edit Xautofile | split
+       autocmd BufReadPost * autocmd SafeState * ++once foldclosed('.')
+       autocmd WinEnter * matchadd('ErrorMsg', 'pat')
+   END
+   call writefile(lines, 'Xautoscript')
+   let buf = RunVimInTerminal('-S Xautoscript', {'rows': 10})
+   call VerifyScreenDump(buf, 'Test_autocmd_nested_switch', {})
+ 
+   call StopVimInTerminal(buf)
+   call delete('Xautofile')
+   call delete('Xautoscript')
+ endfunc
+ 
  func Test_autocmd_once()
    " Without ++once WinNew triggers twice
    let g:did_split = 0
***************
*** 2631,2637 ****
  
  func Test_autocmd_SafeState()
    CheckRunVimInTerminal
-   let g:test_is_flaky = 1
  
    let lines =<< trim END
        let g:safe = 0
--- 2652,2657 ----
*** ../vim-9.0.0076/src/testdir/dumps/Test_autocmd_nested_switch.dump   
2022-07-26 13:46:23.067773251 +0100
--- src/testdir/dumps/Test_autocmd_nested_switch.dump   2022-07-26 
13:40:10.144292559 +0100
***************
*** 0 ****
--- 1,10 ----
+ >(+0&#ffffff0|)| @72
+ |~+0#4040ff13&| @73
+ |~| @73
+ |~| @73
+ |X+3#0000000&|a|u|t|o|f|i|l|e| @47|1|,|1| @11|A|l@1
+ |(+0&&|)| @72
+ |~+0#4040ff13&| @73
+ |~| @73
+ |X+1#0000000&|a|u|t|o|f|i|l|e| @47|1|,|1| @11|A|l@1
+ |"+0&&|X|a|u|t|o|f|i|l|e|"| |1|L|,| |3|B| @56
*** ../vim-9.0.0076/src/version.c       2022-07-26 12:24:38.242801624 +0100
--- src/version.c       2022-07-26 12:58:58.614932736 +0100
***************
*** 737,738 ****
--- 737,740 ----
  {   /* Add new patch number below this line */
+ /**/
+     77,
  /**/

-- 
hundred-and-one symptoms of being an internet addict:
133. You communicate with people on other continents more than you
     do with your own neighbors.

 /// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net   \\\
///                                                                      \\\
\\\        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/20220726124737.890801C07D3%40moolenaar.net.

Raspunde prin e-mail lui