mirror of
				https://github.com/ohmyzsh/ohmyzsh.git
				synced 2024-05-11 05:55:17 +00:00 
			
		
		
		
	@@ -1,11 +1,39 @@
 | 
			
		||||
# 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
 | 
			
		||||
 | 
			
		||||
function chpwd {
 | 
			
		||||
  local SEARCH=' '
 | 
			
		||||
  local REPLACE='%20'
 | 
			
		||||
  local PWD_URL="file://$HOSTNAME${PWD//$SEARCH/$REPLACE}"
 | 
			
		||||
  printf '\e]7;%s\a' "$PWD_URL"
 | 
			
		||||
}
 | 
			
		||||
# 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.
 | 
			
		||||
 | 
			
		||||
chpwd
 | 
			
		||||
        # 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 chpwd update_terminal_cwd
 | 
			
		||||
 | 
			
		||||
    # Tell the terminal about the initial directory.
 | 
			
		||||
    update_terminal_cwd
 | 
			
		||||
fi
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user