From a9e97e5d2da90cf3e2b4575888fe585972ebcc74 Mon Sep 17 00:00:00 2001
From: Andrew Janke <janke@pobox.com>
Date: Sat, 14 Feb 2015 19:05:27 -0500
Subject: [PATCH] Remove terminalapp plugin and fold its implementation in to
 lib/termsupport.zsh. Replaces the redundant Terminal.app support that was
 recently added to termsupport.

---
 lib/termsupport.zsh                        | 43 +++++++++++++++++-----
 plugins/terminalapp/terminalapp.plugin.zsh | 39 --------------------
 2 files changed, 33 insertions(+), 49 deletions(-)
 delete mode 100644 plugins/terminalapp/terminalapp.plugin.zsh

diff --git a/lib/termsupport.zsh b/lib/termsupport.zsh
index e1c2e2f93..da74dfdba 100644
--- a/lib/termsupport.zsh
+++ b/lib/termsupport.zsh
@@ -53,14 +53,37 @@ precmd_functions+=(omz_termsupport_precmd)
 preexec_functions+=(omz_termsupport_preexec)
 
 
-# Runs before showing the prompt, to update the current directory in Terminal.app
-function omz_termsupport_cwd {
-  # Notify Terminal.app of current directory using undocumented OSC sequence
-  # found in OS X 10.9 and 10.10's /etc/bashrc
-  if [[ $TERM_PROGRAM == Apple_Terminal ]] && [[ -z $INSIDE_EMACS ]]; then
-    local PWD_URL="file://$HOSTNAME${PWD// /%20}"
-    printf '\e]7;%s\a' "$PWD_URL"
-  fi
-}
+# Keep Apple Terminal.app's current working directory updated
+# Based on this answer: http://superuser.com/a/315029
+
+if [[ "$TERM_PROGRAM" == "Apple_Terminal" ]] && [[ -z "$INSIDE_EMACS" ]]; then
+  # Emits the control sequence to notify Terminal.app of the cwd
+  function update_terminalapp_cwd() {
+        # Identify the directory using a "file:" scheme URL, including
+        # the host name to disambiguate local vs. remote paths.
+
+        # Percent-encode the pathname.
+        local URL_PATH=''
+        {
+            # Use LANG=C to process text byte-by-byte.
+            local i ch hexch LANG=C
+            for ((i = 1; i <= ${#PWD}; ++i)); do
+                ch="$PWD[i]"
+                if [[ "$ch" =~ [/._~A-Za-z0-9-] ]]; then
+                    URL_PATH+="$ch"
+                else
+                    hexch=$(printf "%02X" "'$ch")
+                    URL_PATH+="%$hexch"
+                fi
+            done
+        }
+
+        local PWD_URL="file://$HOST$URL_PATH"
+        printf '\e]7;%s\a' "$PWD_URL"
+    }
 
-precmd_functions+=(omz_termsupport_cwd)
+    # Use a precmd hook instead of a chpwd hook to avoid contaminating output
+    precmd_functions+=(update_terminalapp_cwd)
+    # Run once to get initial cwd set
+    update_terminalapp_cwd
+fi
diff --git a/plugins/terminalapp/terminalapp.plugin.zsh b/plugins/terminalapp/terminalapp.plugin.zsh
deleted file mode 100644
index 6e47ee188..000000000
--- a/plugins/terminalapp/terminalapp.plugin.zsh
+++ /dev/null
@@ -1,39 +0,0 @@
-# Set Apple Terminal.app resume directory
-# based on this answer: http://superuser.com/a/315029
-# 2012-10-26: (javageek) Changed code using the updated answer
-
-# Tell the terminal about the working directory whenever it changes.
-if [[ "$TERM_PROGRAM" == "Apple_Terminal" ]] && [[ -z "$INSIDE_EMACS" ]]; then
-  update_terminal_cwd() {
-        # Identify the directory using a "file:" scheme URL, including
-        # the host name to disambiguate local vs. remote paths.
-
-        # Percent-encode the pathname.
-        local URL_PATH=''
-        {
-            # Use LANG=C to process text byte-by-byte.
-            local i ch hexch LANG=C
-            for ((i = 1; i <= ${#PWD}; ++i)); do
-                ch="$PWD[i]"
-                if [[ "$ch" =~ [/._~A-Za-z0-9-] ]]; then
-                    URL_PATH+="$ch"
-                else
-                    hexch=$(printf "%02X" "'$ch")
-                    URL_PATH+="%$hexch"
-                fi
-            done
-        }
-
-        local PWD_URL="file://$HOST$URL_PATH"
-        #echo "$PWD_URL"        # testing
-        printf '\e]7;%s\a' "$PWD_URL"
-    }
-
-    # Register the function so it is called whenever the working
-    # directory changes.
-    autoload add-zsh-hook
-    add-zsh-hook precmd update_terminal_cwd
-
-    # Tell the terminal about the initial directory.
-    update_terminal_cwd
-fi
-- 
2.21.0