2011-08-16 124 views
1

我想編寫一個ELisp函數在新框架中啓動Python解釋器(IPython),然後在IPython解釋器中運行前一個緩衝區的內容。我使用Emacs 23.3.1,python-mode 6.0和ipython.el。Emacs Lisp:打開一個新框架,啓動IPython,運行以前的緩衝區

這裏是我的功能至今:

(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. 它不會成功執行緩衝,輸出爲:
 
In [1]: execfile(r'/var/folders/so/sox1TODiEE0hAb6AVusYq++++Tc/-Tmp-/python-26368Zoi.py') # PYTHON-> MODE 
--------------------------------------------------------------------------- 
IOError         
Traceback (most recent call last) 
/Users/ben/ in() 
----> 1 execfile(r'/var/folders/so/sox1TODiEE0hAb6AVusYq++++Tc/-Tmp-/python-26368Zoi.py') # PYTHON-> MODE 
IOError: [Errno 2] No such file or directory: '/var/folders/so/sox1TODiEE0hAb6AVusYq++++Tc/-Tmp-> /python-26368Zoi.py' 
In [2]: ## working on region in file /var/folders/so/sox1TODiEE0hAb6AVusYq++++Tc/-Tmp-/python-> 26368fXv.py... 
execfile(r'/var/folders/so/sox1TODiEE0hAb6AVusYq++++Tc/-Tmp-/python-26368fXv.py') # PYTHON-MODE 
File "/var/folders/so/sox1TODiEE0hAb6AVusYq++++Tc/-Tmp-/python-26368fXv.py", line 1 
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 
    ^
SyntaxError: invalid syntax 

如何讓無論是單一窗口或緩衝區的任何想法要執行?謝謝!

回答

0

不知道該python輸出,但在elisp代碼中,您不是將my-buffer-name設置爲任何值(它將爲零)。它應該是:

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

謝謝你。現在有些作品。第一次調用python-run時,當它試圖執行py-execute-buffer時,它會失敗,但下次運行。 – Ben

相關問題