From 738e6e965da6a41733199a349d497f796eacd062 Mon Sep 17 00:00:00 2001
From: Daniel Hahler <github@thequod.de>
Date: Sun, 30 Apr 2017 14:14:25 +0200
Subject: [PATCH] AUTOENV_DEBUG=3 sets xtrace while sourcing; doc (#65)

---
 README.md   | 7 +++++++
 autoenv.zsh | 9 +++++++++
 2 files changed, 16 insertions(+)

diff --git a/README.md b/README.md
index dac04dc..e39ab7e 100644
--- a/README.md
+++ b/README.md
@@ -126,6 +126,13 @@ Default: 0
 ### AUTOENV\_DEBUG
 Enable debugging. Multiple levels are supported (max 2).
 
+- 0: no debug messages
+- 1: generic debug logging
+- 2: more verbose messages
+  - messages about adding/removing files on the internal stack
+- 3: everything
+  - sets xtrace option (`set -x`) while sourcing env files
+
 Default: `0`
 
 ## Recipes
diff --git a/autoenv.zsh b/autoenv.zsh
index e6cfc13..db059f2 100644
--- a/autoenv.zsh
+++ b/autoenv.zsh
@@ -303,7 +303,16 @@ _autoenv_source() {
   # Source the env file.
   _autoenv_debug "== SOURCE: ${bold_color:-}$autoenv_env_file${reset_color:-}\n      PWD: $PWD"
   : $(( _autoenv_debug_indent++ ))
+
+  local restore_xtrace
+  if [[ $AUTOENV_DEBUG -gt 2 && ! -o xtrace ]]; then
+    restore_xtrace=1
+    setopt localoptions xtrace
+  fi
   source $autoenv_env_file
+  if (( restore_xtrace )); then
+    setopt noxtrace
+  fi
   : $(( _autoenv_debug_indent-- ))
   _autoenv_debug "== END SOURCE =="
 
-- 
2.51.0