まずは切り方。これを気になってこのブログを見た人がいるかもしれないので。

(global-font-lock-mode 0)

こちらの設定で全てのシンタックスハイライトが無効になります。簡単ですね。

切ろうと思った理由

プログラムの中にはシンタックスハイライトを切っている人が一定数います。 不思議ですよね。僕も不思議でした。

そこでちょっと理由を調べてみました。そこで出会ったのがこのブログです。 こちらの内容は面白いので是非読んでみて欲しいのですが、要約すると 「シンタックスハイライトはプログラムを読みやすくするために開発されたはずだが、 開発者はコードの内容の理解よりもコードの形を見てしまい、コードの正しい理解から遠ざけてしまう。」 といった内容です。

好きな文を抜粋すると

色の付いたテキストは文章をつなぎ合わせるため、より脳を使う。

補助輪付きの自転車で練習しても自転車に乗れるようになるわけではない。

(コメントアウトを)色を変えて見えなくすることは、敷物の下に隠すようなものだ。

上記のようなものは過激ですが、成程なぁと思いました。

そんなこんなで感銘を受けて切ってみました。

使ってみて

さすがに全てのシンタックスハイライトを切ると diff が見辛すぎたので以下のものだけ有効化しました。

(add-hook 'magit-mode-hook #'font-lock-mode)
(add-hook 'diff-mode-hook #'font-lock-mode)

使用イメージ

こんな感じになりました。

Goのコード

全然読めると思います。

感想

全然問題なく使える、というのが感想の一番です。むしろシンタックスハイライトを復活すると見辛く感じます。 個人的に良かったポイントは以下です。

  • コメントが読みやすいので読む習慣が付く。変なコメントに気付けるようになりました。
  • シンタックスハイライトの色で微妙な気持ちになることがなくなった。テーマで悩むこともなくなりました。
  • シンタックスハイライトが逆に付かなくなることによるイライラが失くなった。だって最初から付いてないんだから。

おわりに

これを見てくれた人も試しに切ってみると世界が変わるかもしれません。

追記

ちなみに、flyspell を使う場合はコメントアウトにシンタックスを当てないと、flyspell が反応しません。 そのため、以下のように一回有効かしてからコメントアウト以外を無効にする必要があります。

(add-hook 'prog-mode-hook #'(lambda()
               (turn-on-font-lock)
               (setq-local font-lock-keywords nil)))