local map = vim.keymap.set map('n', 'ff', require('telescope.builtin').find_files, { desc = "Find files" }) map('n', 'fg', require('telescope.builtin').live_grep, { desc = "Live grep" }) map('n', 'fb', require('telescope.builtin').buffers, { desc = "Buffers" }) map('n', 'fh', require('telescope.builtin').help_tags, { desc = "Help tags" }) -- Project-specific ignored dirs for Telescope local function load_local_ignore() local cwd = vim.fn.getcwd() local config_path = cwd .. "/.nvim.lua" if vim.fn.filereadable(config_path) == 1 then local ok, config = pcall(dofile, config_path) if ok and config.fzf_ignore_dirs then return config.fzf_ignore_dirs end end return {} end local ignored = load_local_ignore() local ignore_patterns = vim.tbl_map(function(d) return "**/" .. d .. "/*" end, ignored) require('telescope').setup { defaults = { file_ignore_patterns = ignore_patterns, } } -- za: Telescope open in current tab vim.keymap.set('n', 'za', function() require("telescope.builtin").find_files() end, { desc = "Telescope: open file in current tab" }) -- zt: Telescope open in new tab vim.keymap.set('n', 'zt', function() require("telescope.builtin").find_files({ attach_mappings = function(_, map) map("i", "", function(prompt_bufnr) local actions = require("telescope.actions") local action_state = require("telescope.actions.state") local entry = action_state.get_selected_entry() actions.close(prompt_bufnr) vim.cmd("tabedit " .. entry.value) end) return true end, }) end, { desc = "Telescope: open file in new tab" }) -- FZF vim.keymap.set('n', 'zs', ':FZF', { noremap = true, silent = true }) vim.api.nvim_create_user_command('FZFInTab', function() vim.fn['fzf#run'](vim.fn['fzf#wrap']({ sink = function(selected) vim.cmd('tabedit ' .. selected) end })) end, {}) vim.keymap.set('n', 'zy', ':FZFInTab', { noremap = true, silent = true })