簡體   English   中英

Emacs Lisp:打開一個新框架,啟動 IPython,運行上一個緩沖區

[英]Emacs Lisp: Open a new frame, start IPython, run previous buffer

我想寫一個 ELisp function 來在一個新框架中啟動一個 Python 解釋器(IPython),然后在 IPython 解釋器中運行前一個緩沖區的內容。 我正在使用 Emacs 23.3.1、python-mode 6.0 和 ipython.el。

到目前為止,這是我的 function:

(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)))

output 是:

  1. IPython 通過py-shell成功啟動。
  2. 框架里還有兩個 windows,不是我想要的一個。
  3. 它沒有成功執行緩沖區,output 是:
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

關於如何獲得單個 window 或要執行的緩沖區的任何想法? 謝謝!

不確定 python output 但在 elisp 代碼中,您沒有將 my-buffer-name 設置為任何內容(它將為零)。 它應該是:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM