diff --git a/plugins/bufferlines/navic.nix b/plugins/bufferlines/navic.nix index e936e5cb..0e8e1cf5 100644 --- a/plugins/bufferlines/navic.nix +++ b/plugins/bufferlines/navic.nix @@ -1,21 +1,42 @@ { lib, - helpers, - config, pkgs, ... }: -with lib; let - cfg = config.plugins.navic; + inherit (lib.nixvim) defaultNullOpts; in -{ - options.plugins.navic = helpers.neovim-plugin.extraOptionsOptions // { - enable = mkEnableOption "nvim-navic"; +lib.nixvim.neovim-plugin.mkNeovimPlugin { + name = "navic"; + originalName = "nvim-navic"; + luaName = "nvim-navic"; + defaultPackage = pkgs.vimPlugins.nvim-navic; - package = helpers.mkPluginPackageOption "nvim-navic" pkgs.vimPlugins.nvim-navic; + maintainers = [ lib.maintainers.khaneliman ]; - icons = mapAttrs (name: default: helpers.defaultNullOpts.mkStr default "icon for ${name}.") { + # TODO: added 2024-09-03 remove after 24.11 + deprecateExtraOptions = true; + optionsRenamedToSettings = [ + "icons" + [ + "lsp" + "autoAttach" + ] + [ + "lsp" + "preference" + ] + "highlight" + "separator" + "depthLimit" + "depthLimitIndicator" + "safeOutput" + "lazyUpdateContext" + "click" + ]; + + settingsOptions = { + icons = lib.mapAttrs (name: default: defaultNullOpts.mkStr default "icon for ${name}.") { File = "󰈙 "; Module = " "; Namespace = "󰌗 "; @@ -45,12 +66,12 @@ in }; lsp = { - autoAttach = helpers.defaultNullOpts.mkBool false '' + auto_attach = defaultNullOpts.mkBool false '' Enable to have nvim-navic automatically attach to every LSP for current buffer. Its disabled by default. ''; - preference = helpers.defaultNullOpts.mkListOf' { - type = types.str; + preference = defaultNullOpts.mkListOf' { + type = lib.types.str; pluginDefault = [ ]; example = [ "clangd" @@ -62,61 +83,42 @@ in }; }; - highlight = helpers.defaultNullOpts.mkBool false '' + highlight = defaultNullOpts.mkBool false '' If set to true, will add colors to icons and text as defined by highlight groups NavicIcons* (NavicIconsFile, NavicIconsModule.. etc.), NavicText and NavicSeparator. ''; - separator = helpers.defaultNullOpts.mkStr " > " '' + separator = defaultNullOpts.mkStr " > " '' Icon to separate items. to use between items. ''; - depthLimit = helpers.defaultNullOpts.mkInt 0 '' + depth_limit = defaultNullOpts.mkInt 0 '' Maximum depth of context to be shown. If the context hits this depth limit, it is truncated. ''; - depthLimitIndicator = helpers.defaultNullOpts.mkStr ".." '' + depth_limit_indicator = defaultNullOpts.mkStr ".." '' Icon to indicate that depth_limit was hit and the shown context is truncated. ''; - safeOutput = helpers.defaultNullOpts.mkBool true '' + safe_output = defaultNullOpts.mkBool true '' Sanitize the output for use in statusline and winbar. ''; - lazyUpdateContext = helpers.defaultNullOpts.mkBool false '' + lazy_update_context = defaultNullOpts.mkBool false '' If true, turns off context updates for the "CursorMoved" event. ''; - click = helpers.defaultNullOpts.mkBool false '' + click = defaultNullOpts.mkBool false '' Single click to goto element, double click to open nvim-navbuddy on the clicked element. ''; }; - config = - let - setupOptions = - with cfg; - { - inherit - icons - highlight - separator - click - ; - lsp = with lsp; { - auto_attach = autoAttach; - inherit preference; - }; - depth_limit = depthLimit; - safe_output = safeOutput; - lazy_update_context = lazyUpdateContext; - } - // cfg.extraOptions; - in - mkIf cfg.enable { - extraPlugins = [ cfg.package ]; - - extraConfigLua = '' - require('nvim-navic').setup(${helpers.toLuaObject setupOptions}) - ''; + settingsExample = { + lsp = { + auto_attach = true; + preference = [ + "clangd" + "tsserver" + ]; }; + }; } diff --git a/tests/test-sources/plugins/bufferlines/navic.nix b/tests/test-sources/plugins/bufferlines/navic.nix index 3a3ed88f..e6545c96 100644 --- a/tests/test-sources/plugins/bufferlines/navic.nix +++ b/tests/test-sources/plugins/bufferlines/navic.nix @@ -7,46 +7,48 @@ plugins.navic = { enable = true; - icons = { - File = "󰆧 "; - Module = " "; - Namespace = "󰌗 "; - Package = " "; - Class = "󰌗 "; - Method = "󰆧 "; - Property = " "; - Field = " "; - Constructor = " "; - Enum = "󰕘"; - Interface = "󰕘"; - Function = "󰊕 "; - Variable = "󰆧 "; - Constant = "󰏿 "; - String = "󰀬 "; - Number = "󰎠 "; - Boolean = "◩ "; - Array = "󰅪 "; - Object = "󰅩 "; - Key = "󰌋 "; - Null = "󰟢 "; - EnumMember = " "; - Struct = "󰌗 "; - Event = " "; - Operator = "󰆕 "; - TypeParameter = "󰊄 "; + settings = { + icons = { + File = "󰆧 "; + Module = " "; + Namespace = "󰌗 "; + Package = " "; + Class = "󰌗 "; + Method = "󰆧 "; + Property = " "; + Field = " "; + Constructor = " "; + Enum = "󰕘"; + Interface = "󰕘"; + Function = "󰊕 "; + Variable = "󰆧 "; + Constant = "󰏿 "; + String = "󰀬 "; + Number = "󰎠 "; + Boolean = "◩ "; + Array = "󰅪 "; + Object = "󰅩 "; + Key = "󰌋 "; + Null = "󰟢 "; + EnumMember = " "; + Struct = "󰌗 "; + Event = " "; + Operator = "󰆕 "; + TypeParameter = "󰊄 "; + }; + lsp = { + auto_attach = true; + preference = [ + "clangd" + "pyright" + ]; + }; + highlight = true; + separator = " | "; + depth_limit = 10; + safe_output = false; + click = true; }; - lsp = { - autoAttach = true; - preference = [ - "clangd" - "pyright" - ]; - }; - highlight = true; - separator = " | "; - depthLimit = 10; - safeOutput = false; - click = true; }; }; }