« Flockからココログに投稿 | Main | [Windows Mobile]Advanced/W-ZERO3[es]と京ぽん2の周波数特性測定 »

2007.07.18

[Emacs]jsSellServerを使ってFirefoxとEmacsでJavaScript開発

Firefoxのアドオンをあさっていたら、jsShellServerという興味深いものを見つけた。

jsShellServer (JavaScript Shell Server)は、Firefox用のアドオン。
Firefoxで表示中のページに対して、XULで実装されたJavaScript ShellからJavaScriptを適用できる。
手動版GreaseMonkeyみたいな感じ。
Firefoxの中で閉じた形で使うこともできるが、これの素晴らしいところはEmacsからFirefoxに対してリモートでJavaScriptを実行させられるところ。
Emacsで「alert('test');」などと書いて、行末でC-c C-eとすると、Firefoxでダイアログが表示されるといった具合。

Mac OS X下、Carbon EmacsとFirefoxで動作を確認。

導入

導入は基本的には「Installation」に書いてある通り。

jsShellServer」からアドオン「shellserver.xpi」をFirefoxにインストール 。

js-mode.el」をダウンロード。ページ一番下の「Download in other formats」の下にある「Plain Text」からダウンロードできる。

js-mode.elをload-pathの通ったところにコピー。

.emacs.elに以下を追記。

;;;;;;;;;;;;
;;Sweet Sweet javascript mode
(add-hook 'javascript-mode-hook
'(lambda ()
(js-mode)
(turn-on-lazy-lock)
(c-set-style "ellemtel")))

;(add-hook 'javascript-mode-hook 'js-mode)
(autoload 'js-mode "js-mode" nil t)

FirefoxとEmacsを再起動。

使い方

Firefoxのメニュー「ツール>Javascript Shell Server」を実行。

「Start ShellServer」ボタンを押す。

このままだとJavaScriptの実行対象(Scope)はJavaScript Shellなので、「enumerateWindows()」ボタンを押して、Window(Tab)の一覧を得る。リンクが現れるので、実行対象にしたいものをクリック。

「Scope is now〜」と実行対象が切り替わった旨メッセージが表示される。

Emacs起動、「M-x js-connect」を実行。デフォルトのポート、4007で確定。「M-x js-mode」を実行。

Emacsで適当にJavaScriptのソースを書いて行末にカーソルを持っていき、C-c C-e、これで実行。そのほかの操作はC-h mを見るか、「js-mode.el」の冒頭を参照のこと。

FirefoxのJavaScript Shellの最下段のフォームにもJavaScriptを入力可能。行末でEnterを素早く2回押すと実行可能。Ctrl+上下で実行したJavaScriptのヒストリをたどることも可能。

関連URL

MozLabに含まれているMozReplというのもこれヤバいな。Firefoxにtelnet接続できるそうで。
しかも、Emacsからも接続できるよう、Elispが提供されている。
なおかつ、コマンドラインからMozRepを経由してFirefoxにJavaScriptを実行させるfresnoというコマンドを作った方もいらっしゃる。
これはやばすぎる。今回書いたJavascript Shell Serverもいいと思ったけど、MozReplが決定版ということになりそう。
http://dev.hyperstruct.net/trac/mozlab

Firefoxの拡張MozLabの中に含まれるMozReplがヤバすぎる件について - 最速インターフェース研究会
http://la.ma.la/blog/diary_200609280045.htm

JavaScript Shells - mozilla developer center
http://developer.mozilla.org/en/docs/JavaScript_Shells

Javascript ShellServer for Emacs - The Unwashed Meme
http://the.unwashedmeme.com/blog/2005/06/02/javascript-shellserver-for-emacs/

jsShellServer - Trac
https://trac.acceleration.net/JsShellServer

Extensions Developer's Extension
http://ted.mielczarek.org/code/mozilla/extensiondev/

JavaScript Shell - www.squarefree.com
http://www.squarefree.com/shell/

JsShellServer - Trac - malblue.tumblr.com
http://malblue.tumblr.com/post/4679983

|

« Flockからココログに投稿 | Main | [Windows Mobile]Advanced/W-ZERO3[es]と京ぽん2の周波数特性測定 »