Emacs Python: Echoing, Hooks и Org-режим - PullRequest
2 голосов
/ 23 марта 2012

На основании этого вопроса Я обнаружил, как исправить проблему с отображением в оболочке python в emacs. Что я хочу сделать, это добавить это в мой файл .emacs, чтобы это произошло автоматически.

(defun python-startup () 
  (setq comint-process-echoes t))

(add-hook 'py-shell-hook 'python-startup)

Если я запускаю оболочку Python (M-x python-shell), это не сработало.

Python 2.6.1 (r261:67515, Jun 24 2010, 21:47:49) 
[GCC 4.2.1 (Apple Inc. build 5646)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 22
22
22

Я могу запустить эту функцию с M-: (python-startup), и тогда эхо-поведение прекратится.

>>> 22
22

Я не знаю, правильно ли я настраиваю хук, или мне вообще следует использовать другой хук. В качестве примечания, как узнать, какой хук вызывается для какой функции? Конечная цель состоит в том, чтобы в конечном итоге иметь возможность использовать :results output :session в режиме org, чтобы я мог интегрировать код Python без результатов, повторяющих каждую команду. Я подозреваю, что, как только я починю зацепку, такое поведение будет у меня, но на самом деле я не знаю, правда ли это.

1 Ответ

3 голосов
/ 03 апреля 2012

Мое краткое исследование этого вопроса показывает, что python-mode (как я обнаружил в моих Emacs) не имеет py-shell-hook, поэтому, естественно, он не будет запускать ничего, что вы туда поместите.

Когда я посмотрел на python-mode, он не работает, поэтому вам немного не повезло.

Лучше всего сделать собственную команду, например:

(defun alex-python-shell ()
  "Start a python shell my way."
  (interactive)
  (python-shell)
  (python-startup))

Если вам нужно позвонить python-shell в интерактивном режиме, используйте

(call-interactively 'python-shell)
...