diff --git a/config/nvim/init.lua b/config/nvim/init.lua index e066148..3002466 100644 --- a/config/nvim/init.lua +++ b/config/nvim/init.lua @@ -28,12 +28,7 @@ require("packer").startup(function(use) use({ "folke/tokyonight.nvim" }) -- Make commenting code great - use({ - "numToStr/Comment.nvim", - config = function() - require("Comment").setup() - end, - }) + use({ "numToStr/Comment.nvim" }) -- Icons used by many plugins use({ "kyazdani42/nvim-web-devicons" }) @@ -144,6 +139,7 @@ require("user.treesitter") require("user.telescope") require("user.git") require("user.lsp") +require("user.comment") require("user.snippets") require("user.lualine") require("user.remaps") diff --git a/config/nvim/lua/user/comment.lua b/config/nvim/lua/user/comment.lua new file mode 100644 index 0000000..ffd274f --- /dev/null +++ b/config/nvim/lua/user/comment.lua @@ -0,0 +1,24 @@ +require("Comment").setup({ + pre_hook = function(ctx) + -- Only calculate commentstring for tsx filetypes + if vim.bo.filetype == "typescriptreact" or vim.bo.filetype == "javascriptreact" then + local U = require("Comment.utils") + + -- Detemine whether to use linewise or blockwise commentstring + local type = ctx.ctype == U.ctype.line and "__default" or "__multiline" + + -- Determine the location where to calculate commentstring from + local location = nil + if ctx.ctype == U.ctype.block then + location = require("ts_context_commentstring.utils").get_cursor_location() + elseif ctx.cmotion == U.cmotion.v or ctx.cmotion == U.cmotion.V then + location = require("ts_context_commentstring.utils").get_visual_start_location() + end + + return require("ts_context_commentstring.internal").calculate_commentstring({ + key = type, + location = location, + }) + end + end, +})