113 lines
2.6 KiB
Lua
113 lines
2.6 KiB
Lua
local function project_files()
|
||
local opts = {}
|
||
if vim.loop.fs_stat '.git' then
|
||
opts.show_untracked = true
|
||
require('telescope.builtin').git_files(opts)
|
||
else
|
||
local client = vim.lsp.get_active_clients()[1]
|
||
if client then
|
||
opts.cwd = client.config.root_dir
|
||
end
|
||
-- require('telescope.builtin').find_files(opts)
|
||
require('telescope').extensions.file_browser.file_browser()
|
||
end
|
||
end
|
||
|
||
local M = {
|
||
'nvim-telescope/telescope.nvim',
|
||
cmd = { 'Telescope' },
|
||
keys = {
|
||
{ '<leader><space>', project_files, desc = 'Find File' },
|
||
},
|
||
dependencies = {
|
||
'nvim-telescope/telescope-file-browser.nvim',
|
||
},
|
||
}
|
||
|
||
function M.config()
|
||
local telescope = require 'telescope'
|
||
local actions = require 'telescope.actions'
|
||
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
|
||
telescope.setup {
|
||
extensions = {
|
||
file_browser = {
|
||
theme = 'ivy',
|
||
-- disables netrw and use telescope-file-browser in its place
|
||
hijack_netrw = true,
|
||
mappings = {
|
||
['i'] = {
|
||
},
|
||
['n'] = {
|
||
-- your custom normal mode mappings
|
||
},
|
||
},
|
||
},
|
||
},
|
||
pickers = {
|
||
find_files = {
|
||
theme = 'dropdown',
|
||
},
|
||
live_grep = {
|
||
theme = 'dropdown',
|
||
},
|
||
buffers = {
|
||
theme = 'dropdown',
|
||
},
|
||
},
|
||
defaults = {
|
||
layout_config = {
|
||
vertical = { width = 0.5 },
|
||
-- other layout configuration here
|
||
},
|
||
buffer_previewer_maker = new_maker,
|
||
prompt_prefix = 'ï‘« ',
|
||
selection_caret = 'ï<EFBFBD>¤ ',
|
||
path_display = { 'smart' },
|
||
file_ignore_patterns = { '.git/', 'node_modules' },
|
||
|
||
mappings = {
|
||
i = {
|
||
['<Down>'] = actions.move_selection_next,
|
||
['<Up>'] = actions.move_selection_previous,
|
||
['<C-n>'] = actions.cycle_history_next,
|
||
['<C-e>'] = actions.cycle_history_prev,
|
||
['<esc>'] = actions.close,
|
||
},
|
||
},
|
||
vimgrep_arguments = {
|
||
'rg',
|
||
'--color=never',
|
||
'--no-heading',
|
||
'--with-filename',
|
||
'--line-number',
|
||
'--column',
|
||
'--smart-case',
|
||
'--trim', -- add this value
|
||
},
|
||
},
|
||
}
|
||
end
|
||
|
||
return M
|