diff options
| author | Shadman <shadmansaleh3@gmail.com> | 2025-08-27 02:48:53 +0600 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-08-26 13:48:53 -0700 |
| commit | 8b171852a92595176308a36978baead585e878d3 (patch) | |
| tree | 74db3dee83966c12cf9977bd513b9900aca6b007 /test/functional/lua/luaeval_spec.lua | |
| parent | 1e1619de830ec64ec887911b444753486db63476 (diff) | |
| download | rneovim-8b171852a92595176308a36978baead585e878d3.tar.gz rneovim-8b171852a92595176308a36978baead585e878d3.tar.bz2 rneovim-8b171852a92595176308a36978baead585e878d3.zip | |
feat(api): nvim_echo can emit Progress messages/events #34846
Problem:
Nvim does not have a core concept for indicating "progress" of
long-running tasks. The LspProgress event is specific to LSP.
Solution:
- `nvim_echo` can emit `kind="progress"` messages.
- Emits a `Progress` event.
- Includes new fields (id, status, percent) in the `msg_show` ui-event.
- The UI is expected to overwrite any message having the same id.
- Messages have a globally unique ID.
- `nvim_echo` returns the message ID.
- `nvim_echo(… {id=…})` updates existing messages.
Example:
local grp = vim.api.nvim_create_augroup("Msg", {clear = true})
vim.api.nvim_create_autocmd('Progress', {
pattern={"term"},
group = grp,
callback = function(ev)
print(string.format('event fired: %s', vim.inspect(ev))..'\n')
end
})
-- require('vim._extui').enable({enable=true, msg={target='msg', timeout=1000}})
vim.api.nvim_echo({{'searching'}}, true, {kind='progress', percent=80, status='running', title="terminal(ripgrep)"})
local id = vim.api.nvim_echo({{'searching'}}, true, {kind='progress', status='running', percent=10, title="terminal(ripgrep)"})
vim.api.nvim_echo({}, true, {id = id, kind='progress', percent=20, status = 'running', title='find tests'})
vim.api.nvim_echo({}, true, {id = id, kind='progress', status='running', percent=70})
vim.api.nvim_echo({{'complete'}}, true, {id = id, kind='progress', status='success', percent=100, title="find tests"})
Followups:
- Integrate with 'statusline' by listening to the Progress autocmd event.
- Integrate progress ui-event with `vim._extui`.
Diffstat (limited to 'test/functional/lua/luaeval_spec.lua')
0 files changed, 0 insertions, 0 deletions