直到昨天,我還是開箱即用的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),其中大部分似乎都使用了空格縮進模式。
所以我的問題是:
- 上午我做錯了(很可能對我來說)。
- 如果只有空格是主要的縮進方式,爲什麼erlang模式沒有實現它(或未配置爲默認使用它)?
- 如何配置erlang模式強制使用空格?
- 究竟是什麼「正確的方式」?像交叉編輯器兼容性似乎很重要,我們不能讓所有編輯器像emacs一樣聰明。
我會說,空格只是首選m對所有語言都適用,特別是在項目中使用不同的編輯/標識符的情況下。標籤保存3到7個額外的字節是不值得的。 –
@HolgerJust - 這正是我現在的感覺:) – loxs
我曾經認爲只有製表符是最好的(因爲它現在認真保存字節:-p,因爲通過一個難以察覺的位置獲得未對齊的縮進比較困難字符)。但最後,我覺得最美的方式是混合:句法縮進的標籤和內部對齊的空間。 – fortran