aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/nvim/ex_getln.c12
-rw-r--r--test/functional/ui/cmdline_highlight_spec.lua16
2 files changed, 22 insertions, 6 deletions
diff --git a/src/nvim/ex_getln.c b/src/nvim/ex_getln.c
index 13bae4dadc..4be0dd0e0d 100644
--- a/src/nvim/ex_getln.c
+++ b/src/nvim/ex_getln.c
@@ -2364,6 +2364,12 @@ static bool color_cmdline(void)
bool dgc_ret = true;
bool tl_ret = true;
+ if (ccline.prompt_id != prev_prompt_id) {
+ prev_prompt_errors = 0;
+ prev_prompt_id = ccline.prompt_id;
+ } else if (prev_prompt_errors >= MAX_CB_ERRORS) {
+ goto color_cmdline_end;
+ }
if (ccline.highlight_callback.type != kCallbackNone) {
// Currently this should only happen while processing input() prompts.
assert(ccline.input_fn);
@@ -2392,12 +2398,6 @@ static bool color_cmdline(void)
if (color_cb.type == kCallbackNone) {
goto color_cmdline_end;
}
- if (ccline.prompt_id != prev_prompt_id) {
- prev_prompt_errors = 0;
- prev_prompt_id = ccline.prompt_id;
- } else if (prev_prompt_errors >= MAX_CB_ERRORS) {
- goto color_cmdline_end;
- }
if (ccline.cmdbuff[ccline.cmdlen] != NUL) {
arg_allocated = true;
arg.vval.v_string = xmemdupz((const char *)ccline.cmdbuff,
diff --git a/test/functional/ui/cmdline_highlight_spec.lua b/test/functional/ui/cmdline_highlight_spec.lua
index 6698ced596..e12961039a 100644
--- a/test/functional/ui/cmdline_highlight_spec.lua
+++ b/test/functional/ui/cmdline_highlight_spec.lua
@@ -527,6 +527,22 @@ describe('Ex commands coloring support', function()
eq('\nError detected while processing :\nE605: Exception not caught: 42',
meths.command_output('messages'))
end)
+ it('errors out when failing to get callback', function()
+ meths.set_var('Nvim_color_cmdline', 42)
+ feed(':#')
+ screen:expect([[
+ {EOB:~ }|
+ {EOB:~ }|
+ {EOB:~ }|
+ : |
+ {ERR:E5408: Unable to get Nvim_color_cmdline }|
+ {ERR:callback from g:: Vim:E6000: Argument is}|
+ {ERR: not a function or function name} |
+ :#^ |
+ ]])
+ end)
+end)
+describe('Expressions coloring support', function()
end)
-- TODO Specifically test for coloring in cmdline and expr modes