Emacsで自動的に余計なスペースや改行を削除するモード
Emacsにはwhitespace-modeというスペースやタブを可視化するモードがあります。
使いかたは簡単で、 M-x whitespace-mode
や M-x global-whitespace-mode
をすれば、スペースやタブ、さらに行末の余計なスペースや空行などが色で表示されるようになります。
表示する条件は、 M-x whitespace-toggle-options
で変更できますし、見た目はカスタム変数の whitespace-style
でカスタマイズすることができます。ここは用途にもよりますし、好みもあるので割愛。
削除される対象は、
- ファイルの先頭と最後の空行
- 行の先頭や末尾にある半角スペースやタブ
です。全角スペースは対象外のようです。
さらにファイルを保存したときに自動で余計なスペースなどを削除することもできます。
この機能を有効にするには、カスタム変数 whitespace-action に新しいActionを追加して、Auto Cleanupを選択します。
これで、whitespace-modeが有効にしていると、ファイル保存(C-x C-s)を実行したタイミングで、余計な空白が自動的に削除されるようになります。
Actionには他に次のような選択肢があります。
Report On Bogus
ファイルを保存するときに、問題がある場合は、どんな問題があるかの*Whitespace Report* というバッファが別に表示されます。
Aboort On Bogus
上の Report On Bogus
と同様にレポートが表示されますが、ファイルの保存は実行されません。
cleanup
ファイルの保存時ではなく、ファイルを開いたタイミングで余計な空白などが削除されます。ただし保存はされていない状態でなっています。
warn-if-read-only
cleanup
や auto-cleanup
と同時に設定しておくと、読取専用のファイルを開いた場合は、
Can’t cleanup: foobar.org is read-only
のような警告が表示されるようになります。