在 emacs 中,对于 comint 派生模式,是否有与 eval-print-last-sexp 等效的功能?
具体来说,我正在使用 python-mode(使用 elpy)并且正在寻找一种方法将区域的内容发送到 Python 进程,然后在我正在使用的 python 脚本的下一行打印结果。
将结果打印到消息缓冲区也是可以接受的,但是 eval-print-last-sexp 的行为将是首选。
我正在运行 Emacs 25.1.1 和 elpy 1.13.0。
这将取决于 comint 派生模式,因为您需要重定向进程输出。不同的模式有不同的方法与劣质进程进行交互。Python 模式已经有一个功能可以做到这一点,python-shell-send-string-no-output
(其他模式也有类似的功能,但您需要搜索它们)。
我不确定你想如何为 python 定义一个 sexp,但这里有一个发送当前行的示例,输出类似于eval-print-last-sexp
.
(defun python-eval-print-last-sexp ()
"Print result of evaluating current line into current buffer."
(interactive)
(let ((res (python-shell-send-string-no-output
;; modify to get a different sexp
(buffer-substring (line-beginning-position)
(line-end-position))))
(standard-output (current-buffer)))
(when res
(terpri)
(princ res)
(terpri))))
elpy-shell-send-statement
来自Emacs Python 开发环境。