domas /.zshrc

ZDOTDIR=~/.zsh
zstyle :compinstall filename $ZDOTDIR/.zshrc
autoload -U compinit
compinit -d $ZDOTDIR/.zcompdump
HISTFILE=~/.histfile
LISTMAX=200
HISTSIZE=2000
SAVEHIST=2000
export TMPPREFIX=$ZDOTDIR/tmp
export HISTFILE=$ZDOTDIR/zsh_history
[ -d "$ZDOTDIR" ] || {
	echo "Creating .zsh dir in '$ZDOTDIR'";
	mkdir "$ZDOTDIR"
}

[ -d "$TMPPREFIX" ] || {
	echo "Creating tmp dir in '$TMPPREFIX'";
	mkdir "$TMPPREFIX"
}

#PROXY
#if [ `hostname` = "underground" ]; then
#	export HTTP_PROXY=http://localhost:xxxx
#else
#	export HTTP_PROXY=http://proxy.lan:xxxx
#fi
#export FTP_PROXY=$HTTP_PROXY
#export http_proxy=$HTTP_PROXY
#export ftp_proxy=$HTTP_PROXY
#PROXY

setopt AlwaysLastPrompt # try to return to the last prompt if given no numeric argument.
setopt AppendHistory    # zsh sessions will append their history  list  to the  history file, rather than overwrite it.
setopt AutoMenu                 # Automatically  use  menu completion after the second consecutive request for completion.
setopt Beep                     # Beep on error in ZLE.
setopt NoHup                    # NO send the HUP signal to running jobs when the shell exits.
setopt Equals                   # Perform = filename expansion.
setopt ExtendedHistory  # Save  each  command's  beginning timestamp
setopt FunctionArgzero  # When  executing  a  shell  function or sourcing a script, set $0 temporarily to the name of the function/script.
setopt HistBeep                 # Beep when an attempt is made to access  a  history  entry  which isn't there.
setopt HistIgnoreDups   # Do not enter command lines into the history  list  if  they  are duplicates of the previous event.
setopt HistIgnoreSpace  # Remove  command lines from the history list when the first character on the line is a  space.
setopt LongListJobs     # List jobs in the long format by default.
setopt ListTypes                # When  listing files that are possible completions, show the type of each file with a trailing identifying mark.
setopt MailWarning              # Print a warning message if a mail file has been  accessed  since the shell last checked.
setopt MultIOs                  # Perform implicit tees or cats  when  multiple  redirections  are attempted
setopt PrintEightBit    # Print eight bit characters literally in completion  lists
setopt RmStarSilent     # Do not query the user before executing `rm *' or `rm path/*'.
setopt ShortLoops               # Allow the short forms of for,  select,  if,  and  function  constructs.

COMM_PATH="/usr/local/mysql/bin:/usr/local/pgsql/bin"
COMM_MAN="/usr/local/pgsql/man:/usr/local/mysql/man"

export PATH="/usr/xpg6/bin:/usr/xpg4/bin:/usr/ucb:/bin:/sbin:/usr/bin:/usr/sbin:/usr/sfw/bin:/usr/sfw/sbin:/usr/local/bin:/usr/local/sbin:/usr/sfw/i386-sun-solaris2.10/bin:/opt/SUNWspro/bin:/usr/ccs/bin"
#Systems specials
host_os=`uname|tr '[:upper:]' '[:lower:]'`
case $host_os in
	linux)
		unsetopt HIST_SAVE_BY_COPY 
		alias ls="ls -F --color=auto"
		export PATH="$COMM_PATH:/usr/local/bin:/sbin:/usr/sbin:/usr/local/sbin:/usr/bin:/bin"
		export MANPATH="$COMM_MAN:/usr/share/man:/usr/share/openssl/man:/usr/local/man"
		#[ `grep -V | grep 'GNU.*grep' | sed 's/[^0-9\.]//g' | perl -e "if ( -2.5 >= 0 ) { print \"yes\n\"; } else { print \"no\n\";}"` = "yes" ] && export GREP_OPTIONS='--color=auto'
                [ "`grep --help 2>&1|grep -- '--color'`" ] && export GREP_OPTIONS='--color=auto'
		eval `dircolors`
                export LANG=ru_RU.UTF-8
	;;
	freebsd|dragonfly) 
		export PATH="$COMM_PATH:/usr/local/bin:/sbin:/usr/sbin:/usr/local/sbin:/usr/bin:/bin"
		export MANPATH="$COMM_MAN:/usr/share/man:/usr/share/openssl/man:/usr/local/man"
		#[ `grep -V | grep 'GNU.*grep' | sed 's/[^0-9\.]//g' | perl -e "if ( -2.5 >= 0 ) { print \"yes\n\"; } else { print \"no\n\";}"` = "yes" ] && export GREP_OPTIONS='--color=auto'
                [ "`grep --help 2>&1|grep -- '--color'`" ] && export GREP_OPTIONS='--color=auto'
		export LS_COLORS="no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:ex=01;32:*.tar=01;31:\
		*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.bz2=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.jpg=01;35:\
		*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:\
		*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.avi=01;35:*.fli=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.ogg=01;35:*.mp3=01;35:*.wav=01;35:";
		export CLICOLOR=
		unsetopt HIST_SAVE_BY_COPY
                export LANG=ru_RU.UTF-8
	;;
	openbsd|netbsd)
		alias ls="$ls -xCF"
		[ $TERM = "xterm" ] && export TERM=rxvt
	;;
	sunos)	
		[ $TERM = "xterm" ] && export TERM=at386
		alias ls="$ls -xCF"
		alias chown=/bin/chown
		export PATH="$COMM_PATH:/usr/local/bin:/usr/local/sbin:/usr/xpg6/bin:/usr/xpg4/bin:/usr/ucb:/bin:/sbin:/usr/bin:/usr/sbin:/usr/sfw/bin:/usr/sfw/sbin:/usr/sfw/i386-sun-solaris2.10/bin:/opt/SUNWspro/bin:/usr/ccs/bin"
		export MANPATH="$COMM_MAN:/usr/share/man:/usr/share/openssl/man:/usr/local/man"
                export LC_ALL=ru_RU.UTF-8
                export LANG=ru_RU.UTF-8
	;;
	* )
		alias ls="$ls -xCF"
	;;
esac
zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS}
#Systems specials

export JAVA_HOME=/usr/java
export ANT_HOME=/usr/local/ant

#EDITOR
for PROG in vim vi
do
	CHECK_ED=`which $PROG`
	if [ -x $CHECK_ED ]; then
		EDITOR=$CHECK_ED
		export EDITOR
		export S_CLEDITOR=$EDITOR
		export VISUAL=$EDITOR
		break
	fi
done
#EDITOR

#less colors
export LESS_TERMCAP_mb=$'\E[01;31m'
export LESS_TERMCAP_md=$'\E[01;31m'
export LESS_TERMCAP_me=$'\E[0m'
export LESS_TERMCAP_se=$'\E[0m'
export LESS_TERMCAP_so=$'\E[01;44;33m'
export LESS_TERMCAP_ue=$'\E[0m'
export LESS_TERMCAP_us=$'\E[01;32m'
#less colors
export PAGER=less

#Hosts specials
host_host=$(hostname|tr '[:upper:]' '[:lower:]');
case $host_host in
	domas-lt)
                export PATH=$PATH:/opt/kde3/bin
		unset http_proxy ftp_proxy HTTP_PROXY FTP_PROXY
	;;
	xxx)
                export PATH=$PATH:/opt/kde3/bin
		unset http_proxy ftp_proxy HTTP_PROXY FTP_PROXY
	;;
	underground)
		export TOOLS_HOME=~/tools
		export MAVEN_HOME=/usr/local/maven-2.0.6
		export JAVA_HOME=/usr/lib/jvm/java-1.5.0-sun
	;;
	napoli)
		export JAVA_HOME=/usr/local
		export ANT_HOME=$JAVA_HOME
	;;
	salerno)
		export JAVA_HOME=/usr/local
		export ANT_HOME=$JAVA_HOME
	;;
esac
#Hosts specials

#Users specials
username=$(whoami|/usr/bin/tr '[:upper:]' '[:lower:]');
[ -z $SUDO_USER ] || { username=$SUDO_USER }
case $username in
	domas|andrey)
		export PATH=~/.cw/def:$PATH	
		export LSCOLORS=Ea
		bindkey -v
		alias h=history
		alias df='df -h'
		alias less='less -M'
		alias gzless='LESSOPEN="|gzip -cdfq %s" less'
		alias bzless='LESSOPEN="|bunzip2 -cdfq %s" less'
		alias ispell='ispell -d russian'
		alias ll='ls -l'
		alias la='ls -A'
		alias li='ls -ial'
		alias lsd='ls -ld *(-/DN)'
		alias lsa='ls -ld .*'
		alias -g M='|more'
		alias -g L='|less'
		alias -g H='|head'
		alias -g T='|tail'
		alias tailmsg='tail -f /var/log/messages'
		alias tailmail='tail -f /var/log/maillog'
		alias -g N='2>/dev/null'
		alias -g cfg='cfg'
		
		setopt  HIST_REDUCE_BLANKS
		setopt  TRANSIENT_RPROMPT
		setopt   notify globdots pushdtohome cdablevars autolist
		setopt   autocd recexact
		setopt   autoresume pushdsilent noclobber
		setopt   autopushd pushdminus extendedglob rcquotes
		unsetopt bgnice autoparamslash
		setopt No_Beep

		cfg() { scp -r ~/.zshrc ~/.vimrc ~/.vim $1:~/  }
		setenv() { typeset -x "${1}${1:+=}${(@)argv[2,$#]}" }  # csh compatibility
		freload() { while (( $# )); do; unfunction $1; autoload -U $1; shift; done }
		fpath=($fpath ~/.zfunc)
		for func in $^fpath/*(N-.x:t); autoload $func
		typeset -U path cdpath fpath manpath
		
		zmodload -a zsh/stat stat
		zmodload -a zsh/zpty zpty
		zmodload -a zsh/zprof zprof
		zmodload -ap zsh/mapfile mapfile

		function precmd {

		    local TERMWIDTH
		    (( TERMWIDTH = ${COLUMNS} - 1 ))


		    ###
		    # Truncate the path if it's too long.
    
		    PR_FILLBAR=""
		    PR_PWDLEN=""
    
		    local promptsize=${#${(%):---(%n@%m:%l)---()--}}
		    local pwdsize=${#${(%):-%~}}
    
		    if [[ "$promptsize + $pwdsize" -gt $TERMWIDTH ]]; then
			    ((PR_PWDLEN=$TERMWIDTH - $promptsize))
		    else
			PR_FILLBAR="\${(l.(($TERMWIDTH - ($promptsize + $pwdsize)))..${PR_HBAR}.)}"
		    fi

		}

		setopt extended_glob
		preexec () {
		    if [[ "$TERM" == "screen" ]]; then
			local CMD=${1[(wr)^(*=*|sudo|-*)]}
			echo -n "\ek$CMD\e\\"
		    fi
		}


		setprompt () {
		    ###
		    # Need this so the prompt will work.

		    setopt prompt_subst


		    ###
		    # See if we can use colors.

		    autoload colors zsh/terminfo
		    if [[ "$terminfo[colors]" -ge 8 ]]; then
			colors
		    fi
		    for color in RED GREEN YELLOW BLUE MAGENTA CYAN WHITE; do
			eval PR_$color='%{$terminfo[bold]$fg[${(L)color}]%}'
			eval PR_LIGHT_$color='%{$fg[${(L)color}]%}'
			(( count = $count + 1 ))
		    done
		    PR_NO_COLOUR="%{$terminfo[sgr0]%}"


		    ###
		    # See if we can use extended characters to look nicer.
    
		    typeset -A altchar
		    set -A altchar ${(s..)terminfo[acsc]}
		    PR_SET_CHARSET="%{$terminfo[enacs]%}"
		    PR_SHIFT_IN="%{$terminfo[smacs]%}"
		    PR_SHIFT_OUT="%{$terminfo[rmacs]%}"
		    PR_OPEN="["
		    PR_CLOSE="]"
    
		    ###
		    # Decide if we need to set titlebar text.
    
		    case $TERM in
			xterm*|rxvt*|at386)
			    PR_TITLEBAR=$'%{\e]0;%(!.-=*[ROOT]*=- | .)%n@%m:%~ | ${COLUMNS}x${LINES} | %y\a%}'
			    ;;
			screen)
			    PR_TITLEBAR=$'%{\e_screen \005 (\005t) | %(!.-=[ROOT]=- | .)%n@%m:%~ | ${COLUMNS}x${LINES} | %y\e\\%}'
			    ;;
			*)
			    PR_TITLEBAR=''
			    ;;
		    esac
    
    
		    ###
		    # Decide whether to set a screen title
		    if [[ "$TERM" == "screen" ]]; then
			PR_STITLE=$'%{\ekzsh\e\\%}'
		    else
			PR_STITLE=''
		    fi
    
		    ###
		    # Finally, the prompt.

		    PROMPT='$PR_SET_CHARSET$PR_STITLE${(e)PR_TITLEBAR}$PR_BLUE$PR_SHIFT_IN$PR_SHIFT_OUT$PR_OPEN$PR_GREEN%(!.%SROOT%s.%n)$PR_BLUE@$PR_GREEN%m$PR_BLUE:$PR_MAGENTA%$PR_PWDLEN<...<%~%<<$PR_BLUE$PR_CLOSE%(!.$PR_RED.$PR_WHITE)%#$PR_NO_COLOUR '
		    RPROMPT=' $PR_BLUE$PR_SHIFT_OUT(%(?..$PR_LIGHT_RED%?$PR_BLUE:)$PR_YELLOW%D{%H:%M}$PR_BLUE)$PR_NO_COLOUR '
		    PS2='$PR_CYAN$PR_SHIFT_IN$PR_HBAR$PR_SHIFT_OUT$PR_BLUE$PR_SHIFT_IN$PR_HBAR$PR_SHIFT_OUT($PR_LIGHT_GREEN%_$PR_BLUE)$PR_SHIFT_IN$PR_HBAR$PR_SHIFT_OUT$PR_CYAN$PR_SHIFT_IN$PR_HBAR$PR_SHIFT_OUT$PR_NO_COLOUR '
		}

		setprompt
	;;
esac
#Users specials