
#
# Fichier .zshrc pour ZSH
# (C) Jedi/Sector One (j@nether.net)
#
# 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.
#




#----------------{ Infos
[[ -z $OSTYPE ]] && OSTYPE=`uname`       # Va savoir pourquoi, yapa $OSTYPE
[[ -z $HOSTTYPE ]] && HOSTTYPE=$MACHTYPE # Va savoir pourquoi, yapa $HOSTTYPE

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]"

#----------------{ Touches comme dans EMacs
[[ $TERM = "xterm" ]] && stty pass8 && bindkey -me
# [[ $TERM = "xterm" ]] && stty -parenb -istrip cs8 && bindkey -me

#----------------{ Vire les limites
unlimit
limit coredumpsize 0                     # Pas de core

#----------------{ 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}
# setopt CDABLE_VARS                       # Recherche des reps a partir du ~ !!!BUGGUE!!! -Jedi.
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
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 *

#----------------{ Fonctions
periodic() { frm }
#chpwd() { print -n "["; print -nD "$OLDPWD"; print -n "] -> [$PWD]" }
TRAPXCPU() { print "EMT Trap ( PID=$! ), mais on s'en moque !!!" }
TRAPFSZ() { print "Hep t'as explose la limite de fichier ( PID=$! ), warf !" }
# TRAPCHLD() { print "[Spawning PID=$!]" }
setenv() { $1="$2" } 

#----------------{ Variables
COLORTERM=1                              # Pour slang
HISTFILE="$HOME/.zshistory"              # Fichier d'historique
HISTSIZE=1000                            # Taille de l'historique
LISTMAX=0                                # Limite d'affichage pour completion
LISTHISTSIZE=1000                        # Historique litteral
LOGCHECK=1                               # Intervalle pour le watch
# MAIL="/usr/spool/mail/$LOGNAME"          # Fichier des mails
MAILCHECK=30                             # Delai de verification des E-Mails
PROMPT="%B-=[%b%n@%m%B]=%0(?..<%bFailed %?%B>=)(%b%9(c!...!)%8c%B)%(#.#.>)%b "
PROMPT2="Et la suite ? "                 # Commande innachevee
PROMPT3="Selection ? "                   # Select
PROMPT4="Debogguage > "                  # Trace
REPORTTIME=10                            # Report de commande longue
RPROMPT="%B<(%b%*%B)%b"                  # Prompt droit
SAVEHIST=1000                            # Historique a sauver
SPROMPT="Hep Joe, tu voulais dire %U%r%u ? (y/n/e) "
watch=(all)                              # Surveille tous les utilisateurs
WATCHFMT="%B->%b %n just %a %(l:line %l:%U-Ghost-%u)%(m: from %m:)"

#----------------{ Environnement general
[[ -z $USER ]] && USER=$LOGNAME          # Va savoir pourquoi, yapa $USER
XTERM_OPTS="-T ${LOGNAME}@${HOST} -n ${LOGNAME}@${HOST} -ls -cn -cu -j -rw -s -sb +sk -vb +wf -nb 1"
NNTPSERVER="news"                        # Serveur de news
EDITOR="jed"                             # Qui n'a pas Jed ?
FCEDIT=$EDITOR                           # Editeur pour fc
VISUAL=$EDITOR                           # Idem

#----------------{ 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

#----------------{ Fin
print
#$?=0                      # Pour que ca ne sorte pas d'erreur apres un "source"
