patch 9.1.1413: spurious CursorHold triggered in GUI on startup

Commit: 
https://github.com/vim/vim/commit/318ff9c3627f595905064d11b0d66b63bfe89ff1
Author: Gary Johnson <garyj...@spocom.com>
Date:   Mon May 26 20:10:25 2025 +0200

    patch 9.1.1413: spurious CursorHold triggered in GUI on startup
    
    Problem:  spurious CursorHold triggered in GUI on startup
    Solution: init global did_cursorhold flag to true
              (Gary Johnson)
    
    When Vim is started in GUI mode, the CursorHold autocommand event is
    triggered 'updatetime' milliseconds later, even when the user has not
    pressed a key.  This is different from the behavior of Vim in terminal
    mode, which does not trigger a CursorHold autocommand event at startup,
    and contradicts the description of the CursorHold event in ":help
    CursorHold", which states that the event is "[n]ot triggered until the
    user has pressed a key".
    
    The fix is to change the initial value of did_cursorhold from FALSE to
    TRUE.  While it is true that the CursorDone event has not been done yet
    at startup, it should appear to have been done until the user presses
    a key.
    
    fixes #17350
    closes: #17382
    
    Signed-off-by: Gary Johnson <garyj...@spocom.com>
    Signed-off-by: Christian Brabandt <c...@256bit.org>

diff --git a/src/globals.h b/src/globals.h
index f143c8f90..38e9b8bbf 100644
--- a/src/globals.h
+++ b/src/globals.h
@@ -1614,7 +1614,7 @@ EXTERN int        autocmd_bufnr INIT(= 0);     // fnum 
for <abuf> on cmdline
 EXTERN char_u  *autocmd_match INIT(= NULL); // name for <amatch> on cmdline
 EXTERN int     aucmd_cmdline_changed_count INIT(= 0);
 
-EXTERN int     did_cursorhold INIT(= FALSE); // set when CursorHold t'gerd
+EXTERN int     did_cursorhold INIT(= TRUE);  // set when CursorHold t'gerd
 EXTERN pos_T   last_cursormoved              // for CursorMoved event
 # ifdef DO_INIT
                    = {0, 0, 0}
diff --git a/src/testdir/test_gui.vim b/src/testdir/test_gui.vim
index 9d319960b..fc23db50f 100644
--- a/src/testdir/test_gui.vim
+++ b/src/testdir/test_gui.vim
@@ -1747,4 +1747,26 @@ func Test_gui_csi_keytrans()
   call assert_equal('<C-D>', keytrans("\x9b\xfc\x04D"))
 endfunc
 
+" Test that CursorHold is NOT triggered at startup before a keypress
+func Test_CursorHold_not_triggered_at_startup()
+  defer delete('Xcursorhold.log')
+  defer delete('Xcursorhold_test.vim')
+  call writefile([
+        \ 'set updatetime=300',
+        \ 'let g:cursorhold_triggered = 0',
+        \ 'autocmd CursorHold * let g:cursorhold_triggered += 1 | call 
writefile(["CursorHold triggered"], "Xcursorhold.log", "a")',
+        \ 'call timer_start(400, {-> execute(''call 
writefile(["g:cursorhold_triggered=" . g:cursorhold_triggered], 
"Xcursorhold.log", "a") | qa!'')})',
+        \ ], 'Xcursorhold_test.vim')
+
+  let vimcmd = v:progpath . ' -g -f -N -u NONE -i NONE -S Xcursorhold_test.vim'
+  call system(vimcmd)
+
+  let lines = filereadable('Xcursorhold.log') ? readfile('Xcursorhold.log') : 
[]
+
+  " Assert that CursorHold did NOT trigger at startup
+  call assert_false(index(lines, 'CursorHold triggered') != -1)
+  let found = filter(copy(lines), 'v:val =~ "^g:cursorhold_triggered="')
+  call assert_equal(['g:cursorhold_triggered=0'], found)
+endfunc
+
 " vim: shiftwidth=2 sts=2 expandtab
diff --git a/src/version.c b/src/version.c
index ef919bdd8..adb5654bc 100644
--- a/src/version.c
+++ b/src/version.c
@@ -709,6 +709,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1413,
 /**/
     1412,
 /**/

-- 
-- 
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 vim_dev+unsubscr...@googlegroups.com.
To view this discussion visit 
https://groups.google.com/d/msgid/vim_dev/E1uJcaJ-00H79g-L4%40256bit.org.

Raspunde prin e-mail lui