diff options
author | Lewis Russell <lewis6991@gmail.com> | 2024-10-29 09:36:02 +0000 |
---|---|---|
committer | Lewis Russell <me@lewisr.dev> | 2024-11-01 09:17:39 +0000 |
commit | 9b357e30fdd0a575480182872331fdb87e9cc331 (patch) | |
tree | 02e7a8ce3fcd70946acca8e27d2769dfcf75b6e3 /scripts/gen_lsp.lua | |
parent | f54266dbed6f1a4cb4fad3486a722a25070d7feb (diff) | |
download | rneovim-9b357e30fdd0a575480182872331fdb87e9cc331.tar.gz rneovim-9b357e30fdd0a575480182872331fdb87e9cc331.tar.bz2 rneovim-9b357e30fdd0a575480182872331fdb87e9cc331.zip |
feat(lsp)!: remove client-server handlers from vim.lsp.handlers
- Partition the handlers in vim.lsp.handlers as:
- client to server response handlers (RCS)
- server to client request handlers (RSC)
- server to client notification handlers (NSC)
Note use string indexes instead of protocol.methods for improved
typing in LuaLS (tip: use hover on RCS, RSC or NSC).
Diffstat (limited to 'scripts/gen_lsp.lua')
-rw-r--r-- | scripts/gen_lsp.lua | 43 |
1 files changed, 35 insertions, 8 deletions
diff --git a/scripts/gen_lsp.lua b/scripts/gen_lsp.lua index c8dcf8c018..8afbae239a 100644 --- a/scripts/gen_lsp.lua +++ b/scripts/gen_lsp.lua @@ -58,14 +58,6 @@ end ---@param protocol vim._gen_lsp.Protocol local function gen_methods(protocol) - local output = { - '-- Generated by gen_lsp.lua, keep at end of file.', - '---', - '---@enum vim.lsp.protocol.Methods', - '---@see https://microsoft.github.io/language-server-protocol/specification/#metaModel', - '--- LSP method names.', - 'protocol.Methods = {', - } local indent = (' '):rep(2) --- @class vim._gen_lsp.Request @@ -98,6 +90,41 @@ local function gen_methods(protocol) table.sort(all, function(a, b) return to_luaname(a.method) < to_luaname(b.method) end) + + local output = { + '-- Generated by gen_lsp.lua, keep at end of file.', + '--- @alias vim.lsp.protocol.Method.ClientToServer', + } + for _, item in ipairs(all) do + if item.method and item.messageDirection == 'clientToServer' then + output[#output + 1] = ("--- | '%s',"):format(item.method) + end + end + + vim.list_extend(output, { + '', + '--- @alias vim.lsp.protocol.Method.ServerToClient', + }) + for _, item in ipairs(all) do + if item.method and item.messageDirection == 'serverToClient' then + output[#output + 1] = ("--- | '%s',"):format(item.method) + end + end + + vim.list_extend(output, { + '', + '--- @alias vim.lsp.protocol.Method', + '--- | vim.lsp.protocol.Method.ClientToServer', + '--- | vim.lsp.protocol.Method.ServerToClient', + '', + '-- Generated by gen_lsp.lua, keep at end of file.', + '---', + '--- @enum vim.lsp.protocol.Methods', + '--- @see https://microsoft.github.io/language-server-protocol/specification/#metaModel', + '--- LSP method names.', + 'protocol.Methods = {', + }) + for _, item in ipairs(all) do if item.method then if item.documentation then |