我目前正在与团队一起从事Java工作。每当我们共享文件时,他们的文件总是在我的计算机上奇怪地缩进,我必须通过它们全部或者C-x h C-M - 。
有没有办法让emacs在我打开文件时自动格式化(自动标记整个文件),所以我不必每次都输入那个宏?
非常感谢!
答案 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)