---@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", "lf", function() util.format({ buf = bufnr, cmd = { "stylua", "--stdin-filepath", "%file%", "-", }, output = "stdout", }) end, { buffer = bufnr }) vim.keymap.set("x", "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, }