2011-11-01 41 views
10

直到昨天,我還是開箱即用的emacs + erlang模式的用戶。然後我的同事開始爲這個項目做出貢獻(使用一些Windows編輯器),似乎他對Erlang模式默認使用的混合縮進模式並不滿意。 這裏是一個例子。這是一個功能的一部分,在使用Erlang的模式縮進Erlang的正確方法是什麼?

handle_info(get_gss_latest_versions, State) -> 
    GetReqIds = fun(Branch) -> 
      GetInfoUri = State#state.gss_uri ++ Branch ++ "/api/getinfo", 
      case ibrowse:send_req(GetInfoUri, [], get, [], [{stream_to, self()}]) of 
       {ibrowse_req_id, ReqId} -> 
       {ReqId, Branch}; 
       {error, Reason} -> 

如果你細看自動縮進寫的,你會看到,2號線(從GetReqIds)縮進4個空格。第3行縮進3個選項卡。第5行縮進3個製表符+4個空格。第6行縮進4個選項卡。因此,大多數(愚蠢的)編輯器(與emacs不同)顯示第5行和第6行(在同一縮進級別下以{ibrowse和{ReqId開頭的行)。看起來很醜。 (甚至stackoverflow顯示他們這樣)。

我看了幾個着名的erlang軟件(如gproc),其中大部分似乎都使用了空格縮進模式。

所以我的問題是:

  1. 上午我做錯了(很可能對我來說)。
  2. 如果只有空格是主要的縮進方式,爲什麼erlang模式沒有實現它(或未配置爲默認使用它)?
  3. 如何配置erlang模式強制使用空格?
  4. 究竟是什麼「正確的方式」?像交叉編輯器兼容性似乎很重要,我們不能讓所有編輯器像emacs一樣聰明。
+2

我會說,空格只是首選m對所有語言都適用,特別是在項目中使用不同的編輯/標識符的情況下。標籤保存3到7個額外的字節是不值得的。 –

+0

@HolgerJust - 這正是我現在的感覺:) – loxs

+0

我曾經認爲只有製表符是最好的(因爲它現在認真保存字節:-p,因爲通過一個難以察覺的位置獲得未對齊的縮進比較困難字符)。但最後,我覺得最美的方式是混合:句法縮進的標籤和內部對齊的空間。 – fortran

回答

2

要一般禁用製表符中的縮進,不僅可以,而且還可以用於erlang模式,請使用:

(set-default 'indent-tabs-mode nil) 
相關問題