2015-10-06 49 views
2

如果我有一個名爲Class的屬性的對象,並且我在if語句中引用該對象,那麼emacs將誤導if語句的else:行。預期的縮進和emacs給出的縮進如下。emacs python-mode中的縮進不正確

def func(): 
    if obj.Class: 
     pass 
    else: # Correct indentation 
     pass 

def func(): 
    if obj.Class: 
     pass 
else: # emacs indentation 
    pass 

我以前還沒有找到關於此問題的任何信息。這是一個已知的問題,如果有的話,是否有解決方案?我正在使用emacs 24.5.1。

+0

在其他情況下是否存在「if」縮進? – Psytho

+0

emacs有各種Python模式,並且它們都帶有自己的縮進錯誤。 'C-h v py-version '的結果是什麼? –

+0

@ Alex.S在其他情況下,if縮進是正確的。只有在if語句中存在'Class'(不區分大小寫)的情況下,縮進纔是不正確的。如果我將其更改爲「GetClass」或「OtherProperty」,那麼縮進是正確的。 –

回答

0

我剛試過這個。確實,這是一個bug,它似乎認爲關鍵字不區分大小寫:

def func(): 
    if obj.Class: 
     pass 
else: 
    pass 

def func(): 
    if obj.Klass: 
     pass 
    else: 
     pass 

def func(): 
    if obj.If: 
     pass 
else: 
    pass 

這意味着你必須忍受它。您當然可以使用更常用的名稱cls而不是Class來解決此問題。

+0

唉。我有點期待,但希望我做了一些愚蠢的事情。不幸的是,它是一個不受我控制的單獨的庫,具有'Class'方法,否則我會將其更改爲'cls'。 –