mirror of
https://github.com/vim/vim.git
synced 2025-09-30 04:44:14 -04:00
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)
This commit is contained in:
@@ -954,7 +954,7 @@ init_chartabsize_arg(
|
|||||||
cts->cts_line = line;
|
cts->cts_line = line;
|
||||||
cts->cts_ptr = ptr;
|
cts->cts_ptr = ptr;
|
||||||
#ifdef FEAT_PROP_POPUP
|
#ifdef FEAT_PROP_POPUP
|
||||||
if (lnum > 0)
|
if (lnum > 0 && !ignore_text_props)
|
||||||
{
|
{
|
||||||
char_u *prop_start;
|
char_u *prop_start;
|
||||||
int count;
|
int count;
|
||||||
|
@@ -755,6 +755,9 @@ EXTERN int popup_visible INIT(= FALSE);
|
|||||||
EXTERN int popup_uses_mouse_move INIT(= FALSE);
|
EXTERN int popup_uses_mouse_move INIT(= FALSE);
|
||||||
|
|
||||||
EXTERN int text_prop_frozen INIT(= 0);
|
EXTERN int text_prop_frozen INIT(= 0);
|
||||||
|
|
||||||
|
// when TRUE computing the cursor position ignores text properties.
|
||||||
|
EXTERN int ignore_text_props INIT(= FALSE);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// When set the popup menu will redraw soon using the pum_win_ values. Do not
|
// When set the popup menu will redraw soon using the pum_win_ values. Do not
|
||||||
|
@@ -1289,6 +1289,9 @@ change_indent(
|
|||||||
// for the following tricks we don't want list mode
|
// for the following tricks we don't want list mode
|
||||||
save_p_list = curwin->w_p_list;
|
save_p_list = curwin->w_p_list;
|
||||||
curwin->w_p_list = FALSE;
|
curwin->w_p_list = FALSE;
|
||||||
|
#ifdef FEAT_PROP_POPUP
|
||||||
|
ignore_text_props = TRUE;
|
||||||
|
#endif
|
||||||
vc = getvcol_nolist(&curwin->w_cursor);
|
vc = getvcol_nolist(&curwin->w_cursor);
|
||||||
vcol = vc;
|
vcol = vc;
|
||||||
|
|
||||||
@@ -1440,6 +1443,9 @@ change_indent(
|
|||||||
++start_col;
|
++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
|
// 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
|
// case it is always possible because we backspace over the whole line and
|
||||||
|
@@ -2892,6 +2892,22 @@ func Test_props_with_text_above()
|
|||||||
call StopVimInTerminal(buf)
|
call StopVimInTerminal(buf)
|
||||||
endfunc
|
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()
|
func Test_props_with_text_override()
|
||||||
CheckRunVimInTerminal
|
CheckRunVimInTerminal
|
||||||
|
|
||||||
|
@@ -703,6 +703,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
464,
|
||||||
/**/
|
/**/
|
||||||
463,
|
463,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user