diff --git a/lua/lazyvim/plugins/coding.lua b/lua/lazyvim/plugins/coding.lua index 1984851e..017e295e 100644 --- a/lua/lazyvim/plugins/coding.lua +++ b/lua/lazyvim/plugins/coding.lua @@ -131,9 +131,18 @@ return { }, -- comments + { "JoosepAlviste/nvim-ts-context-commentstring", lazy = true }, { "echasnovski/mini.comment", event = "VeryLazy", + config = function(_, opts) + local c = require("mini.comment") + c.setup(opts) + local H = require("lazyvim.util").get_upvalue(c.setup, "H") + H.get_commentstring = function() + return require("ts_context_commentstring.internal").calculate_commentstring() or vim.bo.commentstring + end + end, opts = {}, }, diff --git a/lua/lazyvim/util/init.lua b/lua/lazyvim/util/init.lua index 7625d8a9..a098f071 100644 --- a/lua/lazyvim/util/init.lua +++ b/lua/lazyvim/util/init.lua @@ -27,6 +27,20 @@ function M.fg(name) return fg and { fg = string.format("#%06x", fg) } end +function M.get_upvalue(func, name) + local i = 1 + while true do + local n, v = debug.getupvalue(func, i) + if not n then + break + end + if n == name then + return v + end + i = i + 1 + end +end + ---@param fn fun() function M.on_very_lazy(fn) vim.api.nvim_create_autocmd("User", {