diff options
| -rw-r--r-- | src/nvim/syntax.c | 2 | ||||
| -rw-r--r-- | test/functional/ex_cmds/highlight_spec.lua | 43 | 
2 files changed, 44 insertions, 1 deletions
diff --git a/src/nvim/syntax.c b/src/nvim/syntax.c index d28e996581..bc7362af72 100644 --- a/src/nvim/syntax.c +++ b/src/nvim/syntax.c @@ -6648,7 +6648,7 @@ do_highlight(char_u *line, int forceit, int init) {    if (error && idx == highlight_ga.ga_len) {      syn_unadd_group();    } else { -    if (is_normal_group) { +    if (!error && is_normal_group) {        // Need to update all groups, because they might be using "bg" and/or        // "fg", which have been changed now.        highlight_attr_set_all(); diff --git a/test/functional/ex_cmds/highlight_spec.lua b/test/functional/ex_cmds/highlight_spec.lua new file mode 100644 index 0000000000..25968b8204 --- /dev/null +++ b/test/functional/ex_cmds/highlight_spec.lua @@ -0,0 +1,43 @@ +local Screen = require('test.functional.ui.screen') +local helpers = require("test.functional.helpers")(after_each) +local eq, command = helpers.eq, helpers.command +local clear = helpers.clear +local eval, exc_exec = helpers.eval, helpers.exc_exec + +describe(':highlight', function() +  local screen + +  before_each(function() +    clear() +    screen = Screen.new() +    screen:attach() +  end) + +  after_each(function() +    screen:detach() +  end) + +  it('invalid color name', function() +    eq('Vim(highlight):E421: Color name or number not recognized: ctermfg=#181818', +       exc_exec("highlight normal ctermfg=#181818")) +    eq('Vim(highlight):E421: Color name or number not recognized: ctermbg=#181818', +       exc_exec("highlight normal ctermbg=#181818")) +  end) + +  it('invalid group name', function() +    eq('Vim(highlight):E411: highlight group not found: foo', +       exc_exec("highlight foo")) +  end) + +  it('"Normal" foreground with red', function() +    eq('', eval('synIDattr(hlID("Normal"), "fg", "cterm")')) +    command('highlight normal ctermfg=red') +    eq('9', eval('synIDattr(hlID("Normal"), "fg", "cterm")')) +  end) + +  it('"Normal" background with red', function() +    eq('', eval('synIDattr(hlID("Normal"), "bg", "cterm")')) +    command('highlight normal ctermbg=red') +    eq('9', eval('synIDattr(hlID("Normal"), "bg", "cterm")')) +  end) +end)  | 
