打开文件时如何在emacs中自动缩进?

时间:2014-12-07 21:41:07

标签: java linux emacs formatting gnu

我目前正在与团队一起从事Java工作。每当我们共享文件时,他们的文件总是在我的计算机上奇怪地缩进,我必须通过它们全部或者C-x h C-M - 。

有没有办法让emacs在我打开文件时自动格式化(自动标记整个文件),所以我不必每次都输入那个宏?

非常感谢!

2 个答案:

答案 0 :(得分:2)

将它放在〜/ .emacs:

(add-hook 'java-mode-hook (lambda () (indent-region (point-min) (point-max))))

这将注册一个在输入Java主模式时要执行的函数,该函数是一个lambda表达式,用于缩进(point-min)(point-max)之间的区域 - 即整个缓冲区。 / p>

下次启动emacs时会加载它。要将其置于正在运行的会话中,请将光标置于其后面并按C-x C-e。

答案 1 :(得分:1)

我在与非emacs编码器一起使用emacs时遇到过类似的问题。我看到了#34;古怪"由于emacs'默认选项卡缩进设置为8列而不是4.将选项卡宽度设置为4应该可以解决此问题。您可以输入 M-x空白模式来查看空白字符,看看是否存在问题。如果是这样,您可以将以下内容添加到init文件中以进行修复:

(setq-default tab-width 4) ;; emacs version 23.2+
(setq default-tab-width 4) ;; emacs versions prior to 23.2

当我需要重新缩进文件时,我使用 M-x iwb 从我的init文件调用以下函数:

(defun iwb ()
  "indent whole buffer"
  (interactive)
  (delete-trailing-whitespace)
  (indent-region (point-min) (point-max))
  (untabify (point-min) (point-max)))

可以为此功能添加一个类似于Wintermute's响应的挂钩。

(add-hook 'java-mode-hook #'iwb)