【发布时间】:2018-03-14 20:08:28
【问题描述】:
在内置 python 模式下,C-M-x,又名python-shell-send-defun 中似乎有一个非常重要的错误
- 启动emacs
- 创建一个新文件,我们称之为
test.py -
C-c C-p到run-python -
在
test.py缓冲区中,键入一些简单的函数,例如def f(x): return x+1 C-M-x为python-shell-send-defun
我们得到:
return x+1
SyntaxError: 'return' outside function
所以这里发生的事情是python-shell-send-defun 只发送一行,而不是我们期望的两行(例如,emacs lisp 主要模式中的相应命令在光标之前发送整个多行 defun 时正常工作)。这里发生了什么?我在 Mac OS 中的 emacs 25 gui 版本和 Ubuntu 中的 emacs 24 中都对此进行了测试。两者都显示相同的错误。
这是一个错误,还是我误解了 python-shell-send-defun 的实际作用?
更新:经过一些进一步的测试,这个错误似乎只发生在从第一行开始的函数上。如果我们在def f(x): 正上方插入一个空行,C-M-x 就可以完美运行。
【问题讨论】: