2011-11-01 11 views
10

Hasta ayer, era un usuario feliz de emacs + erlang-mode listos para usar. Luego mi colega comenzó a contribuir con el proyecto (usando algún editor de Windows), y parece que no está muy contento con el modo de sangría mixto que usa de forma predeterminada erlang-mode. Aquí hay un ejemplo. Esta parte de una función, escrita usando auto-guión de Erlang en modo¿Cuál es la forma correcta de sangrar 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} -> 

Si usted echa un vistazo más de cerca, verá que la línea 2 (comenzando con GetReqIds) se sangra con 4 espacios. La línea 3 está sangrada con 3 pestañas. La línea 5 está sangrada con 3 pestañas + 4 espacios. La línea 6 está sangrada con 4 pestañas. Como resultado, la mayoría de los editores (mudos) (a diferencia de emacs) muestran las líneas 5 y 6 (las que comienzan con {ibrowse y {ReqId) en el mismo nivel de sangría. Lo cual se ve feo (incluso stackoverflow los muestra de esa manera).

Eché un vistazo a varios programas erlang prominentes (como gproc) y la mayoría de ellos parecen usar el modo de sangría solo para espacios.

Así que mis preguntas son:

  1. lo estoy haciendo mal (parece probable que yo).
  2. Si solo espacios es la forma de sangría predominante, ¿por qué erlang-mode no lo implementa (o no está configurado para usarlo de manera predeterminada)?
  3. ¿Cómo puedo configurar erlang-mode para forzar solo espacios?
  4. ¿Cuál es la "manera correcta" después de todo? Las cosas como la compatibilidad entre editores parecen importar, y no podemos hacer que todos los editores sean tan inteligentes como emacs.
+2

Yo diría que los espacios solo son preferidos m oda para todos los idiomas, especialmente en caso de que se utilicen diferentes editores/ides en el proyecto. De 3 a 7 bytes extra guardados por pestañas no valen la pena. –

+0

@HolgerJust - Así es exactamente como me siento en este momento :) – loxs

+0

Solía ​​pensar que las pestañas solo eran las mejores (ya que ahorraba bytes: ahora de manera seria, porque es más difícil obtener las sangrías desalineadas por solo una dificultad para detectarlas personaje). Pero al final, sentí que la forma más hermosa era mezclar: pestañas para sangría sintáctica más espacios para alineación interna. – fortran

Respuesta

2

Para generalmente desactive las pestañas en indention, no solo, sino también para el modo erlang, use:

(set-default 'indent-tabs-mode nil) 
Cuestiones relacionadas