Files
dotfiles/nvim/.config/nvim/lua/plugins/telescope.lua

136 lines
6.0 KiB
Lua

vim.api.nvim_create_autocmd("PackChanged", {
group = vim.api.nvim_create_augroup("telescope-fzf-native-update", { clear = true }),
callback = function(ev)
local name, kind = ev.data.spec.name, ev.data.kind
if name == "telescope-fzf-native.nvim" and (kind == "install" or kind == "update") then
vim.system({ "make" }, { cwd = ev.data.path }):wait()
print("telescope-fzf-native make done.")
end
end,
})
vim.pack.add({
{ src = "https://github.com/nvim-telescope/telescope.nvim", version = "v0.2.1" },
"https://github.com/nvim-lua/plenary.nvim",
"https://github.com/nvim-telescope/telescope-fzf-native.nvim",
"https://gitlab.com/davvid/telescope-git-grep.nvim",
{ src = "https://github.com/nvim-telescope/telescope-frecency.nvim", version = vim.version.range("^1.0.0") },
})
local ok, builtin = pcall(require, "telescope.builtin")
if ok then
local defaults = require("telescope.themes").get_dropdown()
defaults["path_display"] = {
filename_first = {
reverse_directories = true,
},
}
defaults["mappings"] = {
i = {
["<C-k>"] = "move_selection_previous",
["<C-j>"] = "move_selection_next",
},
n = {
["<C-k>"] = "move_selection_previous",
["<C-j>"] = "move_selection_next",
["q"] = "close",
},
}
require("telescope").setup({
defaults = defaults,
pickers = {
diagnostics = {
theme = "ivy",
},
buffers = {
mappings = {
n = {
["d"] = "delete_buffer",
},
},
},
},
})
local set = vim.keymap.set
require("telescope").load_extension("fzf")
require("telescope").load_extension("git_grep")
require("telescope").load_extension("frecency")
set("n", "<leader>;", function()
require("telescope-frecency").start()
end, { desc = "Telescope frecency" })
set("n", "<leader><leader>", function()
require("telescope-frecency").start({ workspace = "CWD" })
end, { desc = "Telescope frecency" })
set("n", "<leader>b", function() builtin.buffers({ sort_mru = true, sort_lastused = true }) end,
{ desc = "Telescope buffers" })
set("n", "<leader>cc", builtin.commands, { desc = "Telescope commands" })
set("n", "<leader>ch", builtin.command_history, { desc = "Telescope command history" })
set("n", "<leader>cH", builtin.highlights, { desc = "Telescope highlights" })
set("n", "<leader>da", builtin.diagnostics, { desc = "Telescope diagnostics" })
set("n", "<leader>ec", function()
builtin.find_files({ cwd = vim.fn.stdpath("config") })
end, { desc = "Telescope nvim config files" })
set("n", "<leader>ep", function()
builtin.find_files({ cwd = vim.fs.joinpath(vim.fn.stdpath("data"), "site") })
end, { desc = "Telescope find files" })
set("n", "<leader>es", function()
builtin.find_files({ cwd = vim.fs.normalize('~/.config/kitty/sessions') })
end, { desc = "Telescope kitty sessions" })
set("n", "<leader>eS", function()
vim.cmd("Oil " .. vim.fs.normalize('~/.config/kitty/sessions'))
end, { desc = "Telescope kitty sessions (dir)" })
set("n", "<leader>fa", builtin.git_files, { desc = "Telescope nvim package files" })
set("n", "<leader>F", builtin.find_files, { desc = "Telescope find files" })
set("n", "<leader>fh", function()
builtin.find_files({ hidden = true })
end, { desc = "Telescope find files (hidden)" })
set("n", "<leader>gB", builtin.git_branches, { desc = "Telescope git branches" })
set("n", "<leader>gc", builtin.git_bcommits, { desc = "Telescope git buffer commits" })
set("n", "<leader>gC", builtin.git_commits, { desc = "Telescope git commits" })
set("n", "<leader>gs", builtin.git_status, { desc = "Telescope git status" })
set("n", "<leader>gS", builtin.git_stash, { desc = "Telescope git stash" })
set("n", "<leader>ha", builtin.help_tags, { desc = "Telescope help tags" })
set("n", "<leader>hk", builtin.keymaps, { desc = "Telescope keymaps" })
set("n", "<leader>m", builtin.marks, { desc = "Telescope marks" })
set("n", "<leader>M", builtin.man_pages, { desc = "Telescope man pages" })
set("n", "<leader>o", builtin.oldfiles, { desc = "Telescope oldfiles" })
set("n", "<leader>qa", builtin.quickfix, { desc = "Telescope quickfix" })
set("n", "<leader>qh", builtin.quickfixhistory, { desc = "Telescope quickfix history" })
set("n", "<leader>ql", builtin.loclist, { desc = "Telescope loclist" })
set("n", "<leader>r", builtin.resume, { desc = "Telescope resume" })
set("n", "<leader>t", builtin.treesitter, { desc = "Telescope treesitter symbols" })
set("n", "<leader>R", builtin.registers, { desc = "Telescope registers" })
set("n", "<leader>sa", function()
require("git_grep").live_grep()
end, { desc = "Telescope git live grep" })
set("n", "<leader>S", builtin.live_grep, { desc = "Telescope live grep" })
set("n", "<leader>sh", builtin.search_history, { desc = "Telescope search history" })
set("n", "<leader>sl", builtin.current_buffer_fuzzy_find, { desc = "Telescope current buffer fuzzy find" })
set("n", "<leader>so", function()
builtin.grep_string({ grep_open_files = true })
end, { desc = "Telescope grep open files" })
set("n", "<leader>su", function()
builtin.live_grep({ grep_open_files = true })
end, { desc = "Telescope live grep open files" })
set({ "n", "v" }, "<leader>sw", function()
require("git_grep").grep()
end, { desc = "Telescope git grep word" })
set("n", "<leader>wd", builtin.lsp_document_symbols, { desc = "Telescope document symbols" })
set("n", "<leader>wp", builtin.lsp_workspace_symbols, { desc = "Telescope workspace symbols" })
set("n", "<leader>ws", function()
require("git_grep").workspace_live_grep()
end, { desc = "Telescope workspace git live grep" })
set("n", "<leader>wy", function()
require("git_grep").workspace_grep()
end, { desc = "Telescope workspace git grep word" })
set("n", "<leader>:", builtin.builtin, { desc = "Telescope builtin" })
set("n", "gd", builtin.lsp_definitions, { desc = "Goto Definition" })
set("n", "grr", builtin.lsp_references, { desc = "References" })
set("n", "grI", builtin.lsp_implementations, { desc = "Goto Implementation" })
set("n", "gy", builtin.lsp_type_definitions, { desc = "Goto T[y]pe Definition" })
else
print("plugin builtin missing")
end