diff --git a/lua/jj_mini_diff/init.lua b/lua/jj_mini_diff/init.lua index 4f60094..cf5731b 100644 --- a/lua/jj_mini_diff/init.lua +++ b/lua/jj_mini_diff/init.lua @@ -80,6 +80,33 @@ local function _parse_diff_output(diff_output) return added_lines, changed_lines, deleted_lines end +-- Place signs in the current buffer +local function _place_signs_in_buffer() + local buf_nr = vim.api.nvim_get_current_buf() + vim.fn.sign_unplace("jj_mini_diff", { buffer = buf_nr }) -- Clear existing signs + + local diff_output = _get_jj_diff_for_buffer() + if not diff_output then + return + end + + local added, changed, deleted = _parse_diff_output(diff_output) + + local sign_id = 1 + for _, line_num in ipairs(added) do + vim.fn.sign_place(sign_id, "jj_mini_diff", "JjDiffAdd", buf_nr, { lnum = line_num }) + sign_id = sign_id + 1 + end + for _, line_num in ipairs(changed) do + vim.fn.sign_place(sign_id, "jj_mini_diff", "JjDiffChange", buf_nr, { lnum = line_num }) + sign_id = sign_id + 1 + end + for _, line_num in ipairs(deleted) do + vim.fn.sign_place(sign_id, "jj_mini_diff", "JjDiffDelete", buf_nr, { lnum = line_num }) + sign_id = sign_id + 1 + end +end + function M.setup(opts) opts = opts or {}