Skip to content

Commit

Permalink
feat(sources): added telescope source
Browse files Browse the repository at this point in the history
  • Loading branch information
folke committed Mar 27, 2024
1 parent 0232eb8 commit 9d42d24
Show file tree
Hide file tree
Showing 8 changed files with 83 additions and 486 deletions.
59 changes: 0 additions & 59 deletions lua/trouble/providers/diagnostic.lua

This file was deleted.

94 changes: 0 additions & 94 deletions lua/trouble/providers/init.lua

This file was deleted.

93 changes: 0 additions & 93 deletions lua/trouble/providers/lsp.lua

This file was deleted.

47 changes: 0 additions & 47 deletions lua/trouble/providers/qf.lua

This file was deleted.

91 changes: 6 additions & 85 deletions lua/trouble/providers/telescope.lua
Original file line number Diff line number Diff line change
@@ -1,86 +1,7 @@
local Util = require("trouble.util")
local T = require("trouble.sources.telescope")

local M = {}

M.results = {}

--- Turns a Telescope item into a Trouble item.
local function item_to_result(item)
local row = (item.lnum or 1) - 1
local col = (item.col or 1) - 1

if not item.bufnr then
local fname = vim.fn.fnamemodify(item.filename, ":p")
if vim.fn.filereadable(fname) == 0 and item.cwd then
fname = vim.fn.fnamemodify(item.cwd .. "/" .. item.filename, ":p")
end
item.bufnr = vim.fn.bufnr(fname, true)
end

local pitem = {
row = row,
col = col,
message = item.text,
severity = 0,
range = {
start = { line = row, character = col },
["end"] = { line = row, character = -1 },
},
}

return Util.process_item(pitem, item.bufnr)
end

--- Shows all Telescope results in Trouble.
function M.open_with_trouble(prompt_bufnr, _mode)
local action_state = require("telescope.actions.state")
local actions = require("telescope.actions")
local picker = action_state.get_current_picker(prompt_bufnr)
local manager = picker.manager

M.results = {}
for item in manager:iter() do
table.insert(M.results, item_to_result(item))
end

actions.close(prompt_bufnr)
require("trouble").open("telescope")
end

--- Shows the selected Telescope results in Trouble.
function M.open_selected_with_trouble(prompt_bufnr, _mode)
local action_state = require("telescope.actions.state")
local actions = require("telescope.actions")
local picker = action_state.get_current_picker(prompt_bufnr)

M.results = {}
for _, item in ipairs(picker:get_multi_selection()) do
table.insert(M.results, item_to_result(item))
end

actions.close(prompt_bufnr)
require("trouble").open("telescope")
end

--- Shows the selected Telescope results in Trouble.
--- If no results are currently selected, shows all of them.
function M.smart_open_with_trouble(prompt_bufnr, _mode)
local action_state = require("telescope.actions.state")
local picker = action_state.get_current_picker(prompt_bufnr)
if #picker:get_multi_selection() > 0 then
M.open_selected_with_trouble(prompt_bufnr, _mode)
else
M.open_with_trouble(prompt_bufnr, _mode)
end
end

function M.telescope(_win, _buf, cb, _options)
if #M.results == 0 then
Util.warn(
"No Telescope results found. Open Telescope and send results to Trouble first. Refer to the documentation for more info."
)
end
cb(M.results)
end

return M
return {
open_with_trouble = T.open,
open_selected_with_trouble = T.open,
smart_open_with_trouble = T.open,
}

0 comments on commit 9d42d24

Please sign in to comment.