2022-03-20 10:22:32 +08:00
local util = require ' lspconfig.util '
2021-10-05 15:13:10 +08:00
2022-06-21 14:24:21 +08:00
local root_files = {
' .luarc.json ' ,
' .luacheckrc ' ,
' .stylua.toml ' ,
2022-07-24 16:14:35 +08:00
' stylua.toml ' ,
2022-06-21 14:24:21 +08:00
' selene.toml ' ,
}
2022-09-10 19:50:22 +08:00
local bin_name = ' lua-language-server '
local cmd = { bin_name }
if vim.fn . has ' win32 ' == 1 then
cmd = { ' cmd.exe ' , ' /C ' , bin_name }
end
2022-03-20 10:22:32 +08:00
return {
2021-10-05 15:13:10 +08:00
default_config = {
2022-09-10 19:50:22 +08:00
cmd = cmd ,
2021-10-05 15:13:10 +08:00
filetypes = { ' lua ' } ,
2022-06-21 14:24:21 +08:00
root_dir = function ( fname )
2022-09-10 19:50:22 +08:00
local root = util.root_pattern ( unpack ( root_files ) ) ( fname )
if root and root ~= vim.env . HOME then
return root
end
return util.find_git_ancestor ( fname )
2022-06-21 14:24:21 +08:00
end ,
2022-03-20 10:22:32 +08:00
single_file_support = true ,
2021-10-05 15:13:10 +08:00
log_level = vim.lsp . protocol.MessageType . Warning ,
settings = { Lua = { telemetry = { enable = false } } } ,
} ,
docs = {
description = [ [
https : // github.com / sumneko / lua - language - server
Lua language server .
2022-06-21 14:24:21 +08:00
` lua - language - server ` can be installed by following the instructions [ here ] ( https : // github.com / sumneko / lua - language - server / wiki / Build - and - Run ) .
2021-10-05 15:13:10 +08:00
2022-06-21 14:24:21 +08:00
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 .
2021-10-05 15:13:10 +08:00
2022-06-21 14:24:21 +08:00
` ` ` lua
2021-10-05 15:13:10 +08:00
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 ,
} ,
} ,
} ,
}
` ` `
2022-06-21 14:24:21 +08:00
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 / 076 dd3e5c4e03f9cef0c5757dfa09a010c0ec6bf / locale / en - us / setting.lua # L5 - L13 )
* [ Lua.workspace . library ] ( https : // github.com / sumneko / lua - language - server / blob / 076 dd3e5c4e03f9cef0c5757dfa09a010c0ec6bf / locale / en - us / setting.lua # L77 - L78 )
2021-10-05 15:13:10 +08:00
] ] ,
default_config = {
2022-07-24 16:14:35 +08:00
root_dir = [[root_pattern(".luarc.json", ".luacheckrc", ".stylua.toml", "stylua.toml", "selene.toml", ".git")]] ,
2021-10-05 15:13:10 +08:00
} ,
} ,
}