python - Emacs Python 模式中类似 bpython 的自动完成和参数描述?

标签 python emacs bpython

我一直在使用 bpython暂时满足我所有的 Python 解释需求。这是令人愉快的,尤其是当您使用不熟悉的新库或具有多种功能的库时。无论如何,有一个 bpython 解释器与我正在做的事情一起运行是很好的,但如果我同时拥有类似自动完成的功能和 bpython 所做的参数描述,那就更好了 while 我正在 Emacs 中编辑代码。我完全疯了吗?有没有人知道如何做到这一点?

谢谢, 布拉德利鲍尔斯

最佳答案

你还没有完全疯掉。

python-mode可以与 eldoc-mode 集成显示您正在调用的函数的参数规范。就做 M-x eldoc-mode当你在 python 文件中打开它时,它应该开始工作了。它与劣质 python 缓冲区对话以直接检查函数,因此它应该始终相当准确。您可以为所有新的 python-mode 自动打开它缓冲区 (add-hook 'python-mode-hook '(lambda () (eldoc-mode 1)) t)在您的 emacs 启动文件中。现在,在这一点上我不得不说我不做任何常规的 python 编程,而且当我刚才尝试时它没有工作。我花了几分钟查看源代码,一切似乎都已到位,但它在劣质进程中运行的代码只是返回一个空字符串。也许这只是我的设置,或者我正在阅读错误的源文件;很难说。

Emacs 提供了几种不同类型的扩展/自动完成。默认情况下,您可以访问 dabbrev-expand通过点击 M-/ .这是一种相当简单的完成形式;它只是为了处理您碰巧编辑的任何旧文件。更复杂的是 hippie-expand ,但即使这样也没有做任何特定于 python 的事情。文档说它可以与 hippie-expand 集成精确完成,但这可能是个谎言;我不知道它是如何工作的。稍微浏览一下就会发现几个相关的解决方案,所有这些似乎都依赖于 pymacs .如果我要进行大量 python 编程并且还没有设置相当复杂的 emacs,我可能会先安装 emacs-for-python .它看起来是一个非常完整的设置,甚至声称具有实时警告/错误检测。

本着助人为乐的精神,我想指出我是如何获得所有这些信息的。我的第一步是在 python-mode 中打开一个文件.我实际上没有任何可用的 python 代码,所以我只是转到我的临时缓冲区并将其设为 python 缓冲区 ( M-x python-mode )。然后我就这个奇怪的新模式 ( C-h m ) 寻求帮助,看看它能做什么。它的作者对提到的模式可以做什么做了一个简短的总结 eldoc-mode , 菜单, outline-mode , hippie-expand , rlcompleter, abbrev tables, 和一堆其他的东西。从那里我开始查看源代码。例如,为了与 eldoc-mode 集成,它定义了一个名为 python-eldoc-function 的函数。并将其提供给 eldoc 模块以用于 python 缓冲区。阅读该代码向我展示了它如何与劣质缓冲区等交互。

我希望这对您有所帮助。

关于python - Emacs Python 模式中类似 bpython 的自动完成和参数描述?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7602169/

相关文章:

python - 使用 pandas.interpolate()

python - 如何遍历文件中的每第 n 行?

emacs - org-mode 不喜欢 c++-mode

emacs - 在新的 Emacs 24.3 中调整术语面

python - sys.stdout 在 bpython 中没有刷新属性

python - 使用 (V1) python SDK API 训练 Watson Discovery 不起作用

python - tkinter:如何制作不使用 winico 的系统托盘应用程序?

emacs - Org-mode 在导出期间获取 src block 的内容

python - 如何使用 Python 在 Blender 2.49 中设置世界背景纹理?

python - iPython 中的 Pydocs 类似于 bpython