Kentaro Kuribayashi's blog

Software Engineering, Management, Books, and Daily Journal.

C-x C-s 押下時に Firefox をリロード

最速インターフェース研究会 :: AutoHotkeyを使ってFirefoxをリロードするだけのexeファイルを作ってみたあたりから当たりから盛り上がった AutoHotkey を用いて、エディタ保存時にブラウザを自動リロードするネタに、刺客登場。

なんかもうこんなのでいい気がしてきた。
(中略)
「:w[Enter]」が押されたときにFirefoxをリロード。
こんなのVim以外ではほとんど押さないので。押したとしてもFirefoxがリロードされるだけなのでほとんど弊害はないし。起動しておくだけでいいのでお手軽。ターミナルで別サーバのファイルを編集しててももちろんOK。

その発想はなかったわ。。。
つわけでさっそくパクらせていただきたく存じ申しあげたわけだが、Emacs ラー(別名「えまくさ」)としては C-x C-s 押下時に Firefox をリロードしたいところ。まぁ、上記エントリで公開されているコードをてけとうに改造すればいいだろとか思いきや、AutoHotkey がはじめてなせいもあって、ちとめんどかった。。

  1. 当然、複数のキーストロークを指定しなきゃならない(C-x C-s)
  2. XKeymacs でもって C-x C-s を windows のほぼ全体的に C-s の変わりの保存ショートカットにしちゃってるものだから、システム上の C-x C-s を殺さず、かつ AutoHotkey でも活かす必要がある
  3. あーでも、実際 CSS ファイルを編集するのって、Xkeymacs を無効にした putty 上のリモートサーバの Emacs なんだけど。。。

ってな上記の要求を全て満たすべく ホットキー割り当ての指定方法を見ながら、あれこれいじったり。
そんなわけで、こんな感じになりました。C-x C-s 押下時に、Xkeymacs の保存ショートカットを殺さずにシステムに通しつつ、Firefox をリロードします。以下をてけとうなファイル名で保存し、AutoHotkey でコンパイルして生成された実行ファイルを、CSS なりなんなりを書いている時だけ実行しておくといい感じ。当然、Emacs に限らず、単に C-x C-s を押下した時に Firefox がリロードされます。ウザいこともあり得るけど、必要な時だけ AutoHotkey アプリを起動すればいいので、あんまり問題ないかなとも思ったり。

Transform, CtrlS, Chr, 19

~^x::
    Input, InputChar, C I L1 M T1 V, {Esc}, %CtrlS%
        if ErrorLevel = Match
            if InputChar = %CtrlS%
                SetTitleMatchMode, 2
                WinGet, FF,, Mozilla Firefox
                ControlSend,, {F5}, ahk_id %FF%
        return

実際のところは、Emacs 使用時は auto-save-buffers を使用しているため、C-x C-s を押すことはないのだけど、まぁ、CSS/JS/HTML 編集時は意識的に押すようにしようかな、と。Firefox にフォーカスあてた上でリロードかけるよりは速いし。