@@ -11,6 +11,7 @@ local M = {}
1111
1212--- @class snacks.picker.diff.Block
1313--- @field type ?" new" | " delete" | " rename" | " copy" | " mode"
14+ --- @field unmerged ?boolean
1415--- @field file string
1516--- @field left ?string
1617--- @field right ?string
@@ -54,13 +55,15 @@ function M.diff(opts, ctx)
5455--- @param file string
5556--- @param line ? number
5657--- @param diff string[]
57- local function add (file ,line ,diff )
58+ --- @param block snacks.picker.diff.Block
59+ local function add (file ,line ,diff ,block )
5860line = line or 1
5961cb ({
6062text = file .. " :" .. line ,
6163diff = table.concat (diff ," \n " ),
6264file = file ,
6365cwd = cwd ,
66+ block = block ,
6467pos = {line ,0 },
6568 })
6669end
@@ -72,12 +75,12 @@ function M.diff(opts, ctx)
7275if opts .group then
7376vim .list_extend (diff ,h .diff )
7477else
75- add (block .file ,h .line ,vim .list_extend (vim .deepcopy (block .header ),h .diff ))
78+ add (block .file ,h .line ,vim .list_extend (vim .deepcopy (block .header ),h .diff ), block )
7679end
7780end
7881if opts .group or # block .hunks == 0 then
7982local line = block .hunks [1 ]and block .hunks [1 ].line or 1
80- add (block .file ,line ,vim .list_extend (vim .deepcopy (block .header ),diff ))
83+ add (block .file ,line ,vim .list_extend (vim .deepcopy (block .header ),diff ), block )
8184end
8285end
8386end
@@ -190,6 +193,7 @@ function M.parse(lines)
190193local line = 1
191194if text :find (" @@@" ,1 ,true )== 1 then
192195line = tonumber (text :match (" ^@@@ %-%d+,?%d* %-%d+,?%d* %+(%d+),?%d* @@@" ))or 1
196+ block .unmerged = true
193197else
194198line = tonumber (text :match (" ^@@ %-%d+,?%d* %+(%d+),?%d* @@" ))or 1
195199end