local status, telescope = pcall(require, "telescope") if (not status) then return end local builtin = require("telescope.builtin") local previewers = require('telescope.previewers') local Job = require('plenary.job') local new_maker = function(filepath, bufnr, opts) filepath = vim.fn.expand(filepath) Job:new({ command = 'file', args = { '--mime-type', '-b', filepath }, on_exit = function(j) local mime_type = vim.split(j:result()[1], '/')[1] if mime_type == "text" then previewers.buffer_previewer_maker(filepath, bufnr, opts) else -- maybe we want to write something to the buffer here vim.schedule(function() vim.api.nvim_buf_set_lines(bufnr, 0, -1, false, { 'BINARY' }) end) end end }):sync() end local fb_actions = require "telescope".extensions.file_browser.actions local function telescope_buffer_dir() return vim.fn.expand('%:p:h') end telescope.setup { defaults = { buffer_previewer_maker = new_maker, file_ignore_patterns = { "**/*.pdf" }, mappings = { n = { [''] = require('telescope.actions').delete_buffer }, -- n i = { [''] = require('telescope.actions').delete_buffer }, }, }, extensions = { fzf = { fuzzy = true, -- false will only do exact matching override_generic_sorter = true, -- override the generic sorter override_file_sorter = true, -- override the file sorter case_mode = "smart_case", -- or "ignore_case" or "respect_case" -- the default case_mode is "smart_case" }, file_browser = { theme = "dropdown", -- disables netrw and use telescope-file-browser in its place hijack_netrw = true, mappings = { ["n"] = { -- your custom normal mode mappings ["h"] = fb_actions.goto_parent_dir, }, }, }, } } telescope.load_extension('fzf') telescope.load_extension('file_browser') -- keymaps vim.keymap.set('n', 'e', function() builtin.find_files({ }) end) vim.keymap.set('n', 'g', function() builtin.live_grep() end) vim.keymap.set('n', 'b', function() builtin.buffers() end) vim.keymap.set('n', 'h', function() builtin.resume() end) -- vim.keymap.set('n', 'd', function() -- builtin.diagnostics() -- end) vim.keymap.set("n", "fb", 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)