2013-09-22 168 views
1

我有以下情況:Python的縮進使用Emacs

if 1 < 2: 
    print("this line is part of the if statement") 

print("this is NOT part of the if statement") 

如果我使用Emacs的indent-according-to-mode命令,它會縮進第二print()作爲if語句的一部分。像這樣:

if 1 < 2: 
    print("this line is part of the if statement") 

    print("this is NOT part of the if statement") 

在我的判斷中,行的縮進不應該改變。是否有可能「修復」或自定義此行爲?

+1

當你想想看,這將節省您的麻煩,從長遠來看,因爲大部分的功能和if語句將比一行更長。儘管退格4次比tab更加惱人,但我認爲退格4次實際上是一種精神上對自己說的好方法:「好吧,我在這裏結束這段代碼吧..」 – Shashank

+0

你可以使用'tab'來循環縮進級別: 兩個'tab's比4個backspaces快。 –

回答

3

我認爲這是正確的行爲。由於縮進在Python中是語義的,因此emacs無法確定「應該」是什麼縮進。

如果您致電indent-according-to-mode emacs sensible將此解釋爲'請將此行縮進到上一行的縮進級別,因此您得到的行爲是正確的。 「關閉此功能」的方法是不要調用該功能。

1

IIUC有可能實現它這樣的:

如果語句如下一個空行,由一條線,不打開塊之前,設置回縮進開始子塊。

至於蟒蛇 - mode.el,您需要的功能是歡迎:

https://bugs.launchpad.net/python-mode