Emacs から Node.js REPL を快適に使うための Emacs Lisp を作成しました

Node.js REPL は Node.js (JavaScript) の挙動の確認を手軽にできて便利なんですが、Emacs 上で使うと変なエスケープシーケンスが表示されたりタブ補完が効かなかったりと不便です。
また、端末上で使っても履歴のインクリメンタルサーチができないのは痛いです。

ということで作りました。
abicky/nodejs-mode.el

Node.js 0.4.12, 0.6.17、Emacs 23.4.1 で動作確認していますが、同じ環境でも PC のスペックなどによっては補完時に無限ループに陥るかもしれません・・・

提供する機能

  • タブによるトークンの補完
  • 文字列内でのファイル名補完
  • 履歴のインクリメンタルサーチ

インストール

$ cd /path/to/emacs/lisp
$ wget https://raw.github.com/abicky/nodejs-mode.el/master/nodejs-mode.el
$ emacs -batch -f batch-byte-compile nodejs-mode.el

.emacs に次の1行を追加してください。

(require 'nodejs-mode)

使い方

M-x nodejs で REPL を起動します。

補完候補は元の Node.js REPL と同じものになります(なるはずです)。
例えば re と入力した時点でタブを入力すると次のように require と return が補完候補として挙がります。
20120514083621

require(“f の状態でタブを入力すると f で始まるモジュールが補完候補として挙がります。
20120514083622

require(“./ の状態でタブを入力するとカンレントディレクトリ以下のファイルが補完候補として挙がります。これは元の Node.js REPL と違う点です。が、こちらの方が望ましいと思います。
20120514083624

文字列内でタブを入力するとファイル名を補完しようとします。
20120514083625

comint-mode をベースにしているので、履歴を遡る場合は M-p、その逆は M-n です。
M-r で履歴のインクリメンタルサーチも可能です。

というわけで、よかったらお使いください!
反響がそれなりにある場合は現在の行やリージョンを Node.js REPL に送って評価するマイナーモードとかも作るかもです。