Как настроить Emacs в режиме Java, чтобы он не выравнивал параметры метода автоматически

В Emacs, когда я печатаю:

public void foo(String one,
    String two) {

Это выглядит так:

public void foo(String one,
                String two) {

Я бы предпочел, чтобы это не так, и просто выровнял параметры, как другие продолжения строки. Как я могу настроить это, чтобы не делать этого?

2 ответа

Решение

Это взято из руководства Info для Emacs CC Mode, использующего GNU Emacs 23.1 в Windows:

  1. Начните создавать свой класс Java, который не имеет правильного отступа. В вашем случае именно то, что вы напечатали выше.
  2. Переместите курсор в начало строки, которая не имеет правильного отступа. В вашем случае "Строка два) {".
  3. Хит Cc Cs (c-show-syntactic-information) спросить Emacs, на какой синтаксический элемент он смотрит. В вашем случае он скажет что-то вроде ((arglist-cont-nonempty n m)).
  4. Используйте Cc Co (c-set-offset) сказать, что вы хотите изменить уровень отступа для этого синтаксического элемента.
  5. По умолчанию он считает, что синтаксический элемент, например, arglist-cont-nonempty. Просто нажмите RET, если это значение по умолчанию является правильным.
  6. Теперь он хочет знать, какое выражение использовать для вычисления смещения. В вашем случае по умолчанию используется выражение elisp. Удалите это и просто используйте один плюс + вместо.
  7. Проверьте его, чтобы убедиться, что он работает правильно: нажмите TAB на несколько строк, или Mx Indent-Region или аналогичный.
  8. Чтобы сделать его постоянным, добавьте его в ваш файл.emacs:

(setq c-offsets-alist '((arglist-cont-nonempty. +)))

Мне нравится указывать стиль режима в первой строке каждого исходного файла. Пытаться:

// -*- mode: java; c-file-style: "stroustrup" -*-

Это даст вам рациональное табификация. Вы также можете попробовать "K & R".

Другие вопросы по тегам