From 6fdd4555361b794c7dee73978b473df2d6dd0a6d Mon Sep 17 00:00:00 2001 From: Oscar Wallberg Date: Wed, 6 May 2026 15:43:03 +0200 Subject: [PATCH] refactor(git): generalize buf_set_lines wrapper --- lua/git/cmd.lua | 2 +- lua/git/log_view.lua | 6 ++---- lua/git/object.lua | 2 +- lua/git/status_view.lua | 2 +- lua/git/util.lua | 7 +++++-- 5 files changed, 10 insertions(+), 9 deletions(-) diff --git a/lua/git/cmd.lua b/lua/git/cmd.lua index 9ca58d9..8c2cd0d 100644 --- a/lua/git/cmd.lua +++ b/lua/git/cmd.lua @@ -100,7 +100,7 @@ local function run_in_split(r, args, conf) end end vim.bo[buf].filetype = conf.ft - util.replace_buf_lines(buf, util.split_lines(stdout)) + util.buf_set_lines(buf, 0, -1, false, util.split_lines(stdout)) end, }) end diff --git a/lua/git/log_view.lua b/lua/git/log_view.lua index f813e4f..ea086fb 100644 --- a/lua/git/log_view.lua +++ b/lua/git/log_view.lua @@ -73,11 +73,10 @@ local function populate(buf, r) if #hunks == 0 then return end - vim.bo[buf].modifiable = true for i = #hunks, 1, -1 do local sa, ca, sb, cb = unpack(hunks[i]) local start = ca == 0 and sa or sa - 1 - vim.api.nvim_buf_set_lines( + util.buf_set_lines( buf, start, start + ca, @@ -85,8 +84,6 @@ local function populate(buf, r) vim.list_slice(new_lines, sb, sb + cb - 1) ) end - vim.bo[buf].modifiable = false - vim.bo[buf].modified = false end ---@param buf integer @@ -105,6 +102,7 @@ function M.read_uri(buf) vim.bo[buf].swapfile = false vim.bo[buf].bufhidden = "hide" vim.bo[buf].buftype = "nofile" + vim.bo[buf].modifiable = false if vim.bo[buf].filetype ~= "gitlog" then vim.bo[buf].filetype = "gitlog" end diff --git a/lua/git/object.lua b/lua/git/object.lua index b85b006..0f4f2ea 100644 --- a/lua/git/object.lua +++ b/lua/git/object.lua @@ -199,7 +199,7 @@ local function populate(buf, r, rev, state, rev_sha) end end - util.replace_buf_lines(buf, util.split_lines(stdout)) + util.buf_set_lines(buf, 0, -1, false, util.split_lines(stdout)) state.sha = rev_sha return true end diff --git a/lua/git/status_view.lua b/lua/git/status_view.lua index 81a7791..e838a09 100644 --- a/lua/git/status_view.lua +++ b/lua/git/status_view.lua @@ -132,7 +132,7 @@ local function render(bufnr, status) end end - util.replace_buf_lines(bufnr, lines) + util.buf_set_lines(bufnr, 0, -1, false, lines) vim.api.nvim_buf_clear_namespace(bufnr, ns, 0, -1) for _, m in ipairs(marks) do vim.api.nvim_buf_set_extmark(bufnr, ns, m.row, m.col, { diff --git a/lua/git/util.lua b/lua/git/util.lua index d843f5a..00af2a0 100644 --- a/lua/git/util.lua +++ b/lua/git/util.lua @@ -81,11 +81,14 @@ function M.debug(fmt, ...) end ---@param buf integer +---@param start integer +---@param end_ integer +---@param strict_indexing boolean ---@param lines string[] -function M.replace_buf_lines(buf, lines) +function M.buf_set_lines(buf, start, end_, strict_indexing, lines) local was_modifiable = vim.bo[buf].modifiable vim.bo[buf].modifiable = true - vim.api.nvim_buf_set_lines(buf, 0, -1, false, lines) + vim.api.nvim_buf_set_lines(buf, start, end_, strict_indexing, lines) vim.bo[buf].modifiable = was_modifiable vim.bo[buf].modified = false end