2009-04-30 3 views
6

Я пользователь emacs, который только начал работать в новой компании, где Eclipse является стандартом. Я пробовал затмение, но я также хочу поэкспериментировать с JDEE (я вернусь на Java после долгого перерыва). До сих пор основным камнем преткновения является получение отступов. Есть ли простой способ сделать это, или мне нужно будет глубоко выкопать гайки и болты отступа Emacs?Eclipse indentation on Emacs

EDIT: извините за путаницу в этом вопросе: я не хочу, чтобы Eclipse имитировал emacs, я хочу emacs имитировать Eclipse. Я хочу иметь возможность использовать emacs для изменения кода без зависания отступов, которые ожидают пользователи Eclipse.

ответ

5

Вам нужно настроить отступы в режиме Java. Взгляните here, here и here.

+0

Да, это это своего рода орехи и болты, которые я пытался избежать из-за некоторых особенностей отступов Eclipse (или, по крайней мере, того стиля, который они используют). Я надеялся, что кто-то уже запрограммировал стиль Eclipse, который я мог бы просто зайти. Спасибо за refs tho. – user98166

+1

Ну, если вы когда-нибудь это сделаете - не могли бы вы опубликовать alist? Может быть, даже здесь? – Arkadiy

+0

См. Http://stackoverflow.com/questions/5556558/getting-consistent-indentation-in-eclipse-and-emacs для простого и простого запуска. Как сказал Аркадий, если кто-нибудь пригвоздит это, напишите! –

1

Я буду честен: я не уверен, что вы имеете в виду, сделав отступ Eclipse в соответствии с Emacs. Но вы можете изменить отступ здесь: Windows->Preferences-General->Editors

Нажмите кнопку «Редакторы текста», и вы увидите свойства ширины вкладки.

еще одна маленькая заметка, Eclipse имеет Emacs стиле клавиш, встроенных в него: Windows->Preferences->General->Keys

В разделе «Схема», есть вариант для Emacs.

Примечание: Вы можете также изменить формат вашего кода Java здесь: Windows->Preferences->Java->Code Style->Formatter

8

Основное отличие, которое я обнаружил между форматированием по умолчанию Eclipse (и IntelliJ) и Emacs по умолчанию, заключается в том, что Emacs выстраивает функциональные аргументы в новую строку с предыдущими аргументами, например. Emacs делает:

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

и Eclipse, делает:

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

Следующая приложится вам ~/.emacs файл будет сделать Emacs Java-режиме сделать то же самое:

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

Связанный пост http://stackoverflow.com/questions/5556558/getting-consistent-indentation-in-eclipse-and-emacs относится к самой основной проблеме вкладок и пробелов, которая решает первые 90%. Ответ, поставленный выше, пытается ответить на часть 10% от того, что я могу сказать. –

+0

Я нашел это очень полезным! Мне пришлось немного изменить его, чтобы получить поведение, которое я хотел - я хотел иметь возможность запустить список аргументов в строке после самого вызова метода. Добавить (arglist-intro. +) (Arglist-cont. +) После (arglist-cont-nonempty. +). (Я также изменил ++ на +) –