mirror of
				https://github.com/neovim/neovim.git
				synced 2025-10-26 12:27:24 +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
	 nikolightsaber
					nikolightsaber