summaryrefslogtreecommitdiffstats
path: root/.config/nvim/plugin/50-dotfiles.lua
blob: fc48014cb85e12b7e0d44cb8f5994ce97eec149f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
--
-- dotfiles plugin
--

-- Returns true if the current buffer is part of the Dotfiles repository
local function detect_dotfiles_file()
	if vim.env.DOTFILES_DIR == nil then
		return false
	end
	local ret = vim.system(
		{ "git", "--git-dir=" .. vim.env.DOTFILES_DIR, "--work-tree=" .. vim.env.HOME, "ls-files" },
		{ text = true }
	):wait()
	local buf_file_name = string.sub(vim.api.nvim_buf_get_name(0), #vim.env.HOME + 2)
	for _, dotfiles_filename in ipairs(vim.split(ret.stdout, "\n", { trimempty = true })) do
		if dotfiles_filename == buf_file_name then
			return true
		end
	end
	return false
end

vim.api.nvim_create_autocmd("BufEnter", {
	desc = "Detect dotfiles file",
	group = vim.g.dotfiles.augroup,
	callback = function()
		vim.b.dotfiles_file = detect_dotfiles_file()
	end,
})

local function check_gitgutter()
	if vim.g.gitgutter_enabled == 1 then
		return true
	end
	vim.notify("GitGutter is not enabled!", vim.log.levels.WARN)
	return false
end

vim.api.nvim_create_user_command("DotfilesOn", function()
	if check_gitgutter() then
		vim.g.gitgutter_git_args = "--git-dir=" .. vim.env.DOTFILES_DIR .. " --work-tree=" .. vim.env.HOME
	end
end, { desc = "Activate dotfiles (set git env)" })

vim.api.nvim_create_user_command("DotfilesOff", function()
	if check_gitgutter() then
		vim.g.gitgutter_git_args = ""
	end
end, { desc = "Deactivate dotfiles (unset git env)" })