2016-08-03 13:56:05 -07:00
|
|
|
local helpers = require('test.functional.helpers')(after_each)
|
|
|
|
local Screen = require('test.functional.ui.screen')
|
|
|
|
local clear, feed, meths = helpers.clear, helpers.feed, helpers.meths
|
2017-04-08 14:12:26 -07:00
|
|
|
local insert, command = helpers.insert, helpers.command
|
2016-08-03 13:56:05 -07:00
|
|
|
|
|
|
|
describe('quickfix selection highlight', function()
|
|
|
|
local screen
|
|
|
|
|
|
|
|
before_each(function()
|
|
|
|
clear()
|
|
|
|
|
|
|
|
screen = Screen.new(25, 10)
|
|
|
|
screen:attach()
|
|
|
|
screen:set_default_attr_ids({
|
|
|
|
[1] = { bold = true, foreground = Screen.colors.Blue },
|
2024-01-02 18:09:18 -07:00
|
|
|
[2] = { reverse = true },
|
|
|
|
[3] = { foreground = Screen.colors.Brown },
|
|
|
|
[4] = { bold = true, reverse = true },
|
|
|
|
[5] = { background = Screen.colors.Green },
|
|
|
|
[6] = { foreground = Screen.colors.Brown, background = Screen.colors.Green },
|
|
|
|
[7] = { background = Screen.colors.Red },
|
|
|
|
[8] = { foreground = Screen.colors.Brown, background = Screen.colors.Red },
|
|
|
|
[9] = { background = Screen.colors.Fuchsia },
|
|
|
|
[10] = { foreground = Screen.colors.Red, background = Screen.colors.Fuchsia },
|
|
|
|
[11] = { foreground = Screen.colors.Red },
|
|
|
|
[12] = { foreground = Screen.colors.Brown, background = Screen.colors.Fuchsia },
|
2016-08-03 13:56:05 -07:00
|
|
|
})
|
|
|
|
|
2024-01-12 05:44:54 -07:00
|
|
|
meths.nvim_set_option_value('errorformat', '%m %l', {})
|
2017-04-08 14:12:26 -07:00
|
|
|
command('syntax on')
|
|
|
|
command('highlight Search guibg=Green')
|
2016-08-03 13:56:05 -07:00
|
|
|
|
|
|
|
insert([[
|
|
|
|
Line 1
|
|
|
|
Line 2
|
|
|
|
Line 3
|
|
|
|
Line 4
|
|
|
|
Line 5
|
|
|
|
]])
|
|
|
|
|
2017-04-08 14:12:26 -07:00
|
|
|
command('cad')
|
2016-08-03 13:56:05 -07:00
|
|
|
feed('gg')
|
|
|
|
|
|
|
|
screen:expect([[
|
|
|
|
^Line 1 |
|
|
|
|
Line 2 |
|
|
|
|
Line 3 |
|
|
|
|
Line 4 |
|
|
|
|
Line 5 |
|
|
|
|
|
|
2023-12-09 05:42:00 -07:00
|
|
|
{1:~ }|*3
|
2017-04-08 17:23:16 -07:00
|
|
|
|
|
2016-08-03 13:56:05 -07:00
|
|
|
]])
|
|
|
|
end)
|
|
|
|
|
|
|
|
it('using default Search highlight group', function()
|
2017-04-08 14:12:26 -07:00
|
|
|
command('copen')
|
2016-08-03 13:56:05 -07:00
|
|
|
|
|
|
|
screen:expect([[
|
|
|
|
Line 1 |
|
|
|
|
{2:[No Name] [+] }|
|
|
|
|
{5:^|}{6:1}{5:| Line }|
|
|
|
|
|{3:2}| Line |
|
|
|
|
|{3:3}| Line |
|
|
|
|
|{3:4}| Line |
|
|
|
|
|{3:5}| Line |
|
|
|
|
|| |
|
|
|
|
{4:[Quickfix List] }|
|
2017-04-08 17:23:16 -07:00
|
|
|
|
|
2016-08-03 13:56:05 -07:00
|
|
|
]])
|
|
|
|
|
2017-04-08 14:12:26 -07:00
|
|
|
command('cnext')
|
2016-08-03 13:56:05 -07:00
|
|
|
|
|
|
|
screen:expect([[
|
|
|
|
Line 1 |
|
|
|
|
{2:[No Name] [+] }|
|
|
|
|
|{3:1}| Line |
|
|
|
|
{5:^|}{6:2}{5:| Line }|
|
|
|
|
|{3:3}| Line |
|
|
|
|
|{3:4}| Line |
|
|
|
|
|{3:5}| Line |
|
|
|
|
|| |
|
|
|
|
{4:[Quickfix List] }|
|
2017-04-08 17:23:16 -07:00
|
|
|
|
|
2016-08-03 13:56:05 -07:00
|
|
|
]])
|
|
|
|
end)
|
|
|
|
|
|
|
|
it('using QuickFixLine highlight group', function()
|
feat(highlight): update default color scheme
Problem: Default color scheme is suboptimal.
Solution: Start using new color scheme. Introduce new `vim` color scheme
for opt-in backward compatibility.
------
Main design ideas
- Be "Neovim branded".
- Be minimal for 256 colors with a bit more shades for true colors.
- Be accessible through high enough contrast ratios.
- Be suitable for dark and light backgrounds via exchange of dark and
light palettes.
------
Palettes
- Have dark and light variants. Implemented through exporeted
`NvimDark*` and `NvimLight*` hex colors.
- Palettes have 4 shades of grey for UI elements and 6 colors (red,
yellow, green, cyan, blue, magenta).
- Actual values are computed procedurally in Oklch color space based on
a handful of hyperparameters.
- Each color has a 256 colors variant with perceptually closest color.
------
Highlight groups
Use:
- Grey shades for general UI according to their design.
- Bold text for keywords (`Statement` highlight group). This is an
important choice to increase accessibility for people with color
deficiencies, as it doesn't rely on actual color.
- Green for strings, `DiffAdd` (as background), `DiagnosticOk`, and some
minor text UI elements.
- Cyan as main syntax color, i.e. for function usage (`Function`
highlight group), `DiffText`, `DiagnosticInfo`, and some minor text UI
elements.
- Red to generally mean high user attention, i.e. errors; in particular
for `ErrorMsg`, `DiffDelete`, `DiagnosticError`.
- Yellow very sparingly only with true colors to mean mild user
attention, i.e. warnings. That is, `DiagnosticWarn` and `WarningMsg`.
- Blue very sparingly only with true colors as `DiagnosticHint` and some
additional important syntax group (like `Identifier`).
- Magenta very carefully (if at all).
------
Notes
- To make tests work without relatively larege updates, each one is
prepended with an equivalent of the call `:colorscheme vim`.
Plus some tests which spawn new Neovim instances also now use 'vim'
color scheme.
In some cases tests are updated to fit new default color scheme.
2023-11-29 13:16:09 -07:00
|
|
|
command('highlight QuickFixLine guibg=Red guifg=NONE gui=NONE')
|
2016-08-03 13:56:05 -07:00
|
|
|
|
2017-04-08 14:12:26 -07:00
|
|
|
command('copen')
|
2016-08-03 13:56:05 -07:00
|
|
|
|
|
|
|
screen:expect([[
|
|
|
|
Line 1 |
|
|
|
|
{2:[No Name] [+] }|
|
|
|
|
{7:^|}{8:1}{7:| Line }|
|
|
|
|
|{3:2}| Line |
|
|
|
|
|{3:3}| Line |
|
|
|
|
|{3:4}| Line |
|
|
|
|
|{3:5}| Line |
|
|
|
|
|| |
|
|
|
|
{4:[Quickfix List] }|
|
2017-04-08 17:23:16 -07:00
|
|
|
|
|
2016-08-03 13:56:05 -07:00
|
|
|
]])
|
|
|
|
|
2017-04-08 14:12:26 -07:00
|
|
|
command('cnext')
|
2016-08-03 13:56:05 -07:00
|
|
|
|
|
|
|
screen:expect([[
|
|
|
|
Line 1 |
|
|
|
|
{2:[No Name] [+] }|
|
|
|
|
|{3:1}| Line |
|
|
|
|
{7:^|}{8:2}{7:| Line }|
|
|
|
|
|{3:3}| Line |
|
|
|
|
|{3:4}| Line |
|
|
|
|
|{3:5}| Line |
|
|
|
|
|| |
|
|
|
|
{4:[Quickfix List] }|
|
2017-04-08 17:23:16 -07:00
|
|
|
|
|
2016-08-03 13:56:05 -07:00
|
|
|
]])
|
|
|
|
end)
|
|
|
|
|
|
|
|
it('combines with CursorLine', function()
|
2017-04-08 14:12:26 -07:00
|
|
|
command('set cursorline')
|
feat(highlight): update default color scheme
Problem: Default color scheme is suboptimal.
Solution: Start using new color scheme. Introduce new `vim` color scheme
for opt-in backward compatibility.
------
Main design ideas
- Be "Neovim branded".
- Be minimal for 256 colors with a bit more shades for true colors.
- Be accessible through high enough contrast ratios.
- Be suitable for dark and light backgrounds via exchange of dark and
light palettes.
------
Palettes
- Have dark and light variants. Implemented through exporeted
`NvimDark*` and `NvimLight*` hex colors.
- Palettes have 4 shades of grey for UI elements and 6 colors (red,
yellow, green, cyan, blue, magenta).
- Actual values are computed procedurally in Oklch color space based on
a handful of hyperparameters.
- Each color has a 256 colors variant with perceptually closest color.
------
Highlight groups
Use:
- Grey shades for general UI according to their design.
- Bold text for keywords (`Statement` highlight group). This is an
important choice to increase accessibility for people with color
deficiencies, as it doesn't rely on actual color.
- Green for strings, `DiffAdd` (as background), `DiagnosticOk`, and some
minor text UI elements.
- Cyan as main syntax color, i.e. for function usage (`Function`
highlight group), `DiffText`, `DiagnosticInfo`, and some minor text UI
elements.
- Red to generally mean high user attention, i.e. errors; in particular
for `ErrorMsg`, `DiffDelete`, `DiagnosticError`.
- Yellow very sparingly only with true colors to mean mild user
attention, i.e. warnings. That is, `DiagnosticWarn` and `WarningMsg`.
- Blue very sparingly only with true colors as `DiagnosticHint` and some
additional important syntax group (like `Identifier`).
- Magenta very carefully (if at all).
------
Notes
- To make tests work without relatively larege updates, each one is
prepended with an equivalent of the call `:colorscheme vim`.
Plus some tests which spawn new Neovim instances also now use 'vim'
color scheme.
In some cases tests are updated to fit new default color scheme.
2023-11-29 13:16:09 -07:00
|
|
|
command('highlight QuickFixLine guifg=Red guibg=NONE gui=NONE')
|
2017-04-08 14:12:26 -07:00
|
|
|
command('highlight CursorLine guibg=Fuchsia')
|
2016-08-03 13:56:05 -07:00
|
|
|
|
2017-04-08 14:12:26 -07:00
|
|
|
command('copen')
|
2016-08-03 13:56:05 -07:00
|
|
|
|
|
|
|
screen:expect([[
|
|
|
|
{9:Line 1 }|
|
|
|
|
{2:[No Name] [+] }|
|
|
|
|
{10:^|1| Line }|
|
|
|
|
|{3:2}| Line |
|
|
|
|
|{3:3}| Line |
|
|
|
|
|{3:4}| Line |
|
|
|
|
|{3:5}| Line |
|
|
|
|
|| |
|
|
|
|
{4:[Quickfix List] }|
|
2017-04-08 17:23:16 -07:00
|
|
|
|
|
2016-08-03 13:56:05 -07:00
|
|
|
]])
|
|
|
|
|
|
|
|
feed('j')
|
|
|
|
|
|
|
|
screen:expect([[
|
|
|
|
{9:Line 1 }|
|
|
|
|
{2:[No Name] [+] }|
|
|
|
|
{11:|1| Line }|
|
|
|
|
{9:^|}{12:2}{9:| Line }|
|
|
|
|
|{3:3}| Line |
|
|
|
|
|{3:4}| Line |
|
|
|
|
|{3:5}| Line |
|
|
|
|
|| |
|
|
|
|
{4:[Quickfix List] }|
|
2017-04-08 17:23:16 -07:00
|
|
|
|
|
2016-08-03 13:56:05 -07:00
|
|
|
]])
|
|
|
|
end)
|
|
|
|
|
|
|
|
it('QuickFixLine background takes precedence over CursorLine', function()
|
2017-04-08 14:12:26 -07:00
|
|
|
command('set cursorline')
|
feat(highlight): update default color scheme
Problem: Default color scheme is suboptimal.
Solution: Start using new color scheme. Introduce new `vim` color scheme
for opt-in backward compatibility.
------
Main design ideas
- Be "Neovim branded".
- Be minimal for 256 colors with a bit more shades for true colors.
- Be accessible through high enough contrast ratios.
- Be suitable for dark and light backgrounds via exchange of dark and
light palettes.
------
Palettes
- Have dark and light variants. Implemented through exporeted
`NvimDark*` and `NvimLight*` hex colors.
- Palettes have 4 shades of grey for UI elements and 6 colors (red,
yellow, green, cyan, blue, magenta).
- Actual values are computed procedurally in Oklch color space based on
a handful of hyperparameters.
- Each color has a 256 colors variant with perceptually closest color.
------
Highlight groups
Use:
- Grey shades for general UI according to their design.
- Bold text for keywords (`Statement` highlight group). This is an
important choice to increase accessibility for people with color
deficiencies, as it doesn't rely on actual color.
- Green for strings, `DiffAdd` (as background), `DiagnosticOk`, and some
minor text UI elements.
- Cyan as main syntax color, i.e. for function usage (`Function`
highlight group), `DiffText`, `DiagnosticInfo`, and some minor text UI
elements.
- Red to generally mean high user attention, i.e. errors; in particular
for `ErrorMsg`, `DiffDelete`, `DiagnosticError`.
- Yellow very sparingly only with true colors to mean mild user
attention, i.e. warnings. That is, `DiagnosticWarn` and `WarningMsg`.
- Blue very sparingly only with true colors as `DiagnosticHint` and some
additional important syntax group (like `Identifier`).
- Magenta very carefully (if at all).
------
Notes
- To make tests work without relatively larege updates, each one is
prepended with an equivalent of the call `:colorscheme vim`.
Plus some tests which spawn new Neovim instances also now use 'vim'
color scheme.
In some cases tests are updated to fit new default color scheme.
2023-11-29 13:16:09 -07:00
|
|
|
command('highlight QuickFixLine guibg=Red guifg=NONE gui=NONE')
|
2017-04-08 14:12:26 -07:00
|
|
|
command('highlight CursorLine guibg=Fuchsia')
|
2016-08-03 13:56:05 -07:00
|
|
|
|
2017-04-08 14:12:26 -07:00
|
|
|
command('copen')
|
2016-08-03 13:56:05 -07:00
|
|
|
|
|
|
|
screen:expect([[
|
|
|
|
{9:Line 1 }|
|
|
|
|
{2:[No Name] [+] }|
|
|
|
|
{7:^|}{8:1}{7:| Line }|
|
|
|
|
|{3:2}| Line |
|
|
|
|
|{3:3}| Line |
|
|
|
|
|{3:4}| Line |
|
|
|
|
|{3:5}| Line |
|
|
|
|
|| |
|
|
|
|
{4:[Quickfix List] }|
|
2017-04-08 17:23:16 -07:00
|
|
|
|
|
2016-08-03 13:56:05 -07:00
|
|
|
]])
|
|
|
|
|
|
|
|
feed('j')
|
|
|
|
|
|
|
|
screen:expect([[
|
|
|
|
{9:Line 1 }|
|
|
|
|
{2:[No Name] [+] }|
|
|
|
|
{7:|}{8:1}{7:| Line }|
|
|
|
|
{9:^|}{12:2}{9:| Line }|
|
|
|
|
|{3:3}| Line |
|
|
|
|
|{3:4}| Line |
|
|
|
|
|{3:5}| Line |
|
|
|
|
|| |
|
|
|
|
{4:[Quickfix List] }|
|
2017-04-08 17:23:16 -07:00
|
|
|
|
|
2016-08-03 13:56:05 -07:00
|
|
|
]])
|
|
|
|
end)
|
|
|
|
end)
|