patch 8.2.1988: still in Insert mode when opening terminal popup

Problem:    Still in Insert mode when opening terminal popup with a <Cmd>
            mapping in Insert mode.
Solution:   Exit Insert mode. (closes #7295)
diff --git a/src/edit.c b/src/edit.c
index d92a951..8c5cec3 100644
--- a/src/edit.c
+++ b/src/edit.c
@@ -1033,6 +1033,11 @@
 
 	case K_COMMAND:		// <Cmd>command<CR>
 	    do_cmdline(NULL, getcmdkeycmd, NULL, 0);
+#ifdef FEAT_TERMINAL
+	    if (term_use_loop())
+		// Started a terminal that gets the input, exit Insert mode.
+		goto doESCkey;
+#endif
 	    break;
 
 	case K_CURSORHOLD:	// Didn't type something for a while.
diff --git a/src/testdir/test_terminal.vim b/src/testdir/test_terminal.vim
index 8d68ceb..7d6bdbc 100644
--- a/src/testdir/test_terminal.vim
+++ b/src/testdir/test_terminal.vim
@@ -1237,6 +1237,24 @@
   unlet s:winid
 endfunc
 
+func Test_terminal_popup_insert_cmd()
+  CheckUnix
+
+  inoremap <F3> <Cmd>call StartTermInPopup()<CR>
+  func StartTermInPopup()
+    call term_start(['/bin/sh', '-c', 'cat'], #{hidden: v:true})->popup_create(#{highlight: 'Pmenu'})
+  endfunc
+  call feedkeys("i\<F3>")
+  sleep 10m
+  call assert_equal('n', mode())
+
+  call feedkeys("\<C-D>", 'xt')
+  sleep 20m
+  call feedkeys(":q\<CR>", 'xt')
+  delfunc StartTermInPopup
+  iunmap <F3>
+endfunc
+
 func Check_dump01(off)
   call assert_equal('one two three four five', trim(getline(a:off + 1)))
   call assert_equal('~           Select Word', trim(getline(a:off + 7)))
diff --git a/src/version.c b/src/version.c
index b031e63..502a876 100644
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1988,
+/**/
     1987,
 /**/
     1986,