112 lines
4.6 KiB
Lua
112 lines
4.6 KiB
Lua
local function project_files()
|
|
require("telescope.builtin").find_files({
|
|
cwd = require("lspconfig.util").root_pattern(".git")(vim.fn.expand("%:p")),
|
|
})
|
|
end
|
|
|
|
local M = {
|
|
"nvim-telescope/telescope.nvim",
|
|
lazy = false,
|
|
dependencies = {
|
|
"nvim-lua/popup.nvim",
|
|
"nvim-lua/plenary.nvim",
|
|
"nvim-telescope/telescope-fzy-native.nvim",
|
|
"nvim-telescope/telescope-github.nvim",
|
|
"nvim-telescope/telescope-dap.nvim",
|
|
"nvim-telescope/telescope-ui-select.nvim",
|
|
},
|
|
}
|
|
|
|
function M.config()
|
|
local telescope = require("telescope")
|
|
local actions = require("telescope.actions")
|
|
local previewers = require("telescope.previewers")
|
|
|
|
vim.keymap.set("n", "<leader>b", '<cmd>lua require("telescope.builtin").buffers()<CR>')
|
|
vim.keymap.set("n", "<leader>f", '<cmd>lua require("telescope.builtin").oldfiles()<CR>')
|
|
vim.keymap.set("n", "<space>", '<cmd>lua require("telescope.builtin").oldfiles()<CR>')
|
|
vim.keymap.set("n", "<leader><space>", '<cmd>lua require("telescope.builtin").oldfiles({cwd_only=true})<CR>')
|
|
vim.keymap.set("n", "<leader>d", '<cmd>lua require("telescope.builtin").diagnostics({bufnr=0})<CR>')
|
|
vim.keymap.set("n", "<leader>e", '<cmd>lua require("telescope.builtin").git_files()<CR>')
|
|
vim.keymap.set("n", "<leader>g", '<cmd>lua require("telescope.builtin").git_status()<CR>')
|
|
vim.keymap.set("n", "<leader>a", '<cmd>lua require("telescope.builtin").lsp_code_actions()<CR>')
|
|
vim.keymap.set("n", "<leader>m", '<cmd>lua require("telescope.builtin").marks()<CR>')
|
|
vim.keymap.set("n", "<leader>s", '<cmd>lua require("telescope.builtin").lsp_document_symbols()<CR>')
|
|
vim.keymap.set("n", "<leader>S", '<cmd>lua require("telescope.builtin").lsp_dynamic_workspace_symbols()<CR>')
|
|
vim.keymap.set("n", "<leader>t", '<cmd>lua require("telescope.builtin").treesitter()<CR>')
|
|
vim.keymap.set("n", "<leader>/", '<cmd>lua require("telescope.builtin").live_grep()<CR>')
|
|
vim.keymap.set("n", "<leader>.", '<cmd>lua require("telescope.builtin").file_browser()<CR>')
|
|
vim.keymap.set("n", "<leader>p", '<cmd>lua require("telescope.builtin").registers()<CR>')
|
|
vim.keymap.set("n", "ga", "<cmd>lua vim.lsp.buf.code_action()<CR>")
|
|
vim.keymap.set("n", "gr", '<cmd>lua require("telescope.builtin").lsp_references()<CR>')
|
|
vim.keymap.set("n", "gd", '<cmd>lua require("telescope.builtin").lsp_definitions()<CR>')
|
|
vim.keymap.set("n", "gi", '<cmd>lua require("telescope.builtin").lsp_implementations()<CR>')
|
|
vim.keymap.set("n", "g/", '<cmd>lua require("telescope.builtin").lsp_document_symbols()<CR>')
|
|
vim.keymap.set(
|
|
"n",
|
|
"g?",
|
|
'<cmd>lua require("telescope.builtin").lsp_workspace_symbols({query=(vim.bo.filetype == "go" and "\'" or "")})<CR>'
|
|
)
|
|
vim.keymap.set("n", "ge", '<cmd>lua require("telescope.builtin").lsp_document_diagnostics()<CR>')
|
|
vim.keymap.set("n", "Db", '<cmd>lua require("telescope").extensions.dap.list_breakpoints()<CR>')
|
|
vim.keymap.set("n", "Dcc", '<cmd>lua require("telescope").extensions.dap.commands()<CR>')
|
|
vim.keymap.set("n", "Df", '<cmd>lua require("telescope").extensions.dap.frames()<CR>')
|
|
vim.keymap.set("n", "Dv", '<cmd>lua require("telescope").extensions.dap.variables()<CR>')
|
|
|
|
-- Setup
|
|
telescope.setup({
|
|
defaults = {
|
|
layout_strategy = "flex",
|
|
-- layout_defaults = {flip_columns = 160},
|
|
layout_config = {
|
|
preview_cutoff = 10,
|
|
prompt_position = "bottom",
|
|
mirror = true,
|
|
},
|
|
mappings = {
|
|
i = {
|
|
["<CR>"] = actions.select_default + actions.center,
|
|
["<esc>"] = actions.close,
|
|
["<tab>"] = actions.add_selection,
|
|
},
|
|
},
|
|
color_devicons = true,
|
|
file_previewer = previewers.vim_buffer_cat.new,
|
|
grep_previewer = previewers.vim_buffer_vimgrep.new,
|
|
qflist_previewer = previewers.vim_buffer_qflist.new,
|
|
},
|
|
extensions = {
|
|
["ui-select"] = {
|
|
require("telescope.themes").get_dropdown({
|
|
-- even more opts
|
|
}),
|
|
},
|
|
},
|
|
})
|
|
|
|
local layout_strategies = require("telescope.pickers.layout_strategies")
|
|
local config = require("telescope.config")
|
|
|
|
layout_strategies.flex = function(self, max_columns, max_lines)
|
|
local layout_config = self.layout_config or {}
|
|
|
|
local flip_columns = layout_config.flip_columns or 160 -- Here's why.
|
|
local flip_lines = layout_config.flip_lines or 20
|
|
|
|
if max_columns < flip_columns and max_lines > flip_lines then
|
|
self.layout_config = (config.values.layout_defaults or {})["vertical"]
|
|
return layout_strategies.vertical(self, max_columns, max_lines)
|
|
else
|
|
self.layout_config = (config.values.layout_defaults or {})["horizontal"]
|
|
return layout_strategies.horizontal(self, max_columns, max_lines)
|
|
end
|
|
end
|
|
|
|
-- Extensions
|
|
telescope.load_extension("dap")
|
|
telescope.load_extension("fzy_native")
|
|
telescope.load_extension("gh")
|
|
telescope.load_extension("ui-select")
|
|
end
|
|
|
|
return M
|