This commit is contained in:
Harivansh Rathi 2026-03-20 16:39:49 -04:00
parent ac7a2c4811
commit e1550559e3
9 changed files with 132 additions and 68 deletions

View file

@ -1,74 +1,76 @@
---@param kind 'issue'|'pr'
---@param state 'all'|'open'|'closed'
local function gh_picker(kind, state)
if vim.fn.executable('gh') ~= 1 then
vim.notify('gh CLI not found', vim.log.levels.WARN)
return
end
local next_state = ({ all = 'open', open = 'closed', closed = 'all' })[state]
local label = kind == 'pr' and 'PRs' or 'Issues'
require('fzf-lua').fzf_exec(('gh %s list --limit 100 --state %s'):format(kind, state), {
prompt = ('%s (%s)> '):format(label, state),
header = ':: <c-o> to toggle all/open/closed',
actions = {
['default'] = function(selected)
local num = selected[1]:match('^#?(%d+)')
if num then
vim.system({ 'gh', kind, 'view', num, '--web' })
end
end,
['ctrl-o'] = function()
gh_picker(kind, next_state)
end,
},
})
if vim.fn.executable "gh" ~= 1 then
vim.notify("gh CLI not found", vim.log.levels.WARN)
return
end
local next_state = ({ all = "open", open = "closed", closed = "all" })[state]
local label = kind == "pr" and "PRs" or "Issues"
require("fzf-lua").fzf_exec(("gh %s list --limit 100 --state %s"):format(kind, state), {
prompt = ("%s (%s)> "):format(label, state),
header = ":: <c-o> to toggle all/open/closed",
actions = {
["default"] = function(selected)
local num = selected[1]:match "^#?(%d+)"
if num then vim.system { "gh", kind, "view", num, "--web" } end
end,
["ctrl-o"] = function() gh_picker(kind, next_state) end,
},
})
end
return {
'ibhagwan/fzf-lua',
dependencies = { 'nvim-tree/nvim-web-devicons' },
config = function(_, opts)
require('fzf-lua').setup(opts)
"ibhagwan/fzf-lua",
dependencies = { "nvim-tree/nvim-web-devicons" },
config = function(_, opts)
local fzf = require "fzf-lua"
fzf.setup(opts)
map('n', '<C-f>', function()
local fzf = require('fzf-lua')
local git_dir = vim.fn.system('git rev-parse --git-dir 2>/dev/null'):gsub('\n', '')
if vim.v.shell_error == 0 and git_dir ~= '' then
fzf.git_files()
else
fzf.files()
end
end)
map('n', '<leader>ff', '<cmd>FzfLua files<cr>')
map('n', '<leader>fg', '<cmd>FzfLua live_grep<cr>')
map('n', '<leader>fb', '<cmd>FzfLua buffers<cr>')
map('n', '<leader>fh', '<cmd>FzfLua help_tags<cr>')
map('n', '<leader>fr', '<cmd>FzfLua resume<cr>')
map('n', '<leader>fo', '<cmd>FzfLua oldfiles<cr>')
map('n', '<leader>fc', '<cmd>FzfLua commands<cr>')
map('n', '<leader>fk', '<cmd>FzfLua keymaps<cr>')
map('n', '<leader>f/', '<cmd>FzfLua search_history<cr>')
map('n', '<leader>f:', '<cmd>FzfLua command_history<cr>')
map('n', '<leader>fe', '<cmd>FzfLua files cwd=~/.config<cr>')
map('n', 'gq', '<cmd>FzfLua quickfix<cr>')
map('n', 'gl', '<cmd>FzfLua loclist<cr>')
map('n', '<leader>GB', '<cmd>FzfLua git_branches<cr>')
map('n', '<leader>Gc', '<cmd>FzfLua git_commits<cr>')
map('n', '<leader>Gs', '<cmd>FzfLua git_status<cr>')
map('n', '<leader>Gp', function() gh_picker('pr', 'open') end)
map('n', '<leader>Gi', function() gh_picker('issue', 'open') end)
end,
opts = {
'default-title',
winopts = {
border = 'single',
preview = {
layout = 'vertical',
vertical = 'down:50%',
},
},
fzf_opts = {
['--layout'] = 'reverse',
},
local ok, fzf_reload = pcall(require, "config.fzf_reload")
if ok then
fzf_reload.setup(opts)
fzf_reload.reload()
end
map("n", "<C-f>", function()
local git_dir = vim.fn.system("git rev-parse --git-dir 2>/dev/null"):gsub("\n", "")
if vim.v.shell_error == 0 and git_dir ~= "" then
fzf.git_files()
else
fzf.files()
end
end)
map("n", "<leader>ff", "<cmd>FzfLua files<cr>")
map("n", "<leader>fg", "<cmd>FzfLua live_grep<cr>")
map("n", "<leader>fb", "<cmd>FzfLua buffers<cr>")
map("n", "<leader>fh", "<cmd>FzfLua help_tags<cr>")
map("n", "<leader>fr", "<cmd>FzfLua resume<cr>")
map("n", "<leader>fo", "<cmd>FzfLua oldfiles<cr>")
map("n", "<leader>fc", "<cmd>FzfLua commands<cr>")
map("n", "<leader>fk", "<cmd>FzfLua keymaps<cr>")
map("n", "<leader>f/", "<cmd>FzfLua search_history<cr>")
map("n", "<leader>f:", "<cmd>FzfLua command_history<cr>")
map("n", "<leader>fe", "<cmd>FzfLua files cwd=~/.config<cr>")
map("n", "gq", "<cmd>FzfLua quickfix<cr>")
map("n", "gl", "<cmd>FzfLua loclist<cr>")
map("n", "<leader>GB", "<cmd>FzfLua git_branches<cr>")
map("n", "<leader>Gc", "<cmd>FzfLua git_commits<cr>")
map("n", "<leader>Gs", "<cmd>FzfLua git_status<cr>")
map("n", "<leader>Gp", function() gh_picker("pr", "open") end)
map("n", "<leader>Gi", function() gh_picker("issue", "open") end)
end,
opts = {
"default-title",
winopts = {
border = "single",
preview = {
layout = "vertical",
vertical = "down:50%",
},
},
fzf_opts = {
["--layout"] = "reverse",
},
},
}