From a9430961e8417cb31b19b2f03a0f5a54855109db Mon Sep 17 00:00:00 2001 From: NotAShelf Date: Thu, 10 Aug 2023 19:35:45 +0300 Subject: [PATCH 1/2] dev: clean up breadcrumbs module potentially avoid unwanted plugin loads --- modules/ui/breadcrumbs/config.nix | 268 +++++++++++++++--------------- 1 file changed, 137 insertions(+), 131 deletions(-) diff --git a/modules/ui/breadcrumbs/config.nix b/modules/ui/breadcrumbs/config.nix index 18e84f0..730f493 100644 --- a/modules/ui/breadcrumbs/config.nix +++ b/modules/ui/breadcrumbs/config.nix @@ -18,146 +18,152 @@ in { [ "nvim-lspconfig" ] + ++ lib.optionals (cfg.source == "nvim-navic") [ + "nvim-navic" + ] ++ lib.optionals (config.vim.lsp.lspsaga.enable && cfg.source == "lspsaga") [ "lspsaga" ] - ++ lib.optionals (cfg.navbuddy.enable || cfg.source == "nvim-navic") [ + ++ lib.optionals cfg.navbuddy.enable [ "nvim-navbuddy" - "nvim-navic" + "nui-nvim" ]; vim.luaConfigRC.breadcrumbs = nvim.dag.entryAfter ["lspconfig"] '' - local navbuddy = require("nvim-navbuddy") - local navic = require("nvim-navic") - local actions = require("nvim-navbuddy.actions") - require("nvim-navic").setup { - highlight = true - } - - -- TODO: wrap this in an optional string with navbuddy as the enable condition - navbuddy.setup { - window = { - border = "${nb.window.border}", -- "rounded", "double", "solid", "none" - size = "60%", - position = "50%", - scrolloff = ${(nilOrStr nb.window.scrolloff)}, - sections = { - left = { - size = "20%", - border = ${(nilOrStr nb.window.sections.left.border)}, - }, - - mid = { - size = "40%", - border = ${(nilOrStr nb.window.sections.mid.border)}, - }, - - right = { - border = ${(nilOrStr nb.window.sections.right.border)}, - preview = "leaf", - } - }, - }, - node_markers = { - enabled = ${boolToString nb.nodeMarkers.enable}, - icons = { - leaf = "${nb.nodeMarkers.icons.leaf}", - leaf_selected = "${nb.nodeMarkers.icons.leafSelected}", - branch = "${nb.nodeMarkers.icons.branch}", - }, - }, - - lsp = { - auto_attach = ${boolToString nb.lsp.autoAttach}, - -- preference = nil, -- TODO: convert list to lua table if not null - }, - - source_buffer = { - follow_node = ${boolToString nb.sourceBuffer.followNode}, - highlight = ${boolToString nb.sourceBuffer.highlight}, - reorient = "${nb.sourceBuffer.reorient}", - scrolloff = ${nilOrStr nb.sourceBuffer.scrolloff} - }, - - icons = { - File = "${cfg.navbuddy.icons.file}", - Module = "${cfg.navbuddy.icons.module}", - Namespace = "${cfg.navbuddy.icons.namespace}", - Package = "${cfg.navbuddy.icons.package}", - Class = "${cfg.navbuddy.icons.class}", - Method = "${cfg.navbuddy.icons.method}", - Property = "${cfg.navbuddy.icons.property}", - Field = "${cfg.navbuddy.icons.field}", - Constructor = "${cfg.navbuddy.icons.constructor}", - Enum = "${cfg.navbuddy.icons.enum}", - Interface = "${cfg.navbuddy.icons.interface}", - Function = "${cfg.navbuddy.icons.function}", - Variable = "${cfg.navbuddy.icons.variable}", - Constant = "${cfg.navbuddy.icons.constant}", - String = "${cfg.navbuddy.icons.string}", - Number = "${cfg.navbuddy.icons.number}", - Boolean = "${cfg.navbuddy.icons.boolean}", - Array = "${cfg.navbuddy.icons.array}", - Object = "${cfg.navbuddy.icons.object}", - Key = "${cfg.navbuddy.icons.key}", - Null = "${cfg.navbuddy.icons.null}", - EnumMember = "${cfg.navbuddy.icons.enumMember}", - Struct = "${cfg.navbuddy.icons.struct}", - Event = "${cfg.navbuddy.icons.event}", - Operator = "${cfg.navbuddy.icons.operator}", - TypeParameter = "${cfg.navbuddy.icons.typeParameter}" - }, - - -- make those configurable - use_default_mappings = ${toString (cfg.navbuddy.useDefaultMappings)}, - mappings = { - ["${cfg.navbuddy.mappings.close}"] = actions.close(), - ["${cfg.navbuddy.mappings.nextSibling}"] = actions.next_sibling(), - ["${cfg.navbuddy.mappings.previousSibling}"] = actions.previous_sibling(), - ["${cfg.navbuddy.mappings.close}"] = actions.parent(), - ["${cfg.navbuddy.mappings.children}"] = actions.children(), - ["${cfg.navbuddy.mappings.root}"] = actions.root(), - - ["${cfg.navbuddy.mappings.visualName}"] = actions.visual_name(), - ["${cfg.navbuddy.mappings.visualScope}"] = actions.visual_scope(), - - ["${cfg.navbuddy.mappings.yankName}"] = actions.yank_name(), - ["${cfg.navbuddy.mappings.yankScope}"] = actions.yank_scope(), - - ["${cfg.navbuddy.mappings.insertName}"] = actions.insert_name(), - ["${cfg.navbuddy.mappings.insertScope}"] = actions.insert_scope(), - - ["${cfg.navbuddy.mappings.appendName}"] = actions.append_name(), - ["${cfg.navbuddy.mappings.appendScope}"] = actions.append_scope(), - - ["${cfg.navbuddy.mappings.rename}"] = actions.rename(), - - ["${cfg.navbuddy.mappings.delete}"] = actions.delete(), - - ["${cfg.navbuddy.mappings.foldCreate}"] = actions.fold_create(), - ["${cfg.navbuddy.mappings.foldDelete}"] = actions.fold_delete(), - - ["${cfg.navbuddy.mappings.comment}"] = actions.comment(), - - ["${cfg.navbuddy.mappings.select}"] = actions.select(), - - ["${cfg.navbuddy.mappings.moveDown}"] = actions.move_down(), - ["${cfg.navbuddy.mappings.moveUp}"] = actions.move_up(), - - ["${cfg.navbuddy.mappings.telescope}"] = actions.telescope({ - layout_strategy = "horizontal", - layout_config = { - height = 0.60, - width = 0.75, - prompt_position = "top", - preview_width = 0.50 - }, - }), - - ["${cfg.navbuddy.mappings.help}"] = actions.help(), -- Open mappings help window - }, + ${lib.optionalString (cfg.source == "nvim-navic") '' + local navic = require("nvim-navic") + require("nvim-navic").setup { + highlight = true } + ''} + + ${lib.optionalString cfg.navbuddy.enable '' + local navbuddy = require("nvim-navbuddy") + local actions = require("nvim-navbuddy.actions") + navbuddy.setup { + window = { + border = "${nb.window.border}", -- "rounded", "double", "solid", "none" + size = "60%", + position = "50%", + scrolloff = ${(nilOrStr nb.window.scrolloff)}, + sections = { + left = { + size = "20%", + border = ${(nilOrStr nb.window.sections.left.border)}, + }, + + mid = { + size = "40%", + border = ${(nilOrStr nb.window.sections.mid.border)}, + }, + + right = { + border = ${(nilOrStr nb.window.sections.right.border)}, + preview = "leaf", + } + }, + }, + node_markers = { + enabled = ${boolToString nb.nodeMarkers.enable}, + icons = { + leaf = "${nb.nodeMarkers.icons.leaf}", + leaf_selected = "${nb.nodeMarkers.icons.leafSelected}", + branch = "${nb.nodeMarkers.icons.branch}", + }, + }, + + lsp = { + auto_attach = ${boolToString nb.lsp.autoAttach}, + -- preference = nil, -- TODO: convert list to lua table if not null + }, + + source_buffer = { + follow_node = ${boolToString nb.sourceBuffer.followNode}, + highlight = ${boolToString nb.sourceBuffer.highlight}, + reorient = "${nb.sourceBuffer.reorient}", + scrolloff = ${nilOrStr nb.sourceBuffer.scrolloff} + }, + + icons = { + File = "${cfg.navbuddy.icons.file}", + Module = "${cfg.navbuddy.icons.module}", + Namespace = "${cfg.navbuddy.icons.namespace}", + Package = "${cfg.navbuddy.icons.package}", + Class = "${cfg.navbuddy.icons.class}", + Method = "${cfg.navbuddy.icons.method}", + Property = "${cfg.navbuddy.icons.property}", + Field = "${cfg.navbuddy.icons.field}", + Constructor = "${cfg.navbuddy.icons.constructor}", + Enum = "${cfg.navbuddy.icons.enum}", + Interface = "${cfg.navbuddy.icons.interface}", + Function = "${cfg.navbuddy.icons.function}", + Variable = "${cfg.navbuddy.icons.variable}", + Constant = "${cfg.navbuddy.icons.constant}", + String = "${cfg.navbuddy.icons.string}", + Number = "${cfg.navbuddy.icons.number}", + Boolean = "${cfg.navbuddy.icons.boolean}", + Array = "${cfg.navbuddy.icons.array}", + Object = "${cfg.navbuddy.icons.object}", + Key = "${cfg.navbuddy.icons.key}", + Null = "${cfg.navbuddy.icons.null}", + EnumMember = "${cfg.navbuddy.icons.enumMember}", + Struct = "${cfg.navbuddy.icons.struct}", + Event = "${cfg.navbuddy.icons.event}", + Operator = "${cfg.navbuddy.icons.operator}", + TypeParameter = "${cfg.navbuddy.icons.typeParameter}" + }, + + -- make those configurable + use_default_mappings = ${toString (cfg.navbuddy.useDefaultMappings)}, + mappings = { + ["${cfg.navbuddy.mappings.close}"] = actions.close(), + ["${cfg.navbuddy.mappings.nextSibling}"] = actions.next_sibling(), + ["${cfg.navbuddy.mappings.previousSibling}"] = actions.previous_sibling(), + ["${cfg.navbuddy.mappings.close}"] = actions.parent(), + ["${cfg.navbuddy.mappings.children}"] = actions.children(), + ["${cfg.navbuddy.mappings.root}"] = actions.root(), + + ["${cfg.navbuddy.mappings.visualName}"] = actions.visual_name(), + ["${cfg.navbuddy.mappings.visualScope}"] = actions.visual_scope(), + + ["${cfg.navbuddy.mappings.yankName}"] = actions.yank_name(), + ["${cfg.navbuddy.mappings.yankScope}"] = actions.yank_scope(), + + ["${cfg.navbuddy.mappings.insertName}"] = actions.insert_name(), + ["${cfg.navbuddy.mappings.insertScope}"] = actions.insert_scope(), + + ["${cfg.navbuddy.mappings.appendName}"] = actions.append_name(), + ["${cfg.navbuddy.mappings.appendScope}"] = actions.append_scope(), + + ["${cfg.navbuddy.mappings.rename}"] = actions.rename(), + + ["${cfg.navbuddy.mappings.delete}"] = actions.delete(), + + ["${cfg.navbuddy.mappings.foldCreate}"] = actions.fold_create(), + ["${cfg.navbuddy.mappings.foldDelete}"] = actions.fold_delete(), + + ["${cfg.navbuddy.mappings.comment}"] = actions.comment(), + + ["${cfg.navbuddy.mappings.select}"] = actions.select(), + + ["${cfg.navbuddy.mappings.moveDown}"] = actions.move_down(), + ["${cfg.navbuddy.mappings.moveUp}"] = actions.move_up(), + + ["${cfg.navbuddy.mappings.telescope}"] = actions.telescope({ + layout_strategy = "horizontal", + layout_config = { + height = 0.60, + width = 0.75, + prompt_position = "top", + preview_width = 0.50 + }, + }), + + ["${cfg.navbuddy.mappings.help}"] = actions.help(), -- Open mappings help window + }, + } + ''} ''; }; } From de48713394e7feb254211ec84a0f481c6ce12b21 Mon Sep 17 00:00:00 2001 From: NotAShelf Date: Thu, 10 Aug 2023 20:24:30 +0300 Subject: [PATCH 2/2] fix: missing closing bracket when navbuddy is disabled --- lib/lua.nix | 1 - modules/ui/breadcrumbs/config.nix | 34 +++++++++++++++---------------- 2 files changed, 16 insertions(+), 19 deletions(-) diff --git a/lib/lua.nix b/lib/lua.nix index 1d4cdb9..c5c2ae5 100644 --- a/lib/lua.nix +++ b/lib/lua.nix @@ -13,7 +13,6 @@ else "'${value}'"; # convert an expression to lua - expToLua = exp: if builtins.isList exp then listToLuaTable exp # if list, convert to lua table diff --git a/modules/ui/breadcrumbs/config.nix b/modules/ui/breadcrumbs/config.nix index 730f493..0d988ca 100644 --- a/modules/ui/breadcrumbs/config.nix +++ b/modules/ui/breadcrumbs/config.nix @@ -3,42 +3,40 @@ lib, ... }: -with lib; with builtins; let + inherit (lib) optionalString boolToString mkIf optionals; + inherit (lib.nvim.lua) nullString; + cfg = config.vim.ui.breadcrumbs; nb = cfg.navbuddy; - - nilOrStr = v: - if v == null - then "nil" - else toString v; in { config = mkIf cfg.enable { vim.startPlugins = [ "nvim-lspconfig" ] - ++ lib.optionals (cfg.source == "nvim-navic") [ + ++ optionals (cfg.source == "nvim-navic") [ "nvim-navic" ] - ++ lib.optionals (config.vim.lsp.lspsaga.enable && cfg.source == "lspsaga") [ + ++ optionals (config.vim.lsp.lspsaga.enable && cfg.source == "lspsaga") [ "lspsaga" ] - ++ lib.optionals cfg.navbuddy.enable [ + ++ optionals cfg.navbuddy.enable [ "nvim-navbuddy" "nui-nvim" + "nvim-navic" ]; - vim.luaConfigRC.breadcrumbs = nvim.dag.entryAfter ["lspconfig"] '' + vim.luaConfigRC.breadcrumbs = lib.nvim.dag.entryAfter ["lspconfig"] '' - ${lib.optionalString (cfg.source == "nvim-navic") '' + ${optionalString (cfg.source == "nvim-navic") '' local navic = require("nvim-navic") require("nvim-navic").setup { highlight = true } ''} - ${lib.optionalString cfg.navbuddy.enable '' + ${optionalString cfg.navbuddy.enable '' local navbuddy = require("nvim-navbuddy") local actions = require("nvim-navbuddy.actions") navbuddy.setup { @@ -46,20 +44,20 @@ in { border = "${nb.window.border}", -- "rounded", "double", "solid", "none" size = "60%", position = "50%", - scrolloff = ${(nilOrStr nb.window.scrolloff)}, + scrolloff = ${(nullString nb.window.scrolloff)}, sections = { left = { size = "20%", - border = ${(nilOrStr nb.window.sections.left.border)}, + border = ${(nullString nb.window.sections.left.border)}, }, mid = { size = "40%", - border = ${(nilOrStr nb.window.sections.mid.border)}, + border = ${(nullString nb.window.sections.mid.border)}, }, right = { - border = ${(nilOrStr nb.window.sections.right.border)}, + border = ${(nullString nb.window.sections.right.border)}, preview = "leaf", } }, @@ -82,7 +80,7 @@ in { follow_node = ${boolToString nb.sourceBuffer.followNode}, highlight = ${boolToString nb.sourceBuffer.highlight}, reorient = "${nb.sourceBuffer.reorient}", - scrolloff = ${nilOrStr nb.sourceBuffer.scrolloff} + scrolloff = ${nullString nb.sourceBuffer.scrolloff} }, icons = { @@ -115,7 +113,7 @@ in { }, -- make those configurable - use_default_mappings = ${toString (cfg.navbuddy.useDefaultMappings)}, + use_default_mappings = ${boolToString cfg.navbuddy.useDefaultMappings}, mappings = { ["${cfg.navbuddy.mappings.close}"] = actions.close(), ["${cfg.navbuddy.mappings.nextSibling}"] = actions.next_sibling(),