2017-07-07 39 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%正確。 –