我正在使用 vim 和 jedi-vim 来编辑一些 python 代码。但是,我们使用的一些库是 C++ 共享库,我们使用 pybindgen 为其生成了 python 绑定(bind)。使用 jedi-vim 时,我没有获得任何类和方法的签名,只是它们的列表。
例如,在这个库中,https://github.com/jorisv/SpaceVecAlg如果我安装库并导入它:
import spacevecalg as sva
然后,sva.
将正确显示所有一阶函数和类。但是,如果我选择第一个,sva.ABInertia(
jedi 将不会向我推荐任何类构造函数。
我想我必须以某种方式将类定义导出到一种 python 文档中,我想我可以为此使用 doxygen 注释,但我不知道如何将额外的文档提供给 jedi(或任何其他完成引擎,例如内置于 IPython 中的引擎)。
非常感谢!
最佳答案
您不能向 Jedi 提供额外的文档。但是,您可以以 Jedi 理解的方式设置 __doc__
属性。如果您以与标准库相同的方式定义调用签名,我想它应该可以工作。
作为旁注,我必须提到在 Python 3.4+ 中有一种更好的定义文档字符串的方法。恕我直言,这是定义它的正确方法。我不确定具体该怎么做(但有一些方法可以使用它):
>>> inspect.signature(exit)
<inspect.Signature object at 0x7f2b5a05aa58>
>>> str(inspect.signature(exit))
'(code=None)'
Jedi现在还不懂,但以后肯定会。
关于python - 是否有可能为绑定(bind)到 python 的 C++ 库获取绝地自动完成功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26052450/