首页 文章

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

提问于
浏览
2

我的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的缩进样式 . 有人有这方面的线索吗?当然,禁用indent-tabs-mode是一种解决方案,但我不得不说我觉得它并不令人满意 . 我觉得这个问题确实有一个简单的解决方案,但我一直在寻找...

2 回答

  • 1

    这对我有用:

    (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/ .

  • 0

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

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

    我相信你需要分别为每种模式选择样式 . 由于某种原因,java-mode可能不会将c-default-style作为字符串 .

相关问题