ファイル保存時に余計な空行を削除する
コードの折り畳み機能を使うようになって気付いたんですが、折り畳みの前後に空行を開いてコードを書き足していると、知らないうちに無駄な連続空行を作ってしまうことがあります。
それを自動的に解消する方法を考えてみました。2 行以上の連続空行を保存時に 1 行に縮めます。
(add-hook 'before-save-hook '(lambda () (if (and (boundp 'outline-minor-mode) outline-minor-mode) (save-excursion (goto-char (point-min)) (while (re-search-forward "^[ \t]*\n[ \t]*\n" nil t) (forward-char -1) (delete-blank-lines))))))
普通のテキストなど、勝手に縮められたくない場合の対処が必要かなと思います。上ではアウトライン・マイナーモードがオンの時のみ削除するようになっていますが、
(if (memq major-mode '(emacs-lisp-mode javascript-mode))
のように、編集中のメジャーモードによって判断する方法も考えられます。
また、delete-trailing-whitespace の呼び出しを加えるのも良いと思います。