diff --git a/nvim/lua/slarse/comments.lua b/nvim/lua/slarse/comments.lua new file mode 100644 index 0000000..3705a7b --- /dev/null +++ b/nvim/lua/slarse/comments.lua @@ -0,0 +1,31 @@ +local non_c_line_comments_by_filetype = { + lua = "--", + python = "#", + sql = "--", +} + +local function comment_out(opts) + local line_comment = non_c_line_comments_by_filetype[vim.bo.filetype] or "//" + local start = math.min(opts.line1, opts.line2) + local finish = math.max(opts.line1, opts.line2) + + vim.api.nvim_command(start .. "," .. finish .. "s:^:" .. line_comment .. ":") + vim.api.nvim_command("noh") +end + +local function uncomment(opts) + local line_comment = non_c_line_comments_by_filetype[vim.bo.filetype] or "//" + local start = math.min(opts.line1, opts.line2) + local finish = math.max(opts.line1, opts.line2) + + pcall(vim.api.nvim_command, start .. "," .. finish .. "s:^\\(\\s\\{-\\}\\)" .. line_comment .. ":\\1:") + vim.api.nvim_command("noh") +end + +vim.api.nvim_create_user_command("CommentOut", comment_out, { range = true }) +vim.keymap.set("v", "co", ":CommentOut") +vim.keymap.set("n", "co", ":CommentOut") + +vim.api.nvim_create_user_command("Uncomment", uncomment, { range = true }) +vim.keymap.set("v", "uc", ":Uncomment") +vim.keymap.set("n", "uc", ":Uncomment") diff --git a/nvim/lua/slarse/init.lua b/nvim/lua/slarse/init.lua index f5f68a8..526d945 100644 --- a/nvim/lua/slarse/init.lua +++ b/nvim/lua/slarse/init.lua @@ -1,2 +1,3 @@ require('slarse.remap') require('slarse.set') +require('slarse.comments')