---------------------------------------------------------------------------- -- lua/gitea/telescope.lua -- -- Minimal telescope integration for listing issues ---------------------------------------------------------------------------- local M = {} local pickers = require("telescope.pickers") local finders = require("telescope.finders") local conf = require("telescope.config").values local actions = require("telescope.actions") local action_state = require("telescope.actions.state") local issues_mod = require("gitea.issues") local function open_selected_issue(prompt_bufnr) local selection = action_state.get_selected_entry() actions.close(prompt_bufnr) if not selection then return end local issue_obj = selection.value local number = issue_obj.number issues_mod.open_issue(nil, nil, number) end function M.list_issues_in_telescope() issues_mod.list_issues(nil, nil, function(data) pickers.new({}, { prompt_title = "Gitea Issues", finder = finders.new_table { results = data, entry_maker = function(issue) return { value = issue, display = ("#%d: %s"):format(issue.number, issue.title or ""), ordinal = ("%d %s"):format(issue.number, (issue.title or "")) } end }, sorter = conf.generic_sorter({}), attach_mappings = function(prompt_bufnr, map) map("i", "", open_selected_issue) map("n", "", open_selected_issue) return true end }):find() end) end return M