aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/nvim/.config/nvim/lua/tobyvin/plugins/telescope.lua
blob: 9fa97376343c0cc87ee84ed01a25c43386a32a2d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
local M = {
	"nvim-telescope/telescope.nvim",
	dependencies = {
		"nvim-lua/plenary.nvim",
		"BurntSushi/ripgrep",
		{ "nvim-telescope/telescope-fzf-native.nvim", build = "make" },
		"nvim-telescope/telescope-file-browser.nvim",
		"nvim-telescope/telescope-live-grep-args.nvim",
		"nvim-telescope/telescope-dap.nvim",
	},
}

function M.init()
	local builtin = setmetatable({}, {
		__index = function(_, k)
			return function()
				require("telescope.builtin")[k]()
			end
		end,
	})

	vim.keymap.set("n", "<leader>fa", builtin.autocommands, { desc = "autocommands" })
	vim.keymap.set("n", "<leader>fb", builtin.buffers, { desc = "buffers" })
	vim.keymap.set("n", "<leader>fc", builtin.commands, { desc = "commands" })
	vim.keymap.set("n", "<leader>fC", builtin.command_history, { desc = "command history" })
	vim.keymap.set("n", "<leader>fe", builtin.diagnostics, { desc = "diagnostics" })
	vim.keymap.set("n", "<leader>ff", builtin.find_files, { desc = "find files" })
	vim.keymap.set("n", "<leader>fF", builtin.filetypes, { desc = "filetypes" })
	vim.keymap.set("n", "<leader>fh", builtin.help_tags, { desc = "help" })
	vim.keymap.set("n", "<leader>fH", builtin.highlights, { desc = "highlights" })
	vim.keymap.set("n", "<leader>fj", builtin.jumplist, { desc = "jumplist" })
	vim.keymap.set("n", "<leader>fk", builtin.keymaps, { desc = "keymaps" })
	vim.keymap.set("n", "<leader>fl", builtin.loclist, { desc = "loclist" })
	vim.keymap.set("n", "<leader>fm", builtin.marks, { desc = "marks" })
	vim.keymap.set("n", "<leader>fM", builtin.man_pages, { desc = "man pages" })
	vim.keymap.set("n", "<leader>fo", builtin.oldfiles, { desc = "old files" })
	vim.keymap.set("n", "<leader>fp", builtin.pickers, { desc = "pickers" })
	vim.keymap.set("n", "<leader>fr", builtin.resume, { desc = "resume" })
	vim.keymap.set("n", "<leader>fR", builtin.reloader, { desc = "reloader" })
	vim.keymap.set("n", "<leader>fs", builtin.spell_suggest, { desc = "spell suggest" })
	vim.keymap.set("n", "<leader>fS", builtin.search_history, { desc = "search history" })
	vim.keymap.set("n", "<leader>ft", builtin.tags, { desc = "tags" })
	vim.keymap.set("n", "<leader>ft", builtin.colorscheme, { desc = "colorscheme" })
	vim.keymap.set("n", "<leader>fv", builtin.vim_options, { desc = "vim options" })
	vim.keymap.set("n", "<leader>f'", builtin.registers, { desc = "registers" })
	vim.keymap.set("n", "<leader>gb", builtin.git_branches, { desc = "branches" })
	vim.keymap.set("n", "<leader>gc", builtin.git_bcommits, { desc = "bcommits" })
	vim.keymap.set("n", "<leader>gC", builtin.git_commits, { desc = "commits" })
	vim.keymap.set("n", "<leader>gf", builtin.git_files, { desc = "files" })
	vim.keymap.set("n", "<leader>gt", builtin.git_status, { desc = "status" })
	vim.keymap.set("n", "<leader>gT", builtin.git_stash, { desc = "stash" })

	vim.keymap.set("n", "<leader>fd", function()
		require("telescope").extensions.file_browser.file_browser()
	end, { desc = "file browser" })

	vim.keymap.set("n", "<leader>fg", function()
		require("telescope").extensions.live_grep_args.live_grep_args()
	end, { desc = "live grep" })
end

function M.config()
	local telescope = require("telescope")

	local actions = require("telescope.actions")

	telescope.setup({
		defaults = {
			borderchars = { "─", "│", "─", "│", "┌", "┐", "┘", "└" },
			mappings = {
				i = {
					["<esc>"] = actions.close,
					["<C-h>"] = actions.which_key,
				},
			},
			file_ignore_patterns = { "^.git/", "^target/" },
			vimgrep_arguments = {
				"rg",
				"--color=never",
				"--no-heading",
				"--with-filename",
				"--line-number",
				"--column",
				"--hidden",
				"--smart-case",
				"--trim",
			},
			history = {
				path = vim.fn.stdpath("data") .. "/databases/telescope_history.sqlite3",
				limit = 100,
			},
			cache_picker = {
				num_pickers = 10,
			},
		},
		pickers = {
			find_files = {
				find_command = { "fd", "--type", "f", "--hidden", "--strip-cwd-prefix" },
			},
			live_grep = { theme = "ivy" },
			buffers = {
				show_all_buffers = true,
				sort_lastused = true,
			},
		},
		extensions = {
			live_grep_args = {
				theme = "ivy",
			},
		},
	})

	-- Extensions
	telescope.load_extension("fzf")
end

return M