mirror of
https://github.com/zoriya/jj.nvim.git
synced 2026-08-15 23:53:18 +00:00
feat(picker): Add a snacks picker with jj status command
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
local utils = require("jj.utils")
|
||||
|
||||
--- @class jj.picker.snacks
|
||||
local M = {}
|
||||
|
||||
--- Displays the status files in a snacks picker
|
||||
---@param opts jj.picker.config
|
||||
---@param files jj.picker.file[]
|
||||
function M.status(opts, files)
|
||||
if not opts.snacks then
|
||||
return utils.notify("Snacks picker is `disabled`", vim.log.levels.INFO)
|
||||
end
|
||||
|
||||
local snacks = require("snacks")
|
||||
|
||||
local snacks_opts
|
||||
-- If its true we default to an empty table
|
||||
if opts.snacks == true then
|
||||
snacks_opts = {}
|
||||
else
|
||||
--- Otherwise we get the table from the config
|
||||
---@type table
|
||||
snacks_opts = opts.snacks
|
||||
end
|
||||
|
||||
local merged_opts = vim.tbl_deep_extend("force", snacks_opts, {
|
||||
source = "jj",
|
||||
items = files,
|
||||
title = "JJ Status",
|
||||
preview = function(ctx)
|
||||
if ctx.item.file then
|
||||
snacks.picker.preview.cmd(ctx.item.diff_cmd, ctx, {})
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
||||
snacks.picker.pick(merged_opts)
|
||||
end
|
||||
|
||||
return M
|
||||
Reference in New Issue
Block a user