patch 9.1.0511: CursorMovedC triggered wrongly with setcmdpos()

Problem:  CursorMovedC triggered wrongly with setcmdpos()
          (after v9.1.0507)
Solution: Remove the premature triggering.  Also don't trigger when
          cursor didn't move. (zeertzjq)

closes: #15064

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
diff --git a/src/ex_getln.c b/src/ex_getln.c
index 481b450..f05259b 100644
--- a/src/ex_getln.c
+++ b/src/ex_getln.c
@@ -1586,7 +1586,7 @@
     int		res;
     int		save_msg_scroll = msg_scroll;
     int		save_State = State;	// remember State when called
-    int		save_cmdspos = ccline.cmdspos;
+    int		prev_cmdpos = -1;
     int		some_key_typed = FALSE;	// one of the keys was typed
     // mouse drag and release events are ignored, unless they are
     // preceded with a mouse down event
@@ -2474,16 +2474,19 @@
  * (Sorry for the goto's, I know it is ugly).
  */
 cmdline_not_changed:
-	 // Trigger CursorMovedC autocommands.
-	 if (ccline.cmdspos != save_cmdspos)
+	// Trigger CursorMovedC autocommands.
+	if (ccline.cmdpos != prev_cmdpos)
+	{
 	    trigger_cmd_autocmd(cmdline_type, EVENT_CURSORMOVEDC);
-
+	    prev_cmdpos = ccline.cmdpos;
+	}
 #ifdef FEAT_SEARCH_EXTRA
 	if (!is_state.incsearch_postponed)
 	    continue;
 #endif
 
 cmdline_changed:
+	prev_cmdpos = ccline.cmdpos;
 #ifdef FEAT_SEARCH_EXTRA
 	// If the window changed incremental search state is not valid.
 	if (is_state.winid != curwin->w_id)
@@ -4321,9 +4324,6 @@
     else
 	new_cmdpos = pos;
 
-    // Trigger CursorMovedC autocommands.
-    trigger_cmd_autocmd(get_cmdline_type(), EVENT_CURSORMOVEDC);
-
     return 0;
 }