local M = {} -- Shorten function names local actions = require("telescope.actions") local fb_actions = require("telescope").extensions.file_browser.actions --local builtin = require("telescope.builtin") --local themes = require("telescope.themes") --local utils = require("telescope.utils") --local action_state = require("telescope.actions.state") --local layout_actions = require("telescope.actions.layout") --local pickers = require("telescope.pickers") require('telescope').setup({ defaults = { vimgrep_arguments = { "rg", "--color=never", "--no-heading", "--with-filename", "--line-number", "--column", "--smart-case", "--hidden", "--fixed-strings", "--trim", }, prompt_prefix = " ", selection_caret = " ", entry_prefix = " ", path_display = { "tail" }, --path_display = { "truncate" }, --path_display = { "smart" }, file_ignore_patterns = { "packer_compiled.lua", "%.DS_Store", "%.git/", "%.spl", --"%.log", "%[No Name%]", -- new files / sometimes folders (netrw) "/$", -- ignore folders (netrw) "node_modules", "%.png", "%.zip", "%.pxd", "^.vim/", "^.local/", "^.cache/", "^downloads/", "^music/", --"^node_modules/", --"^undodir/", }, mappings = { i = { [""] = actions.cycle_history_next, [""] = actions.cycle_history_prev, [""] = actions.move_selection_next, [""] = actions.move_selection_previous, --[""] = actions.close, [""] = actions.close, -- close w/ one esc --[""] = "close", -- close w/ one esc [""] = actions.which_key, -- keys from pressing [""] = actions.move_selection_next, [""] = actions.move_selection_previous, [""] = actions.select_default, [""] = actions.select_horizontal, [""] = actions.select_vertical, [""] = actions.select_tab, [""] = actions.preview_scrolling_up, [""] = actions.preview_scrolling_down, [""] = actions.results_scrolling_up, [""] = actions.results_scrolling_down, [""] = actions.toggle_selection + actions.move_selection_worse, [""] = actions.toggle_selection + actions.move_selection_better, [""] = actions.send_to_qflist + actions.open_qflist, [""] = actions.send_selected_to_qflist + actions.open_qflist, [""] = actions.complete_tag, [""] = actions.which_key, -- keys from pressing --[""] = function(prompt_bufnr) -- local selection = require("telescope.actions.state").get_selected_entry() -- local dir = vim.fn.fnamemodify(selection.path, ":p:h") -- require("telescope.actions").close(prompt_bufnr) -- -- Depending on what you want put `cd`, `lcd`, `tcd` -- vim.cmd(string.format("silent lcd %s", dir)) --end, }, n = { [""] = actions.close, [""] = actions.close, [""] = actions.select_default, [""] = actions.select_horizontal, [""] = actions.select_vertical, [""] = actions.select_tab, [""] = actions.toggle_selection + actions.move_selection_worse, [""] = actions.toggle_selection + actions.move_selection_better, [""] = actions.send_to_qflist + actions.open_qflist, [""] = actions.send_selected_to_qflist + actions.open_qflist, ["j"] = actions.move_selection_next, ["k"] = actions.move_selection_previous, ["H"] = actions.move_to_top, ["M"] = actions.move_to_middle, ["L"] = actions.move_to_bottom, [""] = actions.move_selection_next, [""] = actions.move_selection_previous, ["gg"] = actions.move_to_top, ["G"] = actions.move_to_bottom, [""] = actions.preview_scrolling_up, [""] = actions.preview_scrolling_down, [""] = actions.results_scrolling_up, [""] = actions.results_scrolling_down, ["?"] = actions.which_key, --[""] = function(prompt_bufnr) -- local selection = require("telescope.actions.state").get_selected_entry() -- local dir = vim.fn.fnamemodify(selection.path, ":p:h") -- require("telescope.actions").close(prompt_bufnr) -- -- Depending on what you want put `cd`, `lcd`, `tcd` -- vim.cmd(string.format("silent lcd %s", dir)) --end, }, }, }, preview = { filesize_limit = 3, timeout = 250, }, selection_strategy = "reset", sorting_strategy = "ascending", scroll_strategy = "limit", color_devicons = true, layout_strategy = 'horizontal', layout_config = { horizontal = { height = 0.95, preview_cutoff = 70, width = 0.92, preview_width = { 0.55, max = 50 } }, bottom_pane = { height = 12, preview_cutoff = 70, prompt_position = "bottom", }, }, --pickers = { -- live_grep = { -- disable_coordinates = true, -- layout_config = { -- horizontal = { -- preview_width = 0.55, -- }, -- }, -- }, --}, --pickers = { --lsp_references = { -- prompt_prefix='⬅️', -- show_line=false, -- trim_text=true, -- include_declaration=false, -- initial_mode = "normal", --}, --lsp_definitions = { -- prompt_prefix='➡️', -- show_line=false, -- trim_text=true, -- initial_mode = "normal", --}, --lsp_document_symbols = { -- prompt_prefix='* ', -- show_line = false, --}, --treesitter = { -- prompt_prefix=' ', -- show_line = false, --}, --find_files = { -- cwd='%:p:h', -- prompt_prefix=' ', -- hidden = true, -- follow = true, --}, --keymaps = { prompt_prefix='? ' }, --oldfiles = { prompt_prefix=' ' }, --highlights = { prompt_prefix=' ' }, --git_files = { -- prompt_prefix=' ', -- show_untracked = true, -- path_display = { "tail" }, --}, --buffers = { -- prompt_prefix=' ', -- ignore_current_buffer = true, -- initial_mode = "normal", -- sort_mru = true, --}, --live_grep = { -- cwd='%:p:h', -- disable_coordinates=true, -- prompt_title='Search in Folder', -- prompt_prefix=' ', --}, --spell_suggest = { -- initial_mode = "normal", -- prompt_prefix = "暈", -- theme = "cursor", -- layout_config = { cursor = { width = 0.3 } } --}, --colorscheme = { -- enable_preview = true, -- prompt_prefix = '', -- results_title = '', -- layout_strategy = "bottom_pane", --}, --}, extensions = { file_browser = { theme = "dropdown", -- disables netrw and use telescope-file-browser in its place hijack_netrw = true, mappings = { -- your custom insert mode mappings ["i"] = { [""] = function() vim.cmd("normal vbd") end, --[""] = fb_actions.goto_parent_dir, }, ["n"] = { -- your custom normal mode mappings ["N"] = fb_actions.create, --[""] = fb_actions.goto_parent_dir, --["/"] = function() -- vim.cmd("startinsert") --end, }, }, }, }, }) -------------------------------------------------------------------------------- -- Load extensions: -- have to be loaded after telescope setup/config require('telescope').load_extension('fzf') require('telescope').load_extension('ui-select') require("telescope").load_extension("file_browser") require('telescope').load_extension('changed_files') require('telescope').load_extension('media_files') --require('telescope').extensions.notify.notify() require('telescope').load_extension('notify') require('telescope').load_extension('dap') require("telescope").load_extension("session-lens") function M.find_configs() require("telescope.builtin").find_files { hidden = true, no_ignore = false, prompt_title = " Find Configs", results_title = "Config Files", path_display = { "smart" }, search_dirs = { "~/.config/nvim", "~/.config/zsh", "~/.config/tmux", "~/.config/X11", "~/.config/alacritty", "~/.config/kitty", "~/.config/wezterm", "~/.config/bspwm", "~/.config/sxhkd", "~/.config/picom", "~/.bashrc", "~/.ssh", "~/.vim", }, -- cwd = "~/.config/nvim/", file_ignore_patterns = { "~/.config/nvim/startup.log", "packer_compiled.lua", "resurrect", "tmux/plugins", --"^~/.config/tmux/plugins", "%.txt", ".git", "autoload/plugged", "plug.vim", }, layout_strategy = "horizontal", layout_config = { preview_width = 0.65, width = 0.75 }, } end function M.find_scripts() require("telescope.builtin").find_files { hidden = true, no_ignore = true, prompt_title = " Find Scripts", path_display = { "smart" }, search_dirs = { "~/.local/bin/scripts", }, layout_strategy = "horizontal", layout_config = { preview_width = 0.65, width = 0.75 }, } end function M.find_projects() require("telescope.builtin").find_files { hidden = true, no_ignore = true, prompt_title = " Find Projects", path_display = { "smart" }, search_dirs = { "~/projects", }, layout_strategy = "horizontal", layout_config = { preview_width = 0.65, width = 0.75 }, } end function M.grep_notes() local opts = {} opts.hidden = false opts.search_dirs = { "~/documents/notes/", } opts.prompt_prefix = "  " opts.prompt_title = " Grep Notes" opts.path_display = { "smart" } require("telescope.builtin").live_grep(opts) end function M.find_notes() require("telescope.builtin").find_files { hidden = false, prompt_title = " Find Notes", path_display = { "smart" }, search_dirs = { "~/documents/notes/private/", "~/documents/notes", }, --cwd = "~documents/notes", layout_strategy = "horizontal", layout_config = { preview_width = 0.65, width = 0.75 }, } end function M.file_explorer() require("telescope.builtin").file_browser({ prompt_title = "File Browser", cwd = "~", layout_strategy = "horizontal", }) end function M.grep_current_dir() local buffer_dir = require("telescope.utils").buffer_dir() local opts = { prompt_title = "Live Grep in " .. buffer_dir, cwd = buffer_dir, } require("telescope.builtin").live_grep(opts) end -------------------------------------------------------------------------------- local dropdown = require('telescope.themes').get_dropdown({ hidden = true, no_ignore = true, previewer = false, prompt_title = '', preview_title = '', results_title = '', layout_config = { --anchor = "S", prompt_position = 'top' }, }) -- File browser always relative to buffer local opts_file_browser = vim.tbl_extend('force', dropdown, { path_display = { '%:p:h' }, }) -- Set current folder as prompt title local with_title = function(opts, extra) extra = extra or {} local path = opts.cwd or opts.path or extra.cwd or extra.path or nil local title = '' local buf_path = vim.fn.expand('%:p:h') local cwd = vim.fn.getcwd() if path ~= nil and buf_path ~= cwd then title = require('plenary.path'):new(buf_path):make_relative(cwd) else title = vim.fn.fnamemodify(cwd, ':t') end return vim.tbl_extend('force', opts, { prompt_title = title }, extra or {}) end ----vim.api.nvim_create_augroup('startup', { clear = true }) ----vim.api.nvim_command('augroup startup') ----vim.api.nvim_command('autocmd!') ----vim.api.nvim_command('autocmd VimEnter * lua require("plugins/telescope").startup()') ----vim.api.nvim_command('augroup END') -- -- --local startup = function() -- -- Open file browser if argument is a folder -- local arg = vim.api.nvim_eval('argv(0)') -- if arg and (vim.fn.isdirectory(arg) ~= 0 or arg == "") then -- vim.defer_fn(function() -- require('telescope.builtin').find_files(with_title(dropdown)) ---- require'telescope.builtin'.find_files(require('telescope.themes').get_dropdown({ ---- hidden = true, ---- results_title = '', ---- layout_config = { prompt_position = 'top' }, ---- })) -- end, 10) -- end --end -- -- -- ---- Define the custom command startup/findhere --vim.cmd('command! Startup lua require("plugins.telescope").startup()') --vim.cmd('command! Findhere lua require("plugins.telescope").startup()') -- ----vim.api.nvim_command('autocmd VimEnter * lua require("plugins/telescope").startup()') -- ---- Merge the existing M table with the startup function table --M = vim.tbl_extend('force', M, { startup = startup }) return M