2017-07-07 2 views
0

J'utilise exuberant-ctags pour générer des tags pour mon projet django. Dans de nombreux endroits, j'appelle des fonctions et des classes en utilisant des arguments de mots-clés. Mais lorsque ctag analyse ces fichiers, ctag les arguments sont classés comme des déclarations de variables. Cela pollue mes fichiers de balises avec un grand nombre de fausses balises.Comment est-ce que je peux configurer exuberant-ctags pour ignorer des arguments de mot-clé de python?

$ ctags -x models.py 
Foo    class   3 models.py  class Foo(models.Model): 
bar    variable  5 models.py  bar = models.CharField(
help_text  variable  6 models.py  help_text='The very important "bar" field', 
max_length  variable  8 models.py  max_length=100, 
unique   variable  7 models.py  unique=True, 

J'ai lu le ctags docs, mais je ne pouvais pas trouver quelque chose qui semblait évidemment pertinent.

Y at-il une fonctionnalité intégrée dans ctags que je pourrais utiliser? Ou vais-je devoir canaliser le fichier de balise à travers quelque chose comme awk pour filtrer les fausses correspondances?

Répondre

1

Il semble comme un bug sur la fin ctags, selon ce PR: https://github.com/universal-ctags/ctags/pull/767

Assurez-vous que ctags est à jour, puisque le correctif est maintenant fusionné. Puisque la requête de tirage concerne la déclaration kwargs sur plusieurs lignes, on peut supposer que les mettre tous sur la même ligne «corrigera» le problème (mais fera très probablement que votre code ne respecte pas les recommandations PEP8).

+0

Merci. J'ai regardé universal-ctags, mais je n'y suis pas encore passé, car il semble plus émouvant que exuberant-ctags, et je devrais le construire moi-même. Je pourrais devoir reconsidérer s'il n'y a pas de solution plus simple à ceci. –

+1

Vous devriez être en mesure d'éviter le problème en les mettant tous sur une ligne, mais cela rendra probablement votre linter très malheureux –

+0

Cela rendrait mon code plus difficile à lire et à maintenir. Ça ne vaut pas le coup. J'envisage juste de supprimer toute correspondance avec un caractère ',' final dans le fichier 'tags' généré. Mais ce serait assez hacky, et pas 100% correct non plus. –