exemple minimal de cscope
Ingo l'a mentionné, en voici un exemple.
Vous devez d'abord définir sur votre .vimrc
:
set cscopequickfix=s-,c-,d-,i-,t-,e-
Ensuite, dans le répertoire de base de votre projet et exécutez :
cscope -Rb
Cela génère un cscope.out
fichier contenant les informations analysées. La génération est raisonnablement rapide, même pour de gros projets comme le noyau Linux.
Ouvrez vim et exécutez :
:cs add cscope.out
:cs find c my_func
c
est un mnémonique pour callers
. L'autre cscope
à condition que les requêtes soient également possibles, les mnémoniques sont répertoriés sous :
help cscope
Cela ajoute une liste des appelants à la liste des correctifs rapides, que vous pouvez ouvrir avec :
:copen
Allez à la ligne qui vous intéresse et appuyez sur Entrée pour y accéder.
Pour trouver les appelants du nom de la fonction actuellement sous le curseur, ajoutez à votre .vimrc
:
function! Csc()
cscope find c <cword>
copen
endfunction
command! Csc call Csc()
et entrez :Csc<enter>
lorsque le curseur est au-dessus de la fonction.
À FAIRE :
- faites-le pour la fonction courante sous le curseur avec une seule commande. En relation :Afficher le nom de la fonction dans la ligne d'état
- ajouter automatiquement la base de données la plus proche (répertoires parents) lorsque vous entrez un fichier :comment charger automatiquement cscope.out dans vim
- ouvrir de manière interactive le graphique des appels comme Eclipse. En relation :Générer un arbre d'appels à partir de la base de données cscope
Un conseil :j'adore vim, mais c'est trop compliqué pour moi de mettre en place ce genre de chose. Et il ne prend pas en compte les classes, par ex. en C++. Si un projet compte suffisamment pour vous, essayez de le faire fonctionner sur un "IDE". Cela peut impliquer des frais généraux si le projet ne suit pas les fichiers de configuration de l'IDE (qui sont des blobs à changement automatique qui polluent le dépôt...), mais cela en vaut la peine pour moi. Pour C / C++, mon préféré jusqu'à présent était KDevelop 4.
Pour cela, Vim s'intègre avec le cscope outil; voir :help cscope
pour plus d'informations.