【问题标题】:Proper handling of indentation of Java's @Override in emacs在 emacs 中正确处理 Java 的 @Override 缩进
【发布时间】:2012-12-07 17:24:49
【问题描述】:

如果我的 .emacs 为空或仅包含行

(require 'cc-mode)
(add-to-list 'c-offsets-alist '(annotation-top-cont .0))

(add-hook 'java-mode-hook
          '(lambda () (c-set-offset 'annotation-top-cont 0)))

然后,而不是保护与@Override 对齐

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}

protected 相对于@Override 缩进

@Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}

我应该对我的 .emacs 进行哪些更改,以便缩进成为上面的顶部示例?

【问题讨论】:

  • 我认为您应该考虑使用 Eclipse 或其他一些 IDE;它将极大地提高您的生产力。我经常使用 emacs,但从不使用 Java。
  • 我同意 Eclipse 非常棒。我在 Eclipse 和 emacs 之间来回切换(这个问题在两者之间缩进的唯一区别)。目前我觉得两者都是必要的,因为 emacs 有大量 Eclipse 缺乏的特性。

标签: java indentation emacs23


【解决方案1】:

查看annotation-top-cont 样式以获取c-offsets-alist 定义。为了不识别,您需要将其设置为 0。更多信息请参见CC-mode manual

【讨论】:

  • 抱歉,Alex,您能再检查一下吗? annotation-top-cont 不足以解决问题。
  • 我认为,问题在于您在全局范围内设置了 c-offset-alist,但在文档中指出,如果以任何方式设置此变量,它就会变为本地变量。你需要在java-mode-hook函数中使用(c-set-offset 'annotation-top-cont 0)...
  • 它仍在进行中。我修改了问题以包含您的建议。
【解决方案2】:

我在 EMACS 邮件列表中找到了这个解决方案:

(add-hook 'java-mode-hook
      '(lambda ()
         "Treat Java 1.5 @-style annotations as comments."
         (setq c-comment-start-regexp 
           "\\(@\\|/\\(/\\|[*][*]?\\)\\)")
         (modify-syntax-entry ?@ "< b" 
                  java-mode-syntax-table)))

它将@annotations 视为cmets,这将导致它正确缩进。

来源:http://lists.gnu.org/archive/html/help-gnu-emacs/2011-04/msg00262.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-12
    • 2010-10-14
    • 2012-02-22
    • 2011-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多