local M = {} 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() require("plugins.pack").add({ "folke/flash.nvim", "folke/which-key.nvim", "kylechui/nvim-surround", "lewis6991/gitsigns.nvim", "nvim-lualine/lualine.nvim", "nvim-tree/nvim-tree.lua", "nvim-tree/nvim-web-devicons", "nvim-treesitter/nvim-treesitter", "nvim-treesitter/nvim-treesitter-textobjects", "yorickpeterse/nvim-window", }) vim.opt.completeopt = { "menu", "menuone", "noselect" } vim.opt.mouse = "a" vim.opt.number = true vim.opt.relativenumber = true vim.opt.cursorline = true vim.opt.splitbelow = true vim.opt.splitright = true vim.opt.termguicolors = true vim.opt.showmode = false vim.opt.wrap = false vim.opt.swapfile = false vim.opt.showmatch = true vim.opt.signcolumn = "yes" vim.opt.hidden = true vim.opt.shortmess:append("c") vim.opt.encoding = "utf-8" vim.opt.cmdheight = 2 vim.opt.foldmethod = "indent" vim.opt.foldlevel = 99 setup_flash({ jump_key = "s", treesitter_key = "S", }) require("nvim-surround").setup({}) require("plugins.native.git").setup() require("plugins.native.tree").setup() require("plugins.native.statusline").setup() require("plugins.native.treesitter").setup() require("plugins.native.which_key").setup() require("plugins.native.window").setup() end return M