Я хочу написать 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)))
Вывод:
py-shell
.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
Любые мысли о том, как получить либо одиночное окно, либо буфер, который будет выполнен? Благодарю!
Не уверен в том, что вывод python, но в коде elisp вы не устанавливаете имя моего буфера на что-либо (это будет nil). Должен быть:
(let ((my-buffer-name (buffer-name))
....