2017-10-14 1 views
0

Ich bemerkte, dass meine Ctags meinen Bildschirm mit möglichen Ergebnissen einer Definition überschwemmen, wenn der Funktionsname, nach dem ich suche, etwas ist, das allgemein so heißt wie write. Um dies näher auszuführen:Ctags: Suche nach einem gemeinsamen Funktionsnamen

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

Aufruf ctags auf write (Ctrl +]) liefert viele Ergebnisse, wenn die einzige write ich interessiert bin von tornado.web.RequestHandler sein sollte.

ich so etwas wie die folgenden, wo diesmal nur das Top-Ergebnis ist das Ergebnis ich suche:

# 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 

Wie kann ich die Abfrage, die nicht manuell beschneiden der ctags Ausschlussliste isolieren von Verzeichnisse? Auch wenn ich die folgenden hinzufügen, kann es mehr Ergebnisse in einer großen Repo sein, für self.write:

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

Antwort

0

Ctags selbst enthält bereits, dass Informationen (Sie class:RequestHandler-Tag in der vierten Folge sehen).

Das Problem ist im Editor Ebene: um ctags zu sagen, dass es für die Instanz in RequestHandler sucht, würde vim in der Lage sein, die Datei, die Sie in sind, zu analysieren, zu bestimmen, dass self ein tornado.web.RequestHandler ist, und dann passieren das in die ctags lookup. Vim kann das nicht, und soweit ich weiß, gibt es keine Plugins, die diese Fähigkeit hinzufügen, außer über Dinge wie eclim, die überhaupt keine Ctags mehr benutzen.