2012-06-06 47 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

我有同樣的問題。在調用ipython之後,它不僅發生在emacs(例如。eshell)的任何shell中,而且發生在python-mode.el或ipython.el提供的ipython shell(M-x ipython)中。 – 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

我添加了一個關於永久的註釋。當ipython啓動時,可能只有emacs的方式來調用'%autoindent',但這似乎不太可靠,因爲'%autoindent'總是切換AFAICT。 –

0

是的,這很奇怪。就我而言,在評估代碼時,在emacs外殼中使用標準python解釋程序可以很好地工作,但使用ipython失敗。如果您使用python-mode.el軟件包,則可能需要安裝ipython.el才能獲得正確的ipython支持。 OTOH,如果您使用的是通常附帶emacs的python.el,則可能必須切換到標準python解釋器(我相信ipython.el僅用於第三方python-mode.el軟件包,而不是emacs默認使用的python.el )。