2014-09-26 19 views
0

我使用vim和jedi-vim編輯一些python代碼。但是,我們使用的一些庫是C++共享庫,我們使用pybindgen生成了python綁定。使用jedi-vim時,我沒有得到任何類和方法的簽名,只是列出了它們。是否有可能獲得綁定到Python的C++庫jedi自動完成?

例如,在這個庫,https://github.com/jorisv/SpaceVecAlg如果我安裝庫並導入:

import spacevecalg as sva 

然後,sva.將正確顯示所有的一階函數和類。但是,如果我選擇第一個,則jedi不會向我建議任何類構造函數。

我想我必須以某種類定義導出到一種Python文檔,我想我可以使用doxygen的註解,但我不知道怎麼養活額外的文檔,以絕地(或任何其他完成引擎,例如IPython中內置的引擎)。

非常感謝!

回答

1

您無法向Jedi提供額外的文檔。但是,您可以按Jedi瞭解它的方式設置__doc__屬性。如果你使用與標準庫相同的方式定義調用簽名,我想它應該起作用。

作爲一個方面說明,我不得不提到的是Python 3.4+有定義文檔字符串的更好的方法。恕我直言,這是定義它的正確方法。我不知道究竟是如何做到這一點(但也有方法來使用它):

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

絕地不理解它,但它肯定會在未來。

+0

是否(或將)絕地瞭解'__annotations__'? – asmeurer 2014-09-26 17:16:38

+0

根據http://legacy.python.org/dev/peps/pep-0362/,您可以將'__signature__'設置爲其中一個'Signature'對象。 – asmeurer 2014-09-26 17:22:08

+0

Jedi不明白'__annotations__',但如果有需要的話,它可以在將來使用。 – 2014-09-27 16:16:44

相關問題