lewis6991 / pckr.nvim

Spiritual successor of https://github.com/wbthomason/packer.nvim
MIT License
243 stars 13 forks source link

Seemingly random require order sometimes causes errors #28

Closed ChewingBever closed 1 month ago

ChewingBever commented 1 month ago

Steps to reproduce

Start neovim by requiring my plugins.lua file in the init.lua.

Actual behaviour

Sometimes I get this error that pops up, after which none of my LSP-related features work. I can fix this by restarting neovim 1 or more times until it starts up without having the error pop up.

[pckr.nvim[ERROR 09:17:02] loader.lua:10: Error running config for nvim-lspconfig:
^I/home/jjr/.config/nvim/lua/config/lspconfig.lua:26: module 'cmp_nvim_lsp' not found:
^Ino field package.preload['cmp_nvim_lsp']
^Ino file './cmp_nvim_lsp.lua'
^Ino file '/usr/share/luajit-2.1/cmp_nvim_lsp.lua'
^Ino file '/usr/local/share/lua/5.1/cmp_nvim_lsp.lua'
^Ino file '/usr/local/share/lua/5.1/cmp_nvim_lsp/init.lua'
^Ino file '/usr/share/lua/5.1/cmp_nvim_lsp.lua'
^Ino file '/usr/share/lua/5.1/cmp_nvim_lsp/init.lua'
^Ino file './cmp_nvim_lsp.so'
^Ino file '/usr/local/lib/lua/5.1/cmp_nvim_lsp.so'
^Ino file '/usr/lib/lua/5.1/cmp_nvim_lsp.so'
^Ino file '/usr/local/lib/lua/5.1/loadall.so'

My theory for this is that Pckr does not import the plugins in any specific order. However, some of my plugins do use each either's module in their config, causing the module 'cmp_nvim_lsp' not found error if the plugin that requires it was loaded before the cmp_nvim_lsp.

I only started seeing this behavior after I migrated from Packer to Pckr recently.

Expected behaviour

For this error to not occur, and the plugin configs to load correctly.

pckr files

Plugin specification file(s) ``` local function bootstrap_pckr() local pckr_path = vim.fn.stdpath("data") .. "/pckr/pckr.nvim" if not vim.uv.fs_stat(pckr_path) then vim.fn.system({ 'git', 'clone', "--filter=blob:none", 'https://github.com/lewis6991/pckr.nvim', pckr_path }) end vim.opt.rtp:prepend(pckr_path) end bootstrap_pckr() require('pckr').add{ { "tpope/vim-fugitive", config = function() require('config.fugitive') end }, { "ctrlpvim/ctrlp.vim", config_pre = function() require('config.ctrlp') end }, "tpope/vim-commentary", { "preservim/nerdtree", config = function() require('config.nerdtree') end }, "jiangmiao/auto-pairs", "editorconfig/editorconfig-vim", { "marko-cerovac/material.nvim", config = function() vim.cmd("colorscheme material") -- color material nmap("c", [[lua require('material.functions').toggle_style()]]) end }, { 'hrsh7th/nvim-cmp', config = function() require('config.cmp') end }, 'hrsh7th/cmp-nvim-lsp', 'hrsh7th/cmp-buffer', 'hrsh7th/cmp-path', 'hrsh7th/cmp-cmdline', { "neovim/nvim-lspconfig", config = function() require('config.lspconfig') end }, { "nvim-treesitter/nvim-treesitter", run = ":TSUpdate", config = function() require("config.treesitter") end }, -- Toggleable terminals { "akinsho/toggleterm.nvim", config = function() require('config.toggleterm') end }, { "ms-jpq/coq_nvim", config = "config.coq" }, "L3MON4D3/LuaSnip", "saadparwaiz1/cmp_luasnip" } ```
lewis6991 commented 1 month ago

cmp_nvim_lsp depends on nvim-cmp.

You need to add it as:

  {'hrsh7th/nvim-cmp', config = function()
    require('config.cmp')
  end},

  -- nvim-cmp sources require nvim-cmp since they depend on it in there plugin/
  -- files
  { 'hrsh7th/cmp-nvim-lsp', requires = 'hrsh7th/nvim-cmp' },
  { 'hrsh7th/cmp-buffer', requires = 'hrsh7th/nvim-cmp' },
  { 'hrsh7th/cmp-path', requires = 'hrsh7th/nvim-cmp' },
  { 'hrsh7th/cmp-cmdline', requires = 'hrsh7th/nvim-cmp' },