diff options
-rw-r--r-- | runtime/doc/msgpack_rpc.txt | 2 | ||||
-rw-r--r-- | src/nvim/ex_getln.c | 7 | ||||
-rw-r--r-- | test/functional/ui/cmdline_spec.lua | 10 |
3 files changed, 13 insertions, 6 deletions
diff --git a/runtime/doc/msgpack_rpc.txt b/runtime/doc/msgpack_rpc.txt index 46fc6f19c2..ef4a22db0b 100644 --- a/runtime/doc/msgpack_rpc.txt +++ b/runtime/doc/msgpack_rpc.txt @@ -450,6 +450,8 @@ states might be represented as separate modes. Leave the cmdline. ["cmdline_show", content, pos, firstc, prompt] + content: List of [highlight group, string] + [["Normal", "t"], ["Search", "est"], ...] When cmdline_external is set to true, nvim will not draw the cmdline on the grad, instead nvim will send ui events of the cmdline content and cursor position to the remote ui. The content is the full content diff --git a/src/nvim/ex_getln.c b/src/nvim/ex_getln.c index 8c9e081c89..12f3f53c81 100644 --- a/src/nvim/ex_getln.c +++ b/src/nvim/ex_getln.c @@ -2731,7 +2731,12 @@ void ui_ext_cmdline_char(int c, int shift) void ui_ext_cmdline_show(void) { Array args = ARRAY_DICT_INIT; - ADD(args, STRING_OBJ(cstr_to_string((char *)(ccline.cmdbuff)))); + Array content = ARRAY_DICT_INIT; + Array text = ARRAY_DICT_INIT; + ADD(text, STRING_OBJ(cstr_to_string("Normal"))); + ADD(text, STRING_OBJ(cstr_to_string((char *)(ccline.cmdbuff)))); + ADD(content, ARRAY_OBJ(text)); + ADD(args, ARRAY_OBJ(content)); ADD(args, INTEGER_OBJ(ccline.cmdpos)); if (ccline.cmdfirstc != NUL) { ADD(args, STRING_OBJ(cstr_to_string((char *)(&ccline.cmdfirstc)))); diff --git a/test/functional/ui/cmdline_spec.lua b/test/functional/ui/cmdline_spec.lua index 35cacbf4d0..523f7065d4 100644 --- a/test/functional/ui/cmdline_spec.lua +++ b/test/functional/ui/cmdline_spec.lua @@ -54,7 +54,7 @@ describe('External command line completion', function() ~ | | ]], nil, nil, function() - eq("sign", content) + eq({{'Normal', 'sign'}}, content) eq(4, pos) end) @@ -66,7 +66,7 @@ describe('External command line completion', function() ~ | | ]], nil, nil, function() - eq("sign", content) + eq({{'Normal', 'sign'}}, content) eq(true, shown) eq(3, pos) end) @@ -79,7 +79,7 @@ describe('External command line completion', function() ~ | | ]], nil, nil, function() - eq("sin", content) + eq({{'Normal', 'sin'}}, content) eq(true, shown) eq(2, pos) end) @@ -105,7 +105,7 @@ describe('External command line completion', function() ]], nil, nil, function() eq(true, shown) eq("input", prompt) - eq("default", content) + eq({{'Normal', 'default'}}, content) end) feed('<cr>') @@ -117,7 +117,7 @@ describe('External command line completion', function() ~ | | ]], nil, nil, function() - eq("3", content) + eq({{'Normal', '3'}}, content) eq("\"", char) eq(1, shift) end) |