2011-09-13 12 views
15

Disculpe mi emacs newbiness aquí, pero ¿alguien sabe cómo evitar esto? Cuando se codifica en emacs, en ruby-mode, se sangra al nivel correcto (es decir, por 2 espacios) después de todas las palabras clave, como def, class, module, begin etc., pero cuando se rompen listas de parámetros en varias líneas, se sangra a un una posición aparentemente aleatoria, como 40 o más columnas por encima.Emacs ruby-mode, sangría salvajemente dentro de paréntesis?

He estado leyendo la configuración de las pestañas de emacs y parece que estoy dando vueltas en círculos y no obteniendo la información que estoy buscando, así que pensé que podría preguntar aquí.

Aquí hay una captura de pantalla de dónde está colocando el cursor en una lista de parámetros. Intenté marcar con indentaciones dentro de llaves (por ejemplo, para un bloque o un hash) y eso está funcionando bien, son los paréntesis los que lo estropean.

Bug

Respuesta

17

http://compgroups.net/comp.emacs/Ruby-mode-indentation-of-continuation-lines

(setq ruby-deep-indent-paren nil) 

o temporalmente, dentro de la sesión actual:

Mx conjunto de variables RET rubí profundo-guión-paren RET nula RET

En el interior de un paréntesis, ahora sangrará como en todos lados. Todavía hay un error menor en el caso de lo que publiqué anteriormente. Sangra 2 espacios más de lo que yo quiero, porque lo confundo con la combinación de ( y {.

+2

Queda un defecto menor: los paréntesis de cierre todavía se sangran erróneamente al ras con el contenido, en lugar de Han sonrojarse con la expresión que abrió la lista. – mcandre

+0

@mcandre ¿Alguna vez descubrió cómo solucionarlo? – fennec

+0

No, por desgracia. Lo habría publicado tan pronto como encontré una solución. – mcandre

0

Básicamente se trata de tratar de alinear los argumentos de una lista de varias líneas de argumentos entre paréntesis, como:

function_call (arg1, 
       arg2); 

Ajuste del ruby-deep-indent-paren a cero que el anterior cambia el behvaior a los molestos doble sangría para los frenos mixtos , por ejemplo:

if (cond) then 
    do_stuff 
end 
function_call (&proc { 
    do_stuff 
    }) 

La indenting wierdness me está realmente molestando. Edité el código ruby-mode.el original de Mats para probar y sangrar más sanamente. Pero no puedo limpiarlo por mi vida.

1

ruby-deep-indent-paren y vars relacionados no tienen ningún efecto para mí porque ruby-use-smie es t. Ajuste de los dos a nil no parece ayudar, ya sea :-(

Pero el cambio a enh-ruby-mode, está funcionando!

  • enh-ruby-deep-indent-paren Configuración de nil tuvieron un efecto.
  • Configuración enh-ruby-bounce-deep-indent-t me permite presione la tecla Tab otra vez para alternar entre los estilos!
Cuestiones relacionadas