diff options
author | LostNeophyte <[email protected]> | 2023-02-11 14:41:45 +0100 |
---|---|---|
committer | LostNeophyte <[email protected]> | 2023-02-11 14:44:24 +0100 |
commit | 7be867e2aac31ef04565eaba6b416ede766c06d7 (patch) | |
tree | 413dc6c0e82b04e14f505b7f291ed56f97dea9ea /lua/lvim/core/builtins/comment.lua | |
parent | ed5b43bba06e6d1ef7b6bd7ed95c55b64e2df3c8 (diff) |
refactor(builtins): move builtins to ./builtins
Diffstat (limited to 'lua/lvim/core/builtins/comment.lua')
-rw-r--r-- | lua/lvim/core/builtins/comment.lua | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/lua/lvim/core/builtins/comment.lua b/lua/lvim/core/builtins/comment.lua new file mode 100644 index 00000000..677dfbb6 --- /dev/null +++ b/lua/lvim/core/builtins/comment.lua @@ -0,0 +1,84 @@ +local M = {} + +function M.config() + lvim.builtin.comment = { + active = true, + ---Add a space b/w comment and the line + ---@type boolean + padding = true, + + ---Whether cursor should stay at the + ---same position. Only works in NORMAL + ---mode mappings + sticky = true, + + ---Lines to be ignored while comment/uncomment. + ---Could be a regex string or a function that returns a regex string. + ---Example: Use '^$' to ignore empty lines + ---@type string|function + ignore = "^$", + + ---Whether to create basic (operator-pending) and extra mappings for NORMAL/VISUAL mode + ---@type table + mappings = { + ---operator-pending mapping + ---Includes `gcc`, `gcb`, `gc[count]{motion}` and `gb[count]{motion}` + basic = true, + ---Extra mapping + ---Includes `gco`, `gcO`, `gcA` + extra = true, + }, + + ---LHS of line and block comment toggle mapping in NORMAL/VISUAL mode + ---@type table + toggler = { + ---line-comment toggle + line = "gcc", + ---block-comment toggle + block = "gbc", + }, + + ---LHS of line and block comment operator-mode mapping in NORMAL/VISUAL mode + ---@type table + opleader = { + ---line-comment opfunc mapping + line = "gc", + ---block-comment opfunc mapping + block = "gb", + }, + + ---LHS of extra mappings + ---@type table + 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", + }, + + ---Pre-hook, called before commenting the line + ---@type function|nil + pre_hook = function(...) + local loaded, ts_comment = pcall(require, "ts_context_commentstring.integrations.comment_nvim") + if loaded and ts_comment then + return ts_comment.create_pre_hook()(...) + end + end, + + ---Post-hook, called after commenting is done + ---@type function|nil + post_hook = nil, + } +end + +function M.setup() + local nvim_comment = require "Comment" + + nvim_comment.setup(lvim.builtin.comment) + + return nvim_comment +end + +return M |