82 lines
2.4 KiB
Lua
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,
|
|
}
|