mirror of
https://github.com/neovim/neovim.git
synced 2025-09-23 03:28:33 +00:00
ui: transmit "blend=" property of highlight attributes
This commit is contained in:
@@ -292,6 +292,8 @@ numerical highlight ids to the actual attributes.
|
|||||||
`bold`: bold text.
|
`bold`: bold text.
|
||||||
`underline`: underlined text. The line has `special` color.
|
`underline`: underlined text. The line has `special` color.
|
||||||
`undercurl`: undercurled text. The curl has `special` color.
|
`undercurl`: undercurled text. The curl has `special` color.
|
||||||
|
`blend`: Blend level (0-100). Could be used by UIs to support
|
||||||
|
blending floating windows to the background.
|
||||||
|
|
||||||
For absent color keys the default color should be used. Don't store
|
For absent color keys the default color should be used. Don't store
|
||||||
the default value in the table, rather a sentinel value, so that
|
the default value in the table, rather a sentinel value, so that
|
||||||
|
@@ -233,6 +233,7 @@ int hl_get_underline(void)
|
|||||||
.rgb_fg_color = -1,
|
.rgb_fg_color = -1,
|
||||||
.rgb_bg_color = -1,
|
.rgb_bg_color = -1,
|
||||||
.rgb_sp_color = -1,
|
.rgb_sp_color = -1,
|
||||||
|
.hl_blend = -1,
|
||||||
},
|
},
|
||||||
.kind = kHlUI,
|
.kind = kHlUI,
|
||||||
.id1 = 0,
|
.id1 = 0,
|
||||||
@@ -427,6 +428,8 @@ int hl_blend_attrs(int back_attr, int front_attr, bool *through)
|
|||||||
cattrs.rgb_bg_color = rgb_blend(ratio, battrs.rgb_bg_color,
|
cattrs.rgb_bg_color = rgb_blend(ratio, battrs.rgb_bg_color,
|
||||||
fattrs.rgb_bg_color);
|
fattrs.rgb_bg_color);
|
||||||
|
|
||||||
|
cattrs.hl_blend = -1; // blend property was consumed
|
||||||
|
|
||||||
HlKind kind = *through ? kHlBlendThrough : kHlBlend;
|
HlKind kind = *through ? kHlBlendThrough : kHlBlend;
|
||||||
id = get_attr_entry((HlEntry){ .attr = cattrs, .kind = kind,
|
id = get_attr_entry((HlEntry){ .attr = cattrs, .kind = kind,
|
||||||
.id1 = back_attr, .id2 = front_attr });
|
.id1 = back_attr, .id2 = front_attr });
|
||||||
@@ -614,6 +617,10 @@ Dictionary hlattrs2dict(HlAttrs ae, bool use_rgb)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (ae.hl_blend > -1) {
|
||||||
|
PUT(hl, "blend", INTEGER_OBJ(ae.hl_blend));
|
||||||
|
}
|
||||||
|
|
||||||
return hl;
|
return hl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -662,6 +662,7 @@ void terminal_get_line_attributes(Terminal *term, win_T *wp, int linenr,
|
|||||||
.rgb_fg_color = vt_fg,
|
.rgb_fg_color = vt_fg,
|
||||||
.rgb_bg_color = vt_bg,
|
.rgb_bg_color = vt_bg,
|
||||||
.rgb_sp_color = -1,
|
.rgb_sp_color = -1,
|
||||||
|
.hl_blend = -1,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -4365,7 +4365,11 @@ describe('floating windows', function()
|
|||||||
[5] = {foreground = tonumber('0x990000'), background = tonumber('0xfff1ff')},
|
[5] = {foreground = tonumber('0x990000'), background = tonumber('0xfff1ff')},
|
||||||
[6] = {foreground = tonumber('0x332533'), background = tonumber('0xfff1ff')},
|
[6] = {foreground = tonumber('0x332533'), background = tonumber('0xfff1ff')},
|
||||||
[7] = {background = tonumber('0xffcfff'), bold = true, foreground = tonumber('0x0000d8')},
|
[7] = {background = tonumber('0xffcfff'), bold = true, foreground = tonumber('0x0000d8')},
|
||||||
[8] = {background = Screen.colors.LightMagenta, bold = true, foreground = Screen.colors.Blue1}
|
[8] = {background = Screen.colors.LightMagenta, bold = true, foreground = Screen.colors.Blue1},
|
||||||
|
[9] = {background = Screen.colors.LightMagenta, blend=30},
|
||||||
|
[10] = {foreground = Screen.colors.Red, background = Screen.colors.LightMagenta, blend=0},
|
||||||
|
[11] = {foreground = Screen.colors.Red, background = Screen.colors.LightMagenta, blend=80},
|
||||||
|
[12] = {background = Screen.colors.LightMagenta, bold = true, foreground = Screen.colors.Blue1, blend=30},
|
||||||
})
|
})
|
||||||
insert([[
|
insert([[
|
||||||
Lorem ipsum dolor sit amet, consectetur
|
Lorem ipsum dolor sit amet, consectetur
|
||||||
@@ -4445,9 +4449,9 @@ describe('floating windows', function()
|
|||||||
qui officia deserunt mollit anim id est |
|
qui officia deserunt mollit anim id est |
|
||||||
laborum^. |
|
laborum^. |
|
||||||
## grid 4
|
## grid 4
|
||||||
{1:test }|
|
{9:test }|
|
||||||
{1: }|
|
{9: }|
|
||||||
{1:popup text }|
|
{9:popup text }|
|
||||||
]], float_pos={[4] = {{id = 1002}, "NW", 1, 2, 5, true}}, unchanged=true}
|
]], float_pos={[4] = {{id = 1002}, "NW", 1, 2, 5, true}}, unchanged=true}
|
||||||
else
|
else
|
||||||
screen:expect([[
|
screen:expect([[
|
||||||
@@ -4487,9 +4491,9 @@ describe('floating windows', function()
|
|||||||
qui officia deserunt mollit anim id est |
|
qui officia deserunt mollit anim id est |
|
||||||
laborum^. |
|
laborum^. |
|
||||||
## grid 4
|
## grid 4
|
||||||
{1:test }|
|
{9:test }|
|
||||||
{1: }|
|
{9: }|
|
||||||
{4:popup text}{1: }|
|
{10:popup text}{9: }|
|
||||||
]], float_pos={[4] = {{id = 1002}, "NW", 1, 2, 5, true}}}
|
]], float_pos={[4] = {{id = 1002}, "NW", 1, 2, 5, true}}}
|
||||||
else
|
else
|
||||||
screen:expect([[
|
screen:expect([[
|
||||||
@@ -4497,7 +4501,7 @@ describe('floating windows', function()
|
|||||||
exercitation ullamco laboris nisi ut aliquip ex |
|
exercitation ullamco laboris nisi ut aliquip ex |
|
||||||
ea co{2:test}{3:o consequat}. Duis aute irure dolor in |
|
ea co{2:test}{3:o consequat}. Duis aute irure dolor in |
|
||||||
repre{3:henderit in vol}uptate velit esse cillum |
|
repre{3:henderit in vol}uptate velit esse cillum |
|
||||||
dolor{4:popup text}{3:ul}la pariatur. Excepteur sint |
|
dolor{10:popup text}{3:ul}la pariatur. Excepteur sint |
|
||||||
occaecat cupidatat non proident, sunt in culpa |
|
occaecat cupidatat non proident, sunt in culpa |
|
||||||
qui officia deserunt mollit anim id est |
|
qui officia deserunt mollit anim id est |
|
||||||
laborum^. |
|
laborum^. |
|
||||||
@@ -4528,9 +4532,9 @@ describe('floating windows', function()
|
|||||||
qui officia deserunt mollit anim id est |
|
qui officia deserunt mollit anim id est |
|
||||||
laborum^. |
|
laborum^. |
|
||||||
## grid 4
|
## grid 4
|
||||||
{1:test }|
|
{9:test }|
|
||||||
{1: }|
|
{9: }|
|
||||||
{4:popup text}{1: }|
|
{11:popup text}{9: }|
|
||||||
]], float_pos={[4] = {{id = 1002}, "NW", 1, 2, 5, true}}, unchanged=true}
|
]], float_pos={[4] = {{id = 1002}, "NW", 1, 2, 5, true}}, unchanged=true}
|
||||||
else
|
else
|
||||||
screen:expect([[
|
screen:expect([[
|
||||||
@@ -4570,9 +4574,9 @@ describe('floating windows', function()
|
|||||||
qui officia deserunt mollit anim id est |
|
qui officia deserunt mollit anim id est |
|
||||||
laborum^. |
|
laborum^. |
|
||||||
## grid 4
|
## grid 4
|
||||||
{4:popup text}{1: }|
|
{11:popup text}{9: }|
|
||||||
{8:~ }|
|
{12:~ }|
|
||||||
{8:~ }|
|
{12:~ }|
|
||||||
]], float_pos={[4] = {{id = 1002}, "NW", 1, 2, 5, true}}}
|
]], float_pos={[4] = {{id = 1002}, "NW", 1, 2, 5, true}}}
|
||||||
else
|
else
|
||||||
meths.input_mouse('wheel', 'down', '', 0, 4, 7)
|
meths.input_mouse('wheel', 'down', '', 0, 4, 7)
|
||||||
@@ -4672,7 +4676,7 @@ describe('floating windows', function()
|
|||||||
[2] = {foreground = Screen.colors.Grey0, background = tonumber('0xffcfff')},
|
[2] = {foreground = Screen.colors.Grey0, background = tonumber('0xffcfff')},
|
||||||
[3] = {bold = true, foreground = Screen.colors.Blue1},
|
[3] = {bold = true, foreground = Screen.colors.Blue1},
|
||||||
[4] = {background = tonumber('0xffcfff'), bold = true, foreground = tonumber('0xb282ff')},
|
[4] = {background = tonumber('0xffcfff'), bold = true, foreground = tonumber('0xb282ff')},
|
||||||
[5] = {background = Screen.colors.LightMagenta},
|
[5] = {background = Screen.colors.LightMagenta, blend=30},
|
||||||
})
|
})
|
||||||
if multigrid then
|
if multigrid then
|
||||||
screen:expect{grid=[[
|
screen:expect{grid=[[
|
||||||
|
@@ -1644,6 +1644,7 @@ describe('builtin popupmenu', function()
|
|||||||
[42] = {foreground = tonumber('0x0c0c0c'), background = tonumber('0xe5a8e5')},
|
[42] = {foreground = tonumber('0x0c0c0c'), background = tonumber('0xe5a8e5')},
|
||||||
[43] = {background = tonumber('0x7f5d7f'), bold = true, foreground = tonumber('0x3f3f3f')},
|
[43] = {background = tonumber('0x7f5d7f'), bold = true, foreground = tonumber('0x3f3f3f')},
|
||||||
[44] = {foreground = tonumber('0x3f3f3f'), background = tonumber('0x7f5d7f')},
|
[44] = {foreground = tonumber('0x3f3f3f'), background = tonumber('0x7f5d7f')},
|
||||||
|
[45] = {background = Screen.colors.WebGray, blend=0},
|
||||||
})
|
})
|
||||||
command('syntax on')
|
command('syntax on')
|
||||||
command('set mouse=a')
|
command('set mouse=a')
|
||||||
@@ -1761,7 +1762,7 @@ describe('builtin popupmenu', function()
|
|||||||
Lorem ipsum d{1:ol}or sit amet, consectetur |
|
Lorem ipsum d{1:ol}or sit amet, consectetur |
|
||||||
adipisicing elit, sed do eiusmod tempor |
|
adipisicing elit, sed do eiusmod tempor |
|
||||||
bla bla incididunt^ |
|
bla bla incididunt^ |
|
||||||
incidid{22: incididunt }{27: }d{1:ol}ore magna aliqua. |
|
incidid{45: incididunt }{27: }d{1:ol}ore magna aliqua. |
|
||||||
Ut enim{28: }{29:ut}{28: minim veniam}{25:,} quis nostrud |
|
Ut enim{28: }{29:ut}{28: minim veniam}{25:,} quis nostrud |
|
||||||
exercit{28:a}{29:labore}{28:llamco la}{25:b}oris nisi ut aliquip ex |
|
exercit{28:a}{29:labore}{28:llamco la}{25:b}oris nisi ut aliquip ex |
|
||||||
{2:[No Nam}{30:e}{43:et}{30:[+] }{32: }{2: }|
|
{2:[No Nam}{30:e}{43:et}{30:[+] }{32: }{2: }|
|
||||||
|
@@ -1496,7 +1496,7 @@ function Screen:_equal_attrs(a, b)
|
|||||||
a.underline == b.underline and a.undercurl == b.undercurl and
|
a.underline == b.underline and a.undercurl == b.undercurl and
|
||||||
a.italic == b.italic and a.reverse == b.reverse and
|
a.italic == b.italic and a.reverse == b.reverse and
|
||||||
a.foreground == b.foreground and a.background == b.background and
|
a.foreground == b.foreground and a.background == b.background and
|
||||||
a.special == b.special
|
a.special == b.special and a.blend == b.blend
|
||||||
end
|
end
|
||||||
|
|
||||||
function Screen:_equal_info(a, b)
|
function Screen:_equal_info(a, b)
|
||||||
|
Reference in New Issue
Block a user