とにかく書く

日々の雑感や知り得たことを、とにかく書いています

Emacs でのフレームサイズの取得

Emacs で Window(WIndows でいうところのウィンドウではなく、バッファが表示されている領域)のサイズをピクセル単位で取得するときは、

(* (frame-char-width) (frame-width)) ; 幅
(* (frame-char-height) (frame-height)); 高さ

で取得できる。

C-; を押したときに Window の大きさに応じて縦か横を分割する(大きいほうが半分になるように分割する)ようにしたくて調べた。

(defun split-window-smart ()
  (interactive)
  (if (< (* (frame-char-width) (window-width)) (+ (* (frame-char-height) (window-height)) 30)) ; 30は調整用(タイトルバーなど)
       (split-window-vertically) (split-window-horizontally))
  (other-window 1))
(global-set-key (kbd "C-;") 'split-window-smart)