2

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

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

将结果打印到消息缓冲区也是可以接受的,但是 eval-print-last-sexp 的行为将是首选。

我正在运行 Emacs 25.1.1 和 elpy 1.13.0。

4

2 回答 2

2

这将取决于 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))))
于 2017-03-27T22:48:37.507 回答
0

elpy-shell-send-statement来自Emacs Python 开发环境

于 2020-01-10T13:35:10.243 回答