Как мне посоветовать py-execute-buffer в emacs для запуска py-shell перед функцией?
Я хотел бы редактировать буфер или файл, нажмите C-c C-c
и файл будет отправлен в сеанс IPython. Я могу сделать это сейчас, если я в первый раз M-x py-shell
перед запуском py-execute-buffer
с помощью C-c C-c
, Но если я попытаюсь посоветовать функцию через
(defadvice py-execute-buffer (before open-py-shell-first)
(let ((remember-window (selected-window))
(remember-point (point)))
(generate-new-buffer "*Python*")
(call-interactively 'py-shell)
(select-window remember-window)
(goto-char remember-point)))
(ad-activate 'py-execute-buffer)
Я получаю ошибку:
## working on region in file /var/folders/6o/6o08knx-FVOhrvCbYyrRDU+++TI/-Tmp-/python-29189FKe.py...
Python 2.7.1 (r271:86832, Feb 5 2011, 13:58:58)
Type "copyright", "credits" or "license" for more information.
IPython 0.10.1 -- An enhanced Interactive Python.
? -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help -> Python's own help system.
object? -> Details about 'object'. ?object also works, ?? prints more.
In [1]: ---------------------------------------------------------------------------
IOError Traceback (most recent call last)
/Users/aresnick/Desktop/<ipython console> in <module>()
IOError: [Errno 2] No such file or directory: '/var/folders/6o/6o08knx-FVOhrvCbYyrRDU+++TI/-Tmp-/python-29189FKe.py'
In [2]:
Казалось бы, созданный временный файл не виден IPython? Если я теперь переключиться обратно на мой файл Python и перезапустить py-execute-buffer
, все хорошо.
Любые мысли будут оценены - спасибо!
2 ответа
Я думаю, что нашел какое-то решение:
(defun my-py-execute-buffer ()
(interactive)
(set 'code-buffer (current-buffer))
(unless (get-buffer "*Python*")
(py-shell)
(set-buffer code-buffer)
(sleep-for 0.2))
(py-execute-buffer))
Со сном - работает правильно.
С текущим python-mode.el,
бзр ветка lp:python-mode
просто Mx py-execute-buffer-ipython RET
Соответственно с именем py-shell, установленным в "ipython"
py-execute-buffer должен DTRT - если shebang не скажет иначе
Определенная команда выше предшествует Шебангу
Вместо "ipython" по умолчанию вы можете указать версию, включая путь