Использование нескольких оболочек Python в Emacs 'python-mode' с Python или IPython - PullRequest
5 голосов
/ 27 ноября 2011

Есть ли способ заставить новый экземпляр python-shell при запуске Emacs?Это было бы удобно при работе над несколькими проектами с отдельными рабочими каталогами (и разными наборами модулей).

Любая попытка вызвать python-shell приведет только к активации текущего экземпляра.

Ответы [ 3 ]

3 голосов
/ 29 ноября 2011

Переименование буфера у меня не работает, но вы можете использовать третий параметр run-python.

M - : (run-python nil nil t) RET

Поскольку привязка для переключения на текущий буфер не очень полезна, вы можете привязать ее к чему-то более полезному

(defun my-run-python (&optional new)
  (interactive "P")
  (if new
   (run-python nil nil new)
   (pop-to-buffer (process-buffer (python-proc)) t)))

(define-key python-mode-map (kbd "C-c C-z") 'my-run-python)

и использовать C - c C - z для переключения на текущий интерпретатор python и C - u C - c C - z для переключения на новый интерпретатор python.

3 голосов
/ 27 ноября 2011

Вам нужно переименовать ваш оригинальный python-shell перед тем, как открывать новый. Используйте M - x rename-buffer.

0 голосов
/ 16 января 2015

При использовании python-mode через python.el по умолчанию используется одна оболочка Python на буфер Python.

Однако вы можете изменить это поведение по умолчанию, если вместо этого вы хотите, чтобы несколько буферов Python совместно использовали одну и ту же оболочку Python. Для этого после открытия первого буфера Python введите:

M-x python-set-proc

... что задокументировано:

Set the default value of `python-buffer' to correspond to this buffer.
If the current buffer has a local value of `python-buffer', set the
default (global) value to that.  The associated Python process is the
one that gets input from C-c C-r et al when used in a buffer that
doesn't have a local value of `python-buffer'.

Затем, если вы хотите, чтобы новый буфер Python использовал свою собственную оболочку, введите:

M-x set-variable python-buffer [RET] nil [RET]

После этого и открытия нового буфера Python для этого буфера будет создана новая оболочка Python после ввода python-switch-to-python или C-c C-z.

...