diff --git a/plugins/by-name/gdscript-extended-lsp/default.nix b/plugins/by-name/gdscript-extended-lsp/default.nix new file mode 100644 index 00000000..88eb7773 --- /dev/null +++ b/plugins/by-name/gdscript-extended-lsp/default.nix @@ -0,0 +1,27 @@ +{ config, lib, ... }: +lib.nixvim.plugins.mkNeovimPlugin { + name = "gdscript-extended-lsp"; + package = "gdscript-extended-lsp-nvim"; + + maintainers = [ lib.maintainers.HeitorAugustoLN ]; + + settingsExample = { + picker = "snacks"; + }; + + extraConfig = cfg: opts: { + warnings = lib.nixvim.mkWarnings "plugins.gdscript-extended-lsp" ( + lib.mapAttrsToList + (picker: pluginName: { + when = cfg.settings.picker or null == picker && !config.plugins.${pluginName}.enable; + message = '' + You have defined `${opts.settings}.picker = "${picker}"` but `plugins.${pluginName}` is not enabled. + ''; + }) + { + telescope = "telescope"; + snacks = "snacks"; + } + ); + }; +} diff --git a/tests/test-sources/plugins/by-name/gdscript-extended-lsp/default.nix b/tests/test-sources/plugins/by-name/gdscript-extended-lsp/default.nix new file mode 100644 index 00000000..412e13d3 --- /dev/null +++ b/tests/test-sources/plugins/by-name/gdscript-extended-lsp/default.nix @@ -0,0 +1,46 @@ +{ + empty = { + plugins.gdscript-extended-lsp.enable = true; + }; + + defaults = { + plugins = { + gdscript-extended-lsp = { + enable = true; + settings = { + doc_file_extension = ".txt"; + view_type = "vsplit"; + split_side = false; + keymaps = { + declaration = "gd"; + close = [ + "q" + "" + ]; + }; + floating_win_size = 0.8; + picker = "telescope"; + }; + }; + + telescope.enable = true; + web-devicons.enable = true; + }; + }; + + example = { + plugins = { + gdscript-extended-lsp = { + enable = true; + settings = { + picker = "snacks"; + }; + }; + + snacks = { + enable = true; + settings.picker.enabled = true; + }; + }; + }; +}