2009-04-30 15 views
6

Soy un usuario de emacs que acaba de empezar a trabajar para una nueva empresa donde eclipse es el estándar. He intentado eclipse, pero también quiero experimentar con JDEE (volveré a Java después de un largo paréntesis). El mayor obstáculo hasta ahora es conseguir que la sangría coincida. ¿Hay alguna manera fácil de hacerlo, o voy a tener que profundizar en los aspectos prácticos de la sangría de emacs?Hendidura de Eclipse en Emacs

EDIT: Perdón por la confusión en esta pregunta: no quiero que Eclipse emita emacs, quiero que emacs imite a Eclipse. Quiero poder usar emacs para modificar el código sin atornillar la sangría que los usuarios de Eclipse esperan.

Respuesta

5

Es necesario personalizar la sangría en el modo de java. Eche un vistazo here, here y here.

+0

Sí, esto es el tipo de tuercas y tornillos que estaba tratando de evitar debido a algunas de las peculiaridades de la sangría de Eclipse (o al menos el estilo de que están usando). Tenía la esperanza de que alguien ya hubiera programado un estilo de Eclipse que pudiera incluir. Gracias por los refs aunque. – user98166

+1

Bueno, si alguna vez lo logras, ¿podrías publicar la alista? Puede ser incluso aquí? – Arkadiy

+0

Consulte http://stackoverflow.com/questions/5556558/getting-consistent-indentation-in-eclipse-and-emacs para un comienzo bueno y simple. Como dijo Arkadiy, si alguien clava esto, ¡por favor publica! –

1

Seré honesto: no estoy seguro de a qué se refiere con hacer que la sangría de Eclipse coincida con Emacs. Pero puede modificar la sangría aquí: Windows->Preferences-General->Editors

Haga clic en la opción 'Editores de texto', y verá las propiedades de ancho de la pestaña.

Una más pequeña nota, Eclipse tiene al estilo de las asociaciones de teclas Emacs construido en él: Windows->Preferences->General->Keys

Bajo 'esquema', hay una opción para Emacs.

Nota: también se puede modificar el formato de su código Java aquí: Windows->Preferences->Java->Code Style->Formatter

8

La diferencia principal que encontré entre Eclipse (e IntelliJ) y el formato de Java por defecto de Emacs es que los argumentos de la función de líneas de Emacs continuaron en una nueva línea con los argumentos anteriores, p. emacs hace:

BigLongJavaStuff.doFoobarToQuux("argument 1", 
           "argument 2"); 

y Eclipse hace:

BigLongJavaStuff.doFoobarToQuux("argument 1", 
     "argument 2"); 

El archivo ~/.emacs siguiente añadido al que hará que Emacs java-modo de hacer lo mismo:

;; eclipse-java-style is the same as the "java" style (copied from 
;; cc-styles.el) with the addition of (arglist-cont-nonempty . ++) to 
;; c-offsets-alist to make it more like default Eclipse formatting -- function 
;; arguments starting on a new line are indented by 8 characters 
;; (++ = 2 x normal offset) rather than lined up with the arguments on the 
;; previous line 
(defconst eclipse-java-style 
    '((c-basic-offset . 4) 
    (c-comment-only-line-offset . (0 . 0)) 
    ;; the following preserves Javadoc starter lines 
    (c-offsets-alist . ((inline-open . 0) 
         (topmost-intro-cont . +) 
         (statement-block-intro . +) 
         (knr-argdecl-intro  . 5) 
         (substatement-open  . +) 
         (substatement-label . +) 
         (label     . +) 
         (statement-case-open . +) 
         (statement-cont  . +) 
         (arglist-intro . c-lineup-arglist-intro-after-paren) 
         (arglist-close . c-lineup-arglist) 
         (access-label . 0) 
         (inher-cont  . c-lineup-java-inher) 
         (func-decl-cont . c-lineup-java-throws) 
         (arglist-cont-nonempty . ++) 
         ))) 
    "Eclipse Java Programming Style") 
(c-add-style "ECLIPSE" eclipse-java-style) 
(customize-set-variable 'c-default-style (quote ((java-mode . "eclipse") (awk-mode . "awk") (other . "gnu")))) 
+0

La publicación relacionada http://stackoverflow.com/questions/5556558/getting-consistent-inistent-en-eclipse-and-emacs se relaciona con el problema básico de las pestañas y espacios que resuelve el primer 90%. La respuesta publicada arriba trata de abordar una parte del 10% restante, por lo que puedo decir. –

+0

¡Lo encontré muy útil! Tuve que cambiarlo un poco para obtener el comportamiento que quería, quería poder iniciar la lista de argumentos en la línea después de la invocación del método en sí. Agregar (arglist-intro. +) (Arglist-cont. +) Después (arglist-cont-nonempty. +). (También cambié ++ a +) –