refactor(git): extract util.split_lines helper

This commit is contained in:
2026-04-27 13:39:23 +02:00
parent 50697cfe98
commit 4b8d551b0d
5 changed files with 27 additions and 33 deletions
+8 -11
View File
@@ -1,5 +1,6 @@
local log = require("log")
local repo = require("git.repo")
local util = require("util")
local M = {}
@@ -58,16 +59,6 @@ local function git_cmds()
return cached_cmds or {}
end
---@param content string
---@return string[]
local function split_lines(content)
local lines = vim.split(content, "\n", { plain = true, trimempty = false })
if #lines > 0 and lines[#lines] == "" then
table.remove(lines)
end
return lines
end
---@param args string[]
---@param start integer
---@return string?
@@ -116,7 +107,13 @@ local function run_in_split(worktree, args, conf)
end
local content = (obj.stdout or "") .. (obj.stderr or "")
vim.bo[buf].modifiable = true
vim.api.nvim_buf_set_lines(buf, 0, -1, false, split_lines(content))
vim.api.nvim_buf_set_lines(
buf,
0,
-1,
false,
util.split_lines(content)
)
vim.bo[buf].modifiable = false
vim.bo[buf].modified = false
if obj.code ~= 0 then
+2 -9
View File
@@ -1,5 +1,6 @@
local log = require("log")
local repo = require("git.repo")
local util = require("util")
local M = {}
@@ -70,15 +71,7 @@ local function read_show(worktree, revspec)
)
return {}
end
local lines = vim.split(
result.stdout or "",
"\n",
{ plain = true, trimempty = false }
)
if #lines > 0 and lines[#lines] == "" then
table.remove(lines)
end
return lines
return util.split_lines(result.stdout or "")
end
---@param worktree string
+2 -8
View File
@@ -1,5 +1,6 @@
local log = require("log")
local repo = require("git.repo")
local util = require("util")
local M = {}
@@ -30,14 +31,7 @@ function M.show()
return
end
local lines = vim.split(
result.stdout or "",
"\n",
{ plain = true, trimempty = false }
)
if #lines > 0 and lines[#lines] == "" then
table.remove(lines)
end
local lines = util.split_lines(result.stdout or "")
vim.cmd("new")
local buf = vim.api.nvim_get_current_buf()
+2 -5
View File
@@ -1,6 +1,7 @@
local diff = require("git.diff")
local log = require("log")
local repo = require("git.repo")
local util = require("util")
local M = {}
@@ -153,11 +154,7 @@ function M.open_commit(worktree, ref)
log.error("git show %s failed: %s", ref, result.stderr or "")
return
end
local content = result.stdout or ""
local lines = vim.split(content, "\n", { plain = true, trimempty = false })
if #lines > 0 and lines[#lines] == "" then
table.remove(lines)
end
local lines = util.split_lines(result.stdout or "")
local sha = repo.rev_parse(worktree, ref, true) or ref
local parent = repo.rev_parse(worktree, ref .. "^", true)
local buf = vim.api.nvim_create_buf(false, true)
+13
View File
@@ -428,4 +428,17 @@ function M.get_hl_source(name)
return hl
end
---Split a string on newlines, dropping the trailing empty element that an
---input ending in `\n` produces. Convenient for slicing subprocess stdout
---into a list of lines without a phantom blank at the end.
---@param content string
---@return string[]
function M.split_lines(content)
local lines = vim.split(content, "\n", { plain = true, trimempty = false })
if #lines > 0 and lines[#lines] == "" then
table.remove(lines)
end
return lines
end
return M