diff options
Diffstat (limited to '.config/nvim/plugin/50-dotfiles.lua')
| -rw-r--r-- | .config/nvim/plugin/50-dotfiles.lua | 36 |
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)" }) |
