Sublime Text的构建自动化Python自动完成

5
有没有什么技巧可以使Sublime Text的Python代码自动补全功能认识buildout [eggs]部分中的所有Python包呢?
例如,获取与Plone生成的bin /instance命令相同的sys.path,并将它们暴露给Sublime的自动完成。这样做后,您就可以轻松地自动完成导入和其他操作。
最好的解决方案是:
  • 由buildout生成特殊的bin/sublime命令

  • 该命令将以Sublime Text(项目?)形式打开src/文件夹,并设置所有必要的环境变量等

欢迎提出其他解决方案/想法。
4个回答

6

请查看http://pypi.python.org/pypi/corneti.recipes.codeintel/0.1.3

这比Martin的解决方案更容易,我将其与omelette一起使用,并在我的development.cfg构建中添加了这样一部分。

[codeintel]
recipe = corneti.recipes.codeintel
eggs = ${buildout:eggs}
extra-paths =
    ${omelette:location}

我想在src/下生成.codeintel,以便Sublime文件浏览器只看到相关的文件...也就是你正在编辑的src/。但是,如果omelette不在项目路径中,CMD + P似乎无法正常工作。我将研究此事。 - Mikko Ohtamaa
1
该配方已经更新至0.2.0版本,并进行了一些增强,详情请见:https://github.com/fabiocorneti/corneti.recipes.codeintel - Mikko Ohtamaa

4

顺便提一下,我对ST2的SublimeRope插件在Python自动完成方面有非常好的经验。 - Armando Pérez Marqués

1

对于那些想要使用SublimeRope的人,你可以在.ropeproject/config.py中添加类似以下内容:

import os
import glob
for path in glob.glob(os.path.join(os.path.dirname(__file__), '../../buildout-cache/eggs/*.egg')):
    prefs.add('python_path', path)

这些构建方法相当花哨啊!


1
这是另一个构建配方plone.recipe.sublimetext,支持SublimeText 3和最好的自动完成插件SublimeJEDI,以及SublimeLinter(flake8, pylint)。
此配方将创建一个特定于构建的sublime项目文件,其中包括所有路径(即Jedi的所有蛋路径)。简单的用例可能是:
[buildout]
eggs =
# All eggs here
parts = 
    sublimetext
#   other parts here
[sublimetext]
recipe = plone.recipe.sublimetext
eggs = ${buildout:eggs}
jedi-enabled = True
sublimelinter-enabled = True
sublimelinter-flake8-enabled = True

即将推出新版本,使得可以将煎蛋卷作为Jedi自动补全和跳转到定义的基础。 - sunew

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接