diff options
author | Ramses Ladlani <ramses.ladlani@fishingcactus.com> | 2015-09-21 08:49:18 +0200 |
---|---|---|
committer | Ramses Ladlani <ramses.ladlani@fishingcactus.com> | 2015-09-21 08:49:18 +0200 |
commit | 7576f856b915e6e02c5990cd7e221d7b9efbe44a (patch) | |
tree | be3fe162edbc04946eea014a3612280d4909dc1e /lib/termsupport.zsh | |
parent | 6e0fcf803fe00445c97861360d1b0806d8cc56b8 (diff) | |
parent | 918d26e7dbcb907e673df24242c9688cd89019b9 (diff) | |
download | zsh-7576f856b915e6e02c5990cd7e221d7b9efbe44a.tar.gz zsh-7576f856b915e6e02c5990cd7e221d7b9efbe44a.tar.bz2 zsh-7576f856b915e6e02c5990cd7e221d7b9efbe44a.zip |
Merge remote-tracking branch 'robyrussel/master' into fix-atom_plugin_for_cygwin
Discarded all previous changes to atom plugin for easier review in next commit.
Diffstat (limited to 'lib/termsupport.zsh')
-rw-r--r-- | lib/termsupport.zsh | 37 |
1 files changed, 26 insertions, 11 deletions
diff --git a/lib/termsupport.zsh b/lib/termsupport.zsh index babbaa957..5f61fe8ef 100644 --- a/lib/termsupport.zsh +++ b/lib/termsupport.zsh @@ -33,6 +33,7 @@ fi # Runs before showing the prompt function omz_termsupport_precmd { + emulate -L zsh if [[ $DISABLE_AUTO_TITLE == true ]]; then return fi @@ -42,11 +43,11 @@ function omz_termsupport_precmd { # Runs before executing the command function omz_termsupport_preexec { + emulate -L zsh if [[ $DISABLE_AUTO_TITLE == true ]]; then return fi - emulate -L zsh setopt extended_glob # cmd name only, or if this is sudo or ssh, the next cmd @@ -60,14 +61,28 @@ 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 +# With extra fixes to handle multibyte chars and non-UTF-8 locales -precmd_functions+=(omz_termsupport_cwd) +if [[ "$TERM_PROGRAM" == "Apple_Terminal" ]] && [[ -z "$INSIDE_EMACS" ]]; then + + # Emits the control sequence to notify Terminal.app of the cwd + function update_terminalapp_cwd() { + emulate -L zsh + # 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=$(omz_urlencode -P $PWD) + [[ $? != 0 ]] && return 1 + local PWD_URL="file://$HOST$URL_PATH" + # Undocumented Terminal.app-specific control sequence + printf '\e]7;%s\a' $PWD_URL + } + + # 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 |