local function select_or_create(search) local grapple = require("grapple") if grapple.exists(search) then grapple.select(search) else grapple.tag() end end return { "cbochs/grapple.nvim", dependencies = { { "nvim-tree/nvim-web-devicons", lazy = true }, }, lazy = false, cmd = "Grapple", config = function() local telescope = require("telescope") telescope.load_extension("grapple") -- Open graple window when open without arguments local g = vim.api.nvim_create_augroup('Grapple-User', { clear = true }) vim.api.nvim_create_autocmd('StdinReadPre', { group = g, callback = function() vim.g.read_from_stdin = 1 end, }) vim.api.nvim_create_autocmd('UIEnter', { group = g, callback = function() if vim.fn.argc() == 0 and vim.api.nvim_buf_get_name(0) == '' and vim.g.read_from_stdin == nil then telescope.extensions.grapple.tags() end end, }) end, keys = { { "a", "Grapple toggle", desc = "Toggle bookmark for current file" }, { "D", "Grapple reset", desc = "Delete all bookmarks" }, { "t", "Grapple toggle_tags", desc = "Toggle bookmarks window" }, { "T", "Grapple toggle_scopes", desc = "Toggle scopes window" }, { "n", "Grapple cycle forward", desc = "Next bookmark" }, { "N", "Grapple cycle backward", desc = "Prev bookmark" }, { "j", function() select_or_create({ index = 1 }) end, desc = "Go or create bookmark 1" }, { "k", function() select_or_create({ index = 2 }) end, desc = "Go or create bookmark 2" }, { "l", function() select_or_create({ index = 3 }) end, desc = "Go or create bookmark 3" }, { "ñ", function() select_or_create({ index = 4 }) end, desc = "Go or create bookmark 4" }, { "J", "Grapple tag index=1", desc = "Override bookmark 1" }, { "K", "Grapple tag index=2", desc = "Override bookmark 2" }, { "L", "Grapple tag index=3", desc = "Override bookmark 3" }, { "Ñ", "Grapple tag index=4", desc = "Override bookmark 4" }, }, }