使用emacs可以使Python etags更聪明吗?

Rya*_*kel 7 python tags django emacs

我使用emacs处理我的Django项目.在我的virtualenv"postactivate"脚本中,我有以下简单命令:

find -L . -type f -name "*.py" | xargs etags -e > /dev/null 2>&1 &
Run Code Online (Sandbox Code Playgroud)

TAGS文件生成得很好,但系统似乎相当愚蠢.当光标是模型过滤器调用时,例如

MyModel.objects.filter(...)
Run Code Online (Sandbox Code Playgroud)

我点击M-.,有时emacs会把我放在文件发布时导入MyModel的位置(实际的import语句).我只想访问类,方法和函数定义.

有没有办法让etags变得更聪明?

谢谢Ryan Kaskel

pyg*_*iel 3

使用像 python 这样的语言进行正确的模块分析非常困难,由于其动态特性,获得正确信息的最佳方法是进行静态分析或启发式分析。

目前我发现的最好的方法是使用 Ropemacs 扩展探索方法,该扩展具有代码辅助(相当智能)和调用提示等强大功能。

不幸的是,使用 Ropemacs 并不容易,您应该首先安装 pymacs,然后配置安装各种 Rope 库。(我正在开发它的打包版本

另一个可以静态分析你的 python 代码并生成“更智能的标签”的包类似于pysmell,但我没有广泛使用它