バッファごとに文字の大きさを変更しよう
あなたはバッファごとに
文字の大きさを変更することが
できることを知っていますか?
実はC-x C-+やC-x C--
(ともに M-x text-scale-adjust)によって、
フォントの大きさを変更できるのです。
これらのコマンドを
起動した後は+や-を押すことで
段階的に拡大縮小できます。
しかも、この拡大縮小したフォントは
カレントバッファのみに有効
(バッファローカル)なのです。
フォントの大きさを自在に変更できれば、
小さくて目が疲れることも、
大きくて画面が狹くなることもなくなります。
バッファローカルに
フォントを変更するのは
標準機能のface-remap.elです。
これをうまく使ってあげれば、
バッファやメジャーモードごとに
固有のフォント・大きさを設定できます。
2日前、マウスで改行を入れるときに文字を拡大したのも 、
この機能を使ったものです。
face-remap.elで重要な関数が
- face-remap-add-relative
- face-remap-remove-relative
です。
1が現在のフェイスに
属性を追加する関数です。
返り値を2に渡せば
元に戻るようになっています。
2が必要になるのは
マイナーモードにしたとき
くらいでしょうけど。
文字の高さを計測する
それでは、
バッファごとに固有の
文字の大きさにしてみましょう。
そのためには、以下の5ステップです。
- C-x C--でフォントの大きさを変更する
- 希望の大きさを見付ける
- C-gでフォントの大きさを確定する
- M-: (* (nth 2 text-scale-mode-remapping) (face-attribute 'default :height))
の値をメモする - (face-remap-add-relative 'default :height 値) を
適当な場所で実行させる
org-agendaの例
たとえば僕の場合、
org-agendaのエントリがとても長いので
- ウィンドウを3分割にして
- follow-modeで前のウィンドウの続きを
次のウィンドウに表示させ - 文字を小さくする
ことで*Org Agenda*全体を見られるようにしています。
そのときのheightは105で、
1920x1080の解像度でも
かなり文字が小さいです。
(setq org-agenda-font-height 105) (defun my-org-agenda-display () (interactive) ;; zに限らずいつも使っているorg-agendaのキーを指定する (save-window-excursion (org-agenda nil "z")) (delete-other-windows) (switch-to-buffer "*Org Agenda*") ;; ポイント!ここでフォントのサイズを変更 (face-remap-add-relative 'default :height org-agenda-font-height) ;; 3分割にして大きさを揃える (split-window-horizontally) (split-window-horizontally) (balance-windows) ;; 続きを隣のウィンドウに表示させる (follow-mode 1) (set-window-buffer (next-window) (current-buffer)) (goto-char (point-min)))
prog-modeやtext-modeで使う
応用例はいろいろあります。
たとえばプログラミング用に
フォントを小さくしたいのならば、
このように prog-mode-hook を設定します。
(defun prog-mode-hook--font-size () (face-remap-add-relative 'default :height 130)) (add-hook 'prog-mode-hook 'prog-mode-hook--font-size)
逆に文章を書くのに集中するならば
大きめの値にして text-mode-hook を
設定すると目が疲れにくいです。
まとめ
C-x C--でフォントサイズを
バッファローカルに変更できます。
この機能を使って
希望のフォントサイズを見付け、
意図的に設定することで、
バッファの用途に応じたフォントサイズにできます。
Emacsはバッファごとに
文字の大きさを変更できるのです!
あなたも自在にフォントを使いこなし、
効率よく作業しましょう。
本日もお読みいただき、ありがとうございました。参考になれば嬉しいです。