From 6669f2d8ebc38cfb9e639145569f94be5556d916 Mon Sep 17 00:00:00 2001 From: figsoda Date: Sat, 11 Feb 2023 21:30:20 -0500 Subject: feat: rename sumneko_lua -> lua_ls (#2439) * feat: rename sumneko_lua -> lua_language_server * refactor(sumneko_lua): use vim.deprecate * refactor: handle deprecated server aliases in one place * refactor: put server aliases in a function * feat: rename lua_language_server -> lua_ls --- lua/lspconfig.lua | 22 ++++++ lua/lspconfig/server_configurations/lua_ls.lua | 91 ++++++++++++++++++++++ .../server_configurations/sumneko_lua.lua | 91 ---------------------- test/lspconfig_spec.lua | 2 +- test/minimal_init.lua | 2 +- 5 files changed, 115 insertions(+), 93 deletions(-) create mode 100644 lua/lspconfig/server_configurations/lua_ls.lua delete mode 100644 lua/lspconfig/server_configurations/sumneko_lua.lua diff --git a/lua/lspconfig.lua b/lua/lspconfig.lua index cf6ac633..c6e3b2d1 100644 --- a/lua/lspconfig.lua +++ b/lua/lspconfig.lua @@ -9,9 +9,31 @@ function M.available_servers() return M.util.available_servers() end +---@class Alias +---@field to string The new name of the server +---@field version string The version that the alias will be removed in +---@param name string +---@return Alias +local function server_alias(name) + local aliases = { + sumneko_lua = { + to = 'lua_ls', + version = '0.2.0', + }, + } + + return aliases[name] +end + local mt = {} function mt:__index(k) if configs[k] == nil then + local alias = server_alias(k) + if alias then + vim.deprecate(k, alias.to, alias.version, 'lspconfig') + k = alias.to + end + local success, config = pcall(require, 'lspconfig.server_configurations.' .. k) if success then configs[k] = config diff --git a/lua/lspconfig/server_configurations/lua_ls.lua b/lua/lspconfig/server_configurations/lua_ls.lua new file mode 100644 index 00000000..7ab54cf8 --- /dev/null +++ b/lua/lspconfig/server_configurations/lua_ls.lua @@ -0,0 +1,91 @@ +local util = require 'lspconfig.util' + +local root_files = { + '.luarc.json', + '.luarc.jsonc', + '.luacheckrc', + '.stylua.toml', + 'stylua.toml', + 'selene.toml', + 'selene.yml', +} + +local bin_name = 'lua-language-server' +local cmd = { bin_name } + +if vim.fn.has 'win32' == 1 then + cmd = { 'cmd.exe', '/C', bin_name } +end + +return { + default_config = { + cmd = cmd, + filetypes = { 'lua' }, + root_dir = function(fname) + local root = util.root_pattern(unpack(root_files))(fname) + if root and root ~= vim.env.HOME then + return root + end + root = util.root_pattern 'lua/'(fname) + if root then + return root .. '/lua/' + end + return util.find_git_ancestor(fname) + end, + single_file_support = true, + log_level = vim.lsp.protocol.MessageType.Warning, + settings = { Lua = { telemetry = { enable = false } } }, + }, + docs = { + description = [[ +https://github.com/luals/lua-language-server + +Lua language server. + +`lua-language-server` can be installed by following the instructions [here](https://github.com/luals/lua-language-server/wiki/Getting-Started#command-line). + +The default `cmd` assumes that the `lua-language-server` binary can be found in `$PATH`. + +If you primarily use `lua-language-server` for Neovim, and want to provide completions, +analysis, and location handling for plugins on runtime path, you can use the following +settings. + +Note: that these settings will meaningfully increase the time until `lua-language-server` can service +initial requests (completion, location) upon starting as well as time to first diagnostics. +Completion results will include a workspace indexing progress message until the server has finished indexing. + +```lua +require'lspconfig'.lua_ls.setup { + settings = { + Lua = { + runtime = { + -- Tell the language server which version of Lua you're using (most likely LuaJIT in the case of Neovim) + version = 'LuaJIT', + }, + diagnostics = { + -- Get the language server to recognize the `vim` global + globals = {'vim'}, + }, + workspace = { + -- Make the server aware of Neovim runtime files + library = vim.api.nvim_get_runtime_file("", true), + }, + -- Do not send telemetry data containing a randomized but unique identifier + telemetry = { + enable = false, + }, + }, + }, +} +``` + +See `lua-language-server`'s [documentation](https://github.com/luals/lua-language-server/blob/master/locale/en-us/setting.lua) for an explanation of the above fields: +* [Lua.runtime.path](https://github.com/luals/lua-language-server/blob/076dd3e5c4e03f9cef0c5757dfa09a010c0ec6bf/locale/en-us/setting.lua#L5-L13) +* [Lua.workspace.library](https://github.com/luals/lua-language-server/blob/076dd3e5c4e03f9cef0c5757dfa09a010c0ec6bf/locale/en-us/setting.lua#L77-L78) + +]], + default_config = { + root_dir = [[root_pattern(".luarc.json", ".luarc.jsonc", ".luacheckrc", ".stylua.toml", "stylua.toml", "selene.toml", "selene.yml", ".git")]], + }, + }, +} diff --git a/lua/lspconfig/server_configurations/sumneko_lua.lua b/lua/lspconfig/server_configurations/sumneko_lua.lua deleted file mode 100644 index 0f89bbd6..00000000 --- a/lua/lspconfig/server_configurations/sumneko_lua.lua +++ /dev/null @@ -1,91 +0,0 @@ -local util = require 'lspconfig.util' - -local root_files = { - '.luarc.json', - '.luarc.jsonc', - '.luacheckrc', - '.stylua.toml', - 'stylua.toml', - 'selene.toml', - 'selene.yml', -} - -local bin_name = 'lua-language-server' -local cmd = { bin_name } - -if vim.fn.has 'win32' == 1 then - cmd = { 'cmd.exe', '/C', bin_name } -end - -return { - default_config = { - cmd = cmd, - filetypes = { 'lua' }, - root_dir = function(fname) - local root = util.root_pattern(unpack(root_files))(fname) - if root and root ~= vim.env.HOME then - return root - end - root = util.root_pattern 'lua/'(fname) - if root then - return root .. '/lua/' - end - return util.find_git_ancestor(fname) - end, - single_file_support = true, - log_level = vim.lsp.protocol.MessageType.Warning, - settings = { Lua = { telemetry = { enable = false } } }, - }, - docs = { - description = [[ -https://github.com/sumneko/lua-language-server - -Lua language server. - -`lua-language-server` can be installed by following the instructions [here](https://github.com/sumneko/lua-language-server/wiki/Getting-Started#command-line). - -The default `cmd` assumes that the `lua-language-server` binary can be found in `$PATH`. - -If you primarily use `lua-language-server` for Neovim, and want to provide completions, -analysis, and location handling for plugins on runtime path, you can use the following -settings. - -Note: that these settings will meaningfully increase the time until `lua-language-server` can service -initial requests (completion, location) upon starting as well as time to first diagnostics. -Completion results will include a workspace indexing progress message until the server has finished indexing. - -```lua -require'lspconfig'.sumneko_lua.setup { - settings = { - Lua = { - runtime = { - -- Tell the language server which version of Lua you're using (most likely LuaJIT in the case of Neovim) - version = 'LuaJIT', - }, - diagnostics = { - -- Get the language server to recognize the `vim` global - globals = {'vim'}, - }, - workspace = { - -- Make the server aware of Neovim runtime files - library = vim.api.nvim_get_runtime_file("", true), - }, - -- Do not send telemetry data containing a randomized but unique identifier - telemetry = { - enable = false, - }, - }, - }, -} -``` - -See `lua-language-server`'s [documentation](https://github.com/sumneko/lua-language-server/blob/master/locale/en-us/setting.lua) for an explanation of the above fields: -* [Lua.runtime.path](https://github.com/sumneko/lua-language-server/blob/076dd3e5c4e03f9cef0c5757dfa09a010c0ec6bf/locale/en-us/setting.lua#L5-L13) -* [Lua.workspace.library](https://github.com/sumneko/lua-language-server/blob/076dd3e5c4e03f9cef0c5757dfa09a010c0ec6bf/locale/en-us/setting.lua#L77-L78) - -]], - default_config = { - root_dir = [[root_pattern(".luarc.json", ".luarc.jsonc", ".luacheckrc", ".stylua.toml", "stylua.toml", "selene.toml", "selene.yml", ".git")]], - }, - }, -} diff --git a/test/lspconfig_spec.lua b/test/lspconfig_spec.lua index b899c09d..1df3464a 100644 --- a/test/lspconfig_spec.lua +++ b/test/lspconfig_spec.lua @@ -332,7 +332,7 @@ describe('lspconfig', function() exec_lua [[ local lspconfig = require("lspconfig") local actual = nil - local _ = lspconfig.sumneko_lua + local _ = lspconfig.lua_ls local _ = lspconfig.tsserver lspconfig.rust_analyzer.setup {} return require("lspconfig.util").available_servers() diff --git a/test/minimal_init.lua b/test/minimal_init.lua index 841cb67c..8b27728d 100644 --- a/test/minimal_init.lua +++ b/test/minimal_init.lua @@ -52,7 +52,7 @@ end -- Add the server that troubles you here local name = 'pyright' -local cmd = { 'pyright-langserver', '--stdio' } -- needed for elixirls, omnisharp, sumneko_lua +local cmd = { 'pyright-langserver', '--stdio' } -- needed for elixirls, lua_ls, omnisharp if not name then print 'You have not defined a server name, please edit minimal_init.lua' end -- cgit v1.2.3-70-g09d2