9

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

谢谢,布拉德利鲍尔斯

4

1 回答 1

10

你并不完全疯了。

python-mode可以集成eldoc-mode以显示您正在调用的函数的 arg 规范。只需M-x eldoc-mode在 python 文件中打开它,它就会开始工作。它与劣质的 python 缓冲区对话以直接检查函数,因此它应该始终准确无误。您可以在 emacs 启动文件中为所有新python-mode缓冲区自动打开它。(add-hook 'python-mode-hook '(lambda () (eldoc-mode 1)) t)现在,在这一点上我不得不说我没有做任何常规的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、 Imenu、outline-modehippie-expand、 rlcompleter 、 abbrev tables 和一堆其他东西。从那里我开始查看源代码。例如,为了与 eldoc-mode 集成,它定义了一个名为python-eldoc-function并将其提供给 eldoc 模块以在 python 缓冲区中使用。阅读该代码向我展示了它如何与劣质缓冲区等交互。

我希望这会有所帮助。

于 2011-10-03T10:17:02.210 回答