diff --git a/lua/git/cmd.lua b/lua/git/cmd.lua index 556082b..9ca58d9 100644 --- a/lua/git/cmd.lua +++ b/lua/git/cmd.lua @@ -100,16 +100,7 @@ local function run_in_split(r, args, conf) end end vim.bo[buf].filetype = conf.ft - vim.bo[buf].modifiable = true - vim.api.nvim_buf_set_lines( - buf, - 0, - -1, - false, - util.split_lines(stdout) - ) - vim.bo[buf].modifiable = false - vim.bo[buf].modified = false + util.replace_buf_lines(buf, util.split_lines(stdout)) end, }) end diff --git a/lua/git/object.lua b/lua/git/object.lua index b7e5b35..1308849 100644 --- a/lua/git/object.lua +++ b/lua/git/object.lua @@ -199,11 +199,7 @@ local function populate(buf, r, rev, state, rev_sha) end end - local was_modifiable = vim.bo[buf].modifiable - vim.bo[buf].modifiable = true - vim.api.nvim_buf_set_lines(buf, 0, -1, false, util.split_lines(stdout)) - vim.bo[buf].modifiable = was_modifiable - vim.bo[buf].modified = false + util.replace_buf_lines(buf, 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 b8e24ed..81a7791 100644 --- a/lua/git/status_view.lua +++ b/lua/git/status_view.lua @@ -132,9 +132,7 @@ local function render(bufnr, status) end end - vim.bo[bufnr].modifiable = true - vim.api.nvim_buf_set_lines(bufnr, 0, -1, false, lines) - vim.bo[bufnr].modifiable = false + util.replace_buf_lines(bufnr, 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 129857e..d843f5a 100644 --- a/lua/git/util.lua +++ b/lua/git/util.lua @@ -80,6 +80,16 @@ function M.debug(fmt, ...) vim.notify(fmt:format(...), vim.log.levels.DEBUG) end +---@param buf integer +---@param lines string[] +function M.replace_buf_lines(buf, 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.bo[buf].modifiable = was_modifiable + vim.bo[buf].modified = false +end + ---@param content string ---@return string[] function M.split_lines(content)