是否可以获得绑定到python的C ++库的jedi自动完成功能?

时间:2014-09-26 05:10:24

标签: python c++ binding python-jedi pybindgen

我正在使用vim和jedi-vim来编辑一些python代码。但是,我们使用的一些库是C ++共享库,我们使用pybindgen为其生成python绑定。当使用jedi-vim时,我没有获得任何类和方法的签名,只是它们的列表。

例如,在此库中https://github.com/jorisv/SpaceVecAlg如果我安装了库并导入它:

import spacevecalg as sva

然后,sva.将正确显示所有一阶函数和类。但是,如果我选择第一个,sva.ABInertia( jedi将不会建议我任何类构造函数。

我想我必须以某种方式将类定义导出到一种python文档,我想我可以使用doxygen注释,但我不知道如何将这些额外的文档提供给jedi(或任何其他完成引擎,例如内置于IPython中的引擎。)

非常感谢!

1 个答案:

答案 0 :(得分:2)

您无法向Jedi提供额外的文档。但是,您可以按照Jedi理解的方式设置__doc__属性。如果您以与标准库相同的方式定义呼叫签名,我想它应该可以工作。

作为旁注,我不得不提到在Python 3.4+中,有一种更好的定义文档字符串的方法。恕我直言,这是定义它的正确方法。我不知道该怎么做(但有办法使用它):

>>> inspect.signature(exit)
<inspect.Signature object at 0x7f2b5a05aa58>
>>> str(inspect.signature(exit))
'(code=None)'

Jedi还没有理解它,但它肯定会在将来发生。