summary refs log tree commit diff
path: root/.vim/lua/plugins/_telescope.lua
diff options
context:
space:
mode:
Diffstat (limited to '.vim/lua/plugins/_telescope.lua')
-rw-r--r--.vim/lua/plugins/_telescope.lua99
1 files changed, 99 insertions, 0 deletions
diff --git a/.vim/lua/plugins/_telescope.lua b/.vim/lua/plugins/_telescope.lua
new file mode 100644
index 0000000..d4f9b89
--- /dev/null
+++ b/.vim/lua/plugins/_telescope.lua
@@ -0,0 +1,99 @@
+-- telescope.nvim et al config
+
+local u = require('utils')
+
+local M = {}
+
+-- TELESCOPE config -- {{{
+require('telescope').setup{
+	defaults = {
+		-- vimgrep_arguments = {
+      -- 'rg',
+      -- '--color=never',
+      -- '--no-heading',
+      -- '--with-filename',
+      -- '--line-number',
+      -- '--column',
+      -- '--smart-case'
+    -- },
+
+		prompt_prefix = ' >',
+		borderchars = {'─', '│', '─', '│', '┌', '┐', '┘', '└'},
+		winblend = 0,
+		preview_cutoff = 120,
+
+		layout_strategy = 'flex',
+		
+		file_previewer   = require('telescope.previewers').vim_buffer_cat_new,
+		grep_previewer   = require('telescope.previewers').vim_buffer_vimgrep_new,
+		qflist_previewer = require('telescope.previewers').vim_buffer_qflist_new,
+
+		extensions = {
+			fzf_writer = {
+				use_highlighter = true,
+				minimum_grep_characters = 4,
+				shorten_path = true,
+			}
+		}
+	}
+}
+-- }}}
+
+-- LOCAL finders -- {{{
+M.wrap = function(opts)
+	opts = opts or {}
+	my_opts = require('telescope.themes').get_dropdown({ width = 110 })
+	return vim.tbl_deep_extend("force", my_opts, opts)
+end
+
+M.live_grep = function()
+	require('telescope').extensions.fzf_writer.staged_grep(M.wrap())
+end
+
+M.repo_search = function()
+	require('telescope').extensions.fzf_writer.files(M.wrap({
+		previewer = false,
+		cwd = require('lspconfig.util').root_pattern('.git')(vim.fn.expand('%:p')),
+	}))
+end
+
+M.wiki = function()
+	require('telescope').extensions.fzf_writer.files(M.wrap({
+		previewer = false,
+		cwd = '~/wiki/',
+	}))
+end
+
+M.devel = function()
+	require('telescope').extensions.fzf_writer.files(M.wrap({
+		previewer = false,
+		cwd = '~/devel/',
+	}))
+end
+-- }}}
+
+-- MAPPINGS -- {{{
+
+u.map('n', ';g', "<cmd>lua require('plugins._telescope').live_grep()<cr>")
+u.map('n', ';r', "<cmd>lua require('plugins._telescope').repo_search()<cr>")
+-- u.map('n', ';w', "<cmd>lua require('plugins._telescope').wiki()<cr>")
+u.map('n', ';d', "<cmd>lua require('plugins._telescope').devel()<cr>")
+
+local mapbuiltin = function(key, fn, previewer)
+	opts = (not previewer and '{ previewer = false }') or '{}'
+	u.map('n', key, "<cmd>lua require('telescope.builtin')."..fn.."(require('plugins._telescope').wrap("..opts.."))<cr>")
+end
+
+mapbuiltin(';f', 'fd', true)
+mapbuiltin(';q', 'quickfix')
+mapbuiltin(';l', 'loclist')
+mapbuiltin(';b', 'buffers')
+mapbuiltin(';t', 'tags')
+mapbuiltin(';lr', 'lsp_references')
+mapbuiltin(';la', 'lsp_code_actions')
+mapbuiltin(';lw', 'lsp_workspace_symbols')
+mapbuiltin(';c', 'command_history')
+
+-- }}}
+
+return M