2009-04-30 13 views
6

Ich bin ein Emacs-Benutzer, der gerade angefangen hat, für ein neues Unternehmen zu arbeiten, wo Eclipse der Standard ist. Ich habe Eclipse ausprobiert, möchte aber auch mit JDEE experimentieren (ich komme nach einer langen Pause wieder nach Java). Der größte Stolperstein ist bisher, dass die Einrückung übereinstimmt. Gibt es einen einfachen Weg dies zu tun, oder muss ich tief in die Emacs-Vertiefung eintauchen?Eclipse-Einrückung auf Emacs

EDIT: Entschuldigung für die Verwirrung in dieser Frage: Ich möchte nicht Eclipse Emacs zu imitieren, ich möchte Emacs Eclipse nachahmen. Ich möchte in der Lage sein, Emacs zu verwenden, um Code zu ändern, ohne die Einrückung zu verdrehen, die die Eclipse-Benutzer erwarten.

Antwort

5

Sie benötigen den Einzug in Java-Modus anpassen. Schauen Sie sich here, here und here.

+0

Ja, das ist die Art von Schrauben und Muttern, die ich wegen einiger der Besonderheiten der Eclipse-Einrückung (oder zumindest des Stils, den sie verwenden) vermeiden wollte. Ich hatte gehofft, dass jemand bereits einen Eclipse-Stil programmiert hat, den ich einfach kommen lassen könnte. Danke für die Refs. – user98166

+1

Nun, wenn Sie es jemals geschafft haben - könnten Sie das Alist veröffentlichen? Kann es auch hier sein? – Arkadiy

+0

Siehe http://stackoverflow.com/questions/5556558/getting-consistent-indentation-in-eclipse-and-emacs für einen guten, einfachen Start. Wie Arkadiy gesagt hat, wenn jemand dies notiert, bitte posten! –

1

Ich bin ehrlich: Ich bin mir nicht sicher, was genau Sie meinen, indem Sie Eclipse's Einrückung mit Emacs vergleichen. Aber Sie können die Einrückung hier ändern: Windows->Preferences-General->Editors

Klicken Sie auf die Option 'Texteditoren', und Sie werden die Eigenschaften der Tabbreite sehen.

Noch eine kleine Anmerkung Eclipse hat Emacs-Stil Tastenbelegungen hinein gebaut: Windows->Preferences->General->Keys

Unter 'Schema', gibt es eine Option für Emacs.

Hinweis: Sie können auch das Format von Java-Code ändern hier: Windows->Preferences->Java->Code Style->Formatter

8

Der Hauptunterschied zwischen Eclipse (und IntelliJ) und Emacs default Java-Formatierung ist, dass Emacs Zeilen Funktionsargumente auf eine neue Zeile mit den vorherigen Argumenten fortgesetzt wird, z. Emacs tut:

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

und Eclipse tut:

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

Die folgenden Punkte auf Sie hinzugefügt Datei ~/.emacs wird das gleiche machen Emacs java-Modus tun:

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

Die verwandte Post http://stackoverflow.com/questions/5556558/getting-consistent-indentation-in-eclipse-and-emacs bezieht sich auf das sehr grundlegende Problem von Tabs und Leerzeichen, die die ersten 90% löst. Die oben gepostete Antwort versucht, ein Stück der restlichen 10% zu adressieren, von dem, was ich sagen kann. –

+0

Ich fand das sehr hilfreich! Ich musste es ein wenig ändern, um das gewünschte Verhalten zu erhalten - ich wollte die Argumentliste in der Zeile nach dem Methodenaufruf selbst starten können. Fügen Sie hinzu (arglist-intro. +) (Arglist-cont. +) Nach (arglist-cont-nonempty. +). (Ich habe auch ++ zu + geändert) –