diff src/ex_getln.c @ 31412:742b7bf2fefc v9.0.1039

patch 9.0.1039: using a <Cmd> mapping CmdlineChanged may be triggered twice Commit: https://github.com/vim/vim/commit/bb393d8259af8aec095e96d81624a16ed9f25005 Author: Bram Moolenaar <Bram@vim.org> Date: Fri Dec 9 12:21:50 2022 +0000 patch 9.0.1039: using a <Cmd> mapping CmdlineChanged may be triggered twice Problem: Using a <Cmd> mapping CmdlineChanged may be triggered twice. Solution: Count the number of times CmdlineChanged is triggered and avoid doing it twice. (closes #116820
author Bram Moolenaar <Bram@vim.org>
date Fri, 09 Dec 2022 13:30:05 +0100
parents f09c92cf3786
children ca083d0199c6
line wrap: on
line diff
--- a/src/ex_getln.c
+++ b/src/ex_getln.c
@@ -1785,11 +1785,13 @@ getcmdline_int(
 
 	if (c == K_COMMAND || c == K_SCRIPT_COMMAND)
 	{
-	    int	    clen = ccline.cmdlen;
+	    int	    cc_count = aucmd_cmdline_changed_count;
 
 	    if (do_cmdkey_command(c, DOCMD_NOWAIT) == OK)
 	    {
-		if (clen == ccline.cmdlen)
+		// Do not trigger CmdlineChanged below if the <Cmd> mapping
+		// already did that.
+		if (cc_count != aucmd_cmdline_changed_count)
 		    trigger_cmdlinechanged = FALSE;
 		goto cmdline_changed;
 	    }