diff --git a/plugins/default.nix b/plugins/default.nix index d8d8a6b9..ffed2c12 100644 --- a/plugins/default.nix +++ b/plugins/default.nix @@ -220,6 +220,7 @@ ./utils/refactoring.nix ./utils/rest.nix ./utils/sandwich.nix + ./utils/scope.nix ./utils/sleuth.nix ./utils/smart-splits.nix ./utils/spectre.nix diff --git a/plugins/utils/scope.nix b/plugins/utils/scope.nix new file mode 100644 index 00000000..dd924835 --- /dev/null +++ b/plugins/utils/scope.nix @@ -0,0 +1,50 @@ +{ + lib, + config, + pkgs, + ... +}: +lib.nixvim.neovim-plugin.mkNeovimPlugin config { + name = "scope"; + originalName = "scope.nvim"; + defaultPackage = pkgs.vimPlugins.scope-nvim; + + maintainers = [ lib.maintainers.insipx ]; + + settingsOptions = { + hooks = { + pre_tab_enter = lib.nixvim.defaultNullOpts.mkLuaFn null '' + Run custom logic before entering a tab. + ''; + + post_tab_enter = lib.nixvim.defaultNullOpts.mkLuaFn null '' + Run custom logic after entering a tab. + ''; + + pre_tab_leave = lib.nixvim.defaultNullOpts.mkLuaFn null '' + Run custom logic before leaving a tab. + ''; + post_tab_leave = lib.nixvim.defaultNullOpts.mkLuaFn null '' + Run custom logic after leaving a tab. + ''; + + pre_tab_close = lib.nixvim.defaultNullOpts.mkLuaFn null '' + Run custom logic before closing a tab. + ''; + + post_tab_close = lib.nixvim.defaultNullOpts.mkLuaFn null '' + Run custom logic after closing a tab. + ''; + }; + }; + + settingsExample = { + settings = { + pre_tab_enter.__raw = '' + function() + print("about to enter tab!") + end + ''; + }; + }; +} diff --git a/tests/test-sources/plugins/utils/scope.nix b/tests/test-sources/plugins/utils/scope.nix new file mode 100644 index 00000000..2c176cc2 --- /dev/null +++ b/tests/test-sources/plugins/utils/scope.nix @@ -0,0 +1,34 @@ +{ + empty = { + plugins.scope.enable = true; + }; + defaults = { + plugins.scope = { + enable = true; + + settings.hooks = { + pre_tab_enter = null; + post_tab_enter = null; + pre_tab_leave = null; + post_tab_leave = null; + pre_tab_close = null; + post_tab_close = null; + }; + }; + }; + example = { + plugins.scope = { + enable = true; + + settings = { + hooks = { + pre_tab_enter.__raw = '' + function() + print("Example hook, about to enter tab") + end + ''; + }; + }; + }; + }; +}