From 2b7f17b6de578b63b7dc0e4155e36538042bc968 Mon Sep 17 00:00:00 2001 From: Gaetan Lepage Date: Thu, 19 Dec 2024 00:47:21 +0100 Subject: [PATCH] plugins/crates: rename from crates-nvim to crates, move to by-name, migrate to mkNeovimPlugin --- plugins/by-name/crates/default.nix | 31 +++ plugins/cmp/sources/crates-nvim.nix | 17 -- plugins/cmp/sources/default.nix | 8 +- .../plugins/by-name/crates/default.nix | 218 ++++++++++++++++++ 4 files changed, 250 insertions(+), 24 deletions(-) create mode 100644 plugins/by-name/crates/default.nix delete mode 100644 plugins/cmp/sources/crates-nvim.nix create mode 100644 tests/test-sources/plugins/by-name/crates/default.nix diff --git a/plugins/by-name/crates/default.nix b/plugins/by-name/crates/default.nix new file mode 100644 index 00000000..d443b3b4 --- /dev/null +++ b/plugins/by-name/crates/default.nix @@ -0,0 +1,31 @@ +{ lib, ... }: +lib.nixvim.neovim-plugin.mkNeovimPlugin { + name = "crates"; + packPathName = "crates.nvim"; + package = "crates-nvim"; + + maintainers = [ lib.maintainers.GaetanLepage ]; + + imports = + [ { cmpSourcePlugins.crates = "crates"; } ] + ++ + # TODO introduced 2024-12-12: remove after 25.05 + lib.nixvim.mkSettingsRenamedOptionModules [ "plugins" "crates-nvim" ] + [ "plugins" "crates" ] + [ + "enable" + "package" + { + old = "extraOptions"; + new = "settings"; + } + ]; + + settingsOptions = { }; + + settingsExample = { + smart_insert = true; + autoload = true; + autoupdate = true; + }; +} diff --git a/plugins/cmp/sources/crates-nvim.nix b/plugins/cmp/sources/crates-nvim.nix deleted file mode 100644 index 5c05432b..00000000 --- a/plugins/cmp/sources/crates-nvim.nix +++ /dev/null @@ -1,17 +0,0 @@ -{ - lib, - config, - ... -}: -let - cfg = config.plugins.crates-nvim; -in -{ - options.plugins.crates-nvim = lib.nixvim.neovim-plugin.extraOptionsOptions; - - config = lib.mkIf cfg.enable { - extraConfigLua = '' - require('crates').setup(${lib.nixvim.toLuaObject cfg.extraOptions}) - ''; - }; -} diff --git a/plugins/cmp/sources/default.nix b/plugins/cmp/sources/default.nix index 5281b94c..b68b762f 100644 --- a/plugins/cmp/sources/default.nix +++ b/plugins/cmp/sources/default.nix @@ -173,10 +173,6 @@ let pluginName = "cmp-zsh"; sourceName = "zsh"; } - { - pluginName = "crates-nvim"; - sourceName = "crates"; - } ]; mkCmpSourcePlugin = import ./_mk-cmp-plugin.nix args; @@ -184,7 +180,5 @@ let in { # For extra cmp plugins - imports = [ - ./crates-nvim.nix - ] ++ pluginModules; + imports = pluginModules; } diff --git a/tests/test-sources/plugins/by-name/crates/default.nix b/tests/test-sources/plugins/by-name/crates/default.nix new file mode 100644 index 00000000..f466b3cb --- /dev/null +++ b/tests/test-sources/plugins/by-name/crates/default.nix @@ -0,0 +1,218 @@ +{ + empty = { + plugins.crates.enable = true; + }; + + defaults = { + plugins.crates = { + enable = true; + + settings = { + smart_insert = true; + insert_closing_quote = true; + autoload = true; + autoupdate = true; + autoupdate_throttle = 250; + loading_indicator = true; + search_indicator = true; + date_format = "%Y-%m-%d"; + thousands_separator = "."; + notification_title = "crates.nvim"; + curl_args = [ + "-sL" + "--retry" + "1" + ]; + max_parallel_requests = 80; + expand_crate_moves_cursor = true; + enable_update_available_warning = true; + on_attach.__raw = "function(bufnr) end"; + text = { + searching = "  Searching"; + loading = "  Loading"; + version = "  %s"; + prerelease = "  %s"; + yanked = "  %s"; + nomatch = "  No match"; + upgrade = "  %s"; + error = "  Error fetching crate"; + }; + highlight = { + searching = "CratesNvimSearching"; + loading = "CratesNvimLoading"; + version = "CratesNvimVersion"; + prerelease = "CratesNvimPreRelease"; + yanked = "CratesNvimYanked"; + nomatch = "CratesNvimNoMatch"; + upgrade = "CratesNvimUpgrade"; + error = "CratesNvimError"; + }; + popup = { + autofocus = false; + hide_on_select = false; + copy_register = "\""; + style = "minimal"; + border = "none"; + show_version_date = false; + show_dependency_version = true; + max_height = 30; + min_width = 20; + padding = 1; + text = { + title = " %s"; + pill_left = ""; + pill_right = ""; + description = "%s"; + created_label = " created "; + created = "%s"; + updated_label = " updated "; + updated = "%s"; + downloads_label = " downloads "; + downloads = "%s"; + homepage_label = " homepage "; + homepage = "%s"; + repository_label = " repository "; + repository = "%s"; + documentation_label = " documentation "; + documentation = "%s"; + crates_io_label = " crates.io "; + crates_io = "%s"; + lib_rs_label = " lib.rs "; + lib_rs = "%s"; + categories_label = " categories "; + keywords_label = " keywords "; + version = " %s"; + prerelease = " %s"; + yanked = " %s"; + version_date = " %s"; + feature = " %s"; + enabled = " %s"; + transitive = " %s"; + normal_dependencies_title = " Dependencies"; + build_dependencies_title = " Build dependencies"; + dev_dependencies_title = " Dev dependencies"; + dependency = " %s"; + optional = " %s"; + dependency_version = " %s"; + loading = "  "; + }; + highlight = { + title = "CratesNvimPopupTitle"; + pill_text = "CratesNvimPopupPillText"; + pill_border = "CratesNvimPopupPillBorder"; + description = "CratesNvimPopupDescription"; + created_label = "CratesNvimPopupLabel"; + created = "CratesNvimPopupValue"; + updated_label = "CratesNvimPopupLabel"; + updated = "CratesNvimPopupValue"; + downloads_label = "CratesNvimPopupLabel"; + downloads = "CratesNvimPopupValue"; + homepage_label = "CratesNvimPopupLabel"; + homepage = "CratesNvimPopupUrl"; + repository_label = "CratesNvimPopupLabel"; + repository = "CratesNvimPopupUrl"; + documentation_label = "CratesNvimPopupLabel"; + documentation = "CratesNvimPopupUrl"; + crates_io_label = "CratesNvimPopupLabel"; + crates_io = "CratesNvimPopupUrl"; + lib_rs_label = "CratesNvimPopupLabel"; + lib_rs = "CratesNvimPopupUrl"; + categories_label = "CratesNvimPopupLabel"; + keywords_label = "CratesNvimPopupLabel"; + version = "CratesNvimPopupVersion"; + prerelease = "CratesNvimPopupPreRelease"; + yanked = "CratesNvimPopupYanked"; + version_date = "CratesNvimPopupVersionDate"; + feature = "CratesNvimPopupFeature"; + enabled = "CratesNvimPopupEnabled"; + transitive = "CratesNvimPopupTransitive"; + normal_dependencies_title = "CratesNvimPopupNormalDependenciesTitle"; + build_dependencies_title = "CratesNvimPopupBuildDependenciesTitle"; + dev_dependencies_title = "CratesNvimPopupDevDependenciesTitle"; + dependency = "CratesNvimPopupDependency"; + optional = "CratesNvimPopupOptional"; + dependency_version = "CratesNvimPopupDependencyVersion"; + loading = "CratesNvimPopupLoading"; + }; + keys = { + hide = [ + "q" + "" + ]; + open_url = [ "" ]; + select = [ "" ]; + select_alt = [ "s" ]; + toggle_feature = [ "" ]; + copy_value = [ "yy" ]; + goto_item = [ + "gd" + "K" + "" + ]; + jump_forward = [ "" ]; + jump_back = [ + "" + "" + ]; + }; + }; + completion = { + insert_closing_quote = true; + text = { + prerelease = "  pre-release "; + yanked = "  yanked "; + }; + cmp = { + enabled = false; + use_custom_kind = true; + kind_text = { + version = "Version"; + feature = "Feature"; + }; + kind_highlight = { + version = "CmpItemKindVersion"; + feature = "CmpItemKindFeature"; + }; + }; + coq = { + enabled = false; + name = "crates.nvim"; + }; + crates = { + enabled = false; + min_chars = 3; + max_results = 8; + }; + }; + null_ls = { + enabled = false; + name = "crates.nvim"; + }; + neoconf = { + enabled = false; + namespace = "crates"; + }; + lsp = { + enabled = false; + name = "crates.nvim"; + on_attach.__raw = "function(client, bufnr) end"; + actions = false; + completion = false; + hover = false; + }; + }; + }; + }; + + example = { + plugins.crates = { + enable = true; + + settings = { + smart_insert = true; + autoload = true; + autoupdate = true; + }; + }; + }; +}