我一直在使用bpython来满足我所有的 Python 解释需求。这很令人愉快,尤其是当您使用不熟悉的新库或具有多种功能的库时。在任何情况下,让 bpython 解释器与我正在做的事情一起运行是很好的,但如果我同时拥有类似自动完成的功能和 bpython在我工作时所做的方式的参数描述,那就更好了在 Emacs 中编辑代码。我完全疯了吗?有谁知道如何做到这一点?
谢谢,布拉德利鲍尔斯
你并不完全疯了。
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-mode
、hippie-expand
、 rlcompleter 、 abbrev tables 和一堆其他东西。从那里我开始查看源代码。例如,为了与 eldoc-mode 集成,它定义了一个名为python-eldoc-function
并将其提供给 eldoc 模块以在 python 缓冲区中使用。阅读该代码向我展示了它如何与劣质缓冲区等交互。
我希望这会有所帮助。