Files
nvim/after/lsp/emmylua_ls.lua
T

82 lines
2.4 KiB
Lua

---@type vim.lsp.Config
return {
settings = {
emmylua = {
diagnostics = {
disable = {
"unnecessary-if",
"preferred-local-alias",
"redefined-local",
},
},
format = {
-- Re-enable once luafmt is integrated in server
-- useDiff = true,
},
hint = {
enable = false,
},
},
},
---@param config vim.lsp.ClientConfig
before_init = function(_, config)
---@param path string|string[]
---@return string?
local function realpath(path)
---@type string?
local p
if type(path) == "table" then
p = path[1]
else
p = path
end
return p and vim.uv.fs_realpath(p) or p
end
local config_root = realpath(vim.fn.stdpath("config"))
local folder = config.workspace_folders and config.workspace_folders[1]
local root = config.root_dir or (folder and folder.name)
if root and realpath(root) == config_root then
local lib = { vim.env.VIMRUNTIME }
vim.list_extend(lib, require("pack").get_paths())
---@cast config.settings table
config.settings.emmylua =
vim.tbl_deep_extend("force", config.settings.emmylua or {}, {
workspace = { library = lib },
})
end
end,
on_attach = function(_, bufnr)
local util = require("util")
vim.keymap.set("n", "<leader>lf", function()
util.format({
buf = bufnr,
cmd = {
"stylua",
"--stdin-filepath",
"%file%",
"-",
},
output = "stdout",
})
end, { buffer = bufnr })
vim.keymap.set("x", "<leader>lf", function()
util.format({
buf = bufnr,
cmd = {
"stylua",
"--range-start",
"%byte_start%",
"--range-end",
"%byte_end%",
"--stdin-filepath",
"%file%",
"-",
},
output = "stdout",
})
end, { buffer = bufnr })
end,
}