Emacsのフレームサイズを取得したかった…
僕はパインアメお兄さんに教えてもらった「split window」なるものをEmacsの設定ファイルに組み込んでいます。
Emacs で Scheme (Gauche)する設定
;; split window (defun scheme-other-window () "Run Gauche on other window" (interactive) (setq scheme-program-name gauche-program-name) (split-window-horizontally 90) (let ((buf-name (buffer-name (current-buffer)))) (scheme-mode) (switch-to-buffer-other-window (get-buffer-create "*scheme*")) (run-scheme scheme-program-name) (switch-to-buffer-other-window (get-buffer-create buf-name))))
なんだけど
(split-window-horizontally 90)
これのお陰でウィンドウサイズが小さいときは綺麗に2分割にならない!!( ´・∀・`)
90の決め打ち部分をフレームサイズの幅/2したくってじゃあフレームサイズはどうやって取得するの?
って調べて調べてなかなか出てこないけどありました!
;;幅 (frame-width) ;;高さ (frame-height)
ということで若干書き換えて平和が訪れましたとさ。
(split-window-horizontally (/ (frame-width) 2))
追記::
何故か(?)runemacs.exeを起動してるときは起こらなかったんだけど
Cygwin(mintty)上で起動させるようになってから
このsplit windowは画面を3分割にするようになってしまった…
(元々はちゃんと真ん中から2分割してくれてたんだけど…)
仕方ないので原因を突き止めることに。
(switch-to-buffer-other-window (get-buffer-create "*scheme*"))
分かったのはswitch-to-buffer-other-windowが実行されると
フレームが1つ増えるってこと。だから消した!
(もう少しスマートな方法見つけたら修正しよーっと)