2011-04-11

emacsでMXMLとactionscript3を編集できるようにする (あるいはmumamoの使い方)

ググッても特にあんまり情報がなかったので、晒します。勘違いしていたり、もっといい方法があったら教えてください。

きちんとAdobeにお金を払うと、Flex BuilderというFlexの統合開発環境を手に入れることができますが、とりあえず、Flexを使ってみたいという場合はオープンソースで公開されているFlex SDKを使うのが吉だと思います。まぁ、本気でFlexの開発をするんだったらFlex Builderは必須だと思いますけど。そういえば、Flexの統合開発環境ではFlex Developerというのもあるらしいですけど、Windows向けなのでよく知りません。

で、Flex SDKにはコンパイルするためのツールはありますが、コードはテキストエディタを使って書く必要があります。コードアシストがないテキストエディタでコードを書くのは苦行にしかならないので、Emacsでなんとかしようと思うわけですが、如何せん情報がない。

一番困ったのが、MXMLファイルの中にactionscript3のコードを混ぜて書くときのメジャーモードの切り替えです。世の中にはactionscript3用のメジャーモードなんてのもあるんですが、asファイルで分けることを前提として書かれているようなので、ちょっと厳しい。

で、nXhtmlに含まれるmumamoという、1つのバッファに複数のメジャーモードを共存させるelispを使って環境を整えました。

まずはactionscript3用のメジャーモードはここのを使いました。

で、あとはmumamoを使うためにnXhtmlのautostart.elをloadしたあとに以下のようにします。

;; actionsript-modeの登録
(autoload 'actionscript-mode "actionscript-mode" "Major mode for editing actionscript3." t)
(add-to-list 'auto-mode-alist '("\\.as?\\'" . actionscript-mode))

;; actionscript切り替え用chunk
(defun mumamo-chunk-mxml-script (pos min max)
  "`<![CDATA['から`]]>'までをactionsript-modeとする"
  (mumamo-quick-static-chunk pos min max "<![CDATA[" "]]>" nil 'actionscript-mode nil))

;; mxmlはxml-mode、asはactionscript-modeを使用する
(define-mumamo-multi-major-mode mxml-actionscript-mumamo-mode
  "Flex開発でMXMLとactionscript3を共存させる"
  ("Flex Development" nxml-mode (mumamo-chunk-mxml-script)))

mxmlとactionscript3に限らず、以下のようにmumamoを使えるようにすれば幸せになれるかもしれません。

  • 共存させたいメジャーモードを切り替えるためのchunkを定義する
  • 共存させたいメジャーモードをdefine-mumamo-multi-major-modeを使って元になるメジャーモードに組み込こむ

0 件のコメント: