aboutsummaryrefslogtreecommitdiff
path: root/lua/plugins/telescope.lua
diff options
context:
space:
mode:
authorsrdusr <trevorgray@srdusr.com>2022-10-12 23:55:30 +0200
committersrdusr <trevorgray@srdusr.com>2022-10-12 23:55:30 +0200
commitc349d1f7998d97f60d3a3945ce8da166b33bf1c8 (patch)
tree44c5e071849d1b8cf1a7ad398ead42cfe75d6585 /lua/plugins/telescope.lua
downloaddotfiles-c349d1f7998d97f60d3a3945ce8da166b33bf1c8.tar.gz
dotfiles-c349d1f7998d97f60d3a3945ce8da166b33bf1c8.zip
Initial commit
Diffstat (limited to 'lua/plugins/telescope.lua')
-rw-r--r--lua/plugins/telescope.lua177
1 files changed, 177 insertions, 0 deletions
diff --git a/lua/plugins/telescope.lua b/lua/plugins/telescope.lua
new file mode 100644
index 0000000..dcf6b9e
--- /dev/null
+++ b/lua/plugins/telescope.lua
@@ -0,0 +1,177 @@
+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)