diff --git a/lua/nvchad/mappings.lua b/lua/nvchad/mappings.lua index 8730906..a944465 100644 --- a/lua/nvchad/mappings.lua +++ b/lua/nvchad/mappings.lua @@ -51,6 +51,38 @@ map("n", "/", function() require("Comment.api").toggle.linewise.current() end, { desc = "comment toggle" }) +--Move line +local function move_line(op) + return function() + local start = op == "+" and 1 or 2 + local count = vim.v.count + local times = count == 0 and start or (op == "+" and count or count + 1) + local ok, _ = pcall(vim.cmd.move, op .. times) + if ok then + vim.cmd.norm("==") + end + end +end + +local function move_selected(op) + return function() + local restore_autocmd = u.disable_autocmd("toggle_relnum") + + local start = op == "+" and "" or 2 + local count = vim.v.count + local times = count == 0 and start or (op == "+" and count or count + 1) + local mark = op == "+" and "'>" or "'<" + vim.api.nvim_feedkeys(vim.keycode(":move" .. mark .. op .. times .. "gv=gv"), "n", true) + + restore_autocmd() + end +end + +map("n", "", move_line("+"), { silent = true, desc = "Move line to Top" }) +map("n", "", move_line("-"), { silent = true, desc = "Move line to Down" }) +map("x", "", move_selected("+"), { silent = true, desc = "Move Group of line to Top" }) +map("x", "", move_selected("-"), { silent = true, desc = "Move Group of line to Down" }) + map( "v", "/",