2017-07-07 42 views
0

我正在使用exuberant-ctags为我的django项目生成标签。在许多地方我使用关键字参数来调用函数和类。如何配置exuberant-ctags来忽略python关键字参数?

$ 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 docs,但我找不到任何看起来很明显的东西。

ctags中是否有一些内置的功能可以使用?或者我将不得不通过类似awk的标签文件来过滤出错误匹配?

回答

1

好像在ctags结束一个错误,按照这个PR:https://github.com/universal-ctags/ctags/pull/767

确保ctags的是最新的,因为修补程序现已合并。由于拉请求涉及多行kwargs声明,因此可以认为将它们全部放在同一行将会“修复”问题(但很可能会使您的代码破坏PEP8的建议)。

+0

谢谢。我已经看过universal-ctags,但我还没有切换到它,因为它看起来比exuberant-ctags更加流血,我必须自己构建它。如果没有简单的解决方案,我可能不得不重新考虑。 –

+1

你应该能够通过将它们全部放在一行上来防止这个问题,但这可能会让你的linter非常不高兴 –

+0

这会让我的代码更难以阅读和维护。不值得。我正在考虑剥离与生成的'tags'文件中尾随的'''字符的匹配。但是,这将是非常黑客,并且不是100%正确。 –