ts_context_commentstring.integrations.comment_nvim module not found
SmithJson opened this issue Β· 13 comments
Environment
- macOS catalina 10.15.7
- Neovim NVIM v0.8.0-1210-gd367ed9b2
Question Description
Thank you very much for the plugin. I encountered a "ts_context_commentstring.integrations.comment_nvim not found" error during use, but I can find the module in the source code of the nvim-ts-context-commentstring plugin
Hey!
Could you show how you installed the plugin? Just to make sure it is installed correctly with the plugin manager (if you're using one).
I don't think that this is related to your error, but one thing I noticed in your configuration is that configuring the plugin inside treesitter config setup function is incorrect. In your screenshot, the key is config
, but it should be context_commentstring
:
require'nvim-treesitter.configs'.setup {
context_commentstring = {
enable = true,
enable_autocmd = false,
}
}
I don't think that that would cause the error though since requiring a module should still work. But it makes sense to try to fix it anyways π
I am also facing this issue.
Hey!
Could you show how you installed the plugin? Just to make sure it is installed correctly with the plugin manager (if you're using one).
I don't think that this is related to your error, but one thing I noticed in your configuration is that configuring the plugin inside treesitter config setup function is incorrect. In your screenshot, the key is
config
, but it should becontext_commentstring
:require'nvim-treesitter.configs'.setup { context_commentstring = { enable = true, enable_autocmd = false, } }I don't think that that would cause the error though since requiring a module should still work. But it makes sense to try to fix it anyways π
I use modules packaged by other developers based on wbthomason/packer.nvim
This is the file addressοΌhttps://github.com/SmithJson/nvim/blob/master/lua/core/pack.lua
The parameters passed in by calling are the same as those required by packer.nvim
Thanks you
Looks like this is an issue for quite a few people π
I can't really reproduce it and I'm using lazy.nvim now and previously used packer. Maybe you could help with a way to minimally reproduce the issue?
It seems like the Lua runtime path is maybe not correctly set up for some weird reason? Are you maybe using Lazy.nvim or Packer in a non-standard-ish way? I couldn't really fully understand the config from @SmithJson , but it looks like there's some funky things going on there. Maybe it could be reproduced with a smaller config that uses the same techniques?
Finally, does your set rtp
show anything interesting? It should include the nvim-ts-context-commentstring
folder. If I understand correctly, then require()
should try to import files from the lua/
folders inside the rtp
folders.
I think i've fixed the issue with lazy.nvim in my config.
I was trying to require the plugin before it was loaded.
This is my configuration now which works for me:
return {
{
'numToStr/Comment.nvim',
dependencies = {
'JoosepAlviste/nvim-ts-context-commentstring',
},
opts = function()
return {
pre_hook = require('ts_context_commentstring.integrations.comment_nvim').create_pre_hook(),
}
end,
},
}
But this is basically the same config as @SmithJson uses so I think this might be a packer issue, but I'm not sure
Looks like this is an issue for quite a few people π
I can't really reproduce it and I'm using lazy.nvim now and previously used packer. Maybe you could help with a way to minimally reproduce the issue?
It seems like the Lua runtime path is maybe not correctly set up for some weird reason? Are you maybe using Lazy.nvim or Packer in a non-standard-ish way? I couldn't really fully understand the config from @SmithJson , but it looks like there's some funky things going on there. Maybe it could be reproduced with a smaller config that uses the same techniques?
Finally, does your
set rtp
show anything interesting? It should include thenvim-ts-context-commentstring
folder. If I understand correctly, thenrequire()
should try to import files from thelua/
folders inside thertp
folders.
π @NyCodeGHG @JoosepAlviste Thanks a lot for the ideas provided. The reason for the error is that there is a problem with the loading order of the package. I put comment.nvim load after nvim-ts-context-commentstring and it worked fine
That's great to hear that it works now!
It's interesting though, that requiring a Lua file also needs to be done after the plugin is loaded. I suppose Packer/Lazy hadn't added the plugin to the runtime path yet when Comment.nvim was initialized.
Does this fix the issue for you too, @UtkarshVerma?
Yes.
I actually came across this same issue but mostly because I messed up the plugin spec. It's a pretty simple mistake but might help you out.
If you are using lazy.nvim like me, do not use the opts
field:
{
'numToStr/Comment.nvim',
event = 'VeryLazy',
dependencies = { 'nvim-treesitter' },
opts = {
pre_hook = require('ts_context_commentstring.integrations.comment_nvim').create_pre_hook(),
},
},
It is evaluated when the file is read. At this point ts_context_commentstring
is not loaded. Instead, use config
like this (or use a function to define opts
):
{
'numToStr/Comment.nvim',
event = 'VeryLazy',
dependencies = { 'nvim-treesitter' },
config = function()
require('Comment').setup({
pre_hook = require('ts_context_commentstring.integrations.comment_nvim').create_pre_hook(),
})
end,
}
You don't actually need to define opts
as a function. You just need to define pre_hook
as a function, so that it becomes a closure and doesn't get evaluated when the file is parsed. I have the following in my config and works just fine
return {
{
"numToStr/Comment.nvim",
opts = {
pre_hook = function()
require("ts_context_commentstring.integrations.comment_nvim").create_pre_hook()
end,
},
},
}
You can of course define opts
as a function in general to change some default behavior, but in this case it's not necessary.
For anyone coming here in the future this is the final bit of code that will make it work on lazy.nvim
{
"numToStr/Comment.nvim",
dependencies = {
{
"JoosepAlviste/nvim-ts-context-commentstring",
config = function()
require("ts_context_commentstring").setup({
enable_autocmd = false,
})
end,
},
},
config = function(_, opts)
require("Comment").setup({
pre_hook = require("ts_context_commentstring.integrations.comment_nvim").create_pre_hook(),
})
end,
},