mirror of
https://github.com/nix-community/nixvim.git
synced 2025-06-20 16:15:43 +02:00
Port lsp-format to use non-deprecated setup instructions
Upstream still documents the now-deprecated `require("lspconfig").<name>.setup` mechanism. I believe the modern alternative is to register a `LspAttach` autocmd. For more context, see: - https://github.com/lukas-reineke/lsp-format.nvim/issues/98 - https://github.com/lukas-reineke/lsp-format.nvim/pull/99
This commit is contained in:
parent
4016854bcc
commit
64cd675ece
2 changed files with 73 additions and 22 deletions
|
@ -78,8 +78,7 @@ lib.nixvim.plugins.mkNeovimPlugin {
|
||||||
- "all" (default): Enable formatting for all language servers
|
- "all" (default): Enable formatting for all language servers
|
||||||
- "none": Do not enable formatting on any language server.
|
- "none": Do not enable formatting on any language server.
|
||||||
You might choose this if for some reason you want to manually call
|
You might choose this if for some reason you want to manually call
|
||||||
`require("lsp-format").on_attach(client)` in the `onAttach` function of your language
|
`require("lsp-format").on_attach(client)`.
|
||||||
servers.
|
|
||||||
- list of LS names: Manually choose the servers by name
|
- list of LS names: Manually choose the servers by name
|
||||||
'';
|
'';
|
||||||
example = [
|
example = [
|
||||||
|
@ -91,28 +90,41 @@ lib.nixvim.plugins.mkNeovimPlugin {
|
||||||
|
|
||||||
extraConfig = cfg: {
|
extraConfig = cfg: {
|
||||||
warnings = lib.nixvim.mkWarnings "plugins.lsp-format" {
|
warnings = lib.nixvim.mkWarnings "plugins.lsp-format" {
|
||||||
when = !config.plugins.lsp.enable;
|
when = !(config.plugins.lsp.enable || config.plugins.lspconfig.enable);
|
||||||
message = ''
|
message = ''
|
||||||
This plugin requires `plugins.lsp` to be enabled.
|
This plugin requires either `plugins.lsp` or `plugins.lspconfig` to be enabled.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
plugins.lsp = {
|
autoGroups.nixvim_lsp_fmt_setup.clear = false;
|
||||||
onAttach =
|
|
||||||
lib.mkIf (cfg.lspServersToEnable == "all") # Lua
|
autoCmd = lib.optionals (cfg.lspServersToEnable != "none") [
|
||||||
''
|
{
|
||||||
require("lsp-format").on_attach(client)
|
desc = "set up autoformatting on LSP attach";
|
||||||
|
event = "LspAttach";
|
||||||
|
group = "nixvim_lsp_fmt_setup";
|
||||||
|
callback =
|
||||||
|
let
|
||||||
|
enableCondition =
|
||||||
|
if cfg.lspServersToEnable == "all" then
|
||||||
|
"true"
|
||||||
|
else if lib.isList cfg.lspServersToEnable then
|
||||||
|
# Lua
|
||||||
|
"vim.list_contains(${lib.nixvim.toLuaObject cfg.lspServersToEnable}, client.name)"
|
||||||
|
else
|
||||||
|
throw "Unhandled value for `lspServersToEnable`: ${
|
||||||
|
lib.generators.toPretty { } cfg.lspServersToEnable
|
||||||
|
}";
|
||||||
|
in
|
||||||
|
lib.nixvim.mkRaw ''
|
||||||
|
function(args)
|
||||||
|
local client = assert(vim.lsp.get_client_by_id(args.data.client_id))
|
||||||
|
if ${enableCondition} then
|
||||||
|
require("lsp-format").on_attach(client, args.buf)
|
||||||
|
end
|
||||||
|
end
|
||||||
'';
|
'';
|
||||||
|
}
|
||||||
servers = lib.optionalAttrs (lib.isList cfg.lspServersToEnable) (
|
];
|
||||||
lib.genAttrs cfg.lspServersToEnable (serverName: {
|
|
||||||
onAttach.function = # Lua
|
|
||||||
''
|
|
||||||
require("lsp-format").on_attach(client)
|
|
||||||
'';
|
|
||||||
})
|
|
||||||
);
|
|
||||||
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
{
|
{
|
||||||
empty = {
|
legacy-empty = {
|
||||||
plugins.lsp.enable = true;
|
plugins.lsp.enable = true;
|
||||||
plugins.lsp-format.enable = true;
|
plugins.lsp-format.enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
example = {
|
legacy-example = {
|
||||||
plugins = {
|
plugins = {
|
||||||
lsp = {
|
lsp = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
@ -37,4 +37,43 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
empty = {
|
||||||
|
plugins.lspconfig.enable = true;
|
||||||
|
plugins.lsp-format.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
none = {
|
||||||
|
plugins.lspconfig.enable = true;
|
||||||
|
plugins.lsp-format = {
|
||||||
|
enable = true;
|
||||||
|
lspServersToEnable = "none";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
example = {
|
||||||
|
plugins = {
|
||||||
|
lspconfig.enable = true;
|
||||||
|
lsp.servers.gopls.enable = true;
|
||||||
|
|
||||||
|
lsp-format = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
go = {
|
||||||
|
exclude = [ "gopls" ];
|
||||||
|
order = [
|
||||||
|
"gopls"
|
||||||
|
"efm"
|
||||||
|
];
|
||||||
|
sync = true;
|
||||||
|
force = true;
|
||||||
|
|
||||||
|
# Test the ability to provide extra options for each filetype
|
||||||
|
someRandomOption = 42;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue