您这里的代码段适用于任何文本文件。除了它的名称之外,它没有任何特定于Java的特性
java-mode-untabify
. 你唯一需要做的就是复制它
add-hook
调用并将钩子名称更改为
espresso-mode-hook
,或是任何适合意式浓缩咖啡的钩子。尽管我可能建议您将函数的名称更改为反映它不是Java特定的事实的名称。像这样的
cleanup-whitespace-in-buffer
,或者你喜欢的任何东西。
(defun cleanup-whitespace-in-buffer () ; <- more appropriate name
(save-excursion
(goto-char (point-min))
(while (re-search-forward "[ \t]+$" nil t)
(delete-region (match-beginning 0) (match-end 0)))
(goto-char (point-min))
(if (search-forward "\t" nil t)
(untabify (1- (point)) (point-max))))
nil)
(add-hook 'espresso-mode-hook ; <- you can actually add this to any hook
(lambda ()
(add-hook 'write-contents-hooks 'cleanup-whitespace-in-buffer nil 'local)))
我刚刚修改了你发布的片段。我现在不在一台有Emacs的机器上,所以我还没有测试过这些。
清除缓冲区中的空白
函数只需从文件中的每一行删除任何尾随空格,然后将非尾随制表符转换为空格。呼叫
添加挂钩
创建一个匿名函数(lambda),每当运行钩子时都将调用该函数。这个匿名函数安排
在保存之前在缓冲区中运行。
Alex Ott's answer
(untabify (point-min) (point-max))
召唤
(cleanup-whitespace-in-buffer)