mirror of
https://github.com/ohmyzsh/ohmyzsh.git
synced 2026-02-13 03:01:32 +01:00
Terminal window and tab titles are correctly escaped. Also, files ending in ~ are gitignored
This commit is contained in:
parent
d485044169
commit
948f9b4441
2 changed files with 41 additions and 17 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -7,3 +7,4 @@ custom/*
|
|||
*.swp
|
||||
!custom/example.zshcache
|
||||
cache/
|
||||
*~
|
||||
|
|
|
|||
|
|
@ -3,33 +3,56 @@
|
|||
#Fully support screen, iterm, and probably most modern xterm and rxvt
|
||||
#Limited support for Apple Terminal (Terminal can't set window or tab separately)
|
||||
function title {
|
||||
if [[ "$DISABLE_AUTO_TITLE" == "true" ]] || [[ "$EMACS" == *term* ]]; then
|
||||
return
|
||||
fi
|
||||
if [[ "$TERM" == screen* ]]; then
|
||||
print -Pn "\ek$1:q\e\\" #set screen hardstatus, usually truncated at 20 chars
|
||||
elif [[ "$TERM" == xterm* ]] || [[ $TERM == rxvt* ]] || [[ $TERM == ansi ]] || [[ "$TERM_PROGRAM" == "iTerm.app" ]]; then
|
||||
print -Pn "\e]2;$2:q\a" #set window name
|
||||
print -Pn "\e]1;$1:q\a" #set icon (=tab) name (will override window name on broken terminal)
|
||||
fi
|
||||
if [[ "$DISABLE_AUTO_TITLE" == "true" ]] || [[ "$EMACS" == *term* ]]; then
|
||||
return
|
||||
fi
|
||||
if [[ "$TERM" == screen* ]]; then
|
||||
print -Pn "\ek$1:q\e\\" #set screen hardstatus, usually truncated at 20 chars
|
||||
elif [[ "$TERM" == xterm* ]] || [[ $TERM == rxvt* ]] || [[ $TERM == ansi ]] || [[ "$TERM_PROGRAM" == "iTerm.app" ]]; then
|
||||
# print -r "$2:q" 1>&2
|
||||
# print -r "$1:q" 1>&2
|
||||
print -Pn "\e]2;$2:q\a" #set window name
|
||||
print -Pn "\e]1;$1:q\a" #set icon (=tab) name (will override window name on broken terminal)
|
||||
fi
|
||||
}
|
||||
|
||||
ZSH_THEME_TERM_TAB_TITLE_IDLE="%15<..<%~%<<" #15 char left truncated PWD
|
||||
ZSH_THEME_TERM_TITLE_IDLE="%n@%m: %~"
|
||||
ZSH_THEME_TERM_TITLE_IDLE="%a@%m: %~"
|
||||
|
||||
#Appears when you have the prompt
|
||||
function omz_termsupport_precmd {
|
||||
title $ZSH_THEME_TERM_TAB_TITLE_IDLE $ZSH_THEME_TERM_TITLE_IDLE
|
||||
title $ZSH_THEME_TERM_TAB_TITLE_IDLE $ZSH_THEME_TERM_TITLE_IDLE
|
||||
}
|
||||
|
||||
#Appears at the beginning of (and during) of command execution
|
||||
function omz_termsupport_preexec {
|
||||
emulate -L zsh
|
||||
setopt extended_glob
|
||||
local CMD=${1[(wr)^(*=*|sudo|ssh|rake|-*)]} #cmd name only, or if this is sudo or ssh, the next cmd
|
||||
local LINE="${2:gs/$/\\$}"
|
||||
LINE="${LINE:gs/%/%%}"
|
||||
title "$CMD" "%100>...>$LINE%<<"
|
||||
emulate -L zsh
|
||||
setopt extended_glob
|
||||
local CMD=${1[(wr)^(*=*|sudo|ssh|rake|-*)]} #cmd name only, or if this is sudo or ssh, the next cmd
|
||||
CMD=${CMD:gs/\\/\\\\} # escapses \ -- must be first
|
||||
local LINE=${2:gs/\\/\\\\} # escapes \ -- must be first
|
||||
|
||||
if [[ -o PROMPT_BANG ]]; then
|
||||
# We must escape ! so that it is not interpreted as a history event number
|
||||
LINE=${LINE:gs/\!/\!\!}
|
||||
CMD=${CMD:gs/\!/\!\!}
|
||||
fi
|
||||
|
||||
if [[ -o PROMPT_SUBST ]]; then
|
||||
# We must escape $ and `, as both initiate command substitution and
|
||||
# the former also initiates arithmetic and parameter expansion
|
||||
CMD=${CMD:gs/$/\\$}
|
||||
CMD=${CMD:gs/\`/\\\`}
|
||||
LINE=${LINE:gs/$/\\$}
|
||||
LINE=${LINE:gs/\`/\\\`}
|
||||
fi
|
||||
|
||||
if [[ -o PROMPT_PERCENT ]]; then
|
||||
# We must escape % so that it is not interpreted as starting an escape sequence
|
||||
CMD=${CMD:gs/%/%%}
|
||||
LINE=${LINE:gs/%/%%}
|
||||
fi
|
||||
title "${CMD}" "%100>...>${LINE}%<<"
|
||||
}
|
||||
|
||||
autoload -U add-zsh-hook
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue