39 lines
1.1 KiB
Lua
39 lines
1.1 KiB
Lua
require("Comment").setup({})
|
|
require("ts_context_commentstring").setup({})
|
|
local U = require("Comment.utils")
|
|
|
|
local ctype_to_commentstring = {
|
|
[U.ctype.linewise] = "__default",
|
|
[U.ctype.blockwise] = "__multiline",
|
|
}
|
|
|
|
local jsx_filetypes = {
|
|
"javascript",
|
|
"javascriptreact",
|
|
"typescript",
|
|
"typescriptreact",
|
|
}
|
|
|
|
require("Comment").setup({
|
|
pre_hook = function(ctx)
|
|
-- Only calculate commentstring for tsx filetypes
|
|
if vim.list_contains(jsx_filetypes, vim.bo.filetype) then
|
|
-- Detemine whether to use linewise or blockwise commentstring
|
|
local type = ctype_to_commentstring[ctx.ctype]
|
|
|
|
-- 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,
|
|
})
|