summaryrefslogtreecommitdiffstats
path: root/.config/nvim/plugin/50-dotfiles.lua
diff options
context:
space:
mode:
Diffstat (limited to '.config/nvim/plugin/50-dotfiles.lua')
-rw-r--r--.config/nvim/plugin/50-dotfiles.lua36
1 files changed, 36 insertions, 0 deletions
diff --git a/.config/nvim/plugin/50-dotfiles.lua b/.config/nvim/plugin/50-dotfiles.lua
new file mode 100644
index 0000000..122912c
--- /dev/null
+++ b/.config/nvim/plugin/50-dotfiles.lua
@@ -0,0 +1,36 @@
+--
+-- 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,
+})
+
+vim.api.nvim_create_user_command("DotfilesOn", function()
+ vim.g.gitgutter_git_args = "--git-dir=" .. vim.env.DOTFILES_DIR .. " --work-tree=" .. vim.env.HOME
+end, { desc = "Activate dotfiles (set git env)" })
+vim.api.nvim_create_user_command("DotfilesOff", function()
+ vim.g.gitgutter_git_args = ""
+end, { desc = "Deactivate dotfiles (unset git env)" })