AS3に対応したactionscript-mode.elを使う

Casual Game Development » Blog Archive » Emacs mode for AS3で紹介されてるelispを使うとAS3のシンタックスに対応したactionscript-mode(ecmascript-modeがベース)を使えるらしいのだけど、簡単に使えなかったのでメモ。Casual Game Development » Blog Archive » My Emacs Customizationsのほうを使うなら多分以下の操作は不要だけど、こちらはAS2と混ざってる様子。

古いcc-modeを用意

コメント欄見ると依存モジュールのバージョンの違いで動いたり動かなかったりするようで、http://blog.pettomato.com/?p=22#comment-7412に動いたバージョンとactionscript-mode時だけそのcc-modeを読むコードが書かれている。

(setq load-path (cons (substitute-in-file-name "$HOME/emacs/cc-mode-5.28") load-path))
(require 'cc-mode)

これをactionscript-mode.el先頭にコピー。cc-mode-5.28のパスは適当に。

as-config.elから(require as-profiler)をコメントアウト

http://blog.pettomato.com/?p=22#comment-7614の通りです。austinさんがデバッグトレースに使ってたSBCLに依存するみたいでコメントアウトせよと。

.emacsに(defvar running-on-x (eq window-system 'x))追加

.emacsじゃなくてもいいんだろうけど。上二つだけやっても"Symbol's value as variable is void: running-on-x"と言われたのでhttp://blog.pettomato.com/content/site-lisp/.emacs見てそれらしいところだけコピー。以下は.emacsに追加した内容全体。

;; actionscript
; "Symbol's value as variable is void: running-on-x"といわれたので。
; via http://blog.pettomato.com/content/site-lisp/.emacs
(defvar running-on-x (eq window-system 'x))
(autoload 'actionscript-mode "actionscript-mode" "Major mode for actionscript." t)
;; Activate actionscript-mode for any files ending in .as
(add-to-list 'auto-mode-alist '("\\.as$" . actionscript-mode))
;; Load our actionscript-mode extensions.
(eval-after-load "actionscript-mode" '(load "as-config"))

上記設定でasファイル開いてシンタックスハイライトされてることだけ確認した。