Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[zsh] complétion cvs

2 réponses
Avatar
David LE BOURGEOIS
Bonsoir.

Lorsque j'exécute 'cvs checkout -c', aucune ligne ne s'affiche.

Si je tape 'cvs checkout ', et appuie sur tabulation pour
appeler la complétion, zsh affiche la liste des modules existant.

Savez-vous quelle commande est utilisée par zsh pour lister les
modules cvs, lors de sa complétion ?

Merci d'avance.

--
David LE BOURGEOIS
E-mail : david.lebourgeois (at) free.fr
Jabber : david.lebourgeois (at) jabber.fr
PGP : http://david.lebourgeois.free.fr/pgp/

2 réponses

Avatar
Nicolas George
David LE BOURGEOIS wrote in message
<4777ff59$0$32739$:
Savez-vous quelle commande est utilisée par zsh pour lister les
modules cvs, lors de sa complétion ?


Tout est dans le fichier _cvs de l'installation de zsh.

Avatar
David LE BOURGEOIS
David LE BOURGEOIS wrote in message
<4777ff59$0$32739$:
Savez-vous quelle commande est utilisée par zsh pour lister les
modules cvs, lors de sa complétion ?


Tout est dans le fichier _cvs de l'installation de zsh.


Merci.

Voici ce que j'ai trouvé.

Zsh crée un environnement cvs local :

---8<-----------------
# _cvs_run cvsroot directory cvs-arguments...
(( $+functions[_cvs_run] )) ||
_cvs_run() {
local cvsroot="$1" dir="$2"
shift 2
local d=/tmp/zsh-cvs-work-$$
mkdir $d >&/dev/null
cd $d
mkdir CVS >&/dev/null
print -r - "$cvsroot" > CVS/Root
print "$dir" > CVS/Repository
print D > CVS/Entries
CVS_IGNORE_REMOTE_ROOT= cvs "$@"
cd $OLDPWD
rm -rf $d
}
---8<-----------------


Puis il extrait les modules depuis la sortie de la commande
'cvs update -r00 -d -p' :

---8<-----------------
# _cvs_remote_directories cvsroot directory [variable]
(( $+functions[_cvs_remote_directories] )) ||
_cvs_remote_directories() {
local root="$1" dir="$2" subdirs
shift 2
subdirs=(${${(M)${(f)"$(_call_program directories _cvs_run "$root" "$dir" update -r00 -d -p 2>&1)"}:#* New directory `*' -- ignored}/(#b)*`(*)'*/$match[1]})
if (( $# )); then
eval "$1=("$subdirs[@]")"
else
if (( $#subdirs )); then
print -lr - $subdirs
fi
fi
}
---8<-----------------

--
David LE BOURGEOIS
E-mail : david.lebourgeois (at) free.fr
Jabber : david.lebourgeois (at) jabber.fr
PGP : http://david.lebourgeois.free.fr/pgp/