diff --git a/lua/snacks/picker/config/sources.lua b/lua/snacks/picker/config/sources.lua index 0b6f2875..7165699e 100644 --- a/lua/snacks/picker/config/sources.lua +++ b/lua/snacks/picker/config/sources.lua @@ -335,6 +335,7 @@ M.git_status = { ---@class snacks.picker.git.diff.Config: snacks.picker.git.Config ---@field group? boolean group changes by file (when false, show individual hunks) +---@field staged? boolean show staged changes ---@field base? string base commit/branch/tag to diff against (default: HEAD) M.git_diff = { group = false, diff --git a/lua/snacks/picker/source/git.lua b/lua/snacks/picker/source/git.lua index 3561d880..79ba62bb 100644 --- a/lua/snacks/picker/source/git.lua +++ b/lua/snacks/picker/source/git.lua @@ -260,6 +260,9 @@ function M.diff(opts, ctx) if opts.base then vim.list_extend(args, { "--merge-base", opts.base }) end + if opts.staged then + table.insert(args, "--cached") + end return require("snacks.picker.source.diff").diff( ctx:opts({ cmd = "git",