2009-04-30 15 views
6

Sono un utente di emacs che ha appena iniziato a lavorare per una nuova società in cui Eclipse è lo standard. Ho provato eclipse, ma voglio anche sperimentare con JDEE (sto tornando in Java dopo una lunga interruzione). Il principale ostacolo finora è far rientrare la rientranza. C'è un modo semplice per farlo, o ho bisogno di scavare a fondo nei dadi e bulloni della rientranza di emacs?Rientro di Eclipse su Emacs

MODIFICA: scusa per la confusione in questa domanda: non voglio che Eclipse imiti Emacs, voglio che emacs imiti Eclipse. Voglio essere in grado di usare emacs per modificare il codice senza rovinare il rientro che gli utenti di Eclipse si aspettano.

risposta

5

È necessario personalizzare il rientro in modalità Java. Dai un'occhiata a here, here e here.

+0

Sì, questo è il tipo di dadi e bulloni che stavo cercando di evitare a causa di alcune delle peculiarità del rientro di Eclipse (o almeno dello stile che usano). Speravo che qualcuno avesse già programmato uno stile Eclipse che avrei potuto semplicemente inserire. Grazie per il ref. – user98166

+1

Beh, se mai lo avessi fatto, potresti pubblicare l'alista? Potrebbe essere anche qui? – Arkadiy

+0

Vedere http://stackoverflow.com/questions/5556558/getting-consistent-indentation-in-eclipse-and-emacs per un inizio semplice e buono. Come ha detto Arkadiy, se qualcuno lo inchioda, per favore posta! –

1

Sarò onesto: non sono sicuro di cosa intendi esattamente facendo coincidere la rientranza di Eclipse con Emacs. Ma puoi modificare il rientro qui: Windows->Preferences-General->Editors

Fai clic sull'opzione "Editor di testo" e vedrai le proprietà della larghezza della tabulazione.

più Un piccola nota, Eclipse ha combinazioni di tasti Emacs in stile costruito in lui: Windows->Preferences->General->Keys

Sotto 'Scheme', c'è un'opzione per Emacs.

Nota: è anche possibile modificare il formato del codice Java qui: Windows->Preferences->Java->Code Style->Formatter

8

La differenza principale che ho trovato tra Eclipse (e IntelliJ) e la formattazione java predefinita di Emacs è che Emacs allinea gli argomenti della funzione continuata su una nuova riga con gli argomenti precedenti, ad es. emacs fa:

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

ed Eclipse fa:

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

Il ~/.emacs seguente aggiunto a voi farà Emacs java-mode fare lo stesso:

;; 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

Il post correlato http://stackoverflow.com/questions/5556558/getting-consistent-indentation-in-eclipse-and-emacs si riferisce al problema di base delle schede e degli spazi che risolve il primo 90%. Risposta postata sopra cerca di indirizzare un pezzo del resto del 10%, da quello che posso dire. –

+0

Ho trovato questo molto utile! Ho dovuto cambiarlo un po 'per ottenere il comportamento che volevo - volevo essere in grado di avviare l'elenco degli argomenti sulla linea dopo l'invocazione del metodo stessa. Aggiungi (arglist-intro. +) (Arglist-cont. +) Dopo (arglist-cont-non-vuoto. +). (Ho anche cambiato ++ in +) –

Problemi correlati