mirror of
https://github.com/neovim/neovim
synced 2025-07-16 09:11:51 +00:00
feat(api): pass 0 to nvim_get_chan_info for current channel (#27321)
Getting current channel info was kind of annoying via RPC. Two functions had to be called: 1. `nvim_get_api_info` which returns `[channel_id, meta_data]`. - This results in `channel_id = api.nvim_get_api_info()[0]`. - Here the meta_data is sent but never used. 2. Finally call `nvim_get_chan_info(channel_id)`. This commit reduces the need for `nvim_get_api_info` as passing 0 returns current channel info.
This commit is contained in:
@ -888,6 +888,9 @@ nvim_get_api_info() *nvim_get_api_info()*
|
|||||||
nvim_get_chan_info({chan}) *nvim_get_chan_info()*
|
nvim_get_chan_info({chan}) *nvim_get_chan_info()*
|
||||||
Gets information about a channel.
|
Gets information about a channel.
|
||||||
|
|
||||||
|
Parameters: ~
|
||||||
|
• {chan} channel_id, or 0 for current channel
|
||||||
|
|
||||||
Return: ~
|
Return: ~
|
||||||
Dictionary describing a channel, with these keys:
|
Dictionary describing a channel, with these keys:
|
||||||
• "id" Channel id.
|
• "id" Channel id.
|
||||||
|
@ -405,6 +405,8 @@ The following changes to existing APIs or features add new behavior.
|
|||||||
• Attempting to set an invalid keycode option (e.g. `set t_foo=123`) no longer
|
• Attempting to set an invalid keycode option (e.g. `set t_foo=123`) no longer
|
||||||
gives an error.
|
gives an error.
|
||||||
|
|
||||||
|
• Passing 0 to |nvim_get_chan_info()| gets info about the current channel.
|
||||||
|
|
||||||
• |:checkhealth| buffer can now be opened in a split window using modifiers like
|
• |:checkhealth| buffer can now be opened in a split window using modifiers like
|
||||||
|:vertical|, |:horizontal| and |:botright|.
|
|:vertical|, |:horizontal| and |:botright|.
|
||||||
|
|
||||||
|
2
runtime/lua/vim/_meta/api.lua
generated
2
runtime/lua/vim/_meta/api.lua
generated
@ -1158,7 +1158,7 @@ function vim.api.nvim_get_autocmds(opts) end
|
|||||||
|
|
||||||
--- Gets information about a channel.
|
--- Gets information about a channel.
|
||||||
---
|
---
|
||||||
--- @param chan integer
|
--- @param chan integer channel_id, or 0 for current channel
|
||||||
--- @return table<string,any>
|
--- @return table<string,any>
|
||||||
function vim.api.nvim_get_chan_info(chan) end
|
function vim.api.nvim_get_chan_info(chan) end
|
||||||
|
|
||||||
|
@ -1612,6 +1612,7 @@ void nvim_set_client_info(uint64_t channel_id, String name, Dictionary version,
|
|||||||
|
|
||||||
/// Gets information about a channel.
|
/// Gets information about a channel.
|
||||||
///
|
///
|
||||||
|
/// @param chan channel_id, or 0 for current channel
|
||||||
/// @returns Dictionary describing a channel, with these keys:
|
/// @returns Dictionary describing a channel, with these keys:
|
||||||
/// - "id" Channel id.
|
/// - "id" Channel id.
|
||||||
/// - "argv" (optional) Job arguments list.
|
/// - "argv" (optional) Job arguments list.
|
||||||
@ -1633,12 +1634,17 @@ void nvim_set_client_info(uint64_t channel_id, String name, Dictionary version,
|
|||||||
/// the RPC channel), if provided by it via
|
/// the RPC channel), if provided by it via
|
||||||
/// |nvim_set_client_info()|.
|
/// |nvim_set_client_info()|.
|
||||||
///
|
///
|
||||||
Dictionary nvim_get_chan_info(Integer chan, Error *err)
|
Dictionary nvim_get_chan_info(uint64_t channel_id, Integer chan, Error *err)
|
||||||
FUNC_API_SINCE(4)
|
FUNC_API_SINCE(4)
|
||||||
{
|
{
|
||||||
if (chan < 0) {
|
if (chan < 0) {
|
||||||
return (Dictionary)ARRAY_DICT_INIT;
|
return (Dictionary)ARRAY_DICT_INIT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (chan == 0 && !is_internal_call(channel_id)) {
|
||||||
|
assert(channel_id <= INT64_MAX);
|
||||||
|
chan = (Integer)channel_id;
|
||||||
|
}
|
||||||
return channel_info((uint64_t)chan);
|
return channel_info((uint64_t)chan);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2449,7 +2449,6 @@ describe('API', function()
|
|||||||
}
|
}
|
||||||
|
|
||||||
it('returns {} for invalid channel', function()
|
it('returns {} for invalid channel', function()
|
||||||
eq({}, api.nvim_get_chan_info(0))
|
|
||||||
eq({}, api.nvim_get_chan_info(-1))
|
eq({}, api.nvim_get_chan_info(-1))
|
||||||
-- more preallocated numbers might be added, try something high
|
-- more preallocated numbers might be added, try something high
|
||||||
eq({}, api.nvim_get_chan_info(10))
|
eq({}, api.nvim_get_chan_info(10))
|
||||||
@ -2457,6 +2456,8 @@ describe('API', function()
|
|||||||
|
|
||||||
it('stream=stdio channel', function()
|
it('stream=stdio channel', function()
|
||||||
eq({ [1] = testinfo, [2] = stderr }, api.nvim_list_chans())
|
eq({ [1] = testinfo, [2] = stderr }, api.nvim_list_chans())
|
||||||
|
-- 0 should return current channel
|
||||||
|
eq(testinfo, api.nvim_get_chan_info(0))
|
||||||
eq(testinfo, api.nvim_get_chan_info(1))
|
eq(testinfo, api.nvim_get_chan_info(1))
|
||||||
eq(stderr, api.nvim_get_chan_info(2))
|
eq(stderr, api.nvim_get_chan_info(2))
|
||||||
|
|
||||||
@ -2522,6 +2523,7 @@ describe('API', function()
|
|||||||
"Vim:Error invoking 'nvim_set_current_buf' on channel 3 (amazing-cat):\nWrong type for argument 1 when calling nvim_set_current_buf, expecting Buffer",
|
"Vim:Error invoking 'nvim_set_current_buf' on channel 3 (amazing-cat):\nWrong type for argument 1 when calling nvim_set_current_buf, expecting Buffer",
|
||||||
pcall_err(eval, 'rpcrequest(3, "nvim_set_current_buf", -1)')
|
pcall_err(eval, 'rpcrequest(3, "nvim_set_current_buf", -1)')
|
||||||
)
|
)
|
||||||
|
eq(info, eval('rpcrequest(3, "nvim_get_chan_info", 0)'))
|
||||||
end)
|
end)
|
||||||
|
|
||||||
it('stream=job :terminal channel', function()
|
it('stream=job :terminal channel', function()
|
||||||
|
Reference in New Issue
Block a user