Comint-Mode是否有类似eval-print-last-sexp的功能?

Is there a function like eval-print-last-sexp for Comint-Mode?

对于 emacs 中的 comint 派生模式,是否有与 eval-print-last-sexp 等效的函数?

具体来说,我正在使用 python-mode(与 elpy),我正在寻找一种方法将区域的内容发送到 Python 进程,然后将结果打印到我正在使用的 python 脚本的下一行。

将结果打印到 Messages 缓冲区也是可以接受的,但是最好使用 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 Development Environment.