feat(lsp): allow overriding options for vim.lsp.buf.format. Fixes #51

This commit is contained in:
Folke Lemaitre
2023-01-13 22:46:16 +01:00
parent 688436c9af
commit 40d363cf3f
3 changed files with 20 additions and 2 deletions

View File

@ -18,7 +18,7 @@ function M.format()
local ft = vim.bo[buf].filetype
local have_nls = #require("null-ls.sources").get_available(ft, "NULL_LS_FORMATTING") > 0
vim.lsp.buf.format({
vim.lsp.buf.format(vim.tbl_deep_extend("force", {
bufnr = buf,
filter = function(client)
if have_nls then
@ -26,7 +26,7 @@ function M.format()
end
return client.name ~= "null-ls"
end,
})
}, require("lazyvim.util").opts("nvim-lspconfig").format or {}))
end
function M.on_attach(client, buf)

View File

@ -12,12 +12,20 @@ return {
},
---@class PluginLspOpts
opts = {
-- options for vim.diagnostic.config()
diagnostics = {
underline = true,
update_in_insert = false,
virtual_text = { spacing = 4, prefix = "" },
severity_sort = true,
},
-- options for vim.lsp.buf.format
-- `bufnr` and `filter` is handled by the LazyVim formatter,
-- but can be also overriden when specified
format = {
formatting_options = nil,
timeout = nil,
},
---@type lspconfig.options
servers = {
jsonls = {},

View File

@ -20,6 +20,16 @@ function M.has(plugin)
return require("lazy.core.config").plugins[plugin] ~= nil
end
---@param name string
function M.opts(name)
local plugin = require("lazy.core.config").plugins[name]
if not plugin then
return {}
end
local Plugin = require("lazy.core.plugin")
return Plugin.values(plugin, "opts", false)
end
-- returns the root directory based on:
-- * lsp workspace folders
-- * lsp root_dir