Как я могу установить два параллельных буфера в emacs для редактирования файлов Python в одном и выполнения в оболочке IPython в другом? - PullRequest
2 голосов
/ 08 июля 2011

Я пытаюсь настроить ipython.el в emacs23. Я успешно установил его (после помещения python-mode.el в мой load-path для замены python.el, который поставляется с emacs, уже предустановленным). И я даже могу заставить его работать через M-x py-shell и т. Д.

Интерфейс, похоже, плохо настроен, и мне было интересно, правильно ли я это делал или мне нужно настроить его так, чтобы он работал так, как мне хотелось бы.

Короче говоря, рабочий процесс, который я хотел бы иметь:

  • в одном или нескольких буферах, отредактируйте код Python
  • Когда я нажимаю C-c C-c в этом буфере, либо выполните код Python в этом буфере в открытом буфере оболочки IPython (если он есть), либо откройте другой буфер для этого.

Но то, что происходит сейчас, это:

  • Если оболочка IPython находится в одном буфере, а файл Python - в другом, если я нажму C-c C-c в буфере файлов Python, буфер файлов переключится на буфер IPython (то есть теперь у меня есть два дублированных буфера iPython) и файл выполнен.
  • Это раздражает.

Я довольно новичок в elisp, но мое понимание defadvice заключается в том, что я мог бы посоветовать около python-execute-buffer записать существующий файловый буфер, запустить python-execute-buffer, а затем переключиться вернуться к исходному буферу файлов в качестве обходного пути.

Это выглядит довольно глупо. Буду признателен за любые предложения о лучших способах достижения этого!

Если это имеет значение: я на OS X 10.6.8 с IPython 0.10.1 под управлением Emacs 24.0.50.

Заранее спасибо!

1 Ответ

0 голосов
/ 09 июля 2011

Оказывается, что просто установить python-mode.el и anything-ipython.el и положить

(require 'python-mode)
(require 'ipython)
(require 'anything-ipython)
(add-hook 'python-mode-hook #'(lambda ()
                                (define-key py-mode-map (kbd "C-<tab>") 'anything-ipython-complete)))
(add-hook 'ipython-shell-hook #'(lambda ()
                                  (define-key py-mode-map (kbd "C-<tab>")
                        'anything-ipython-complete)))

в моем .emacs заставил все работать так, как я хотел , если py-shell выполняется до того, как py-execute-buffer (так что C-c C-c) выполнит код в оболочке вместо простого открытия *Python Output* буфер.

...