如何在java模式下配置emacs,使其不会自动对齐方法参数

2022-09-02 12:07:11

在 emacs 中,当我键入以下内容时:

public void foo(String one,
    String two) {

它按如下方式表示:

public void foo(String one,
                String two) {

我宁愿它没有,只是像其他行延续一样对齐参数。如何将其配置为不执行此操作?


答案 1

这来自Emacs CC模式的信息手册,在Windows上使用GNU Emacs 23.1:

  1. 开始构建未正确缩进的 Java 类。在你的情况下,正是你在上面输入的内容。
  2. 将光标移动到未正确缩进的行的开头。在你的例子中,“字符串二){”。
  3. 点击 C-c C-s () 询问 Emacs 它认为您正在查看的语法元素。在你的例子中,它会说类似((arglist-cont-nonempty n m))。c-show-syntactic-information
  4. 使用 C-c C-o () 告诉它您要更改此语法元素的缩进级别。c-set-offset
  5. 它默认为它认为的语法元素是什么,例如,arglist-cont-nonempty。如果默认值正确,只需按 RET。
  6. 现在,它想知道使用什么表达式来计算偏移量。在本例中,默认值为省略表达式。删除它,只需使用单个加号 +即可。
  7. 测试它以确保它正常工作:在不同的行上按TAB一堆,或者M-x缩进区域或类似。
  8. 要使其永久化,请将其添加到 .emacs 文件中:

(setq c-offsets-alist '((arglist-cont-nonempty . +)))


答案 2

我喜欢在每个源文件的第一行中指定模式样式。尝试:

// -*- mode: java; c-file-style: "stroustrup" -*-

这将为您提供合理的制表方式。你也可以试试“k&r”。


推荐