patch 8.2.3236: mode() does not indicate using CTRL-O in Select mode

Problem:    mode() does not indicate using CTRL-O in Select mode.
Solution:   Use "vs" and similar. (closes #8640)
diff --git a/src/globals.h b/src/globals.h
index 5299014..ebf236b 100644
--- a/src/globals.h
+++ b/src/globals.h
@@ -882,6 +882,8 @@
 				// whether Visual mode is active
 EXTERN int	VIsual_select INIT(= FALSE);
 				// whether Select mode is active
+EXTERN int	restart_VIsual_select INIT(= 0);
+				// restart Select mode when next cmd finished
 EXTERN int	VIsual_reselect;
 				// whether to restart the selection after a
 				// Select mode mapping or menu
diff --git a/src/misc1.c b/src/misc1.c
index 7d7f022..9708502 100644
--- a/src/misc1.c
+++ b/src/misc1.c
@@ -652,7 +652,11 @@
 	if (VIsual_select)
 	    buf[0] = VIsual_mode + 's' - 'v';
 	else
+	{
 	    buf[0] = VIsual_mode;
+	    if (restart_VIsual_select)
+	        buf[1] = 's';
+	}
     }
     else if (State == HITRETURN || State == ASKMORE || State == SETWSIZE
 		|| State == CONFIRM)
diff --git a/src/normal.c b/src/normal.c
index 74c76b2..0e1e118 100644
--- a/src/normal.c
+++ b/src/normal.c
@@ -15,7 +15,6 @@
 #include "vim.h"
 
 static int	VIsual_mode_orig = NUL;		// saved Visual mode
-static int	restart_VIsual_select = 0;
 
 #ifdef FEAT_EVAL
 static void	set_vcount_ca(cmdarg_T *cap, int *set_prevcount);
diff --git a/src/testdir/test_functions.vim b/src/testdir/test_functions.vim
index 6f2797c..de2db41 100644
--- a/src/testdir/test_functions.vim
+++ b/src/testdir/test_functions.vim
@@ -746,6 +746,7 @@
   set complete=.
 
   inoremap <F2> <C-R>=Save_mode()<CR>
+  xnoremap <F2> <Cmd>call Save_mode()<CR>
 
   normal! 3G
   exe "normal i\<F2>\<Esc>"
@@ -857,6 +858,14 @@
   call assert_equal("\<C-S>", mode(1))
   call feedkeys("\<Esc>", 'xt')
 
+  " v_CTRL-O
+  exe "normal gh\<C-O>\<F2>\<Esc>"
+  call assert_equal("v-vs", g:current_modes)
+  exe "normal gH\<C-O>\<F2>\<Esc>"
+  call assert_equal("V-Vs", g:current_modes)
+  exe "normal g\<C-H>\<C-O>\<F2>\<Esc>"
+  call assert_equal("\<C-V>-\<C-V>s", g:current_modes)
+
   call feedkeys(":echo \<C-R>=Save_mode()\<C-U>\<CR>", 'xt')
   call assert_equal('c-c', g:current_modes)
   call feedkeys("gQecho \<C-R>=Save_mode()\<CR>\<CR>vi\<CR>", 'xt')
@@ -867,6 +876,7 @@
 
   bwipe!
   iunmap <F2>
+  xunmap <F2>
   set complete&
 endfunc
 
diff --git a/src/version.c b/src/version.c
index ea232c3..ed3d516 100644
--- a/src/version.c
+++ b/src/version.c
@@ -756,6 +756,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    3236,
+/**/
     3235,
 /**/
     3234,