local M = { "gbprod/yanky.nvim", event = "VeryLazy", dependencies = { "kkharji/sqlite.lua", enabled = function() return not jit.os:find("Windows") end, }, } ---@alias YankyType 'p'|'P'|'gp'|'gP'|'[p'|']p' ---@alias YankyChange boolean|'>'|'<'|'=' ---@param type YankyType ---@param is_visual boolean ---@param linewise YankyChange function M.put(type, is_visual, linewise) local yanky_wrappers = require("yanky.wrappers") local yanky = require("yanky") local callback = linewise == true and yanky_wrappers.linewise() or type(linewise) == "string" and yanky_wrappers.linewise(yanky_wrappers.change(linewise)) yanky.put(type, is_visual, callback) end function M.init() vim.keymap.set("n", "P", function() require("telescope").extensions.yank_history.yank_history({}) end, { desc = "Paste from Yanky" }) end function M.config() require("yanky").setup({ highlight = { timer = 150, }, ring = { storage = jit.os:find("Windows") and "shada" or "sqlite", }, }) vim.keymap.set({ "n", "x" }, "y", "(YankyYank)") vim.keymap.set({ "n", "x" }, "p", "(YankyPutAfter)") vim.keymap.set({ "n", "x" }, "P", "(YankyPutBefore)") vim.keymap.set({ "n", "x" }, "gp", "(YankyGPutAfter)") vim.keymap.set({ "n", "x" }, "gP", "(YankyGPutBefore)") vim.keymap.set("n", "", "(YankyCycleForward)") vim.keymap.set("n", "", "(YankyCycleBackward)") -- vim.keymap.set("n", "]p", "(YankyPutIndentAfterLinewise)") -- vim.keymap.set("n", "]P", "(YankyPutIndentAfterLinewise)") -- vim.keymap.set("n", "[p", "(YankyPutIndentBeforeLinewise)") -- vim.keymap.set("n", "[P", "(YankyPutIndentBeforeLinewise)") -- -- vim.keymap.set("n", ">p", "(YankyPutIndentAfterShiftRight)") -- vim.keymap.set("n", "(YankyPutIndentAfterShiftLeft)") -- vim.keymap.set("n", ">P", "(YankyPutIndentBeforeShiftRight)") -- vim.keymap.set("n", "(YankyPutIndentBeforeShiftLeft)") vim.keymap.set("n", "]p", "(YankyPutAfterFilter)") vim.keymap.set("n", "[p", "(YankyPutBeforeFilter)") end return M