在emacs中更改java-mode的缩进样式

时间:2013-09-17 01:11:32

标签: java emacs indentation

我的emacs配置为c-default-style为“linux”,c-basic-offset为4,我对此非常满意并且像C和PHP的魅力一样。问题是,当我尝试编辑一些java代码时,它会缩进为:

class Main
{
    public static void main(String args[])
        {
            System.out.println("Hello world!");
        }
}

这显然是Emacs的缩进默认行为,而不是我为CC模式设置的行为(困扰我的是主函数的括号缩进)。我几个月前才开始使用Emacs而且我对Emacs Lisp不太满意,但实际上不知道为什么java模式没有采用cc-mode的缩进样式。有人有这方面的线索吗?当然,禁用缩进标签模式是一种解决方案,但我不得不说我觉得它并不令人满意。我觉得这个问题确实有一个简单的解决方案,但我一直在寻找......

2 个答案:

答案 0 :(得分:2)

这对我有用:

(require 'google-c-style)
(add-hook 'c-mode-common-hook
      (lambda()
            (subword-mode)
            (google-set-c-style)
            (google-make-newline-indent)
            (setq c-basic-offset 4)))

您需要下载 https://github.com/google/styleguide/blob/gh-pages/google-c-style.el 并将其放在加载路径中的某个位置,例如~/.emacs.d/

答案 1 :(得分:0)

简要描述了设置“c style”(缩进C语言的规则)here。特别是,您可以使用类似的东西为java模式选择“linux”:

(setq c-default-style
      '((java-mode . "linux")))

我认为您需要分别为每种模式选择样式。由于某种原因,java-mode可能没有把c-default-style作为字符串。