雑文発散

«前の日記(2014-08-01) 最新 次の日記(2014-08-03)» 編集
過去の日記

2014-08-02 [長年日記]

[Emacs] Emacs 24.4 の「フレーム・ウインドウ」関連の新機能

今日は Emacs 24.4 の「フレーム・ウインドウ」関連の新機能について NEWS ファイルから読み解いていく(って、そんな大げさじゃないけど)。

ちなみに Emacs の「フレーム」というのが他のアプリケーションで言う「ウインドウ」で、Emacs の「ウインドウ」は他のアプリケーションで言うと「ウインドウ内で分割されたそれぞれのヤツ(?)」みたいなものなので、Emacs 使いじゃない人はその辺を知っておくと良いのかも。あ、でも、使ってないなら知る必要ないか。

新しい「フレームサイズ変更用のコマンド」が2つ追加されている。

  • toggle-frame-fullscreen
  • toggle-frame-maximized

M-x toggle-frame-fullscreen とすると、(OS X 用にコンパイルしているので)OS X のフルスクリーン表示と通常表示が切り替わる。

同じように M-x toggle-frame-maximized を実行すると、フレームサイズ(しつこいけど、普通のアプリではウインドウサイズ)が最大化する。OS X のアプリケーションウインドウに付いている、緑のボタンと同じ動作。

ちなみにフルスクリーン状態で M-x toggle-frame-maximized を実行しても何も変わらないように見えるけど、次のようにすると、maximized が効いているのが分かる。

  • 通常状態から M-x toggle-frame-fullscreen でフルスクリーンにする
  • M-x toggle-frame-maximized を実行。何も変わらないように見える
  • M-x toggle-frame-fullscreen を実行。フルスクリーンを解除
  • 一度通常状態に戻ったあと、フレーム(ウインドウ)が最大化される

新しい hook も2つ紹介されてる。

  • focus-in-hook
  • focus-out-hook

それぞれ、Emacs にフォーカスが当たった時と外れた時に呼ばれる hook みたい。

例えば次のように focus-in-hookfocus-out-hook をセットして、Emacs のフレーム(ウインドウ)にフォーカスを当てたり外したりしてみると分かる。OS X なら Command + TAB でアプリケーション切り替えをしてみてもいい。

(add-hook 'focus-in-hook
      '(lambda ()
         (message "focus in !!")))

(add-hook 'focus-out-hook
      '(lambda ()
         (message "focus out !!")))

フォーカスが当たると、メッセージバッファに「focus in !!」と表示され、フォーカスを外すと「focus out !!」と表示されるはず。

focus-in-hook の例

このサンプルには全く実用性が無いんだけど、、、この hook たちをどういう風に使えばいいんだろ? フォーカスが外れたら、ウインドウの透過率を上げる、とか?