diff options
Diffstat (limited to 'lua/plugins/telescope.lua')
| -rw-r--r-- | lua/plugins/telescope.lua | 223 |
1 files changed, 223 insertions, 0 deletions
diff --git a/lua/plugins/telescope.lua b/lua/plugins/telescope.lua new file mode 100644 index 0000000..db065d7 --- /dev/null +++ b/lua/plugins/telescope.lua @@ -0,0 +1,223 @@ +local status_ok, telescope = pcall(require, "telescope") +if not status_ok then + return +end +local actions = require("telescope.actions") +local builtin = require("telescope.builtin") + +local function telescope_buffer_dir() + return vim.fn.expand("%:p:h") +end + +telescope.load_extension("fzf") +telescope.load_extension("file_browser") +require("telescope").load_extension("file_browser") +local fb_actions = require("telescope").extensions.file_browser.actions +--telescope.load_extension('media_files') + +telescope.setup({ + defaults = { + -- + prompt_prefix = " ", + selection_caret = " ", + path_display = { "smart" }, + -- + mappings = { + i = { + ["<C-n>"] = actions.cycle_history_next, + ["<C-p>"] = actions.cycle_history_prev, + + ["<C-j>"] = actions.move_selection_next, + ["<C-k>"] = actions.move_selection_previous, + + ["<C-c>"] = actions.close, + + ["<Down>"] = actions.move_selection_next, + ["<Up>"] = actions.move_selection_previous, + + ["<CR>"] = actions.select_default, + ["<C-x>"] = actions.select_horizontal, + ["<C-y>"] = actions.select_vertical, + ["<C-t>"] = actions.select_tab, + + ["<C-u>"] = actions.preview_scrolling_up, + ["<C-d>"] = actions.preview_scrolling_down, + + ["<PageUp>"] = actions.results_scrolling_up, + ["<PageDown>"] = actions.results_scrolling_down, + + ["<Tab>"] = actions.toggle_selection + actions.move_selection_worse, + ["<S-Tab>"] = actions.toggle_selection + actions.move_selection_better, + ["<C-q>"] = actions.send_to_qflist + actions.open_qflist, + ["<M-q>"] = actions.send_selected_to_qflist + actions.open_qflist, + ["<C-l>"] = actions.complete_tag, + ["<C-_>"] = actions.which_key, -- keys from pressing <C-/> + }, + + n = { + ["<esc>"] = actions.close, + ["<CR>"] = actions.select_default, + ["<C-x>"] = actions.select_horizontal, + ["<C-v>"] = actions.select_vertical, + ["<C-t>"] = actions.select_tab, + + ["<Tab>"] = actions.toggle_selection + actions.move_selection_worse, + ["<S-Tab>"] = actions.toggle_selection + actions.move_selection_better, + ["<C-q>"] = actions.send_to_qflist + actions.open_qflist, + ["<M-q>"] = 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, + + ["<Down>"] = actions.move_selection_next, + ["<Up>"] = actions.move_selection_previous, + ["gg"] = actions.move_to_top, + ["G"] = actions.move_to_bottom, + + ["<C-u>"] = actions.preview_scrolling_up, + ["<C-d>"] = actions.preview_scrolling_down, + + ["<PageUp>"] = actions.results_scrolling_up, + ["<PageDown>"] = actions.results_scrolling_down, + + ["?"] = actions.which_key, + ["cd"] = 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, + }, + }, + }, + pickers = { + -- Default configuration for builtin pickers goes here: + -- picker_name = { + -- picker_config_key = value, + -- ... + -- } + -- Now the picker_config_key will be applied every time you call this + -- builtin picker + }, + 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"] = { + ["<C-w>"] = function() + vim.cmd("normal vbd") + end, + }, + ["n"] = { + -- your custom normal mode mappings + ["N"] = fb_actions.create, + ["h"] = fb_actions.goto_parent_dir, + ["/"] = function() + vim.cmd("startinsert") + end, + }, + }, + }, + + media_files = { + -- filetypes whitelist + -- defaults to {"png", "jpg", "mp4", "webm", "pdf"} + filetypes = { "png", "webp", "jpg", "jpeg" }, + find_cmd = "rg", -- find command (defaults to `fd`) + }, + -- Your extension configuration goes here: + -- extension_name = { + -- extension_config_key = value, + -- } + -- please take a look at the readme of the extension you want to configure + }, +}) + +telescope.load_extension("file_browser") + +--vim.keymap.set("n", ";f", function() +-- builtin.find_files({ +-- no_ignore = false, +-- hidden = true, +-- }) +--end) +vim.keymap.set("n", ";r", function() + builtin.live_grep() +end) +vim.keymap.set("n", "\\\\", function() + builtin.buffers() +end) +vim.keymap.set("n", ";t", function() + builtin.help_tags() +end) +vim.keymap.set("n", ";;", function() + builtin.resume() +end) +vim.keymap.set("n", ";e", function() + builtin.diagnostics() +end) +--vim.keymap.set("n", "sf", function() +-- telescope.extensions.file_browser.file_browser({ +-- path = "%:p:h", +-- cwd = telescope_buffer_dir(), +-- respect_gitignore = false, +-- hidden = true, +-- grouped = true, +-- previewer = false, +-- initial_mode = "normal", +-- layout_config = { height = 40 }, +-- }) +--end) + +local M = {} + +function M.reload() + local function get_module_name(s) + local module_name; + + module_name = s:gsub("%.lua", "") + module_name = module_name:gsub("%/", ".") + module_name = module_name:gsub("%.init", "") + + return module_name + end + + local prompt_title = "~ neovim modules ~" + + -- sets the path to the lua folder + local path = "~/.config/nvim/lua" + + local opts = { + prompt_title = prompt_title, + cwd = path, + + attach_mappings = function(_, map) + -- Adds a new map to ctrl+e. + map("i", "<c-e>", function(_) + -- these two a very self-explanatory + local entry = require("telescope.actions.state").get_selected_entry() + local name = get_module_name(entry.value) + + -- call the helper method to reload the module + -- and give some feedback + R(name) + P(name .. " RELOADED!!!") + end) + + return true + end + } + + -- call the builtin method to list files + require('telescope.builtin').find_files(opts) +end + +return M; + |
