2017-10-14 3 views
0

j'ai remarqué mes ctags inonde mon écran avec des résultats potentiels d'une définition si le nom de la fonction que je suis à la recherche est quelque chose communément appelé comme la write. Pour élaborer:Ctags: trouver un nom de fonction commune

class SunsetHandler(tornado.web.RequestHandler): 
    def on_response(self, response): 
     if response.error: 
      self.write(response.error) 

Appel ctags sur write (Ctrl +]) retourne de résultats, alors que la seule write je suis intéressé devrait être de tornado.web.RequestHandler.

je reçois quelque chose comme ce qui suit, où cette fois que le meilleur résultat est le résultat que je cherche:

# pri kind tag    file 
    1 F m write    env/lib/python2.7/site-packages/tornado/wsgi.py 
       language:Python class:_WSGIConnection 
       def write(self, chunk, callback=None): 
    2 F m write    env/lib/python2.7/site-packages/tornado/httputil.py 
       language:Python class:HTTPServerRequest 
       def write(self, chunk, callback=None): 
    3 F m write    env/lib/python2.7/site-packages/tornado/httputil.py 
       language:Python class:HTTPConnection 
       def write(self, chunk, callback=None): 
    4 F m write    env/lib/python2.7/site-packages/tornado/web.py 
       language:Python class:RequestHandler 
       def write(self, chunk): 
    5 F m write    env/lib/python2.7/site-packages/tornado/iostream.py 
       language:Python class:BaseIOStream 
       def write(self, data, callback=None): 
    6 F m write    env/lib/python2.7/site-packages/tornado/http1connection.py 
       language:Python class:HTTP1Connection 
       def write(self, chunk, callback=None): 
    7  v WRITE    env/lib/python2.7/site-packages/tornado/ioloop.py 
       language:Python class:IOLoop 
       WRITE = _EPOLLOUT 

Comment puis-je isoler la requête, autre que la taille manuellement la liste d'exclusion ctags de répertoires? Même si j'ajoute ce qui suit, il peut y avoir plusieurs résultats dans une grande pension, pour self.write:

ctags -R --fields=+l --languages=python --python-kinds=-iv -f ./tags --exclude='env' env/lib/python2.7/site-packages/tornado/*

Répondre

0

Ctags lui-même contient déjà ces informations (vous pouvez voir la balise class:RequestHandler dans le 4ème résultat).

Le problème est au niveau de l'éditeur: pour dire ctags qu'il cherche l'instance dans RequestHandler, vim devrait être en mesure d'analyser le fichier que vous êtes, déterminer que self est un tornado.web.RequestHandler, et ensuite passer que dans la recherche ctags. Vim ne peut pas le faire, et pour autant que je sache, il n'y a pas de plugins pour ajouter cette capacité, sauf par des choses comme eclim qui n'utilisent pas ctags plus du tout.