From 01d09bc9c0c6bd8b94fa7c0f2cb481f37f93056e Mon Sep 17 00:00:00 2001 From: Bertrand Benjamin Date: Sat, 20 Aug 2022 06:16:14 +0200 Subject: [PATCH] Feat: add telescope file_browser and rewrite keymap --- nvim/.config/nvim/lua/config/telescope.lua | 113 ++++++++++++++------- nvim/.config/nvim/lua/plugins.lua | 1 + 2 files changed, 80 insertions(+), 34 deletions(-) diff --git a/nvim/.config/nvim/lua/config/telescope.lua b/nvim/.config/nvim/lua/config/telescope.lua index 462b2b1..8ddcbba 100644 --- a/nvim/.config/nvim/lua/config/telescope.lua +++ b/nvim/.config/nvim/lua/config/telescope.lua @@ -1,46 +1,91 @@ +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() + 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 -require('telescope').setup { - defaults = { - buffer_previewer_maker = new_maker, - file_ignore_patterns = {"**/*.pdf"}, - }, +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" }, + }, 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" + 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, + }, + }, + }, + } } -require('telescope').load_extension('fzf') +telescope.load_extension('fzf') +telescope.load_extension('file_browser') -local map = vim.api.nvim_set_keymap --- Find files using Telescope command-line sugar. -map('n', 'e', 'Telescope find_files', {}) -map('n', 'g', 'Telescope live_grep', {}) -map('n', 'b', 'Telescope buffers', {}) -map('n', 'h', 'Telescope help_tags', {}) +-- 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) diff --git a/nvim/.config/nvim/lua/plugins.lua b/nvim/.config/nvim/lua/plugins.lua index 40586ae..f551b23 100644 --- a/nvim/.config/nvim/lua/plugins.lua +++ b/nvim/.config/nvim/lua/plugins.lua @@ -93,6 +93,7 @@ return packer.startup(function(use) } use {'nvim-telescope/telescope-fzf-native.nvim', run = 'make' } + use { "nvim-telescope/telescope-file-browser.nvim" } use { 'lervag/vimtex',