diff --git a/modules/plugins/assistant/copilot/config.nix b/modules/plugins/assistant/copilot/config.nix index 6576d505..9c337148 100644 --- a/modules/plugins/assistant/copilot/config.nix +++ b/modules/plugins/assistant/copilot/config.nix @@ -5,6 +5,7 @@ }: let inherit (builtins) toJSON; inherit (lib.modules) mkIf; + inherit (lib.strings) optionalString; cfg = config.vim.assistant.copilot; @@ -59,7 +60,14 @@ in { copilot-cmp = mkIf cfg.cmp.enable { package = "copilot-cmp"; lazy = true; + after = optionalString config.vim.lazy.enable '' + local path = vim.fn.globpath(vim.o.packpath, 'pack/*/opt/copilot-cmp') + require("rtp_nvim").source_after_plugin_dir(path) + require("lz.n").trigger_load("copilot-lua") + ''; }; + + nvim-cmp.after = mkIf cfg.cmp.enable "require('lz.n').trigger_load('copilot-cmp')"; }; autocomplete.nvim-cmp.sources = {copilot = "[Copilot]";}; diff --git a/modules/plugins/completion/nvim-cmp/config.nix b/modules/plugins/completion/nvim-cmp/config.nix index 9587f807..458b9e99 100644 --- a/modules/plugins/completion/nvim-cmp/config.nix +++ b/modules/plugins/completion/nvim-cmp/config.nix @@ -15,23 +15,39 @@ in { config = mkIf cfg.enable { vim = { + startPlugins = ["rtp-nvim"]; lazy.plugins = { # cmp sources are loaded via lzn-auto-require as long as it is defined # in cmp sources cmp-buffer = { package = "cmp-buffer"; lazy = true; + after = '' + local path = vim.fn.globpath(vim.o.packpath, 'pack/*/opt/cmp-buffer') + require("rtp_nvim").source_after_plugin_dir(path) + ''; }; cmp-path = { package = "cmp-path"; lazy = true; + after = '' + local path = vim.fn.globpath(vim.o.packpath, 'pack/*/opt/cmp-path') + require("rtp_nvim").source_after_plugin_dir(path) + ''; }; nvim-cmp = { package = "nvim-cmp"; after = '' ${optionalString luasnipEnable "local luasnip = require('luasnip')"} + require("lz.n").trigger_load("cmp-path") local cmp = require("cmp") cmp.setup(${toLuaObject cfg.setupOpts}) + + ${ + optionalString config.vim.lazy.enable '' + require("lz.n").trigger_load("cmp-buffer") + '' + } ''; event = ["InsertEnter" "CmdlineEnter"]; diff --git a/modules/plugins/snippets/luasnip/config.nix b/modules/plugins/snippets/luasnip/config.nix index 57a3c54a..4fbbd2cd 100644 --- a/modules/plugins/snippets/luasnip/config.nix +++ b/modules/plugins/snippets/luasnip/config.nix @@ -4,6 +4,7 @@ ... }: let inherit (lib.modules) mkIf; + inherit (lib.strings) optionalString; cfg = config.vim.snippets.luasnip; in { @@ -18,7 +19,14 @@ in { cmp-luasnip = mkIf config.vim.autocomplete.nvim-cmp.enable { package = "cmp-luasnip"; lazy = true; + after = '' + local path = vim.fn.globpath(vim.o.packpath, 'pack/*/opt/cmp-luasnip') + require("rtp_nvim").source_after_plugin_dir(path) + ''; }; + nvim-cmp.after = optionalString config.vim.lazy.enable '' + require("lz.n").trigger_load("cmp-luasnip") + ''; }; startPlugins = cfg.providers; autocomplete.nvim-cmp.sources = {luasnip = "[LuaSnip]";}; diff --git a/modules/plugins/treesitter/config.nix b/modules/plugins/treesitter/config.nix index ae093862..584a5451 100644 --- a/modules/plugins/treesitter/config.nix +++ b/modules/plugins/treesitter/config.nix @@ -21,6 +21,17 @@ in { vim = { startPlugins = ["nvim-treesitter"] ++ optional usingNvimCmp "cmp-treesitter"; + lazy.plugins = { + cmp-treesitter = mkIf usingNvimCmp { + package = "cmp-treesitter"; + after = '' + local path = vim.fn.globpath(vim.o.packpath, 'pack/*/opt/cmp-treesitter') + require("rtp_nvim").source_after_plugin_dir(path) + ''; + }; + nvim-cmp.after = mkIf cfg.cmp.enable "require('lz.n').trigger_load('cmp-treesitter')"; + }; + autocomplete.nvim-cmp.sources = {treesitter = "[Treesitter]";}; treesitter.grammars = optionals cfg.addDefaultGrammars cfg.defaultGrammars;