[Emacs]CarbonEmacsからSafariをコントロールする
昨日のエントリ「[Zaurus]Linux Zaurus上のEmacsで選択した単語を「英辞郎 on the Web」で引く」に関連して、CarbonEmacsから手を離すこと無く、裏にあるSafariをコントロールして英辞郎 on the Webをブラウズするための糞Elispを書いてみました。
Elisp -> AppleScript -> JavaScriptの三段重ねですね。
昨日のElispはSafariで一枚もWindowを開いていないときにエラーが出てたので、黙って修正してたりします。
(defun my-safari-do-javascript(command)
(do-applescript
(concat "
tell application \"Safari\"
if count of document is greater than 0 then
do JavaScript \"" command "\" in document 1
end if
end tell")))(defun my-safari-scroll(direction)
(let ((amount 200))
(if (eq direction 1)
(setq amount (- amount)))
(my-safari-do-javascript
(concat "javascript:window.scrollBy(0,"
(int-to-string amount)
");"))));;Safariで上方向スクロール
(defun my-safari-scroll-up()
(interactive)
(my-safari-scroll 1))
;;Shift+上
(global-set-key '[S-up] 'my-safari-scroll-up);;Safariで下方向スクロール
(defun my-safari-scroll-down()
(interactive)
(my-safari-scroll 0))
;;Shift+下
(global-set-key '[S-down] 'my-safari-scroll-down);;Safariでヒストリを進む
(defun my-safari-history-forward()
(interactive)
(my-safari-do-javascript "history.forward();"))
;;Command+右
(global-set-key '[M-right] 'my-safari-history-forward);;Safariでヒストリを戻る
(defun my-safari-history-back()
(interactive)
(my-safari-do-javascript "history.back();"))
;;Command+左
(global-set-key '[M-left] 'my-safari-history-back);;Safariでリロード
(defun my-safari-reload()
(interactive)
(my-safari-do-javascript "location.reload(true);"))
;;Ctrl+C r
(global-set-key "\C-cr" 'my-safari-reload)
« [Zaurus]Linux Zaurus上のEmacsで選択した単語を「英辞郎 on the Web」で引く | Main | [Mac OS X]iTunes-LAMEがiTunes7対応アップデート! しかし……。 »
Recent Comments