处理universal-ctags、python内置函数和诗歌

问题描述 投票:0回答:2

我正在使用universal-ctags 在我的项目中定义的对象之间导航,它工作得很好。然而,我正在努力寻找如何将 python 内置对象和包依赖项包含到 universal-ctags 的范围中。最重要的是,我使用诗歌(不是我的选择),它将依赖项定位到项目目录之外的其他位置。 (如果我的项目是

.
,相关的python依赖是
../../../.cache/pypoetry/....

否则,我希望 在我针对自定义 python 对象、python 内置(

join
choice
lru_cache
等)、依赖对象(
Model
)时适用于每种情况。来自 Django,
ViewSet
来自 DRF 等...)

有什么方法可以指定 universal-ctags 来获取所有这些附加引用吗?

谢谢!

我认为存在一个选项可以添加路径以包含其他内容以供查看,但我没有找到任何相关内容。

我在 Debian 11 上使用 universal-ctags、vim

python vim ctags universal-ctags
2个回答
1
投票

您可以缝合一条单线来为您完成此操作。

正如 romainl 所评论的,您可以传递多个路径来生成单个标签文件。这就是答案。不过,我们可以添加一些绒毛。

Python 标准库模块可以在

sys.path
中找到,例如
/usr/lib/python3.9
在我的 Debian 盒子上。我认为这种情况很少改变(仅当您升级 Python 安装时)。自动化这个似乎不值得。

Poetry的virtualenv比较不稳定,所以应该自动找到路径。根据this诗歌问题中的信息,您可以通过

poetry show -v
获取virtualenv的路径(以及一些我们不关心的输出)。

用一点bash胶将其放在一起,我们得到以下一行:

ctags -R . /usr/lib/python3.9 $(poetry show -v | head -n1 | cut -d':' -f2)

您可能希望将其转换为 shell 脚本并附加

"$@"
以传递其他选项。


1
投票

为了扩展Friedrich的答案,Poetry中有一种方法可以使用

poetry env info --path
直接获取虚拟环境的路径。所以命令就变成了:

ctags -R . $(poetry env info --path)

我认为没有必要添加Python解释器,因为这也是Poetry虚拟环境的一部分。

© www.soinside.com 2019 - 2024. All rights reserved.