ファイル保存後に iPhone Simulator 内の Safari をオートリロードする elisp & Apple Script
iPhone Simualtor でも、ファイル保存後の auto-refresh がしたかったので。
リロードを実行する Apple Script
iPhone Simulator & Mobile Safari が起動している前提で、アクティブなタブをリロードする。
tell application "System Events" tell process "iPhone Simulator" click button "Reload" of window 1 end tell end tell
ラッパー関数 & auto-save-hook
Emacs 上で扱う為に、ラッパー関数を定義して、after-save-hook に仕込む。
web-reload-iphonesimulator
上記の Apple Script をワンライナー化して、関数として定義。
(defun web-reload-iphonesimulator () "Reload a page on iPhone Simulator. Run process associated to the *Messages* buffer" (interactive) (start-process-shell-command "iphonesimulator-process" "*Messages*" "osascript -e 'tell application \"System Events\"' -e 'tell process \"iPhone Simulator\"' -e 'click button \"Reload\" of window 1' -e 'end tell' -e 'end tell'"))
after-save-hook の設定例:
対象のファイルを保存するとすべてのブラウザで更新を走らせるという富豪仕様 ;p
(setq web-enable-autoreload t) (setq web-autoreload-filetypes '("css" "js" "php" "html" "htm" "tpl" "jade" "haml" "mustache")) (defun web-autoreload-browsers() (interactive) (if (and (equal web-enable-autoreload t) (string-match (concat "\\.\\(" (mapconcat 'identity web-autoreload-filetypes "\\|") "\\)$") buffer-file-name)) (web-reload-browsers))) ;; for Firefox ;; required mozrepl (defun web-reload-firefox () (interactive) (moz-send-line "content.location.reload()")) ;; for Chrome (defun web-reload-chrome () "Reload a page on Chrome. Run process associated to the *Messages* buffer" (interactive) (start-process-shell-command "chrome-process" "*Messages*" "osascript -e 'tell application \"Google Chrome\" to reload active tab of window 1'")) ;; for iPhone Simulator (defun web-reload-iphonesimulator () "Reload a page on iPhone Simulator. Run process associated to the *Messages* buffer" (interactive) (start-process-shell-command "iphonesimulator-process" "*Messages*" "osascript -e 'tell application \"System Events\"' -e 'tell process \"iPhone Simulator\"' -e 'click button \"Reload\" of window 1' -e 'end tell' -e 'end tell'")) ;; Reload all browsers (defun web-reload-browsers () (interactive) (web-reload-iphonesimulator) (web-reload-firefox) (web-reload-chrome))