feat(api): optional params after opts #40720

Problem:
After 25439dad7e, `opts` is optional, but not params that follow it.

Solution:
- Update `gen_api_dispatch.lua`, docs, tests.
- Enhance the `nvim_get_api_info()` api-metadata to include a boolean
  flag indicating whether a parameter is optional:
  ```
  [type, name, optional]
  ```

Note: Currently, optional params are assumed to be Dict/Array. Since we
don't yet have any use-cases of optional params following `opts`, the
build just checks this assumption and we can deal with it later if we
ever care to:

    nvim_get_hl: optional param "foo" has type "Integer" but (currently)
    we assume Dict/Array
This commit is contained in:
Justin M. Keyes
2026-07-13 13:43:49 -04:00
committed by GitHub
parent 01d1ee330f
commit dc8934482e
7 changed files with 166 additions and 106 deletions

View File

@@ -210,7 +210,7 @@ end
---
--- -- Convert to mark position, you can call it in a method style.
--- local lnum, col = pos:to_mark()
--- vim.api.nvim_buf_set_mark(0, 'M', lnum, col, {})
--- vim.api.nvim_buf_set_mark(0, 'M', lnum, col)
--- ```
---@param pos vim.Pos
---@return integer lnum, integer col
@@ -223,7 +223,7 @@ end
---
--- Example:
--- ```lua
--- local mark_info = vim.api.nvim_get_mark('M', {})
--- local mark_info = vim.api.nvim_get_mark('M')
--- local lnum, col, buf, name = unpack(mark_info)
---
--- if lnum == 0 and col == 0 and buf == 0 then