有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在emacs中更改javamode的缩进样式

我的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模式的缩进样式。有人知道这方面的线索吗?当然,禁用缩进制表符模式是一个解决方案,但我不得不说,我觉得这并不令人满意。我觉得这个问题真的有一个简单的解决办法,但我已经找了好几个小时了


共 (2) 个答案

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

  2. # 2 楼答案

    设置“c风格”(类似c语言的缩进规则)将简要介绍here。特别是,您可以使用类似这样的方法来选择java模式的“linux”:

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

    我相信你需要分别选择每种模式的风格。出于某种原因,java模式可能没有将c-default-style作为字符串使用