JACO-BASS » Emacs でつくる JavaScript と ActionScript の環境

ひとに寄り添うデザインの追求

Emacs でつくる JavaScript と ActionScript の環境

第7回のウェブテコで発表したネタです。スライドを用意しなかったので、今回はブログの記事として書きます。

Emacs の JavaScript のメジャーモード。

emacs-js2-mode

Emacs では、特定のファイルを編集する場合、それに特化したメジャーモードを使うことで、編集をより便利に行なうことができます。
JavaScript を編集するためのメジャーモードは、以下のものが代表的です。

最近、人気なのは js2-mode の方で、こちらは Java で書かれた JavaScript パーサのRhinoが移植されており、リアルタイムの構文チェックが行なわれるところが他のモードとの大きな違いです。

ただし、非力なマシンであれば、動作が重いかもしれないので、そう感じる人は、javascript-mode を利用しているようです。

js2-mode のインストール

Emacs に Elisp をインストールするための基本的な設定などは、Emacs ビギナーに贈る、これからバリバリ使い隊!!人のための設定講座 その1。を参考にして下さい。

まず、Google Code の js2-mode のサイトからjs2-20080616a.elをダウンロードして、js2.el とリネームしてあなたの Emacs のロードパスであるフォルダに置きます。

続いて、Emacs を起動して、js2.el をバイトコンパイルします。js2-mode はバイトコンパイルしないと動作しないので、この作業は必須となります。

M-x byte-compile-file というコマンドを実行します。M-x というのは、Meta キーを押しながら x のことですが、通常メタキーは Alt になっていますので、Alt + x を押します。すると、Emacs 下部のミニバッファーでコマンドをタイプできますので、byte-compile-file とタイプしてエンターを押して下さい。

ファイルを尋ねられますので、js2.el を指定してエンタを押しましょう。ちなみに、ミニバッファー上では、TAB キーで補完が可能ですので、全てを直にタイプする必要はありません。

バイトコンパイルが実行されると、様々なファイルが生成されますので、終了するまで待ちます。

終了して入力が可能になれば、M-x js2-mode というコマンドを実行すると、js2-mode が起動しますが、いちいちコマンドを実行するのは面倒なので、あなたの Emacs の設定ファイル (おそらく .emacs でしょう)を開き、以下の設定を追加して下さい。

LISP:
  1. ;; js2-mode
  2. (autoload 'js2-mode "js2" nil t)
  3. (add-to-list 'auto-mode-alist '("\.js$" . js2-mode))

これを行末で C-x C-e で評価するか、もしくは Emacs を再起動すると .js の拡張子のファイルを開いたとき、自動的に js2-mode で編集できるようになります。

JavaScript Lint を利用して構文チェックをより厳しくする

flymake-mode を利用したときのスクリーンショット

Rhino による構文チェックも便利ですが、より厳しくチェックしたい人は、JavaScript Lint を導入しましょう。

JavaScript Lint - あどけない話に詳しい使い方がまとめられているので、js2-mode を使う場合の設定だけ書いておきます。

LISP:
  1. (when (and (require 'flymake nil t))
  2.   (setq flymake-jsl-mode-map 'js2-mode-map)
  3.   (add-hook 'js2-mode-hook
  4.             (lambda ()
  5.               (require 'flymake-jsl)
  6.               (setq flymake-check-was-interrupted t)
  7.               ;; (flymake-mode t) ; 起動時に flymake-mode をオンにしたい場合はコメントアウトする
  8.               )))

上記の記事の flymake-jsl.el を利用していますので、必ずロードパスにインストールしておきましょう。

js2-mode の時と同様に、再起動した後、JavaScript ファイルを開いて、M-x flymake-mode するとシンタックスチェックがかかります。

LISP:
  1. (when (and (require 'flymake nil t))
  2.   (set-face-background 'flymake-errline "orange red")
  3.   (set-face-foreground 'flymake-errline "black")
  4.   (set-face-background 'flymake-warnline "yellow")
  5.   (set-face-foreground 'flymake-warnline "black"))

色が見にくい場合は、僕の設定を利用するか、参考にして変更して下さい。

Emacs の ActionScript のメジャーモード

as3-mode の表示

続いて、ActionScript のモードですが、主なものに以下の2つがあります。

導入のしやすさは、actionscript-mode の方が簡単で、Elisp をロードパスに配置して読み込むだけで利用できます。

as3-mode は、flyparse-mode を利用したパーサーを使用する仕組みとなっており、構文チェックが可能な分、actionscript-mode よりも高性能なのですが、導入がすこし面倒です。

actionscript-mode はactionscript-mode.elをダウンロードして、ロードパスに置いて、

LISP:
  1. (when (require 'actionscript-mode nil t)
  2.   (setq auto-mode-alist
  3.         (cons '("\.as\'" . actionscript-mode) auto-mode-alist))

とすれば良いでしょう。

as3-mode のインストール

as3-mode のインストールについては調べてみたところ、日本語の記事がなかったので、しっかりと紹介しておきます。

まず、flyparse-modeをダウンロードします。

flyparse-mode は、Java で書かれたパーサを利用して、ActionScript と JavaScript と CSS をパースすることができます。ただし、利用するためには lib フォルダにある flyparse-parsers.jar と antlr-runtime-3.1.jar の場所を CLASSPATH に追加してあげる必要があります。

Emacs で CLASSPATH を設定するには setenv 関数を使います。.emacs に CLASSPATH を追加しましょう。

LISP:
  1. (setenv "CLASSPATH" (concat
  2.         "/Users/tomoya/projects/flyparse-mode/lib/flyparse-parsers.jar:/Users/tomoya/projects/flyparse-mode/lib/antlr-runtime-3.1.jar"))

僕の場合は、このようになります。

続いて、flyparse-mode.el をロードパスに追加します。

今度は as3-mode をダウンロードして、as3-mode.el と fdb.el をロードパスに追加します。

そして .emacs に

LISP:
  1. (when (require 'as3-mode nil t)
  2.   (setq auto-mode-alist
  3.         (cons '("\.as\'" . as3-mode) auto-mode-alist))
  4.  
  5.   (add-hook 'as3-mode-hook
  6.             '(lambda ()
  7.                (define-key as3-mode-map (kbd "C-c t f") 'flyparse-toggle-debug-overlays)
  8.                (require 'flymake-as3)
  9.                (setq flymake-check-was-interrupted t))
  10.             ))

という設定を書きます。再起動すると、.as の拡張子のファイルを開くと自動的に as3-mode が起動します。

M-x flyparse-toggle-debug-overlays を実行するか、C-c t f (コントロールを押しながら c を押し、コントロールを離して t f を続けて)を押すと、視覚的な構文チェックが実行されます。オフにしたいときは、同じコマンドを実行します。

flyparse-mode の flyparse-toggle-debug-overlays 実行時のスクリーンショット

まとめ

この他にも、auto-complete.elなどを使うことで、開発効率が促進されること間違いないでしょう。

長くなりましたが、Emacs で JavaScript や ActionScript を書く人の参考になれば嬉しいです。

3 Comments

  1. anonymous

    js2-20080616a.el を js2.el にリネームせずにバイトコンパイルしたのならば
    > (autoload 'js2-mode "js2" nil t)
    という記述は
    (autoload 'js2-mode "js2-20080616a" nil t)
    としなければ動かないと思います。

    Posted 2009-06-10 at 13:01 | Permalink
  2. ありがとうございます。
    導入したのがだいぶ前だったので、あやふやな内容を書いてしまいました。

    Posted 2009-06-11 at 04:33 | Permalink
  3. tttt

    (when (require 'actionscript-mode nil t)
    (setq auto-mode-alist
    (cons '("\.as\'" . actionscript-mode) auto-mode-alist))

    ↑このコードに、"\.as\'"を"\.as"に変更しないと使えないみたいです。

    Posted 2010-07-20 at 20:09 | Permalink

コメントを書く

  • メールアドレスが公開されたり他で使われたりすることはありません
  • * 印の項目は必須です
*
*

この記事のタグ

関連記事

back to top