nix-community.nixvim/plugins/languages/rust/rustaceanvim/default.nix
Austin Horstman a1c7932bdb
plugins/rustaceanvim: fix checkhealth error with neotest configuration
Rustaceanvim will throw an error if the configuration is sourced after
initialization. Our globals are defined at the top of the init.lua so
moving the settings to leverage the globals option and setting a
callback function as default to ensure we dont need to worry about
something initializing it before lspOnAttach is available.
2024-08-24 11:50:06 -05:00

86 lines
2.1 KiB
Nix

{
lib,
helpers,
config,
pkgs,
...
}:
with lib;
helpers.neovim-plugin.mkNeovimPlugin config {
name = "rustaceanvim";
defaultPackage = pkgs.vimPlugins.rustaceanvim;
maintainers = [ maintainers.GaetanLepage ];
# TODO: introduced 2024-05-17, remove on 2024-02-17
deprecateExtraOptions = true;
optionsRenamedToSettings = import ./renamed-options.nix;
extraOptions = {
rustAnalyzerPackage = helpers.mkPackageOption {
name = "rust-analyzer";
default = pkgs.rust-analyzer;
};
};
settingsOptions = import ./settings-options.nix { inherit lib helpers pkgs; };
settingsExample = {
server = {
standalone = false;
cmd = [
"rustup"
"run"
"nightly"
"rust-analyzer"
];
default_settings = {
rust-analyzer = {
inlayHints = {
lifetimeElisionHints = {
enable = "always";
};
};
check = {
command = "clippy";
};
};
};
};
};
callSetup = false;
extraConfig =
cfg:
mkMerge [
{
extraPackages = [ cfg.rustAnalyzerPackage ];
globals.rustaceanvim = cfg.settings;
# TODO: remove after 24.11
warnings =
optional
(hasAttrByPath [
"settings"
"server"
"settings"
] cfg)
''
The `plugins.rustaceanvim.settings.server.settings' option has been renamed to `plugins.rustaceanvim.settings.server.default_settings'.
Note that if you supplied an attrset and not a function you need to set this attr set in:
`plugins.rustaceanvim.settings.server.default_settings.rust-analyzer'.
'';
}
# If nvim-lspconfig is enabled:
(mkIf config.plugins.lsp.enable {
# Use the same `on_attach` callback as for the other LSP servers
plugins.rustaceanvim.settings.server.on_attach = mkDefault ''
function(client, bufnr)
return _M.lspOnAttach(client, bufnr)
end
'';
})
];
}