diff --git a/configuration.nix b/configuration.nix index 750862af..cc314288 100644 --- a/configuration.nix +++ b/configuration.nix @@ -69,7 +69,7 @@ isMaximal: { typst.enable = isMaximal; rust = { enable = isMaximal; - crates.enable = isMaximal; + extensions.crates-nvim.enable = isMaximal; }; # Language modules that are not as common. diff --git a/docs/release-notes/rl-0.8.md b/docs/release-notes/rl-0.8.md index acfb714a..8c4c622b 100644 --- a/docs/release-notes/rl-0.8.md +++ b/docs/release-notes/rl-0.8.md @@ -507,6 +507,7 @@ - fix broken `neorg` grammars - remove obsolete warning in the `otter` module - add mainProgram attribute to vala language server wrapper +- fix `crates-nvim`'s completions by using the in-program lsp [JManch](https://github.com/JManch): diff --git a/flake.lock b/flake.lock index 5a357a75..9e8b3eb5 100644 --- a/flake.lock +++ b/flake.lock @@ -53,11 +53,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1761880412, - "narHash": "sha256-QoJjGd4NstnyOG4mm4KXF+weBzA2AH/7gn1Pmpfcb0A=", + "lastModified": 1764081664, + "narHash": "sha256-sUoHmPr/EwXzRMpv1u/kH+dXuvJEyyF2Q7muE+t0EU4=", "owner": "nixos", "repo": "nixpkgs", - "rev": "a7fc11be66bdfb5cdde611ee5ce381c183da8386", + "rev": "dc205f7b4fdb04c8b7877b43edb7b73be7730081", "type": "github" }, "original": { diff --git a/modules/plugins/languages/astro.nix b/modules/plugins/languages/astro.nix index a7742325..2cf6ee04 100644 --- a/modules/plugins/languages/astro.nix +++ b/modules/plugins/languages/astro.nix @@ -43,10 +43,10 @@ defaultFormat = ["prettier"]; formats = let - parser = "${self.packages.${pkgs.stdenv.system}.prettier-plugin-astro}/index.js"; + parser = "${self.packages.${pkgs.stdenv.hostPlatform.system}.prettier-plugin-astro}/index.js"; in { prettier = { - command = getExe pkgs.nodePackages.prettier; + command = getExe pkgs.prettier; options.ft_parsers.astro = "astro"; prepend_args = ["--plugin=${parser}"]; }; diff --git a/modules/plugins/languages/rust.nix b/modules/plugins/languages/rust.nix index 157c3d17..fea75305 100644 --- a/modules/plugins/languages/rust.nix +++ b/modules/plugins/languages/rust.nix @@ -10,7 +10,7 @@ inherit (lib.strings) optionalString; inherit (lib.lists) isList; inherit (lib.attrsets) attrNames; - inherit (lib.types) bool package str listOf either enum; + inherit (lib.types) bool package str listOf either enum int; inherit (lib.nvim.lua) expToLua toLuaObject; inherit (lib.nvim.attrsets) mapListToAttrs; inherit (lib.nvim.types) mkGrammarOption mkPluginSetupOption deprecatedSingleOrListOf; @@ -94,19 +94,26 @@ in { enable = mkEnableOption "crates.io dependency management [crates-nvim]"; setupOpts = mkPluginSetupOption "crates-nvim" { - completion.cmp.enable = mkOption { - type = bool; - default = config.vim.autocomplete.nvim-cmp.enable; - defaultText = "{option}`config.vim.autocomplete.nvim-cmp.enable`"; - description = '' - Whether to add crates.nvim as a source for completion plugins. The following - plugins are supported by crates.nvim: - - * nvim-cmp - * coq.nvim - - However nvf only supports auto-setup for nvim-cmp. - ''; + lsp = { + enabled = mkEnableOption "crates.nvim's in-process language server" // {default = cfg.extensions.crates-nvim.enable;}; + actions = mkEnableOption "actions for crates-nvim's in-process language server" // {default = cfg.extensions.crates-nvim.enable;}; + completion = mkEnableOption "completion for crates-nvim's in-process language server" // {default = cfg.extensions.crates-nvim.enable;}; + hover = mkEnableOption "hover actions for crates-nvim's in-process language server" // {default = cfg.extensions.crates-nvim.enable;}; + }; + completion = { + crates = { + enabled = mkEnableOption "completion for crates-nvim's in-process language server" // {default = cfg.extensions.crates-nvim.enable;}; + max_results = mkOption { + description = "The maximum number of search results to display"; + type = int; + default = 8; + }; + min_chars = mkOption { + description = "The minimum number of characters to type before completions begin appearing"; + type = int; + default = 3; + }; + }; }; }; }; @@ -197,26 +204,14 @@ in { }) (mkIf cfg.extensions.crates-nvim.enable { - vim = let - withCompletion = cfg.extensions.crates-nvim.setupOpts.completion.cmp.enable; - in - mkMerge [ - { - startPlugins = ["crates-nvim"]; - pluginRC.rust-crates = entryAnywhere '' - require("crates").setup(${toLuaObject cfg.extensions.crates-nvim.setupOpts}) - ''; - } - - # FIXME: this will not be necessary once crates.nvim creates a new release that - # ships improvements to the in-progress LSP module. If updating > 0.7.1, remember - # to update this section. - # See: - # - (mkIf withCompletion { - autocomplete.nvim-cmp.sources = {crates = "[Crates]";}; - }) - ]; + vim = mkMerge [ + { + startPlugins = ["crates-nvim"]; + pluginRC.rust-crates = entryAnywhere '' + require("crates").setup(${toLuaObject cfg.extensions.crates-nvim.setupOpts}) + ''; + } + ]; }) ]); }