···140140---@param hunk_quad integer[]
141141---@param old_lines string[] The old lines of the file.
142142---@param new_lines string[] The new lines of the file.
143143+---@param compute_fine_diff boolean Whether to compute fine grained diffs within the hunk.
143144---@return Hunk
144144-local function _quad_to_hunk(hunk_quad, old_lines, new_lines)
145145+local function _quad_to_hunk(hunk_quad, old_lines, new_lines, compute_fine_diff)
145146 local minus_lines = util.slice(old_lines, hunk_quad[1], hunk_quad[2])
146147 local plus_lines = util.slice(new_lines, hunk_quad[3], hunk_quad[4])
147148 local diff_opts = vim.g.vcsigns_diff_opts
148148- local intra_diff =
149149- _compute_intra_hunk_diff(minus_lines, plus_lines, diff_opts)
149149+ local intra_diff = {}
150150+ if compute_fine_diff then
151151+ intra_diff =
152152+ _compute_intra_hunk_diff(minus_lines, plus_lines, diff_opts)
153153+ end
150154151155 return {
152156 minus_start = hunk_quad[1],
···162166---Compute the diff between two contents.
163167---@param old_contents string The old contents.
164168---@param new_contents string The new contents.
169169+---@param compute_fine_diff boolean Whether to compute fine grained diffs within the hunks.
165170---@return Hunk[] The computed hunks.
166166-function M.compute_diff(old_contents, new_contents)
171171+function M.compute_diff(old_contents, new_contents, compute_fine_diff)
167172 local diff_opts = vim.g.vcsigns_diff_opts
168173 local old_lines = vim.split(old_contents, "\n", { plain = true })
169174 local new_lines = vim.split(new_contents, "\n", { plain = true })
···171176 local hunk_quads = _vim_diff(old_lines, new_lines, diff_opts)
172177 local hunks = {}
173178 for _, quad in ipairs(hunk_quads) do
174174- table.insert(hunks, _quad_to_hunk(quad, old_lines, new_lines))
179179+ table.insert(
180180+ hunks,
181181+ _quad_to_hunk(quad, old_lines, new_lines, compute_fine_diff)
182182+ )
175183 end
176184 return hunks
177185end
+2-1
lua/vcsigns/updates.lua
···3737 old_contents = "\n"
3838 end
39394040- local hunks = diff.compute_diff(old_contents, new_contents)
4040+ local compute_fine_diff = vim.b[bufnr].vcsigns_show_hunk_diffs
4141+ local hunks = diff.compute_diff(old_contents, new_contents, compute_fine_diff)
4142 vim.b[bufnr].vcsigns_hunks = hunks
4243 sign.add_signs(bufnr, hunks)
4344