From 214b125132778c5d51d4d7e673d31a9be835e150 Mon Sep 17 00:00:00 2001 From: Raphael Date: Thu, 3 Aug 2023 17:52:21 +0800 Subject: fix(gen_lsp.lua): no notifications in lsp.Methods #24530 Problem: - Notifications are missing from `lsp.Methods`. - Need a way to represent `$/` prefixed methods. Solution: - Generate notifications. - Use "dollar_" prefix for `$/` methods. --- scripts/gen_lsp.lua | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'scripts') diff --git a/scripts/gen_lsp.lua b/scripts/gen_lsp.lua index ef9d6c41df..a1bcce4135 100644 --- a/scripts/gen_lsp.lua +++ b/scripts/gen_lsp.lua @@ -35,7 +35,8 @@ end -- Gets the Lua symbol for a given fully-qualified LSP method name. local function name(s) - return s:gsub('/', '_', 3) + -- "$/" prefix is special: https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#dollarRequests + return s:gsub('^%$', 'dollar'):gsub('/', '_') end local function gen_methods(protocol) @@ -48,10 +49,11 @@ local function gen_methods(protocol) } local indent = (' '):rep(2) - table.sort(protocol.requests, function(a, b) + local all = vim.list_extend(protocol.requests, protocol.notifications) + table.sort(all, function(a, b) return name(a.method) < name(b.method) end) - for _, item in ipairs(protocol.requests) do + for _, item in ipairs(all) do if item.method then if item.documentation then local document = vim.split(item.documentation, '\n?\n', { trimempty = true }) -- cgit