【问题标题】:Emacs Lisp: Open a new frame, start IPython, run previous bufferEmacs Lisp:打开一个新框架,启动 IPython,运行上一个缓冲区
【发布时间】:2011-08-16 08:53:12
【问题描述】:

我想编写一个 ELisp 函数以在新帧中启动 Python 解释器 (IPython),然后在 IPython 解释器中运行前一个缓冲区的内容。我正在使用 Emacs 23.3.1、python-mode 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)))

输出是:

  1. IPython 通过py-shell 成功启动。
  2. 框架中还有两个窗口,不是我想要的。
  3. 没有成功执行缓冲区,输出为:
在 [1] 中: execfile(r'/var/folders/so/sox1TODiEE0hAb6AVusYq++++Tc/-Tmp-/python-26368Zoi.py') # PYTHON-> MODE -------------------------------------------------- ------------------------- IO错误 Traceback(最近一次通话最后一次) /用户/本/ 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 emacs elisp ipython


    【解决方案1】:

    不确定该 python 输出,但在 elisp 代码中,您没有将 my-buffer-name 设置为任何内容(它将为零)。应该是:

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

    【讨论】:

    • 谢谢。它现在有点工作。第一次调用 python-run 时,当它尝试执行 py-execute-buffer 时失败,但下一次它可以工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多