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

Posted

技术标签:

【中文标题】如何在 java 模式下配置 emacs,使其不会自动对齐方法参数【英文标题】:How to I configure emacs in java mode so that it doesn't automatically align method parameters 【发布时间】:2010-11-24 20:03:49 【问题描述】:

在 emacs 中,当我键入时:

public void foo(String one,
    String two) 

它的标签是这样的:

public void foo(String one,
                String two) 

我宁愿不这样做,而只是像其他行延续一样对齐参数。如何配置它不这样做?

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

感谢您不仅回答了我的问题,而且还启发了我如何解决类似的问题。 :) 出色的答案。确实很有帮助。谢谢。 在这里你可以看到为什么'+ btw,还有其他可用的选项:emacswiki.org/emacs/IndentingC#toc13【参考方案2】:

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

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

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

【讨论】:

请注意,将其放入实际文件中时,您会覆盖其他用户在查看您的文件时可能在其 .emacs 设置中进行的任何自定义。如果可能,请将这些内容移到您的配置文件中。

以上是关于如何在 java 模式下配置 emacs,使其不会自动对齐方法参数的主要内容,如果未能解决你的问题,请参考以下文章

.emacs 编辑以始终在终端模式下启动 Emacs?

如何在 emacs 中创建一个空文件?

默认情况下,使emacs以控制台模式(-nw)运行

如何在 emacs - haskell 模式下运行 haskell 应用程序?

11.Emacs进阶之艺术家模式

如何将 emacs 设置为在 verilog 模式下使用 3 个空格而不是制表符?