diff --git a/kitty/kitty.conf b/kitty/kitty.conf index ed09272..8c86990 100644 --- a/kitty/kitty.conf +++ b/kitty/kitty.conf @@ -22,6 +22,7 @@ copy_on_select clipboard term xterm-256color map ctrl+left previous_tab map ctrl+right next_tab +map cmd+k combine : clear_terminal scrollback active : clear_terminal clear active tab_bar_style separator tab_separator " ┇" tab_bar_edge top diff --git a/nvim/lua/tracer/plugins/telescope.lua b/nvim/lua/tracer/plugins/telescope.lua index 368493c..c6b6ca6 100644 --- a/nvim/lua/tracer/plugins/telescope.lua +++ b/nvim/lua/tracer/plugins/telescope.lua @@ -1,4 +1,40 @@ local actions = require('telescope.actions') +local action_state = require('telescope.actions.state') +local builtin = require('telescope.builtin') +local telescope_state = require('telescope.state') + +local function clear_prompt(prompt_bufnr) + local current_picker = action_state.get_current_picker(prompt_bufnr) + current_picker:reset_prompt() +end + +local function resume_cached_picker(prompt_title, fallback) + local cached_pickers = telescope_state.get_global_key('cached_pickers') or {} + + for index, picker in ipairs(cached_pickers) do + if picker.prompt_title == prompt_title then + builtin.resume({ cache_index = index }) + return + end + end + + fallback() +end + +local function find_files() + resume_cached_picker('Files', function() + builtin.find_files() + end) +end + +local function find_all_files() + resume_cached_picker('All Files', function() + builtin.find_files({ + no_ignore = true, + prompt_title = 'All Files', + }) + end) +end vim.cmd([[ highlight link TelescopePromptTitle PMenuSel @@ -14,6 +50,10 @@ require('telescope').setup({ path_display = { truncate = 1 }, prompt_prefix = '  ', selection_caret = ' ', + cache_picker = { + num_pickers = 10, + ignore_empty_prompt = true, + }, layout_config = { prompt_position = 'top', }, @@ -21,8 +61,14 @@ require('telescope').setup({ mappings = { i = { [''] = actions.close, - [''] = actions.cycle_history_next, - [''] = actions.cycle_history_prev, + [''] = actions.cycle_history_next, + [''] = actions.cycle_history_prev, + [''] = clear_prompt, + }, + n = { + [''] = actions.cycle_history_next, + [''] = actions.cycle_history_prev, + [''] = clear_prompt, }, }, file_ignore_patterns = { '.git/' }, @@ -30,6 +76,7 @@ require('telescope').setup({ pickers = { find_files = { hidden = true, + prompt_title = 'Files', }, buffers = { previewer = false, @@ -49,10 +96,12 @@ require('telescope').setup({ require('telescope').load_extension('fzf') require('telescope').load_extension('live_grep_args') -vim.keymap.set('n', 'f', [[lua require('telescope.builtin').find_files()]]) -vim.keymap.set('n', '', [[lua require('telescope.builtin').find_files()]]) -vim.keymap.set('n', 'F', [[lua require('telescope.builtin').find_files({ no_ignore = true, prompt_title = 'All Files' })]]) -vim.keymap.set('n', 'b', [[lua require('telescope.builtin').buffers()]]) -vim.keymap.set('n', 'g', [[lua require('telescope').extensions.live_grep_args.live_grep_args()]]) -vim.keymap.set('n', 'h', [[lua require('telescope.builtin').oldfiles()]]) -vim.keymap.set('n', 's', [[lua require('telescope.builtin').lsp_document_symbols()]]) +vim.keymap.set('n', 'f', find_files, { desc = 'Find files' }) +vim.keymap.set('n', '', find_files, { desc = 'Find files' }) +vim.keymap.set('n', 'F', find_all_files, { desc = 'Find all files' }) +vim.keymap.set('n', 'b', builtin.buffers, { desc = 'Find buffers' }) +vim.keymap.set('n', 'g', function() + require('telescope').extensions.live_grep_args.live_grep_args() +end, { desc = 'Live grep' }) +vim.keymap.set('n', 'h', builtin.oldfiles, { desc = 'Recent files' }) +vim.keymap.set('n', 's', builtin.lsp_document_symbols, { desc = 'Document symbols' })