mirror of
https://github.com/LazyVim/starter.git
synced 2026-07-22 04:21:03 +00:00
42 lines
1.3 KiB
Lua
42 lines
1.3 KiB
Lua
local M = {}
|
|
|
|
M.close_terminal_buffer = function(new_tab)
|
|
local name = vim.api.nvim_buf_get_name(0)
|
|
|
|
if string.find(name, "term://") then
|
|
if not new_tab then
|
|
local number = vim.api.nvim_buf_get_number(0)
|
|
vim.api.nvim_exec("buffer #", true)
|
|
vim.api.nvim_buf_delete(number, { force = true })
|
|
return
|
|
end
|
|
|
|
vim.api.nvim_command("bdelete!")
|
|
end
|
|
end
|
|
|
|
function M.branch_files(opts)
|
|
opts = opts or {}
|
|
local include_deleted = opts.include_deleted or false
|
|
|
|
-- Get current branch; if empty, we're probably not in a git repo.
|
|
local current_branch = vim.fn.systemlist("git branch --show-current")[1]
|
|
if not current_branch or current_branch == "" then
|
|
print("Not inside a git repository!")
|
|
return
|
|
end
|
|
|
|
-- Check if master exists: if so, use origin/master, else origin/main.
|
|
vim.fn.system("git rev-parse --verify master > /dev/null 2>&1")
|
|
local base_branch = (vim.v.shell_error == 0) and "origin/master" or "origin/main"
|
|
|
|
-- If not including deleted files, filter them out.
|
|
local diff_filter = include_deleted and "" or "--diff-filter=d"
|
|
local git_cmd =
|
|
string.format("git diff --name-status %s %s...%s | awk '{print $2}'", diff_filter, base_branch, current_branch)
|
|
return vim.fn.systemlist(git_cmd)
|
|
end
|
|
|
|
M.branch_files()
|
|
|
|
return M
|