Skip to content

Commit

Permalink
fix(lsp): rename LspProgress data.result => data.params #28632
Browse files Browse the repository at this point in the history
Rename the field `result` to `params` in the `data` table for
`LspProgress` autocmds. This aligns with LspNotify.

The previous name was chosen because the initial handler implementation
mistakenly had a parameter name `result` instead of `params` for the
`$/progress` LSP "notification" handler. However, `params` would be a
more appropriate name that is more consistent with the underlying LSP
type (`ProgressParams`).

See also: https://microsoft.github.io/language-server-protocol/specifications/specification-current/#progress
  • Loading branch information
wookayin committed May 7, 2024
1 parent e7f50f4 commit e14e750
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 11 deletions.
6 changes: 3 additions & 3 deletions runtime/doc/lsp.txt
Original file line number Diff line number Diff line change
Expand Up @@ -544,14 +544,14 @@ LspNotify *LspNotify*
LspProgress *LspProgress*
Upon receipt of a progress notification from the server. Notifications can
be polled from a `progress` ring buffer of a |vim.lsp.Client| or use
|vim.lsp.status()| to get an aggregate message
|vim.lsp.status()| to get an aggregate message.

If the server sends a "work done progress", the `pattern` is set to `kind`
(one of `begin`, `report` or `end`).

When used from Lua, the event contains a `data` table with `client_id` and
`result` properties. `result` will contain the request params sent by the
server.
`params` properties. `params` will contain the request params sent by the
server (see `lsp.ProgressParams`).

Example: >vim
autocmd LspProgress * redrawstatus
Expand Down
2 changes: 2 additions & 0 deletions runtime/doc/news.txt
Original file line number Diff line number Diff line change
Expand Up @@ -178,6 +178,8 @@ cycle (Nvim HEAD, the "master" branch).

• Renamed vim.snippet.exit() to vim.snippet.stop().

• Changed |event-data| table for |LspProgress|: renamed `result` to `params`.

==============================================================================
NEW FEATURES *news-features*

Expand Down
16 changes: 8 additions & 8 deletions runtime/lua/vim/lsp/handlers.lua
Original file line number Diff line number Diff line change
Expand Up @@ -22,38 +22,38 @@ M[ms.workspace_executeCommand] = function(_, _, _, _)
end

--- @see # https://microsoft.github.io/language-server-protocol/specifications/specification-current/#progress
---@param result lsp.ProgressParams
---@param params lsp.ProgressParams
---@param ctx lsp.HandlerContext
M[ms.dollar_progress] = function(_, result, ctx)
M[ms.dollar_progress] = function(_, params, ctx)
local client = vim.lsp.get_client_by_id(ctx.client_id)
if not client then
err_message('LSP[id=', tostring(ctx.client_id), '] client has shut down during progress update')
return vim.NIL
end
local kind = nil
local value = result.value
local value = params.value

if type(value) == 'table' then
kind = value.kind
-- Carry over title of `begin` messages to `report` and `end` messages
-- So that consumers always have it available, even if they consume a
-- subset of the full sequence
if kind == 'begin' then
client.progress.pending[result.token] = value.title
client.progress.pending[params.token] = value.title
else
value.title = client.progress.pending[result.token]
value.title = client.progress.pending[params.token]
if kind == 'end' then
client.progress.pending[result.token] = nil
client.progress.pending[params.token] = nil
end
end
end

client.progress:push(result)
client.progress:push(params)

api.nvim_exec_autocmds('LspProgress', {
pattern = kind,
modeline = false,
data = { client_id = ctx.client_id, result = result },
data = { client_id = ctx.client_id, params = params },
})
end

Expand Down

0 comments on commit e14e750

Please sign in to comment.