4ef3bb4847de4d9d665b6eea74e1fc51a1d2d838

Author
Robby Russell <robby@planetargon.com>
Committer
Robby Russell <robby@planetargon.com>
Date

Message

Merge branch 'refactor-term' of https://github.com/nel/oh-my-zsh into nel-refactor-term

Diff

 1diff --git a/lib/functions.zsh b/lib/functions.zsh
 2index 914f2ef25a22d141cfd2e8c9c6255e535641274b..6f5d015f7a598739ddc3de8e5fbf451817a8e125 100644
 3--- a/lib/functions.zsh
 4+++ b/lib/functions.zsh
 5@@ -1,26 +1,3 @@
 6-## fixme, i duplicated this in xterms - oops
 7-function title {
 8-  if [[ $TERM == "screen" ]]; then
 9-    # Use these two for GNU Screen:
10-    print -nR $'\033k'$1$'\033'\\\
11-
12-    print -nR $'\033]0;'$2$'\a'
13-  elif [[ ($TERM =~ "^xterm") ]] || [[ ($TERM == "rxvt") ]]; then
14-    # Use this one instead for XTerms:
15-    print -nR $'\033]0;'$*$'\a'
16-  fi
17-}
18-
19-function precmd {
20-  title zsh "$PWD"
21-}
22-
23-function preexec {
24-  emulate -L zsh
25-  local -a cmd; cmd=(${(z)1})
26-  title $cmd[1]:t "$cmd[2,-1]"
27-}
28-
29 function zsh_stats() {
30   history | awk '{print $2}' | sort | uniq -c | sort -rn | head
31 }
32diff --git a/lib/termsupport.zsh b/lib/termsupport.zsh
33index fef9787486b1d2f5d06ae49958dc0dad73235ff0..e1e536690be580eb0c99a1df47ad5b3df9494073 100644
34--- a/lib/termsupport.zsh
35+++ b/lib/termsupport.zsh
36@@ -1,21 +1,26 @@
37-case "$TERM" in
38-  xterm*|rxvt*)
39-    preexec () {
40-      print -Pn "\e]0;%n@%m: $1\a"  # xterm
41-    }
42-    precmd () {
43-      print -Pn "\e]0;%n@%m: %~\a"  # xterm
44-    }
45-    ;;
46-  screen*)
47-    preexec () {
48-      local CMD=${1[(wr)^(*=*|sudo|ssh|-*)]}
49-      echo -ne "\ek$CMD\e\\"
50-      print -Pn "\e]0;%n@%m: $1\a"  # xterm
51-    }
52-    precmd () {
53-      echo -ne "\ekzsh\e\\"
54-      print -Pn "\e]0;%n@%m: %~\a"  # xterm
55-    }
56-    ;;
57-esac
58+#usage: title short_tab_title looooooooooooooooooooooggggggg_windows_title
59+#http://www.faqs.org/docs/Linux-mini/Xterm-Title.html#ss3.1
60+#Fully support screen, iterm, and probably most modern xterm and rxvt
61+#Limited support for Apple Terminal (Terminal can't set window or tab separately)
62+function title {
63+  if [[ "$TERM" == "screen" ]]; then 
64+    print -Pn "\ek$1\e\\" #set screen hardstatus, usually truncated at 20 chars
65+  elif [[ ($TERM =~ "^xterm") ]] || [[ ($TERM == "rxvt") ]] || [[ "$TERM_PROGRAM" == "iTerm.app" ]]; then
66+    print -Pn "\e]2;$2\a" #set window name
67+    print -Pn "\e]1;$1\a" #set icon (=tab) name (will override window name on broken terminal)
68+  fi
69+}
70+
71+ZSH_THEME_TERM_TAB_TITLE_IDLE="%15<..<%~%<<" #15 char left truncated PWD
72+ZSH_THEME_TERM_TITLE_IDLE="%n@%m: %~"
73+
74+#Appears when you have the prompt
75+function precmd {
76+  title $ZSH_THEME_TERM_TAB_TITLE_IDLE $ZSH_THEME_TERM_TITLE_IDLE
77+}
78+
79+#Appears at the beginning of (and during) of command execution
80+function preexec {
81+  local CMD=${1[(wr)^(*=*|sudo|ssh|-*)]} #cmd name only, or if this is sudo or ssh, the next cmd
82+  title "$CMD" "%100>...>$2%<<"
83+}