d79e2d5ecb
inspired by https://github.com/BijanVeyssi/nvim-config
56 lines
1.7 KiB
Lua
56 lines
1.7 KiB
Lua
return {
|
|
'numToStr/Comment.nvim',
|
|
-- event = 'VeryLazy',
|
|
keys = { 'gcc', { 'gc', mode = 'v' }, { 'gb', mode = 'v' } },
|
|
opts = {
|
|
-- -LHS of operator-pending mappings in NORMAL and VISUAL mode
|
|
opleader = {
|
|
---Line-comment keymap
|
|
line = 'gc',
|
|
---Block-comment keymap
|
|
block = 'gb',
|
|
},
|
|
---LHS of extra mappings
|
|
extra = {
|
|
---Add comment on the line above
|
|
above = 'gcO',
|
|
---Add comment on the line below
|
|
below = 'gco',
|
|
---Add comment at the end of line
|
|
eol = 'gca',
|
|
},
|
|
---Enable keybindings
|
|
---NOTE: If given `false` then the plugin won't create any mappings
|
|
mappings = {
|
|
---Operator-pending mapping; `gcc` `gbc` `gc[count]{motion}` `gb[count]{motion}`
|
|
basic = true,
|
|
---Extra mapping; `gco`, `gcO`, `gcA`
|
|
extra = true,
|
|
---Extended mapping; `g>` `g<` `g>[count]{motion}` `g<[count]{motion}`
|
|
extended = false,
|
|
},
|
|
pre_hook = function(ctx)
|
|
-- Only calculate commentstring for tsx filetypes
|
|
if vim.bo.filetype == 'typescriptreact' then
|
|
local U = require 'Comment.utils'
|
|
|
|
-- Determine whether to use linewise or blockwise commentstring
|
|
local type = ctx.ctype == U.ctype.linewise and '__default' or '__multiline'
|
|
|
|
-- Determine the location where to calculate commentstring from
|
|
local location = nil
|
|
if ctx.ctype == U.ctype.blockwise 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,
|
|
},
|
|
}
|