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

时间:2017-03-26 18:44:26

标签: python emacs eval elpy

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

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

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

我正在运行Emacs 25.1.1和elpy 1.13.0。

2 个答案:

答案 0 :(得分:1)

这将取决于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))))

答案 1 :(得分:0)

elpy-shell-send-statement来自Emacs Python Development Environment