2011-08-05 21 views
10

Mi java-mode en emacs quiere sangrar argumentos de la función así:Java argumento modo de sangría en Emacs

someLongFunctionName(
        argumentNumberOne, 
        argumentNumberTwo, 
        argumentNumberThree, 
        argumentNumberFour 
        ); 

Hay dos problemas aquí. En primer lugar, quiere alinear el inicio de los argumentos con el final del nombre de la función. En segundo lugar, quiere tratar el paréntesis de armario como si fuera un argumento, y así lo alinea con todos los demás argumentos. No me gustan ninguno de esos comportamientos.

me gustaría mucho más que sangrar mi código como este:

someLongFunctionName(
    argumentNumberOne, 
    argumentNumberTwo, 
    argumentNumberThree, 
    argumentNumberFour 
); 

c-mode hace un trabajo mucho mejor de esta manera predeterminada, y me gustaría continuar sobre el comportamiento a java-mode, si es posible .

Todavía tengo que aprender cómo funciona el motor de sangría de emacs, y por el momento realmente ni siquiera sé mucho de ceceo. Esos dos ejercicios de aprendizaje definitivamente están en mi plato, pero por el momento una solución rápida de copiar y pegar sería increíble.

Respuesta

13

probar este

(defun my-indent-setup() 
    (c-set-offset 'arglist-intro '+)) 
(add-hook 'java-mode-hook 'my-indent-setup) 

De http://www.emacswiki.org/emacs/IndentingC

+0

impresionante, que funcionó. Ni siquiera puedo aventurarme a adivinar por qué hay un espacio después de la palabra arglist-intro y antes de la cita de cierre, o por qué hay un + después de todo; pero funciona. Sigue sangrando al padre de la noche cerrada de una manera estúpida, pero supongo que puedo vivir con eso, c-mode hace que el cierre paren sea tonto también, y he estado viviendo con eso durante años. De todos modos, gracias un millón; marcando esto como respondido. –

+1

heh, no sé mucho ceceo, pero generalmente confío en emacswiki, de nada: D –

+0

Curiosamente, esa no es una cita de cierre. Es una cita en +, por lo que se puede pasar como un nombre en lugar de evaluarse de inmediato. – db48x