From 86241f21930f363659b7f10a8f4888b2ec3afce1 Mon Sep 17 00:00:00 2001 From: themodrnhakr Date: Thu, 2 Oct 2025 16:12:00 -0500 Subject: [PATCH] Add function to place signs in buffer --- lua/jj_mini_diff/init.lua | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) 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 {}