multicursor (good this time)
This commit is contained in:
parent
f60dd72912
commit
ef1981d06b
@ -8,6 +8,14 @@ return {
|
|||||||
config = function()
|
config = function()
|
||||||
require'nvim-treesitter.configs'.setup {
|
require'nvim-treesitter.configs'.setup {
|
||||||
textobjects = {
|
textobjects = {
|
||||||
|
select = {
|
||||||
|
enable = true,
|
||||||
|
lookahead = true,
|
||||||
|
keymaps = {
|
||||||
|
["af"] = "@function.outer",
|
||||||
|
["if"] = "@function.inner",
|
||||||
|
}
|
||||||
|
},
|
||||||
move = {
|
move = {
|
||||||
enable = true,
|
enable = true,
|
||||||
set_jumps = false,
|
set_jumps = false,
|
||||||
|
|||||||
@ -157,6 +157,10 @@ return {
|
|||||||
-- `z` key
|
-- `z` key
|
||||||
{ mode = 'n', keys = 'z' },
|
{ mode = 'n', keys = 'z' },
|
||||||
{ mode = 'x', keys = 'z' },
|
{ mode = 'x', keys = 'z' },
|
||||||
|
|
||||||
|
-- Localleader
|
||||||
|
{ mode = 'n', keys = '<Localleader>'},
|
||||||
|
{ mode = 'x', keys = '<Localleader>'},
|
||||||
},
|
},
|
||||||
|
|
||||||
clues = {
|
clues = {
|
||||||
@ -189,6 +193,8 @@ return {
|
|||||||
triggers = {
|
triggers = {
|
||||||
{ 'g', mode = { 'n', 'x' } },
|
{ 'g', mode = { 'n', 'x' } },
|
||||||
},
|
},
|
||||||
|
skip_confirm_for_simple_edits = true,
|
||||||
|
prompt_save_on_select_new_entry = false,
|
||||||
},
|
},
|
||||||
-- Optional dependencies
|
-- Optional dependencies
|
||||||
dependencies = { "nvim-tree/nvim-web-devicons" }, -- use if you prefer nvim-web-devicons
|
dependencies = { "nvim-tree/nvim-web-devicons" }, -- use if you prefer nvim-web-devicons
|
||||||
@ -245,85 +251,98 @@ return {
|
|||||||
event = 'VeryLazy',
|
event = 'VeryLazy',
|
||||||
},
|
},
|
||||||
|
|
||||||
-- {
|
{
|
||||||
-- "jake-stewart/multicursor.nvim",
|
"jake-stewart/multicursor.nvim",
|
||||||
-- branch = "1.0",
|
branch = "1.0",
|
||||||
-- config = function()
|
config = function()
|
||||||
-- local mc = require("multicursor-nvim")
|
local mc = require("multicursor-nvim")
|
||||||
-- mc.setup()
|
mc.setup()
|
||||||
--
|
|
||||||
-- local set = vim.keymap.set
|
local set = vim.keymap.set
|
||||||
--
|
|
||||||
-- -- Add or skip cursor above/below the main cursor.
|
-- Add or skip cursor above/below the main cursor.
|
||||||
-- set({"n", "x"}, "<up>", function() mc.lineAddCursor(-1) end)
|
set({"n", "x"}, "<localleader>k", function() mc.lineAddCursor(-1) end, { desc = "Add cursor to previous line" })
|
||||||
-- set({"n", "x"}, "<down>", function() mc.lineAddCursor(1) end)
|
set({"n", "x"}, "<localleader>j", function() mc.lineAddCursor(1) end, { desc = "Add cursor to next line" })
|
||||||
-- -- set({"n", "x"}, "<leader><up>", function() mc.lineSkipCursor(-1) end)
|
set({"n", "x"}, "<up>", function() mc.lineAddCursor(-1) end, { desc = "Add cursor to previous line" })
|
||||||
-- -- set({"n", "x"}, "<leader><down>", function() mc.lineSkipCursor(1) end)
|
set({"n", "x"}, "<down>", function() mc.lineAddCursor(1) end, { desc = "Add cursor to next line" })
|
||||||
--
|
set({"n", "x"}, "<localleader>K", function() mc.lineSkipCursor(-1) end, { desc = "Skip previous line to add cursor" })
|
||||||
-- -- Add or skip adding a new cursor by matching word/selection
|
set({"n", "x"}, "<localleader>J", function() mc.lineSkipCursor(1) end, { desc = "Skip next line to add cursor" })
|
||||||
-- -- set({"n", "x"}, "<leader>n", function() mc.matchAddCursor(1) end)
|
|
||||||
-- -- set({"n", "x"}, "<leader>s", function() mc.matchSkipCursor(1) end)
|
-- Add or skip adding a new cursor by matching word/selection
|
||||||
-- -- set({"n", "x"}, "<leader>N", function() mc.matchAddCursor(-1) end)
|
set({"n", "x"}, "<localleader>n", function() mc.matchAddCursor(1) end, { desc = "Add cursor to next currently selected word" })
|
||||||
-- -- set({"n", "x"}, "<leader>S", function() mc.matchSkipCursor(-1) end)
|
set({"n", "x"}, "<localleader>s", function() mc.matchSkipCursor(1) end, { desc = "Skip next instance of current word to add cursor" })
|
||||||
--
|
set({"n", "x"}, "<localleader>N", function() mc.matchAddCursor(-1) end, { desc = "Add cursor to previous currently selected word" })
|
||||||
-- -- Add cursor at next argument treesitter
|
set({"n", "x"}, "<localleader>S", function() mc.matchSkipCursor(-1) end, { desc = "Skip previous instance of current word to add cursor" })
|
||||||
-- set({'n', 'x'}, ']A', function()
|
|
||||||
-- if vim.v.count < 1 then
|
set({"n", "x"}, "<localleader>m", mc.operator, { desc = "Add cursors to text object" })
|
||||||
-- mc.addCursor(']a')
|
set("n", "<localleader>s", function()
|
||||||
-- else
|
vim.ui.input({prompt = "Match: "}, function(input) mc.operator({pattern = input}) end)
|
||||||
-- for i=1, vim.v.count - 1 do
|
end, { desc = "Add cursors to regex match inside text object " })
|
||||||
-- mc.addCursor(']a')
|
set("n", "<localleader>*", function()
|
||||||
-- end
|
mc.operator({pattern = vim.fn.expand("<cword>")})
|
||||||
-- end
|
end, { desc = "Add cursors to current word inside text object" })
|
||||||
-- end, { desc = 'Create multicursor on next argument'})
|
set("x", "<localleader>s", mc.matchCursors, { desc = "Add cursors to regex match inside visual selection" })
|
||||||
-- set({'n', 'x'}, '[A', function()
|
|
||||||
-- if vim.v.count < 1 then
|
-- Add cursor at next argument treesitter
|
||||||
-- mc.addCursor('[a')
|
set({'n', 'x'}, ']A', function()
|
||||||
-- else
|
if vim.v.count < 1 then
|
||||||
-- for i=1, vim.v.count - 1 do
|
mc.addCursor(']a')
|
||||||
-- mc.addCursor('[a')
|
else
|
||||||
-- end
|
for _=1, vim.v.count - 1 do
|
||||||
-- end
|
mc.addCursor(']a')
|
||||||
-- end, { desc = 'Create multicursor on previous argument'})
|
end
|
||||||
--
|
end
|
||||||
-- -- Add and remove cursors with control + left click.
|
end, { desc = 'Create multicursor on next argument'})
|
||||||
-- set("n", "<c-leftmouse>", mc.handleMouse)
|
set({'n', 'x'}, '[A', function()
|
||||||
-- set("n", "<c-leftdrag>", mc.handleMouseDrag)
|
if vim.v.count < 1 then
|
||||||
-- set("n", "<c-leftrelease>", mc.handleMouseRelease)
|
mc.addCursor('[a')
|
||||||
--
|
else
|
||||||
-- -- Disable and enable cursors.
|
for _=1, vim.v.count - 1 do
|
||||||
-- set({"n", "x"}, "<c-q>", mc.toggleCursor)
|
mc.addCursor('[a')
|
||||||
--
|
end
|
||||||
-- -- Mappings defined in a keymap layer only apply when there are
|
end
|
||||||
-- -- multiple cursors. This lets you have overlapping mappings.
|
end, { desc = 'Create multicursor on previous argument'})
|
||||||
-- mc.addKeymapLayer(function(layerSet)
|
|
||||||
--
|
-- Add and remove cursors with control + left click.
|
||||||
-- -- Select a different cursor as the main one.
|
set("n", "<c-leftmouse>", mc.handleMouse)
|
||||||
-- layerSet({"n", "x"}, "<left>", mc.prevCursor)
|
set("n", "<c-leftdrag>", mc.handleMouseDrag)
|
||||||
-- layerSet({"n", "x"}, "<right>", mc.nextCursor)
|
set("n", "<c-leftrelease>", mc.handleMouseRelease)
|
||||||
--
|
|
||||||
-- -- Delete the main cursor.
|
-- Disable and enable cursors.
|
||||||
-- layerSet({"n", "x"}, "<leader>x", mc.deleteCursor)
|
set({"n", "x"}, "<c-q>", mc.toggleCursor, { desc = "Toggle multiple cursors" })
|
||||||
--
|
|
||||||
-- -- Enable and clear cursors using escape.
|
-- Mappings defined in a keymap layer only apply when there are
|
||||||
-- layerSet("n", "<esc>", function()
|
-- multiple cursors. This lets you have overlapping mappings.
|
||||||
-- if not mc.cursorsEnabled() then
|
mc.addKeymapLayer(function(layerSet)
|
||||||
-- mc.enableCursors()
|
|
||||||
-- else
|
-- Select a different cursor as the main one.
|
||||||
-- mc.clearCursors()
|
layerSet({"n", "x"}, "<localleader>h", mc.prevCursor, { desc = "Make previous cursor primary" })
|
||||||
-- end
|
layerSet({"n", "x"}, "<localleader>l", mc.nextCursor, { desc = "Make next cursor primary" })
|
||||||
-- end)
|
layerSet({"n", "x"}, "<left>", mc.prevCursor, { desc = "Make previous cursor primary" })
|
||||||
-- end)
|
layerSet({"n", "x"}, "<right>", mc.nextCursor, { desc = "Make next cursor primary" })
|
||||||
--
|
|
||||||
-- -- Customize how cursors look.
|
-- Delete the main cursor.
|
||||||
-- local hl = vim.api.nvim_set_hl
|
layerSet({"n", "x"}, "<localleader>x", mc.deleteCursor)
|
||||||
-- hl(0, "MultiCursorCursor", { reverse = true })
|
|
||||||
-- hl(0, "MultiCursorVisual", { link = "Visual" })
|
-- Enable and clear cursors using escape.
|
||||||
-- hl(0, "MultiCursorSign", { link = "SignColumn"})
|
layerSet("n", "<esc>", function()
|
||||||
-- hl(0, "MultiCursorMatchPreview", { link = "Search" })
|
if not mc.cursorsEnabled() then
|
||||||
-- hl(0, "MultiCursorDisabledCursor", { reverse = true })
|
mc.enableCursors()
|
||||||
-- hl(0, "MultiCursorDisabledVisual", { link = "Visual" })
|
else
|
||||||
-- hl(0, "MultiCursorDisabledSign", { link = "SignColumn"})
|
mc.clearCursors()
|
||||||
-- end
|
end
|
||||||
-- },
|
end)
|
||||||
|
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
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user