patch 9.0.0464: with virtual text "above" indenting doesn't work well

Problem:    With virtual text "above" indenting doesn't work well.
Solution:   Ignore text properties while adjusting indent. (issue #11084)
diff --git a/src/charset.c b/src/charset.c
index a19e55b..c5edaf4 100644
--- a/src/charset.c
+++ b/src/charset.c
@@ -954,7 +954,7 @@
     cts->cts_line = line;
     cts->cts_ptr = ptr;
 #ifdef FEAT_PROP_POPUP
-    if (lnum > 0)
+    if (lnum > 0 && !ignore_text_props)
     {
 	char_u	*prop_start;
 	int	count;
diff --git a/src/globals.h b/src/globals.h
index 3d75e20..5218324 100644
--- a/src/globals.h
+++ b/src/globals.h
@@ -755,6 +755,9 @@
 EXTERN int	popup_uses_mouse_move INIT(= FALSE);
 
 EXTERN int	text_prop_frozen INIT(= 0);
+
+// when TRUE computing the cursor position ignores text properties.
+EXTERN int	ignore_text_props INIT(= FALSE);
 #endif
 
 // When set the popup menu will redraw soon using the pum_win_ values. Do not
diff --git a/src/indent.c b/src/indent.c
index 134336c..51585ec 100644
--- a/src/indent.c
+++ b/src/indent.c
@@ -1289,6 +1289,9 @@
     // for the following tricks we don't want list mode
     save_p_list = curwin->w_p_list;
     curwin->w_p_list = FALSE;
+#ifdef FEAT_PROP_POPUP
+    ignore_text_props = TRUE;
+#endif
     vc = getvcol_nolist(&curwin->w_cursor);
     vcol = vc;
 
@@ -1440,6 +1443,9 @@
 	    ++start_col;
 	}
     }
+#ifdef FEAT_PROP_POPUP
+    ignore_text_props = FALSE;
+#endif
 
     // For MODE_VREPLACE state, we also have to fix the replace stack.  In this
     // case it is always possible because we backspace over the whole line and
diff --git a/src/testdir/test_textprop.vim b/src/testdir/test_textprop.vim
index 5167e8e..0a4037b 100644
--- a/src/testdir/test_textprop.vim
+++ b/src/testdir/test_textprop.vim
@@ -2892,6 +2892,22 @@
   call StopVimInTerminal(buf)
 endfunc
 
+func Test_prop_above_with_indent()
+  new
+  call setline(1, ['first line', '    second line', '    line below'])
+  setlocal cindent
+  call prop_type_add('indented', #{highlight: 'Search'})
+  call prop_add(3, 0, #{type: 'indented', text: 'here', text_align: 'above', text_padding_left: 4})
+  call assert_equal('    line below', getline(3))
+
+  exe "normal 3G2|a\<CR>"
+  call assert_equal('  ', getline(3))
+  call assert_equal('    line below', getline(4))
+
+  bwipe!
+  call prop_type_delete('indented')
+endfunc
+
 func Test_props_with_text_override()
   CheckRunVimInTerminal
 
diff --git a/src/version.c b/src/version.c
index 1c2e49f..45afd9d 100644
--- a/src/version.c
+++ b/src/version.c
@@ -704,6 +704,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    464,
+/**/
     463,
 /**/
     462,