2011-11-01 23 views
10

Fino a ieri, ero un utente felice di emacs appena pronto + modalità erlang. Poi il mio collega ha iniziato a contribuire al progetto (usando un editor di windows), e sembra che non sia molto contento della modalità di rientro misto usata di default da erlang-mode. Ecco un esempio. Questa è una parte di una funzione, scritto utilizzando auto-rientro in Erlang-modeQual è il modo corretto di rientrare in 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} -> 

Se si dà un'occhiata più da vicino, vedrai che la linea 2 (a partire da GetReqIds) è rientrato con 4 posti. La riga 3 è rientrata con 3 schede. La riga 5 è rientrata con 3 schede + 4 spazi. La riga 6 è rientrata con 4 schede. Di conseguenza, la maggior parte degli editor (stupidi) (a differenza di emacs) mostrano le linee 5 e 6 (quelle che iniziano con {ibrowse e {ReqId) allo stesso livello di indentazione. Che sembra brutto. (anche StackOverflow li mostra in questo modo).

Ho dato un'occhiata ad alcuni importanti software di erlang (come gproc) e molti di loro sembrano usare la modalità di indentazione solo spazi.

Quindi le mie domande sono:

  1. sto facendo di sbagliato (sembra probabile per me).
  2. Se la modalità di indentazione predominante è solo spazi, perché la modalità erlang non la implementa (o non è configurata per utilizzarla di default)?
  3. Come posso configurare la modalità erlang per forzare solo gli spazi?
  4. Qual è il "modo giusto" dopo tutto? Cose come la compatibilità tra editor possono sembrare importanti e non possiamo rendere tutti gli editor intelligenti come quelli di emacs.
+2

Direi che solo gli spazi sono preferiti m ode per tutte le lingue, specialmente nel caso in cui nel progetto vengano utilizzati diversi editor/id. Da 3 a 7 byte extra salvati da schede non ne valgono la pena. –

+0

@HolgerJust - È esattamente come mi sento in questo momento :) – loxs

+0

Ero solito pensare che solo le schede fossero le migliori (dato che salva byte :-p ora sul serio, perché è più difficile ottenere rientri non allineati solo di uno difficile da individuare carattere). Ma alla fine, ho sentito che il modo più bello era mescolare: schede per la rientranza sintattica più spazi per l'allineamento interiore. – fortran

risposta

2

Per generalmente disabilita le schede in indention, non solo, ma anche per la modalità erlang, usa:

(set-default 'indent-tabs-mode nil) 
Problemi correlati