Как я могу настроить exuberant-ctags для игнорирования аргументов ключевого слова python?

Я использую exuberant-ctags для создания тегов для моего проекта django. Во многих местах я вызываю функции и классы, используя аргументы ключевого слова.

$ cat models.py
from django.db import models

class Foo(models.Model):

    bar = models.CharField(
        help_text='The very important "bar" field',
        unique=True,
        max_length=100,
    )

Но когда ctag анализирует эти файлы, аргументы ключевого слова классифицируются как объявления переменных. Это загрязняет мои файлы тегов большим количеством ложных тегов.

$ 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,

Я прочитал документацию по ctags, но не смог найти ничего, что могло бы показаться очевидным.

Есть ли какие-то встроенные функции в ctags, которые я мог бы использовать? Или мне придется передать файл тега через что-то вроде awk, чтобы отфильтровать ложные совпадения?


person Håken Lid    schedule 07.07.2017    source источник


Ответы (1)


Похоже на ошибку на ctags конце, согласно этому PR: https://github.com/universal-ctags/ctags/pull/767

Убедитесь, что ctags обновлен, так как исправление теперь объединено.

Поскольку запрос на вытягивание касается многострочного объявления kwargs, можно предположить, что размещение их всех в одной строке «исправит» проблему (но, скорее всего, ваш код нарушит рекомендации PEP8).

person Anthony Rossi    schedule 07.07.2017
comment
Спасибо. Я смотрел на universal-ctags, но еще не переключился на него, так как он выглядит более передовым, чем exuberant-ctags, и мне пришлось бы создавать его самому. Возможно, мне придется пересмотреть свое решение, если нет более простого решения. - person Håken Lid; 07.07.2017
comment
Вы должны быть в состоянии предотвратить проблему, поместив их все в одну строку, но это, вероятно, сделает ваш линтер очень недовольным. - person Anthony Rossi; 07.07.2017
comment
Это затруднило бы чтение и поддержку моего кода. Не стоит. Я подумываю просто удалить любое совпадение с завершающим символом , из сгенерированного файла tags. Но это было бы довольно хакерски и не на 100% правильно. - person Håken Lid; 07.07.2017
comment
В порядке ! Просто обратите внимание, что universal-ctags на самом деле не новый проект, это просто ответвление exuberant-ctags после того, как его разработка была остановлена, так что все должно быть в порядке! - person Anthony Rossi; 07.07.2017