#
# Fichier .zshrc pour ZSH
# (C) Jedi/Sector One (j@nether.net)
# (C) Baptux (baptux@free.fr) :)
#
# Ce fichier de config ne contient que les definitions propres au ZSH
# donc vous pouvez le reprendre quelque soit votre systeme, que ce soit
# l'organisation bordelique de l'Epita ou chez vous sous Linux.
# Prenez aussi : .zshalias .zshcomplete et .zshsite/.zsh.* ( si ils existent )
#  ***********************************************************************
# ********         NE MODIFIEZ PAS LES FICHIERS PRECEDENTS         ********
#  ***********************************************************************
# Si vous desirez ajouter vos propres trucs de config, creez un ou plusieurs
# fichiers supplementaires qui seront automatiquement charges a la suite de
# ceux ci :      - .myzshrc            = Votre propre .zshrc
#                - .myzshalias         = Vos alias supplementaires
#                - .myzshcomplete      = Vos regles de completion
#                - .myzsh.<type d'OS>  = Vos trucs specifiques a cet OS.
#


# THIS FILE IS NOT INTENDED TO BE USED AS /etc/zshrc, NOR WITHOUT EDITING
[[ -z $OSTYPE ]] && OSTYPE=`uname`       # Va savoir pourquoi, yapa $OSTYPE
[[ -z $HOSTTYPE ]] && HOSTTYPE=$MACHTYPE # Va savoir pourquoi, yapa $HOSTTYPE

#Baptux : moi j'aime pas trop avoir plein de truc crit  l'ouverture du shell :)
#print "Connexion established on :"
#date
#print
#print "Shell : Zsh $ZSH_VERSION ( PID = $$, $SHLVL nests )"
#print "Term. : $TTY ( $TERM ), $BAUD bauds, $COLUMNS x $LINES cars"
#print "Login : $LOGNAME ( UID = $EUID ) on $HOST ( $OSTYPE for $HOSTTYPE )"
#print
print -n "[.zshrc]"

# Shell functions
#----------------{ Fonctions
periodic() { frm }
TRAPXCPU() { print "EMT Trap ( PID=$! ), mais on s'en moque !!!" }
TRAPFSZ() { print "Hep t'as explose la limite de fichier ( PID=$! ), warf !" }
setenv() { $1="$2" }

# Set/unset  shell options
unsetopt cshjunkiequotes                 # On est sous ZSH merde !
setopt ALL_EXPORT                        # Exporte tout
setopt ALWAYS_TO_END                     # Saute apres le mot si completion
setopt APPEND_HISTORY                    # Partage l'historique
setopt AUTO_CD                           # CD facultatif
setopt AUTO_LIST                         # Liste de completion automatique
setopt AUTO_MENU                         # Menu de completion automatique
setopt AUTO_PARAM_KEYS                   # Completion parametres facultative
setopt AUTO_REMOVE_SLASH                 # Vire les / inutiles
unsetopt BGNICE                          # Pas de pitie pour les trucs en fond
setopt BRACE_CCL                         # Expansion des {A-Za-z}
unsetopt COMPLETE_ALIASES                # Pas de substitution avec completion
setopt COMPLETE_IN_WORD                  # Deplace le curseur apres completion
setopt CORRECT                           # Correction des commandes
setopt CORRECT_ALL                       # Correction des arguments
unsetopt ERR_EXIT                        # No cassos en cas d'erreur
unsetopt EXTENDED_HISTORY                # Historique avec timings = bof
setopt GLOB_COMPLETE                     # Completion avec RegEx
unsetopt GLOB_DOTS                       # "." explicite obligatoire
setopt HASH_CMDS                         # Utilisation d'un buffer tampon
setopt HASH_LIST_ALL                     # Hash tout lors d'une completion
setopt HIST_IGNORE_DUPS                  # Vire les commandes en double
unsetopt HIST_IGNORE_SPACE               # N'ignore pas les espaces dans l'his.
setopt HIST_NO_STORE                     # N'enregistre pas la cmd history
#setopt IGNORE_EOF                        # Reste si on presse Ctrl-D (moi j'aime bien Ctrl-D - Baptux)
setopt INTERACTIVE_COMMENTS              # Commentaires Ok meme en interactif
unsetopt KSH_OPTION_PRINT                # Affichage des options pas en KSH
setopt LIST_TYPES                        # Types des trucs completes affiche
setopt LONG_LIST_JOBS                    # jobs -l par defaut
setopt MAIL_WARNING                      # Verification modifs des mails
setopt MARK_DIRS                         # Ajoute un / apres les repertoires
setopt NO_BANG_HIST                      # Fait pas chier avec les ! / hist.
setopt NO_BEEP                           # Silence
setopt NO_NOMATCH                        # No error if nothing matches
unsetopt NO_CLOBBER                      # > et >> bourrins
setopt NO_FLOW_CONTROL                   # Pas de XON/XOFF
setopt NO_HIST_BEEP                      # Silence (2)
setopt NO_HUP                            # Laisse tout tourner quand on quite
setopt NO_LIST_BEEP                      # Silence (3)
unsetopt NO_PROMPT_CR                    # <cr> avant le prompt
unsetopt NO_RCS                          # Lit tous les fichiers de config
unsetopt NO_SHORT_LOOPS                  # Raccourcis de ZSH Ok
unsetopt NOTIFY                          # Attend avant jobs infos
setopt NUMERIC_GLOBSORT                  # Tri numerique sur completions
setopt PATH_DIRS                         # Recherche etendue des executables
unsetopt PRINT_EXIT_VALUE                # On l'a dans le prompt
setopt PROMPT_SUBST                      # Prompts etendus
setopt PUSHD_IGNORE_DUPS                 # Pas de doubles en pile des reps
setopt RC_QUOTES                         # '' = ' dans une chaine
unsetopt RM_STAR_SILENT                  # Protection du rm *

# Set prompts
#On charge les couleurs :
autoload -U colors
colors
bleu_color="blue"
rouge_color="red"
user_color="%{$fg[$bleu_color]%}"
root_color="%{$fg[$rouge_color]%}"
end="%{$reset_color%}"

[[ -z $USER ]] && USER=$LOGNAME          # Va savoir pourquoi, yapa $USER
case $USER in
	root)
#Prompt root par dfaut	
PROMPT="${root_color}-=[${end}%n@%m${root_color}]=%0(?..<${end}Failed %?${root_color}>=)(${end}%9(c!...!)%8c${root_color})%(#.#.>) $end"    # default prompt
#Prompt Droit
RPROMPT="${root_color}<(${end}%*${root_color})>${end}"                  # Prompt droit
	;;
	*)
PROMPT="${user_color}-=[${end}%n@%m${user_color}]=%0(?..<${end}Failed %?${user_color}>=)(${end}%9(c!...!)%8c${user_color})%(#.#.>) $end"    # default prompt
#Prompt Droit
RPROMPT="${user_color}<(${end}%*${user_color})>${end}"                  # Prompt droit
	;;
esac
PROMPT2="Et la suite ? "                 # Commande innachevee
PROMPT3="Selection ? "                   # Select
PROMPT4="Debogguage > "                  # Trace
SPROMPT="Hep Joe, tu voulais dire %U%r%u ? (y/n/e) "

# Some environment variables
COLORTERM=1                              # Pour slang

#----------------{ Environnement general
XTERM_OPTS="-T ${LOGNAME}@${HOST} -n ${LOGNAME}@${HOST} -bg black -fg white -ls -cn -cu -j -rw -s +sb +sk -vb +wf -nb 1"
EDITOR="vim"
FCEDIT=$EDITOR
VISUAL=$EDITOR
MAILCHECK=30
HISTFILE="$HOME/.zshistory"              # Fichier d'historique
HISTSIZE=1000
DIRSTACKSIZE=20
REPORTTIME=10                            # Report de commande longue
SAVEHIST=1000                            # Historique a sauver
LISTMAX=0                                # Limite d'affichage pour completion
LISTHISTSIZE=1000                        # Historique litteral

# Watch for my friends
#watch=( $(<~/.friends) )       # watch for people in .friends file

#watch=(all)                   # Liste des utilisateurs a surveiller
#LOGCHECK=1                    # check every 5 min for login/logout activity
WATCHFMT="%B->%b %n has just %a %(l:tty%l:%U-Ghost-%u)%(m: from %m:)"

#----------------{ Key binding

[[ $TERM = "xterm" ]] && stty pass8 && bindkey -me #Cool emacs
#bindkey -me
bindkey ' ' magic-space    # also do history expansion on space
bindkey '^I' complete-word # complete on tab, leave expansion to _expand

#----------------{ Vire les limites

unlimit
limit coredumpsize 0                     # Pas de code


#----------------{ TMP
TMP=~/tmp
if [ ! -d "$TMP" ]; then
    mkdir $TMP
fi
chmod 700 "$TMP"
TEMP="$TMP"

#----------------{ Modules
EMAIL_ADDR=mickey@disneyland.com
autoload -U zfinit
zfinit


#----------------{ Fichiers rattaches

source_or_die() { [[ -f $1 ]] && . $1 }  # Super fonction made in Jedi

source_or_die ~/.zshalias                # Les alias
source_or_die ~/.zshcomplete             # Les completions
source_or_die ~/.zshsite                 # Les trucs specifiques au site
source_or_die ~/.zsh.$OSTYPE             # Les trucs specifiques a l'OS
source_or_die ~/.myzshrc                 # Votre propre .zshrc
source_or_die ~/.myzshalias              # Vos alias supplementaires
source_or_die ~/.myzshcomplete           # Vos regles de completion
source_or_die ~/.myzsh.$OSTYPE           # Vos trucs specifiques a l'OS
print
