如何在Emacs中自动格式化代码,就像在Netbeans IDE中一样。

3
我刚开始接触Emacs,想知道它是否可以像NetBeans IDE中的自动格式化选项一样,自动为多种语言(Java,C++,HTML,LaTeX)进行代码格式化。
我还想知道:
- 是否内置了此功能 - 我是否可以下载具有此选项的el文件 - 如何自定义自动格式化的首选项(制表符长度,函数之间的行数,大括号是放在新行还是同一行等),就像在NetBeans中一样。
(版本:Ubuntu-12.04 / OS-X-10.9上的Emacs-24)

1
Emacs本身并不是一个集成开发环境(IDE)。但我相信这篇文章可能会改变你的看法。 - Ébe Isaac
1个回答

2
如果你调用indent,你会自己找到它。实际上,有许多以indent开头的交互式函数。我们可以通过M-x indent TAB轻松找到它们。但是我们也可以使用C-h ?查找文档,因此如果我们尝试使用C-h d RET indent RET在函数文档中搜索,或者使用M-x apropos RET foo RET,我们也会找到它们。
以下是内置的并与不同语言一起使用的内容(刚刚尝试了elisp、python和javascript):
  • M-x indent-region格式化所选区域,
  • indent-sexp格式化当前表达式
没有全局选项来配置缩进,我们需要深入每种模式的选项。通常有像(setq html-tab-width 4)这样的选项。
编辑:一些提示:(setq tab-width 8)(setq c-set-style "K&R")(setq c-basic-offset 8),使用emacs内置的c-mode或GNU Indent,您可以切换样式:https://www.gnu.org/software/emacs/manual/html_mono/ccmode.html#Choosing-a-Stylehttps://www.gnu.org/software/indent/manual/indent.html#SEC4

感谢@Ehvince,indent-region非常好用。但是如何自定义执行此缩进的方式呢?我发现在C语言中,这个缩进命令会将大括号缩进到新行,并且还会将大括号本身从条件语句稍微缩进一点。我希望大括号与其父级条件(if/while/for/do/switch)的起始列保持一致。如何编辑此功能? - Ébe Isaac
一些提示:(setq tab-width 8)(setq c-set-style "K&R")(setq c-basic-offset 8),使用GNU Indent可以切换样式。https://www.gnu.org/software/indent/manual/indent.html#SEC4 - Ehvince
请查看这里关于Emacs的C模式的样式:https://www.gnu.org/software/emacs/manual/html_mono/ccmode.html#Choosing-a-Style - Ehvince

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接