Emacs Lisp:打开新帧,启动IPython,运行上一个缓冲区

Emacs Lisp:打开新帧,启动IPython,运行上一个缓冲区,python,emacs,elisp,ipython,Python,Emacs,Elisp,Ipython,我想编写一个ELisp函数,在新帧中启动Python解释器(IPython),然后在IPython解释器中运行上一个缓冲区的内容。我使用的是Emacs 23.3.1、python模式6.0和ipython.el 到目前为止,我的功能如下: (defun python-run () "Use to run Python programs." (interactive) (let (my-buffer-name buffer-name) (select-frame (make-f

我想编写一个ELisp函数,在新帧中启动Python解释器(IPython),然后在IPython解释器中运行上一个缓冲区的内容。我使用的是Emacs 23.3.1、python模式6.0和ipython.el

到目前为止,我的功能如下:

(defun python-run ()
  "Use to run Python programs."
  (interactive)
  (let (my-buffer-name buffer-name)
    (select-frame (make-frame))
    (set-frame-size (selected-frame) 90 60)
    (py-shell)
    (delete-other-windows)
    (switch-to-buffer my-buffer-name)
    (py-execute-buffer)))
结果是:

  • IPython通过
    py shell
    成功启动
  • 框架中还有两个窗口,不是我想要的
  • 未成功执行缓冲区,输出为:
  • 在[1]中:execfile(r'/var/folders/so/sox1TODiEE0hAb6AVusYq+++++Tc/-Tmp-/python-26368Zoi.py')#python->MODE --------------------------------------------------------------------------- IOError 回溯(最近一次呼叫最后一次) /用户/ben/in() ---->1个execfile(r'/var/folders/so/sox1TODiEE0hAb6AVusYq+++Tc/-Tmp-/python-26368Zoi.py')#python->MODE IOError:[Errno 2]没有这样的文件或目录:'/var/folders/so/sox1TODiEE0hAb6AVusYq+++Tc/-Tmp->/python-26368Zoi.py' 在[2]中:##在/var/folders/so/sox1TODiEE0hAb6AVusYq+++++Tc/-Tmp-/python->26368fXv.py文件中处理区域。。。 execfile(r'/var/folders/so/sox1TODiEE0hAb6AVusYq+++Tc/-Tmp-/python-26368fXv.py')#python-MODE 文件“/var/folders/so/sox1TODiEE0hAb6AVusYq+++++Tc/-Tmp-/python-26368fXv.py”,第1行 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ^ SyntaxError:无效语法
    关于如何执行单个窗口或缓冲区,您有什么想法吗?谢谢

    不确定python输出,但在elisp代码中,您没有将我的缓冲区名称设置为任何名称(将为nil)。应该是:

    (let ((my-buffer-name (buffer-name))
       ....
    

    谢谢你。它现在可以工作了。第一次调用python运行时,当它尝试执行py execute buffer时失败,但下一次它工作时失败。
    (let ((my-buffer-name (buffer-name))
       ....