summaryrefslogtreecommitdiff
path: root/lua/telescope/builtin.lua
diff options
context:
space:
mode:
authorTJ DeVries <devries.timothyj@gmail.com>2020-08-31 16:44:47 -0400
committerTJ DeVries <devries.timothyj@gmail.com>2020-08-31 17:32:31 -0400
commite38589f265a276d431113efcef6fdb157120ce68 (patch)
treebd3203a976f3e349875184f03d3199d79fb7303f /lua/telescope/builtin.lua
parent0af8a911b4b5d3eefa6518a804ddadefefd65e19 (diff)
feat: Combine configuration into picker.new()
Diffstat (limited to 'lua/telescope/builtin.lua')
-rw-r--r--lua/telescope/builtin.lua196
1 files changed, 43 insertions, 153 deletions
diff --git a/lua/telescope/builtin.lua b/lua/telescope/builtin.lua
index cd7e4ab..43e57fc 100644
--- a/lua/telescope/builtin.lua
+++ b/lua/telescope/builtin.lua
@@ -8,50 +8,20 @@ local finders = require('telescope.finders')
local previewers = require('telescope.previewers')
local pickers = require('telescope.pickers')
local sorters = require('telescope.sorters')
+local utils = require('telescope.utils')
local builtin = {}
-local ifnil = function(x, was_nil, was_not_nil) if x == nil then return was_nil else return was_not_nil end end
-
builtin.git_files = function(opts)
- opts = opts or {}
-
- local show_preview = ifnil(opts.show_preview, true, opts.show_preview)
-
- local file_finder = finders.new {
- static = true,
-
- fn_command = function(self)
- return {
- command = 'git',
- args = {'ls-files'}
- }
- end,
- }
-
- local file_previewer = previewers.cat
-
- local file_picker = pickers.new {
- previewer = show_preview and file_previewer,
-
- selection_strategy = opts.selection_strategy,
- }
-
- -- local file_sorter = telescope.sorters.get_ngram_sorter()
- -- local file_sorter = require('telescope.sorters').get_levenshtein_sorter()
- local file_sorter = sorters.get_norcalli_sorter()
-
- file_picker:find {
- prompt = 'Simple File',
- finder = file_finder,
- sorter = file_sorter,
-
- border = opts.border,
- borderchars = opts.borderchars,
- }
+ pickers.new(opts, {
+ prompt = 'Git File',
+ finder = finders.new_oneshot_job({ "git", "ls-files" }),
+ previewer = previewers.cat,
+ sorter = sorters.get_norcalli_sorter(),
+ }):find()
end
-builtin.live_grep = function()
+builtin.live_grep = function(opts)
local live_grepper = finders.new {
maximum_results = 1000,
@@ -68,15 +38,13 @@ builtin.live_grep = function()
end
}
- local file_previewer = previewers.vimgrep
- local file_picker = pickers.new {
- previewer = file_previewer
- }
-
- -- local file_sorter = telescope.sorters.get_ngram_sorter()
- -- local file_sorter = require('telescope.sorters').get_levenshtein_sorter()
- -- local file_sorter = sorters.get_norcalli_sorter()
+ pickers.new(opts, {
+ prompt = 'Live Grep',
+ finder = live_grepper,
+ previewer = previewers.vimgrep,
+ }):find()
+ -- TODO: Incorporate this.
-- Weight the results somehow to be more likely to be the ones that you've opened.
-- local old_files = {}
-- for _, f in ipairs(vim.v.oldfiles) do
@@ -102,15 +70,9 @@ builtin.live_grep = function()
-- end
-- end
-- }
-
- file_picker:find {
- prompt = 'Live Grep',
- finder = live_grepper,
- sorter = oldfiles_sorter,
- }
end
-builtin.lsp_references = function()
+builtin.lsp_references = function(opts)
local params = vim.lsp.util.make_position_params()
params.context = { includeDeclaration = true }
@@ -120,87 +82,34 @@ builtin.lsp_references = function()
vim.list_extend(locations, vim.lsp.util.locations_to_items(server_results.result) or {})
end
- local results = {}
- for _, entry in ipairs(locations) do
- local vimgrep_str = string.format(
- "%s:%s:%s: %s",
- vim.fn.fnamemodify(entry.filename, ":."),
- entry.lnum,
- entry.col,
- entry.text
- )
-
- table.insert(results, {
- valid = true,
- value = entry,
- ordinal = vimgrep_str,
- display = vimgrep_str,
- })
- end
+ local results = utils.quickfix_items_to_entries(locations)
if vim.tbl_isempty(results) then
return
end
- local lsp_reference_finder = finders.new {
- results = results
- }
-
- local reference_previewer = previewers.qflist
- local reference_picker = pickers.new {
- previewer = reference_previewer
- }
-
- reference_picker:find {
- prompt = 'LSP References',
- finder = lsp_reference_finder,
- sorter = sorters.get_norcalli_sorter(),
- }
+ local reference_picker = pickers.new(opts, {
+ prompt = 'LSP References',
+ finder = finders.new_table(results),
+ previewer = previewers.qflist,
+ sorter = sorters.get_norcalli_sorter(),
+ }):find()
end
-builtin.quickfix = function()
+builtin.quickfix = function(opts)
local locations = vim.fn.getqflist()
-
- local results = {}
- for _, entry in ipairs(locations) do
- if not entry.filename then
- entry.filename = vim.api.nvim_buf_get_name(entry.bufnr)
- end
-
- local vimgrep_str = string.format(
- "%s:%s:%s: %s",
- vim.fn.fnamemodify(entry.filename, ":."),
- entry.lnum,
- entry.col,
- entry.text
- )
-
- table.insert(results, {
- valid = true,
- value = entry,
- ordinal = vimgrep_str,
- display = vimgrep_str,
- })
- end
+ local results = utils.quickfix_items_to_entries(locations)
if vim.tbl_isempty(results) then
return
end
- local quickfix_finder = finders.new {
- results = results
- }
-
- local quickfix_previewer = previewers.qflist
- local quickfix_picker = pickers.new {
- previewer = quickfix_previewer
- }
-
- quickfix_picker:find {
- prompt = 'Quickfix',
- finder = quickfix_finder,
- sorter = sorters.get_norcalli_sorter(),
- }
+ pickers.new(opts, {
+ prompt = 'Quickfix',
+ finder = finders.new_table(results),
+ previewer = previewers.qflist,
+ sorter = sorters.get_norcalli_sorter(),
+ }):find()
end
builtin.grep_string = function(opts)
@@ -208,42 +117,23 @@ builtin.grep_string = function(opts)
local search = opts.search or vim.fn.expand("<cword>")
- local grepper = finders.new {
- maximum_results = 10000,
-
- -- TODO: We can optimize these.
- -- static = true,
-
- fn_command = function()
- return {
- command = 'rg',
- args = {"--vimgrep", search},
- }
- end
- }
-
- local file_picker = pickers.new {
- previewer = previewers.vimgrep
- }
-
- file_picker:find {
- prompt = 'Live Grep',
- finder = grepper,
+ local file_picker = pickers.new(opts, {
+ prompt = 'Find Word',
+ finder = finders.new_oneshot_job {'rg', '--vimgrep', search},
+ previewer = previewers.vimgrep,
sorter = sorters.get_norcalli_sorter(),
- }
+ }):find()
end
-builtin.oldfiles = function()
- local oldfiles_finder = finders.new {
- results = vim.v.oldfiles
- }
- local file_picker = pickers.new{}
-
- file_picker:find {
+builtin.oldfiles = function(opts)
+ pickers.new(opts, {
prompt = 'Oldfiles',
- finder = oldfiles_finder,
- sorter = sorters.get_norcalli_sorter()
- }
+ finder = finders.new_table(vim.tbl_filter(function(val)
+ return 0 ~= vim.fn.filereadable(val)
+ end, vim.v.oldfiles)),
+ sorter = sorters.get_norcalli_sorter(),
+ previewer = previewers.cat,
+ }):find()
end
return builtin