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 模式设置的行为(困扰我的是 main 函数大括号的缩进)。我几个月前才开始使用 Emacs,我对 Emacs Lisp 不是很满意,但真的不知道为什么 java-mode 没有采用 cc-mode 的缩进样式。有人对此有任何线索吗?当然,禁用 indent-tabs-mode 是一种解决方案,但我不得不说我觉得它并不令人满意。我觉得这个问题确实有一个简单的解决方案,但我一直在寻找几个小时......

4

2 回答 2

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

于 2013-09-17T06:30:49.677 回答
0

此处简要介绍了设置“c 样式”(用于缩进类 C 语言的规则)。特别是,您可以使用类似这样的方法为 java-mode 选择“linux”:

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

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

于 2013-09-17T01:18:53.690 回答