(define -ayalog '())

括弧に魅せられて道を外した名前のないプログラマ

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つ増えるってこと。だから消した!
(もう少しスマートな方法見つけたら修正しよーっと)

emacs.init.el