summaryrefslogtreecommitdiff
path: root/lua/config/plugins/extra.lua
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--lua/config/plugins/extra.lua54
1 files changed, 54 insertions, 0 deletions
diff --git a/lua/config/plugins/extra.lua b/lua/config/plugins/extra.lua
index 4bbc381..03748fb 100644
--- a/lua/config/plugins/extra.lua
+++ b/lua/config/plugins/extra.lua
@@ -1,5 +1,59 @@
return {
{
+ "multicursor-nvim",
+ event = "DeferredUIEnter",
+ after = function(_)
+ local mc = require("multicursor-nvim")
+ mc.setup({
+ signs = false,
+ })
+
+ -- Keybindings would be a lot better as <localleader>
+ local map = vim.keymap.set
+
+ -- NOTE: this required for "repeatable" commands
+ -- I'd like to use `2<localleader>cn` for example (and that doesn't work out of box)
+ local map_rep = function(modes, bind, action)
+ map(modes, bind, function()
+ for _ = 1, vim.v.count1, 1 do
+ action()
+ end
+ end)
+ end
+
+ -- stylua: ignore start
+ map({ "n", "x" }, "<localleader><localleader>", function() mc.clearCursors() end)
+ map({ "n", "x" }, "<localleader>R", function() mc.restoreCursors() end)
+
+ map_rep({ "n", "x" }, "<localleader>j", function() mc.lineAddCursor(1) end)
+ map_rep({ "n", "x" }, "<localleader>k", function() mc.lineAddCursor(-1) end)
+ map_rep({ "n", "x" }, "<localleader>J", function() mc.lineSkipCursor(1) end)
+ map_rep({ "n", "x" }, "<localleader>K", function() mc.lineSkipCursor(-1) end)
+
+ map_rep({ "n", "x" }, "<localleader>cn", function() mc.matchAddCursor(1) end)
+ map_rep({ "n", "x" }, "<localleader>cN", function() mc.matchAddCursor(-1) end)
+ map_rep({ "n", "x" }, "<localleader>cs", function() mc.matchSkipCursor(1) end)
+ map_rep({ "n", "x" }, "<localleader>cS", function() mc.matchSkipCursor(-1) end)
+ map({ "n", "x" }, "<localleader>cM", mc.matchAllAddCursors)
+ map("x", "<localleader>m", mc.matchCursors)
+ map("x", "<localleader>s", mc.splitCursors)
+
+ -- map("n", "<localleader>g", mc.addCursorOperator)
+ map({ "n", "x" }, "<localleader>g", mc.operator)
+ -- stylua: ignore end
+
+ -- Customize how cursors look.
+ local hl = vim.api.nvim_set_hl
+ hl(0, "MultiCursorCursor", { reverse = true })
+ hl(0, "MultiCursorVisual", { link = "Visual" })
+ hl(0, "MultiCursorSign", { link = "SignColumn" })
+ hl(0, "MultiCursorMatchPreview", { link = "Search" })
+ hl(0, "MultiCursorDisabledCursor", { reverse = true })
+ hl(0, "MultiCursorDisabledVisual", { link = "Visual" })
+ hl(0, "MultiCursorDisabledSign", { link = "SignColumn" })
+ end,
+ },
+ {
"yanky.nvim",
event = "DeferredUIEnter",
after = function(_)