aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/nvim/statusline.c2
-rw-r--r--test/functional/api/vim_spec.lua13
2 files changed, 14 insertions, 1 deletions
diff --git a/src/nvim/statusline.c b/src/nvim/statusline.c
index 8db4633401..4b1748cfae 100644
--- a/src/nvim/statusline.c
+++ b/src/nvim/statusline.c
@@ -1505,7 +1505,7 @@ int build_stl_str_hl(win_T *wp, char *out, size_t outlen, char *fmt, char *opt_n
break;
case STL_SHOWCMD:
- if (p_sc && strcmp(opt_name, p_sloc) == 0) {
+ if (p_sc && (opt_name == NULL || strcmp(opt_name, p_sloc) == 0)) {
str = showcmd_buf;
}
break;
diff --git a/test/functional/api/vim_spec.lua b/test/functional/api/vim_spec.lua
index 531b9cc2c1..98bfb83dbd 100644
--- a/test/functional/api/vim_spec.lua
+++ b/test/functional/api/vim_spec.lua
@@ -3126,6 +3126,19 @@ describe('API', function()
eq('E539: Illegal character <}>',
pcall_err(meths.eval_statusline, '%{%}', {}))
end)
+ it('supports %S item', function()
+ local screen = Screen.new(80, 24)
+ screen:attach()
+ command('set showcmd')
+ feed('1234')
+ screen:expect({any = '1234'})
+ eq({ str = '1234', width = 4 },
+ meths.eval_statusline('%S', { maxwidth = 5 }))
+ feed('56')
+ screen:expect({any = '123456'})
+ eq({ str = '<3456', width = 5 },
+ meths.eval_statusline('%S', { maxwidth = 5 }))
+ end)
describe('highlight parsing', function()
it('works', function()
eq({