我一直在使用 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/