document

Transcription

document
This document was created with free TRIAL version of eXPert PDF.This watermark will be removed
after purchasing the licensed full version of eXPert PDF. Please visit www.visagesoft.com for more details
DUPUY Daddimy
169 634
Sassi M. Amine
177 138
CTAGS
Ctags est un outil d’indexation (ou de r•f•rence crois•e) pour les langages de programmation
(C, C++, Lisp, Python, Perl,…). C’est un outils trƒs important pour les programmeurs.
O€ le t•l•charger ?
http://ctags.sourceforge.net/
 Prendre le binaire RPM (ctags-5.5.4-1.i386.rpm) pour Redhat ou
Mandrake
 Prendre les sources (ctags-5.5.4.tar.gz) pour les autres distributions.
 Il existe €galement une version pour Windows (ec554w32.zip)
Comment l’installer ?
 Pour Redhat ou mandrake :
$ rpm –iv ctags-5.5.4-1.i386.rpm
 Pour les autres distributions :
$ tar zxvf ctags-5.5.4.tar.gz
$ cd ctags-5.5.4/
$ ./configure
$ make && make install // il faut •tre root
 Pour Windows :
D€-zipper ec554w32.zip et double-cliquer sur l’ex€cutable.
A quoi cela sert-il ?
Ctags g€nƒre un fichier d’index des objets (variables, fonctions, maccros) des langages
connus.
Cet index, qui r€pertorie les informations sur divers objets trouv€s dans une s€rie de fichiers
€crits dans les langages connus par ctags :
 Permettra aux €diteurs de textes (GNU/Emacs, Vi, Nedit, …) de localiser
plus ais€ment les €l€ments index€s.
 Peut •tre affich€ sur la sortie standard, sous un format compr€hensible pour
l’Homme.
Comment l’utiliser ?
$ ctags [options] [fichier(s)]
cela va cr€er un fichier nomm€ … tags † .
This document was created with free TRIAL version of eXPert PDF.This watermark will be removed
after purchasing the licensed full version of eXPert PDF. Please visit www.visagesoft.com for more details
DUPUY Daddimy
169 634
Sassi M. Amine
177 138
Pour plus d’informations :
 Le manuel : $ man ctags
 Le built-in du shell : $ help ctags ou $ ctags --help
Les options
Pour les options suivantes, ctags ne cr€e pas de fichier … tags †, il utilise la sortie standard
comme fichier.
--list-languages
Affiche la liste des langages de programmation support€s par ctags.
Exemple :
$ ctags --list-languages
Asm
Asp
Awk
C
C++
Cobol
…
--list-maps=x
Affiche la liste des extensions possibles pour un langage x.
x peut prendre les valeurs suivantes : C, C++, Lisp, Python, … ou all pour
afficher les extensions de tous les langages support€s.
-x
Affiche une r€f€rence crois€e sur la sortie standard dans un format agr€able
pour un •tre humain (format€ comme l’option –l de la commande ls).
L’affichage se fait avec une ligne de 5 colonnes par objet index€.
Colonne 1 : nom de l’objet index€.
Colonne 2 : type de l’objet (variable, fonctions, maccros, …).
Colonne 3 : ligne ou cet objet est d€finit.
Colonne 4 : fichier ou est d€finit l’objet.
Colonne 5 : d€clarations ou prototypes de l’objet.
Exemple :
$ ctags –x *.c *.h Cf. Capture 5 pour le r€sultat de cette commande
- x --c-kinds = t Affiche sur la sortie standard les objets index€s de type t uniquement.
t peut prendre les valeurs suivantes :
 v pour afficher seulement les variables index€s.
 f pour les fonctions.
 d pour les maccro.
 m pour les structures / classes.
 t pour les typedefs.
 …
Pour conna„tre les valeurs possibles de t (et leurs significations) pour les
langages connus par ctags, utiliser la commande ctags –list-kinds
Exemple :
$ ctags –x –c-kinds=f *.c
Cf. Capture 2 pour le r€sultat de cette commande
This document was created with free TRIAL version of eXPert PDF.This watermark will be removed
after purchasing the licensed full version of eXPert PDF. Please visit www.visagesoft.com for more details
DUPUY Daddimy
169 634
Sassi M. Amine
177 138
Pour les options suivantes, ctags va cr€er un fichier nomm€ … tags † par d€faut.
C’est ce fichier qui sera utilis€ par les €diteurs de texte.
-a
-e
Ajoute les index dans un fichier t … tags † existant (sans €crasement).
Le fichier d’index se nommera … TAGS † et non … tags †.
Pour qu’Emacs puisse l’utiliser.
ˆquivalent ‰ l’outil etags (ctags sp€cialement conŠu pour Emacs).
Exemple :
$ ctags –e *.c *.h
Cette commande va cr•e un fichier d’index de tous les fichiers se
terminant par .c ou par .h, dans le r•pertoire ou elle a •t• lanc•e ;
Cela implique que l’utilisateur qui lance cette commande doit avoir les
droits d’•criture dans le r•pertoire d’o… il se trouve.
-f filename
Le fichier d’index s’appellera filename au lieu de … tags †.
ˆquivalent ‰ l’option –o filename.
Exemple :
$ ctags –f mestags *.c *.h va cr•er un fichier d’index nomm• † mestags ‡.
Cf. Capture 3.
-R
Pour lanc• ctags r•cursivement au niveau des r•pertoires.
Le fichier de r•f•rence sera cr•e dans le r•pertoire o… la commande a •t•
tap•.
--totals=yes
affiche le nombre de fichier index•, le nombre d’objet index•, les temps
mis pour construire l’index et pour le trier par ordre alphab•tique.
Cf. Capture 3
…
Pour les autres options consulter le man ou le built-in du shell.
Comment l’utiliser avec l’•diteur gvim et Vi?
$ ctags *.c *.h
$ gvim -t plus
Ceci €ditera le fichier programme C qui contient la fonction plus() et placera directement le
curseur sur la premiƒre ligne de la fonction plus().
$ gvim -t main
De m•me, cette commande vous placera sur la ligne contenant la d€finition de la fonction
main().
Dans l'€diteur Vi, vous pouvez sauter ‰ une fonction en tapant : (double point) tag
nom_de_la_fonction comme ci dessous :
This document was created with free TRIAL version of eXPert PDF.This watermark will be removed
after purchasing the licensed full version of eXPert PDF. Please visit www.visagesoft.com for more details
DUPUY Daddimy
169 634
Sassi M. Amine
177 138
: tag nom_fonction
: tag div ()
Ceci placera le curseur sur la premiƒre ligne de fonction ().
Si vous voulez sauter dans la fonction ‰ partir de la ligne du fichier contenant le nom de la
fonction, placez le curseur juste avant le nom de la fonction et tapez CTRL+] (tapez la touche
de contr‹le et le crochet gauche simultan€ment).
int main ()
{ printf(“%d\n”, div(UN,DEUX))
^
|
|
Placez le curseur ici (juste avant div()) et tapez CTRL+]
Ceci vous emmƒnera ‰ la d€finition de la fonction "div()" (m•me s’il est dans un autre fichier).
Pour revenir ‰ cette ligne tapez CTRL+t (la touche CTRL et la lettre ‘t’ simultan•ment).
Continuez ‰ appuyer sur CTRL+t pour inverser et revenir ‰ la premiƒre ligne o… vous avez
commenc• la navigation. C'est-‰-dire que vous pouvez conserver press•es CTRL+] et ensuite
taper CTRL+t pour revenir. Vous pouvez refaire ceci aussi souvent que vous le d•sirez pour
avoir une navigation complƒte au travers de toutes les fonctions C ou C++.
Comment l’utiliser avec GNU/Emacs ?
Par d•faut, Emacs va essayer de charger un fichier d’index nomm• † TAGS ‡ dans le
r•pertoire courant ; c’est pour cette raison que l’on utilise l’option –e qui cr•e ce fichier.
Une fois, le fichier d’indexation cr••, on peut ex•cuter les commandes suivantes :
M-x visit-tags-table <RET> filname <RET> (par d€faut, filename = TAGS).
Cette commande permet de s€lectionner et de charger le fichier d’index ‰ utiliser par Emacs.
M-. [TAG] <RET>
Trouve le premier objet index€. Par d€faut, c’est l’objet (fonction ou variables) sous le curseur.
M-*
C’est l’•quivalent du CTRL+t dans Vi. (cf. le paragraphe pr•c•dent).
On peut •galement utiliser l’interface graphique de Emacs :
Edit / Go to / Set Tags File Name pour charger le fichier d’index.
Edit / Go to / Find Tag
€qivalent ‰ M-. [TAG] <RET>
Autres
Le fichier d’index ainsi cr•e peut aussi servir ‰ d’autres •diteurs ou autres programme ,
notamment dans des script shell.
Cf. Capture 4 pour voir le contenu d’un fichier d’index cr•er par ctags.
This document was created with free TRIAL version of eXPert PDF.This watermark will be removed
after purchasing the licensed full version of eXPert PDF. Please visit www.visagesoft.com for more details
DUPUY Daddimy
169 634
Sassi M. Amine
177 138
Les sources et captures d’•cran pour les exemples:
Les fichiers sont plac€s dans un r€pertoire nomm€ Exemple :
Capture 1 : les fichiers du r€pertoire Exemple/
Capture 2 : l’option –x –c-kinds=f
This document was created with free TRIAL version of eXPert PDF.This watermark will be removed
after purchasing the licensed full version of eXPert PDF. Please visit www.visagesoft.com for more details
DUPUY Daddimy
169 634
Sassi M. Amine
177 138
Capture 3 : l’option –f et --totals=yes
Capture 4 : le contenu du fichier d’index (mestags).
This document was created with free TRIAL version of eXPert PDF.This watermark will be removed
after purchasing the licensed full version of eXPert PDF. Please visit www.visagesoft.com for more details
DUPUY Daddimy
169 634
Sassi M. Amine
177 138
Capture 5 : l’option –x
Remarques
Les options peuvent •tre mis par d€faut dans le fichier /etc/ctags.conf ou ~/ctags.conf1
En g€n€ral dans les derniƒres versions, il faut cr€er soit m•me ce fichier.
Voici ‰ quoi cela ressemble :
/etc/ctags.conf
--verbose=yes
--totals=yes
--recurse
--langmap=asm:
--langdef=Splus
--langmap=Splus:.s.S.R.r.q
--regex-Splus=/^[ \t]+"?([.A-Za-z][.A-Za-z0-9]*)"?[ \t]*(<-|_)[ \t]*function/\1/
--regex-Splus=/^"?([.A-Za-z][.A-Za-z0-9]*)"?[ \t]*(<-|_)/\1/
Ressources
Internet (ctags.sourceforge.net)
Le manpage et le help du shel.
This document was created with free TRIAL version of eXPert PDF.This watermark will be removed
after purchasing the licensed full version of eXPert PDF. Please visit www.visagesoft.com for more details
DUPUY Daddimy
169 634
Sassi M. Amine
177 138
CTAGS
Ctags est un outil d’indexation (ou de r•f•rence crois•e) pour les langages de programmation
(C, C++, Lisp, Python, Perl,…). C’est un outils trƒs important pour les programmeurs.
O€ le t•l•charger ?
http://ctags.sourceforge.net/
 Prendre le binaire RPM (ctags-5.5.4-1.i386.rpm) pour Redhat ou
Mandrake
 Prendre les sources (ctags-5.5.4.tar.gz) pour les autres distributions.
 Il existe €galement une version pour Windows (ec554w32.zip)
Comment l’installer ?
 Pour Redhat ou mandrake :
$ rpm –iv ctags-5.5.4-1.i386.rpm
 Pour les autres distributions :
$ tar zxvf ctags-5.5.4.tar.gz
$ cd ctags-5.5.4/
$ ./configure
$ make && make install // il faut •tre root
 Pour Windows :
D€-zipper ec554w32.zip et double-cliquer sur l’ex€cutable.
A quoi cela sert-il ?
Ctags g€nƒre un fichier d’index des objets (variables, fonctions, maccros) des langages
connus.
Cet index, qui r€pertorie les informations sur divers objets trouv€s dans une s€rie de fichiers
€crits dans les langages connus par ctags :
 Permettra aux €diteurs de textes (GNU/Emacs, Vi, Nedit, …) de localiser
plus ais€ment les €l€ments index€s.
 Peut •tre affich€ sur la sortie standard, sous un format compr€hensible pour
l’Homme.
Comment l’utiliser ?
$ ctags [options] [fichier(s)]
cela va cr€er un fichier nomm€ … tags † .
This document was created with free TRIAL version of eXPert PDF.This watermark will be removed
after purchasing the licensed full version of eXPert PDF. Please visit www.visagesoft.com for more details
DUPUY Daddimy
169 634
Sassi M. Amine
177 138
Pour plus d’informations :
 Le manuel : $ man ctags
 Le built-in du shell : $ help ctags ou $ ctags --help
Les options
Pour les options suivantes, ctags ne cr€e pas de fichier … tags †, il utilise la sortie standard
comme fichier.
--list-languages
Affiche la liste des langages de programmation support€s par ctags.
Exemple :
$ ctags --list-languages
Asm
Asp
Awk
C
C++
Cobol
…
--list-maps=x
Affiche la liste des extensions possibles pour un langage x.
x peut prendre les valeurs suivantes : C, C++, Lisp, Python, … ou all pour
afficher les extensions de tous les langages support€s.
-x
Affiche une r€f€rence crois€e sur la sortie standard dans un format agr€able
pour un •tre humain (format€ comme l’option –l de la commande ls).
L’affichage se fait avec une ligne de 5 colonnes par objet index€.
Colonne 1 : nom de l’objet index€.
Colonne 2 : type de l’objet (variable, fonctions, maccros, …).
Colonne 3 : ligne ou cet objet est d€finit.
Colonne 4 : fichier ou est d€finit l’objet.
Colonne 5 : d€clarations ou prototypes de l’objet.
Exemple :
$ ctags –x *.c *.h Cf. Capture 5 pour le r€sultat de cette commande
- x --c-kinds = t Affiche sur la sortie standard les objets index€s de type t uniquement.
t peut prendre les valeurs suivantes :
 v pour afficher seulement les variables index€s.
 f pour les fonctions.
 d pour les maccro.
 m pour les structures / classes.
 t pour les typedefs.
 …
Pour conna„tre les valeurs possibles de t (et leurs significations) pour les
langages connus par ctags, utiliser la commande ctags –list-kinds
Exemple :
$ ctags –x –c-kinds=f *.c
Cf. Capture 2 pour le r€sultat de cette commande
This document was created with free TRIAL version of eXPert PDF.This watermark will be removed
after purchasing the licensed full version of eXPert PDF. Please visit www.visagesoft.com for more details
DUPUY Daddimy
169 634
Sassi M. Amine
177 138
Pour les options suivantes, ctags va cr€er un fichier nomm€ … tags † par d€faut.
C’est ce fichier qui sera utilis€ par les €diteurs de texte.
-a
-e
Ajoute les index dans un fichier t … tags † existant (sans €crasement).
Le fichier d’index se nommera … TAGS † et non … tags †.
Pour qu’Emacs puisse l’utiliser.
ˆquivalent ‰ l’outil etags (ctags sp€cialement conŠu pour Emacs).
Exemple :
$ ctags –e *.c *.h
Cette commande va cr•e un fichier d’index de tous les fichiers se
terminant par .c ou par .h, dans le r•pertoire ou elle a •t• lanc•e ;
Cela implique que l’utilisateur qui lance cette commande doit avoir les
droits d’•criture dans le r•pertoire d’o… il se trouve.
-f filename
Le fichier d’index s’appellera filename au lieu de … tags †.
ˆquivalent ‰ l’option –o filename.
Exemple :
$ ctags –f mestags *.c *.h va cr•er un fichier d’index nomm• † mestags ‡.
Cf. Capture 3.
-R
Pour lanc• ctags r•cursivement au niveau des r•pertoires.
Le fichier de r•f•rence sera cr•e dans le r•pertoire o… la commande a •t•
tap•.
--totals=yes
affiche le nombre de fichier index•, le nombre d’objet index•, les temps
mis pour construire l’index et pour le trier par ordre alphab•tique.
Cf. Capture 3
…
Pour les autres options consulter le man ou le built-in du shell.
Comment l’utiliser avec l’•diteur gvim et Vi?
$ ctags *.c *.h
$ gvim -t plus
Ceci €ditera le fichier programme C qui contient la fonction plus() et placera directement le
curseur sur la premiƒre ligne de la fonction plus().
$ gvim -t main
De m•me, cette commande vous placera sur la ligne contenant la d€finition de la fonction
main().
Dans l'€diteur Vi, vous pouvez sauter ‰ une fonction en tapant : (double point) tag
nom_de_la_fonction comme ci dessous :
This document was created with free TRIAL version of eXPert PDF.This watermark will be removed
after purchasing the licensed full version of eXPert PDF. Please visit www.visagesoft.com for more details
DUPUY Daddimy
169 634
Sassi M. Amine
177 138
: tag nom_fonction
: tag div ()
Ceci placera le curseur sur la premiƒre ligne de fonction ().
Si vous voulez sauter dans la fonction ‰ partir de la ligne du fichier contenant le nom de la
fonction, placez le curseur juste avant le nom de la fonction et tapez CTRL+] (tapez la touche
de contr‹le et le crochet gauche simultan€ment).
int main ()
{ printf(“%d\n”, div(UN,DEUX))
^
|
|
Placez le curseur ici (juste avant div()) et tapez CTRL+]
Ceci vous emmƒnera ‰ la d€finition de la fonction "div()" (m•me s’il est dans un autre fichier).
Pour revenir ‰ cette ligne tapez CTRL+t (la touche CTRL et la lettre ‘t’ simultan•ment).
Continuez ‰ appuyer sur CTRL+t pour inverser et revenir ‰ la premiƒre ligne o… vous avez
commenc• la navigation. C'est-‰-dire que vous pouvez conserver press•es CTRL+] et ensuite
taper CTRL+t pour revenir. Vous pouvez refaire ceci aussi souvent que vous le d•sirez pour
avoir une navigation complƒte au travers de toutes les fonctions C ou C++.
Comment l’utiliser avec GNU/Emacs ?
Par d•faut, Emacs va essayer de charger un fichier d’index nomm• † TAGS ‡ dans le
r•pertoire courant ; c’est pour cette raison que l’on utilise l’option –e qui cr•e ce fichier.
Une fois, le fichier d’indexation cr••, on peut ex•cuter les commandes suivantes :
M-x visit-tags-table <RET> filname <RET> (par d€faut, filename = TAGS).
Cette commande permet de s€lectionner et de charger le fichier d’index ‰ utiliser par Emacs.
M-. [TAG] <RET>
Trouve le premier objet index€. Par d€faut, c’est l’objet (fonction ou variables) sous le curseur.
M-*
C’est l’•quivalent du CTRL+t dans Vi. (cf. le paragraphe pr•c•dent).
On peut •galement utiliser l’interface graphique de Emacs :
Edit / Go to / Set Tags File Name pour charger le fichier d’index.
Edit / Go to / Find Tag
€qivalent ‰ M-. [TAG] <RET>
Autres
Le fichier d’index ainsi cr•e peut aussi servir ‰ d’autres •diteurs ou autres programme ,
notamment dans des script shell.
Cf. Capture 4 pour voir le contenu d’un fichier d’index cr•er par ctags.
This document was created with free TRIAL version of eXPert PDF.This watermark will be removed
after purchasing the licensed full version of eXPert PDF. Please visit www.visagesoft.com for more details
DUPUY Daddimy
169 634
Sassi M. Amine
177 138
Les sources et captures d’•cran pour les exemples:
Les fichiers sont plac€s dans un r€pertoire nomm€ Exemple :
Capture 1 : les fichiers du r€pertoire Exemple/
Capture 2 : l’option –x –c-kinds=f
This document was created with free TRIAL version of eXPert PDF.This watermark will be removed
after purchasing the licensed full version of eXPert PDF. Please visit www.visagesoft.com for more details
DUPUY Daddimy
169 634
Sassi M. Amine
177 138
Capture 3 : l’option –f et --totals=yes
Capture 4 : le contenu du fichier d’index (mestags).
This document was created with free TRIAL version of eXPert PDF.This watermark will be removed
after purchasing the licensed full version of eXPert PDF. Please visit www.visagesoft.com for more details
DUPUY Daddimy
169 634
Sassi M. Amine
177 138
Capture 5 : l’option –x
Remarques
Les options peuvent •tre mis par d€faut dans le fichier /etc/ctags.conf ou ~/ctags.conf1
En g€n€ral dans les derniƒres versions, il faut cr€er soit m•me ce fichier.
Voici ‰ quoi cela ressemble :
/etc/ctags.conf
--verbose=yes
--totals=yes
--recurse
--langmap=asm:
--langdef=Splus
--langmap=Splus:.s.S.R.r.q
--regex-Splus=/^[ \t]+"?([.A-Za-z][.A-Za-z0-9]*)"?[ \t]*(<-|_)[ \t]*function/\1/
--regex-Splus=/^"?([.A-Za-z][.A-Za-z0-9]*)"?[ \t]*(<-|_)/\1/
Ressources
Internet (ctags.sourceforge.net)
Le manpage et le help du shell.