我正在寻找一种可能性,为gtk 3库添加自动完成到vim。我已经尝试了vim-jedi,因为它似乎是最先进的自动完成机制,为vim和python(也建议here),但这并不工作的gtk 3的东西是从gi.仓库导入
from gi.repository import Gtk, GdkPixbuf, Gdk, GObject
我看了一下gi.repository的站点包,之后我并不惊讶jedi不能对Gtk模块的方法进行内部分析,因为这些模块是用很多魔法生成的;- )
此外,其他“真正的”IDE,如PyCharm也不支持以这种方式导入的模块的完成(我尝试了社区版,但我敢打赌专业版也不支持)。
有人知道如何将自动补全添加到Vim(首选解决方案)或其他编辑器/IDE吗?
GObject,Gtk模块包含了很多方法/类,要记住所有你需要的东西并不容易。此外,似乎只有gtk 3的C api的文档,其中的方法名称并不总是和python api中的相同。
3条答案
按热度按时间wgxvkvu91#
Neocomplcache/Neocomplete能够完成自检的GObject库 * 但是 * 如果您没有针对GTK+ 3自己编译Vim,则很可能会崩溃。在Ubuntu 14.04上,Vim是针对GTK+ 2编译的,尝试导入和自动完成GTK+ 3库将失败,因为两个工具包不能同时运行。
v09wglhw2#
Jedi和PyCharm都支持PEP 484.pyi类型存根。您可以使用PyGObject-stubs库将PyGObject的这些类型注解存根添加到您的编辑器:
Jedi和PyCharm都应该自动拾取它们。
bgibtngc3#
我最近发现了一个使用fakegir的解决方案。它根据gir文件中的信息构建一个假的Python包(例如:
/usr/share/gir-1.0/*.gir
)。这可以为您的LSP提供Gtk自动完成。他们的指示很简单:
./fakegir.py
生成伪包到~/.cache/fakegir/
mkvirtualenv fakegir
或类似)cdvirtualenv fakegir
)./lib/python*/site-packages
目录cp -a ~/.cache/fakegir/gi .
virtualenv必须在vim中编辑你的程序之前被激活。假包也必须在你安装新的gir文件或升级时被重新生成。我在neovim v0. 8. 0-dev中用python-lsp-server(pylsp)测试了这个,并怀疑它会在其他语言服务器上工作。
我还遇到了
mypy
提供的stubgen工具,它可能对在其他情况下生成类型提示/签名很有用。