local M = {} local function safe_setup(label, fn) local ok, err = pcall(fn) if not ok then vim.schedule(function() vim.notify("Skipping " .. label .. ": " .. tostring(err), vim.log.levels.WARN) end) end end local function setup_flash(keys) require("flash").setup({ modes = { search = { enabled = keys.search ~= false }, char = { enabled = keys.char == true }, }, }) if keys.jump_key then vim.keymap.set({ "n", "x", "o" }, keys.jump_key, function() require("flash").jump() end, { desc = "Flash" }) end if keys.toggle_search_key then vim.keymap.set({ "n", "x", "o" }, keys.toggle_search_key, function() require("flash").toggle() end, { desc = "Toggle Flash Search" }) end if keys.treesitter_key then vim.keymap.set({ "n", "x", "o" }, keys.treesitter_key, function() require("flash").treesitter() end, { desc = "Flash Treesitter" }) end end function M.setup() local plugins_ready = require("plugins.pack").add({ "folke/flash.nvim", { src = "kylechui/nvim-surround", version = vim.version.range("3") }, }) if not plugins_ready then return end local vscode = require("vscode") vim.notify = vscode.notify safe_setup("flash", function() setup_flash({ toggle_search_key = "/", treesitter_key = "ct", search = true, char = false, }) end) safe_setup("nvim-surround", function() require("nvim-surround").setup({}) end) safe_setup("plugins.vscode.actions", function() require("plugins.vscode.actions").setup(vscode) end) end return M