commit 146c428a533b649adbc95fc29b41af42624b6ece
parent cd6ec1db068f9f4c1900a00b5392e39e59f0a7cb
Author: zeertzjq <zeertzjq@outlook.com>
Date: Tue, 27 Dec 2022 18:04:42 +0800
fix(statusline): make nvim_eval_statusline() work with %S (#21553)
Diffstat:
2 files changed, 14 insertions(+), 1 deletion(-)
diff --git 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
@@ -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({