mirror of
https://github.com/vim/vim.git
synced 2025-10-12 06:44:06 -04:00
patch 8.1.2279: computation of highlight attributes is too complicated
Problem: Computation of highlight attributes is too complicated. Solution: Simplify the attribute computation and make it more consistent. (closes #5190) Fix that 'combine' set to zero doesn't work.
This commit is contained in:
@@ -1470,6 +1470,16 @@ win_line(
|
|||||||
# endif
|
# endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
# ifdef FEAT_TEXT_PROP
|
||||||
|
// Combine text property highlight into syntax highlight.
|
||||||
|
if (text_prop_type != NULL)
|
||||||
|
{
|
||||||
|
if (text_prop_combine)
|
||||||
|
syntax_attr = hl_combine_attr(syntax_attr, text_prop_attr);
|
||||||
|
else
|
||||||
|
syntax_attr = text_prop_attr;
|
||||||
|
}
|
||||||
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Decide which of the highlight attributes to use.
|
// Decide which of the highlight attributes to use.
|
||||||
@@ -1479,28 +1489,16 @@ win_line(
|
|||||||
{
|
{
|
||||||
char_attr = hl_combine_attr(line_attr, area_attr);
|
char_attr = hl_combine_attr(line_attr, area_attr);
|
||||||
# ifdef FEAT_SYN_HL
|
# ifdef FEAT_SYN_HL
|
||||||
if (syntax_attr != 0)
|
char_attr = hl_combine_attr(syntax_attr, char_attr);
|
||||||
char_attr = hl_combine_attr(syntax_attr, char_attr);
|
|
||||||
# endif
|
# endif
|
||||||
}
|
}
|
||||||
else if (search_attr != 0)
|
else if (search_attr != 0)
|
||||||
{
|
{
|
||||||
char_attr = hl_combine_attr(line_attr, search_attr);
|
char_attr = hl_combine_attr(line_attr, search_attr);
|
||||||
# ifdef FEAT_SYN_HL
|
# ifdef FEAT_SYN_HL
|
||||||
if (syntax_attr != 0)
|
char_attr = hl_combine_attr(syntax_attr, char_attr);
|
||||||
char_attr = hl_combine_attr(syntax_attr, char_attr);
|
|
||||||
# endif
|
# endif
|
||||||
}
|
}
|
||||||
# ifdef FEAT_TEXT_PROP
|
|
||||||
else if (text_prop_type != NULL)
|
|
||||||
{
|
|
||||||
char_attr = hl_combine_attr(line_attr != 0
|
|
||||||
? line_attr
|
|
||||||
: syntax_attr != 0
|
|
||||||
? syntax_attr
|
|
||||||
: win_attr, text_prop_attr);
|
|
||||||
}
|
|
||||||
# endif
|
|
||||||
else if (line_attr != 0 && ((fromcol == -10 && tocol == MAXCOL)
|
else if (line_attr != 0 && ((fromcol == -10 && tocol == MAXCOL)
|
||||||
|| vcol < fromcol || vcol_prev < fromcol_prev
|
|| vcol < fromcol || vcol_prev < fromcol_prev
|
||||||
|| vcol >= tocol))
|
|| vcol >= tocol))
|
||||||
@@ -1508,11 +1506,10 @@ win_line(
|
|||||||
// Use line_attr when not in the Visual or 'incsearch' area
|
// Use line_attr when not in the Visual or 'incsearch' area
|
||||||
// (area_attr may be 0 when "noinvcur" is set).
|
// (area_attr may be 0 when "noinvcur" is set).
|
||||||
# ifdef FEAT_SYN_HL
|
# ifdef FEAT_SYN_HL
|
||||||
if (syntax_attr != 0)
|
char_attr = hl_combine_attr(syntax_attr, line_attr);
|
||||||
char_attr = hl_combine_attr(syntax_attr, line_attr);
|
# else
|
||||||
else
|
char_attr = line_attr;
|
||||||
# endif
|
# endif
|
||||||
char_attr = line_attr;
|
|
||||||
attr_pri = FALSE;
|
attr_pri = FALSE;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
@@ -1524,22 +1521,10 @@ win_line(
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
attr_pri = FALSE;
|
attr_pri = FALSE;
|
||||||
#ifdef FEAT_TEXT_PROP
|
|
||||||
if (text_prop_type != NULL)
|
|
||||||
{
|
|
||||||
if (text_prop_combine)
|
|
||||||
char_attr = hl_combine_attr(
|
|
||||||
syntax_attr, text_prop_attr);
|
|
||||||
else
|
|
||||||
char_attr = hl_combine_attr(
|
|
||||||
win_attr, text_prop_attr);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
#endif
|
|
||||||
#ifdef FEAT_SYN_HL
|
#ifdef FEAT_SYN_HL
|
||||||
char_attr = syntax_attr;
|
char_attr = syntax_attr;
|
||||||
#else
|
#else
|
||||||
char_attr = 0;
|
char_attr = 0;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
| +0#af5f00255#ffffff0@1|1| |O+0#0000000&|n|e| +0&#ffff4012|t|w|o| +0&#ffffff0@63
|
| +0#af5f00255#ffffff0@1|1| |O+0#0000000&|n|e| +0&#ffff4012|t|w|o| +0&#ffffff0@63
|
||||||
| +0#af5f00255&@1|2| |N+0#0000000#ffff4012|u|m|b|é|r| |1+0#4040ff13&|2|3| +0#0000000&|ä|n|d| |t|h|œ|n| |4+0#4040ff13&|¾|7|.+0#0000000&| +0&#ffffff0@46
|
| +0#af5f00255&@1|2| |N+0#0000000#ffff4012|u|m|b|é|r| |1+0#4040ff13&|2|3| +0#0000000&|ä|n|d| |t|h|œ|n| |4+0#4040ff13&|¾|7|.+0#0000000&| +0&#ffffff0@46
|
||||||
| +8#af5f00255&@1|3| >-+8#0000000#ffff4012|x+8&#ffffff0|a+8#4040ff13&@1|x+8#0000000&|-@1|x+8#4040ff13&|b@1|x+8#0000000&|-@1|x|c+8#4040ff13&@1|x|-+8#0000000&@1|x+8#4040ff13&|d@1|x|-+8#0000000&@1| @45
|
| +8#af5f00255&@1|3| >-+8#0000000#ffff4012|x+8&#ffffff0|a+8#4040ff13&@1|x+8#0000000&|-@1|x+8#4040ff13&|b@1|x+8#0000000&|-@1|x|c+8#4040ff13&@1|x|-+8#0000000&@1|x+8#4040ff13&|d@1|x|-+8#0000000&@1| @45
|
||||||
| +0#af5f00255&@1|4| |/+0#40ff4011&@1| |c|o|m@1|e|n|t| |w+0&#e0e0e08|i|t|h| |e+8&&|r@1|o|r| +0&#ffffff0|i|n| |i|t| +0#0000000&@43
|
| +0#af5f00255&@1|4| |/+0#40ff4011&@1| |c|o|m+0#0000000#e0e0e08@1|e|n+0#40ff4011#ffffff0|t| |w+0&#e0e0e08|i|t|h| |e+8&&|r@1|o|r| +0&#ffffff0|i|n| |i|t| +0#0000000&@43
|
||||||
| +0#af5f00255&@1|5| |f+0#0000000&|i|r|s|t| |l+0&#ffff4012|i|n|e| @1|s|e|c|o|n|d| +0&#ffffff0|l|i|n|e| @1|t|h|i|r|d| |l|i|n|e| |f|o|u|r|t|h| |l+0&#ffff4012|i|n|e| +0&#ffffff0@23
|
| +0#af5f00255&@1|5| |f+0#0000000&|i|r|s|t| |l+0&#ffff4012|i|n|e| @1|s|e|c|o|n|d| +0&#ffffff0|l|i|n|e| @1|t|h|i|r|d| |l|i|n|e| |f|o|u|r|t|h| |l+0&#ffff4012|i|n|e| +0&#ffffff0@23
|
||||||
|~+0#4040ff13&| @73
|
|~+0#4040ff13&| @73
|
||||||
|~| @73
|
|~| @73
|
||||||
|
@@ -678,8 +678,9 @@ func Test_textprop_screenshot_various()
|
|||||||
\ "call prop_type_add('start', {'highlight': 'NumberProp', 'start_incl': 1})",
|
\ "call prop_type_add('start', {'highlight': 'NumberProp', 'start_incl': 1})",
|
||||||
\ "call prop_type_add('end', {'highlight': 'NumberProp', 'end_incl': 1})",
|
\ "call prop_type_add('end', {'highlight': 'NumberProp', 'end_incl': 1})",
|
||||||
\ "call prop_type_add('both', {'highlight': 'NumberProp', 'start_incl': 1, 'end_incl': 1})",
|
\ "call prop_type_add('both', {'highlight': 'NumberProp', 'start_incl': 1, 'end_incl': 1})",
|
||||||
\ "call prop_type_add('background', {'highlight': 'NumberProp', 'combine': 1})",
|
\ "call prop_type_add('background', {'highlight': 'BackgroundProp', 'combine': 0})",
|
||||||
\ "eval 'background'->prop_type_change({'highlight': 'BackgroundProp'})",
|
\ "call prop_type_add('backgroundcomb', {'highlight': 'NumberProp', 'combine': 1})",
|
||||||
|
\ "eval 'backgroundcomb'->prop_type_change({'highlight': 'BackgroundProp'})",
|
||||||
\ "call prop_type_add('error', {'highlight': 'UnderlineProp', 'combine': 1})",
|
\ "call prop_type_add('error', {'highlight': 'UnderlineProp', 'combine': 1})",
|
||||||
\ "call prop_add(1, 4, {'end_lnum': 3, 'end_col': 3, 'type': 'long'})",
|
\ "call prop_add(1, 4, {'end_lnum': 3, 'end_col': 3, 'type': 'long'})",
|
||||||
\ "call prop_add(2, 9, {'length': 3, 'type': 'number'})",
|
\ "call prop_add(2, 9, {'length': 3, 'type': 'number'})",
|
||||||
@@ -688,7 +689,8 @@ func Test_textprop_screenshot_various()
|
|||||||
\ "call prop_add(3, 7, {'length': 2, 'type': 'start'})",
|
\ "call prop_add(3, 7, {'length': 2, 'type': 'start'})",
|
||||||
\ "call prop_add(3, 11, {'length': 2, 'type': 'end'})",
|
\ "call prop_add(3, 11, {'length': 2, 'type': 'end'})",
|
||||||
\ "call prop_add(3, 15, {'length': 2, 'type': 'both'})",
|
\ "call prop_add(3, 15, {'length': 2, 'type': 'both'})",
|
||||||
\ "call prop_add(4, 12, {'length': 10, 'type': 'background'})",
|
\ "call prop_add(4, 6, {'length': 3, 'type': 'background'})",
|
||||||
|
\ "call prop_add(4, 12, {'length': 10, 'type': 'backgroundcomb'})",
|
||||||
\ "call prop_add(4, 17, {'length': 5, 'type': 'error'})",
|
\ "call prop_add(4, 17, {'length': 5, 'type': 'error'})",
|
||||||
\ "call prop_add(5, 7, {'length': 4, 'type': 'long'})",
|
\ "call prop_add(5, 7, {'length': 4, 'type': 'long'})",
|
||||||
\ "call prop_add(6, 1, {'length': 8, 'type': 'long'})",
|
\ "call prop_add(6, 1, {'length': 8, 'type': 'long'})",
|
||||||
|
@@ -741,6 +741,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 */
|
||||||
|
/**/
|
||||||
|
2279,
|
||||||
/**/
|
/**/
|
||||||
2278,
|
2278,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user