[Zsh] Resolu : Pb d'affectation de variable avec precmd()

Resolu : Pb d'affectation de variable avec precmd() [Zsh] - Linux et OS Alternatifs

Marsh Posté le 11-06-2004 à 17:15:35    

Appel à tous les geeks zsh.
 
Voici le problème :
J'ai mis dans mon prompt.rc ceci :

_push-todo (){
    print $* >> .zsh-todo
}
                                                                                 
_print-first-todo (){
    head -1 .zsh-todo 2> /dev/null
}
                                                                                 
_pop-todo (){
        cat .zsh-todo | tail +2 > .zsh-todo
}
                                                                                 
precmd () {
        if [ "$(_print-first-todo)" != "" ]
        then
                print TODO \: $(_print-first-todo)
        fi
#       print $(_print-first-todo)
#       todo=$(_print-first-todo);
}


ce qui m'affiche une invite de ce type :

TODO : Pb Turba MobilePhone
serial@achsx067 /home/serial
[0] $


Or j'aimerai pouvoir l'avoir dans l'invite, comme ceci par exemple :


serial@achsx067 /home/serial >>TODO : Pb Turba MobilePhone
[0] $


Pour cela il faudrait que je passe par l'affectation d'une variable, or elle n'est pas mis à jour à chaque affichage de l'invite mais seulement quand je fais un ". ~/.zsh/rc/prompt.rc".
 
Un grand merci à celui qui peut me donner une solution.


Message édité par serialcleaner le 14-06-2004 à 18:08:13

---------------
Un bon script vaut tous les clicks du monde. | Errements Alternatifs
Reply

Marsh Posté le 11-06-2004 à 17:15:35   

Reply

Marsh Posté le 14-06-2004 à 12:19:15    

:bounce:
 
Pas de geek ?
J'y crois pas ;)


Message édité par serialcleaner le 14-06-2004 à 12:19:39

---------------
Un bon script vaut tous les clicks du monde. | Errements Alternatifs
Reply

Marsh Posté le 14-06-2004 à 17:51:07    

Résolu.
Un petit tour sur http://www.zsh.org/mla/users/2004/msg00531.html et la solution est apparue.
 

precmd () {
        if [ "$(_print-first-todo)" != "" ]
        then
                #print TODO \: $(_print-first-todo)
                todo=">> $(_print-first-todo)"
        else
                todo=""
        fi
#       print $(_print-first-todo)
#       todo=$(_print-first-todo)
if [[ $TERM == "xterm" ]]; then
        PS1="$host $cpath $todo
[%j] $end"
#       export RPS1=$' %{\e[48;5;233m%} %{\e[48;5;234m%} %{\e[48;5;235m%} %{\e[48;5;236m%} %{\e[48;5;237m%} %{\e[48;5;238m%} %{\e[48;5;239m%} %{\e[48;5;240m%} %{\e[48;5;241m%} %{\e[48;5;242m%} %{\e[48;5;243m%} %{\e[48;5;244m%} %{\e[48;5;245m%} %{\e[48;5;246m%} %{\e[48;5;247m%} %{\e[48;5;248m%} %{\e[48;5;249m%} %{\e[48;5;250m%} %{\e[48;5;251m%} %{\e[48;5;252m%} %{\e[38;5;232m%}%D{%H:%M} %{\e[0m%}'
        export RPS1=$'%D{%H:%M}'
else
        PS1="$date $host $cpath
$end"
fi
}


 
Il fallait redéfinir le prompt dans la precmd ;)


Message édité par serialcleaner le 14-06-2004 à 17:51:40

---------------
Un bon script vaut tous les clicks du monde. | Errements Alternatifs
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed