From 64a14026d76ba1798d91e15a941fcb6af7cbc5ad Mon Sep 17 00:00:00 2001 From: Evgeni Chasnovski Date: Wed, 29 Nov 2023 22:16:09 +0200 Subject: 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. --- test/functional/terminal/api_spec.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'test/functional/terminal/api_spec.lua') diff --git a/test/functional/terminal/api_spec.lua b/test/functional/terminal/api_spec.lua index 93641fc576..c278b2ad0e 100644 --- a/test/functional/terminal/api_spec.lua +++ b/test/functional/terminal/api_spec.lua @@ -12,7 +12,7 @@ describe('api', function() helpers.clear() os.remove(socket_name) screen = child_session.screen_setup(0, '["'..helpers.nvim_prog - ..'", "-u", "NONE", "-i", "NONE", "--cmd", "'..helpers.nvim_set..'"]') + ..'", "-u", "NONE", "-i", "NONE", "--cmd", "colorscheme vim", "--cmd", "'..helpers.nvim_set..'"]') end) after_each(function() os.remove(socket_name) -- cgit From a5a346678a8211ea07f318de42e557ad3909f65e Mon Sep 17 00:00:00 2001 From: Gregory Anders Date: Tue, 5 Dec 2023 14:26:46 -0800 Subject: test: set notermguicolors in tests Set 'notermguicolors' in tests which spawn a child Nvim process to force existing tests to use 16 colors. Also refactor the child process invocation to make things a little bit less messy. --- test/functional/terminal/api_spec.lua | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'test/functional/terminal/api_spec.lua') diff --git a/test/functional/terminal/api_spec.lua b/test/functional/terminal/api_spec.lua index c278b2ad0e..68082ba4fa 100644 --- a/test/functional/terminal/api_spec.lua +++ b/test/functional/terminal/api_spec.lua @@ -11,8 +11,12 @@ describe('api', function() before_each(function() helpers.clear() os.remove(socket_name) - screen = child_session.screen_setup(0, '["'..helpers.nvim_prog - ..'", "-u", "NONE", "-i", "NONE", "--cmd", "colorscheme vim", "--cmd", "'..helpers.nvim_set..'"]') + screen = child_session.setup_child_nvim({ + '-u', 'NONE', + '-i', 'NONE', + '--cmd', 'colorscheme vim', + '--cmd', helpers.nvim_set, + }) end) after_each(function() os.remove(socket_name) -- cgit From 6c3ddd8c510a28d4acb777b9676a0d4137b309fa Mon Sep 17 00:00:00 2001 From: zeertzjq Date: Thu, 7 Dec 2023 10:16:00 +0800 Subject: test: set 'termguicolors' in outer Nvim instance (#26437) Currently, the value of $COLORTERM in :terminal in tests depends on outer environment because of 'notermguicolors'. If $COLORTERM is not set in :terminal, an inner Nvim instance will try to detect 'termguicolors' support, which may interfere with tests. So set 'termguicolors' in outer Nvim instance unless $COLORTERM needs to be overridden, and unset it in inner Nvim instance when running TUI. --- test/functional/terminal/api_spec.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'test/functional/terminal/api_spec.lua') diff --git a/test/functional/terminal/api_spec.lua b/test/functional/terminal/api_spec.lua index 68082ba4fa..117a5b74b7 100644 --- a/test/functional/terminal/api_spec.lua +++ b/test/functional/terminal/api_spec.lua @@ -15,7 +15,7 @@ describe('api', function() '-u', 'NONE', '-i', 'NONE', '--cmd', 'colorscheme vim', - '--cmd', helpers.nvim_set, + '--cmd', helpers.nvim_set .. ' notermguicolors', }) end) after_each(function() -- cgit From 1037ce2e461034a20e35ad59969fd05d5ad68b91 Mon Sep 17 00:00:00 2001 From: zeertzjq Date: Sat, 9 Dec 2023 20:42:00 +0800 Subject: test: avoid repeated screen lines in expected states This is the command invoked repeatedly to make the changes: :%s/^\(.*\)|\%(\*\(\d\+\)\)\?$\n\1|\%(\*\(\d\+\)\)\?$/\=submatch(1)..'|*'..(max([str2nr(submatch(2)),1])+max([str2nr(submatch(3)),1]))/g --- test/functional/terminal/api_spec.lua | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) (limited to 'test/functional/terminal/api_spec.lua') diff --git a/test/functional/terminal/api_spec.lua b/test/functional/terminal/api_spec.lua index 117a5b74b7..aa46ccc8a8 100644 --- a/test/functional/terminal/api_spec.lua +++ b/test/functional/terminal/api_spec.lua @@ -25,10 +25,7 @@ describe('api', function() it("qa! RPC request during insert-mode", function() screen:expect{grid=[[ {1: } | - {4:~ }| - {4:~ }| - {4:~ }| - {4:~ }| + {4:~ }|*4 | {3:-- TERMINAL --} | ]]} @@ -39,10 +36,7 @@ describe('api', function() -- Wait for socket creation. screen:expect([[ {1: } | - {4:~ }| - {4:~ }| - {4:~ }| - {4:~ }| + {4:~ }|*4 ]]..socket_name..[[ | {3:-- TERMINAL --} | ]]) @@ -54,10 +48,7 @@ describe('api', function() -- Wait for stdin to be processed. screen:expect([[ [tui] insert-mode{1: } | - {4:~ }| - {4:~ }| - {4:~ }| - {4:~ }| + {4:~ }|*4 {3:-- INSERT --} | {3:-- TERMINAL --} | ]]) -- cgit From 04f2f864e270e772c6326cefdf24947f0130e492 Mon Sep 17 00:00:00 2001 From: "Justin M. Keyes" Date: Wed, 3 Jan 2024 02:09:18 +0100 Subject: refactor: format test/* --- test/functional/terminal/api_spec.lua | 42 +++++++++++++++++++++-------------- 1 file changed, 25 insertions(+), 17 deletions(-) (limited to 'test/functional/terminal/api_spec.lua') diff --git a/test/functional/terminal/api_spec.lua b/test/functional/terminal/api_spec.lua index aa46ccc8a8..79cc5016da 100644 --- a/test/functional/terminal/api_spec.lua +++ b/test/functional/terminal/api_spec.lua @@ -2,49 +2,57 @@ local helpers = require('test.functional.helpers')(after_each) local child_session = require('test.functional.terminal.helpers') local ok = helpers.ok -if helpers.skip(helpers.is_os('win')) then return end +if helpers.skip(helpers.is_os('win')) then + return +end describe('api', function() local screen - local socket_name = "./Xtest_functional_api.sock" + local socket_name = './Xtest_functional_api.sock' before_each(function() helpers.clear() os.remove(socket_name) screen = child_session.setup_child_nvim({ - '-u', 'NONE', - '-i', 'NONE', - '--cmd', 'colorscheme vim', - '--cmd', helpers.nvim_set .. ' notermguicolors', + '-u', + 'NONE', + '-i', + 'NONE', + '--cmd', + 'colorscheme vim', + '--cmd', + helpers.nvim_set .. ' notermguicolors', }) end) after_each(function() os.remove(socket_name) end) - it("qa! RPC request during insert-mode", function() - screen:expect{grid=[[ + it('qa! RPC request during insert-mode', function() + screen:expect { + grid = [[ {1: } | {4:~ }|*4 | {3:-- TERMINAL --} | - ]]} + ]], + } -- Start the socket from the child nvim. - child_session.feed_data(":echo serverstart('"..socket_name.."')\n") + child_session.feed_data(":echo serverstart('" .. socket_name .. "')\n") -- Wait for socket creation. screen:expect([[ {1: } | {4:~ }|*4 - ]]..socket_name..[[ | + ]] .. socket_name .. [[ | {3:-- TERMINAL --} | ]]) local socket_session1 = helpers.connect(socket_name) local socket_session2 = helpers.connect(socket_name) - child_session.feed_data("i[tui] insert-mode") + child_session.feed_data('i[tui] insert-mode') -- Wait for stdin to be processed. screen:expect([[ [tui] insert-mode{1: } | @@ -53,11 +61,11 @@ describe('api', function() {3:-- TERMINAL --} | ]]) - ok((socket_session1:request("nvim_ui_attach", 42, 6, {rgb=true}))) - ok((socket_session2:request("nvim_ui_attach", 25, 30, {rgb=true}))) + ok((socket_session1:request('nvim_ui_attach', 42, 6, { rgb = true }))) + ok((socket_session2:request('nvim_ui_attach', 25, 30, { rgb = true }))) - socket_session1:notify("nvim_input", "\n[socket 1] this is more than 25 columns") - socket_session2:notify("nvim_input", "\n[socket 2] input") + socket_session1:notify('nvim_input', '\n[socket 1] this is more than 25 columns') + socket_session2:notify('nvim_input', '\n[socket 2] input') screen:expect([[ [tui] insert-mode | @@ -69,6 +77,6 @@ describe('api', function() {3:-- TERMINAL --} | ]]) - socket_session1:request("nvim_command", "qa!") + socket_session1:request('nvim_command', 'qa!') end) end) -- cgit