如何为PyDev生成大量PyObjC的预定义完成?

时间:2013-03-11 04:19:58

标签: pydev pyobjc

当我使用PyObjC时,带有PyDev的Eclipse没有向我显示正确的代码完成。 我用Google搜索了这个问题,并在this article中找到了原因。 这篇文章说PyDev无法读取bridge-support文件中的信息,这就是造成这个问题的原因。

我知道可以通过编写预定义的完成来解决这个问题。 但PyObjC中有大量的类/方法。 例如,AppKit模块本身包含 230393 类,AppKit.NSWindow包含 26991 方法。 (我在PyDev中使用interpreterinfo.pypycompletion.py来计算它们

有没有通用的方法来生成PyDev的许多pledefined完成脚本? 或者,当我使用PyObjC时,有没有办法正确完成?


添加于2013/03/12 07:56(JST)

我将objcFoundationAppKitCocoa等添加到PyDev的Force Builtin。 现在PyDev向我展示了比以前更多的建议。 但是PyDev在PyObjC的类中找不到alloc()方法。 在一般情况下,我们初始化NSWindow如下:

from Foundation import *
from AppKit import *
    :
    :
window = NSWindow.alloc().initWithContentRect_styleMask_backing_defer_(
        rect,
        style_mask,
        backing,
        flag)

因此,在输入alloc()后,我希望window = NSWindow.作为完成候选人。

第一个问题是PyDev(以及像PyCharm这样的其他IDE)在任何pyobjc的类上都找不到alloc方法。我试图通过使用交互式shell找到alloc方法,但我也找不到它。

第二个问题是第一个问题的结果,当我创建NSWindow的实例(或PyObjC中的任何一个)时,PyDev无法分析变量的类型。 因此,在我输入initWithContentRect_styleMask_backing_defer_后,PyDev无法建议window = NSWindow.alloc().

如果您知道解决问题的方法,请告诉我。

1 个答案:

答案 0 :(得分:1)

解析bridgesupport文件不是一个解决方案,它们只包含PyObjC公开的方法和类定义的一小部分(大多数信息都是从Objective-C运行时提取的)。

我自己不使用PyDev并且不知道它用于完成的文件格式,使用dir()中的所有类objc.getClassList()创建这些文件可能很容易。< / p>

显然,一种解决方法是告诉PyDev将您用作内置模块的PyObjC模块视为:PyDev FAQ