2012-06-06 2 views
4

Действительно раздражает проблема в IPython строке в Emacs:IPython Emacs IndentationError

In [128]: if 1==1: 
    .....:  print "yes" 
    .....: else:  
    .....:  print "no" 
    .....:  
IndentationError: unindent does not match any outer indentation level 

Он выглядит идеально выровнены для меня, не уверен, что вызовет ошибку. Нет такой проблемы, когда я делаю это в терминале.

+0

У меня такая же проблема. И это происходит в любой оболочке emacs (например, eshell) после вызова ipython не только в оболочке ipython (M-x ipython), предоставляемой python-mode.el или ipython.el. – Gonzalo

ответ

3

Вы можете попробовать переключая автоотступы с

%autoindent

, так как я думаю, что причина этой проблемы для меня раньше.

Вы можете изменить это постоянным образом, используя ipython's customization. После правильного импорта (см. Ссылку) в ipy_user_conf.py должно работать следующее:

# Emacs sets the term to dumb so we can distinguish that way 
if os.environ['TERM'] == 'dumb': 
    ip.options.autoindent = 0 
+0

Это решает проблему! Есть ли способ сохранить эту инструкцию, чтобы избежать необходимости вводить ее каждый раз, когда снова запускается режим ipython? – Gonzalo

+0

Я добавил примечание о том, чтобы сделать его постоянным. Возможно, существует только emacs для вызова '% autoindent', когда запускается ipython, но это кажется менее надежным, так как'% autoindent' всегда переключает AFAICT. –

0

Да, это странно. С моей точки зрения, использование стандартного интерпретатора python в оболочке emacs отлично работает при оценке вашего кода, но с использованием ipython сбой. Если вы используете пакет python-mode.el, вам, вероятно, необходимо установить ipython.el, чтобы получить необходимую поддержку ipython. OTOH, если вы используете python.el, который обычно поставляется с emacs, вам, возможно, придется переключиться на стандартный интерпретатор python (я считаю, что ipython.el предназначен только для использования с сторонним пакетом python-mode.el, а не python.el, который emacs использует по умолчанию).

Смежные вопросы