Question mettre à jour cscope db de vim


J'utilise cscope avec vim. Lorsque vous effectuez des modifications importantes pour plusieurs fichiers, cscope signalera les anciens numéros de ligne pour les fichiers modifiés. Comment puis-je reconstruire cscope db à partir de vim sans perdre

  • onglets / fenêtres ouverts dans vim
  • connexion avec moteur cscope

Merci


20
2018-04-30 10:59


origine


Réponses:


Tout d'abord, vous devez mettre à jour la base de données cscope.

:!cscope -Rbq

Ensuite, réinstallez la base de données à partir de vim.

:cs reset

25
2017-08-04 06:19



En vous appuyant sur une réponse précédente, ajoutez ceci à votre fichier .vimrc:

map <F5> :!cscope -Rb<CR>:cs reset<CR><CR>                                      

Ensuite, utilisez F5 dans vim pour effectuer le rafraîchissement.

-b = Construire une référence croisée uniquement. -R = Recurse sous-répertoires lors de la recherche de fichiers source.


6
2017-09-24 14:06



J'utilise un script qui continue à construire mes index en arrière-plan:

" We need to setup the function that reset cscope.
"You could define this in your vimrc instead.
vim --servername GVIM --remote-send ":function! ResetCscope()<CR>cscope reset<CR>endfunction<CR>"

while true ; do
    echo building...

    ctags -R
    cscope -Rbk
    vim --servername VIM --remote-expr "ResetCscope()"

    echo done. sleeping.
    sleep 1m
done

(C'est en fait beaucoup plus compliqué que ça.)

L’appel vim devrait recharger la base de données cscope dans vim si vous l’avez démarré avec vim --servername VIM. (J'utilise un commande de fond pour exécuter des requêtes cscope, je ne suis pas sûr de cela. La commande lance cscope indépendamment et n'utilise pas la connexion de Vim.)


2
2017-08-31 17:36



cscope_dynamic

cscope_dynamic fait tout ce que vous demandez, et même plus:

  • charge automatiquement la base de données lorsque vous ouvrez vim.
  • charge la base de données locale cscope si elle existe, au lieu de la base globale.
  • gère gracieusement la connexion
  • enregistre automatiquement les modifications apportées à la base de données
  • il est beaucoup plus rapide, en particulier lorsque vous travaillez avec une grande base de sources

Comment ça va plus vite?

Il utilise deux bases de données:

  • petite base de données: il est mis à jour fréquemment, avec de petites modifications, il est donc très rapide
  • grande base de données: Il est mis à jour moins fréquemment en fusionnant la petite base de données dans celle-ci.

Modifier: 17 février: Supprimé l'ancienne réponse car cscope_dynamic fait tout cela hors de la boîte.


2
2017-07-07 21:23



Je l'ai essayé récemment dans gVim 8.0 sous Windows, mais même après la réinitialisation de cs, vim bloquait cscope.out donc cs ne pouvait pas régénérer cscope.out avec vim open.

Dans ce cas, j'ai ajouté le mappage supplémentaire suivant (F12 dans e.g) qui tue la connexion cscope actuelle, donc cscope peut régénérer le cscope.out avec F11, sans avoir à fermer le vim. J'espère que cela aide quelqu'un.

map <F11> :!cscope -Rbq<CR><ESC>:cs add cscope.out<CR><CR> 
map <F12> :cs kill cscope.out<CR><CR>

1
2018-05-22 22:58



Basé sur les réponses précédentes, c'est ce que vous faites lorsque votre répertoire actuel n'est pas le même que celui dans lequel se trouve votre fichier cscope.out:

map <F5> :!cd /your/cscope.out/dir/ && cscope -bk<CR>:cs reset<CR><CR>

0
2017-10-09 05:42