Hatena::ブログ(Diary)

Yet Another Hackadelic

2008-03-17 ITMediaのインタビューでHxHの予想を見事に外しましたが何か?

はじめてのhaxe, haxe-mode.el

Chumbyも買う事だし、とりあえず環境作っておなじみ「Hello world」が出るまでやってみました。

haxeとは

503 Service Temporarily Unavailableを良く読んで下さい(ぉぃ

インストール

NekoVMが必要です。

NekoVMのインストール

no titleを参考に。

$ cd /usr/lib
$ sudo tar xfz /path/to/neko-1.7.0-osx.tar.gz
$ sudo ln -s neko-1.7.0-osx neko

みたいな感じ。あるいはnekoディレクトリを作っても良い。

haxeのインストール

こちらもNekoVM同様です。僕は解凍先を/usr/lib/haxeにしました。

haxe-mode.el

sness: haxe.elから拝借しました。

;;haxe-mode
(require 'haxe-mode)
(defconst my-haxe-style
  '("java" (c-offsets-alist . ((case-label . +)
                               (arglist-intro . +)
                               (arglist-close . 0)
                               (cpp-macro . 0))))
  "My haXe Programming Style")
(add-hook 'haxe-mode-hook
  (function (lambda () (c-add-style "haxe" my-haxe-style t))))
(add-hook 'haxe-mode-hook
          (function
           (lambda ()
             (setq tab-width 4)
             (setq indent-tabs-mode t)
             (setq fill-column 80)
             (local-set-key [(return)] 'newline-and-indent))))

こんな感じで設定しておきます。

さぁHello worldしよう

hxファイルってのがソースファイルになります。

こんな感じのソースを書いてみましょう。

class Test {
	static function main() {
		trace("Hello world !");
	}
}

んでもってこいつをswfにコンパイルします。

$ /usr/lib/haxe/haxe -swf test.swf -main Test Test.hx

とするとtest.swfが出来てるのでブラウザで見てみましょう。traceの実行結果としてHello Worldが出てると思います。

もっと学ぶには

公式のチュートリアルをとりあえずやった方が良さそう。

2008-01-07 長兄はメガネ、三男は髪型

mmm-mode and nxml-mode

一応、font-lock以外は組み合わせて使えたのでメモ。

mmm-modeのインストール

まずはmmm-modeをダウンロードして、展開します。

$ cd /tmp
$ wget http://jaist.dl.sourceforge.net/sourceforge/mmm-mode/mmm-mode-0.4.8.tar.gz
$ tar xfz mmm-mode-0.4.8.tar.gz
$ cd mmm-mode-0.4.8

例えばWindowsでMeadowを使ってる人は環境変数EMACSが適切に指定されてないとダメなのと、恐らくC:\meadowとかにインストールされてるので、次のようにビルドします。

$ env EMACS=/cygdrive/c/meadow/bin/Meadow.exe LANG=en_EN ./configure --with-lispdir=/cygdrive/c/meadow/lisp
$ env EMACS=/cygdrive/c/meadow/bin/Meadow.exe LANG=en_EN make
$ env EMACS=/cygdrive/c/meadow/bin/Meadow.exe LANG=en_EN make install

これで多分インストール出来てるはず。

あるいはmmm-modeのmmm-*.elをC:\meadow\lispにコピーしてから、

$ cd /cygdrive/c/meadow/lisp
$ ../bin/Meadow.exe -batch -f batch-byte-compile mmm-*.el

のようにしても恐らく問題は無いと思います。

設定例

;;mmm-mode
(require 'mmm-mode)
(require 'mmm-auto)
(setq mmm-global-mode 'maybe)
(setq mmm-submode-decoration-level 0)
(mmm-add-find-file-hook)

(mmm-add-classes
 '(
   (js-script-cdata
    :submode javascript
    :face mmm-code-submode-face
    :delimiter-mode nil
    :front "<script[^>]*>[ \t\n]*<!\\[CDATA\\[[ \t]*\n?"
    :back "[ \t]*]]>[ \t\n]*</script>"
     )
   (js-script
    :submode javascript
    :face mmm-code-submode-face
    :delimiter-mode nil
    :front "<script\[^>\]*\\(language=\"javascript\\([0-9.]*\\)\"\\|type=\"text/javascript\"\\)\[^>\]*>[ \t]*\n?"
    :back "[ \t]*</script>"
    :insert ((?j js-script nil @ "<script type=\"text/javascript\">"
                 @ "\n" _ "\n" @ "</script>" @))
    )
   (js-inline
    :submode javascript
    :face mmm-code-submode-face
    :delimiter-mode nil
    :front "on\\w+=\""
    :back "\"")
   (css-style-cdata
    :submode css
    :face mmm-code-submode-face
    :delimiter-mode nil
    :front "<style[^>]*>[ \t\n]*<!\\[CDATA\\[[ \t]*\n?"
    :back "[ \t]*]]>[ \t\n]*</style>"
    )
   (css-style
    :submode css
    :face mmm-code-submode-face
    :delimiter-mode nil
    :front "<style[^>]*>[ \t]*\n?"
    :back "[ \t]*</style>"
    :insert ((?c css-style nil @ "<style type=\"text/css\">"
                 @ "\n" _ "\n" @ "</style>" @))
    )
   (css-inline
    :submode css
    :face mmm-code-submode-face
    :delimiter-mode nil
    :front "style=\""
    :back "\"")
   ))

こんな感じのをどんどん書く。付属のmmm-sample.elを見ると良いと思われます。

上手く行くと

f:id:ZIGOROu:20080108004152p:image

特定のブロックで、こんな感じになります。

現時点の問題点

上手くいってる人が居たら是非教えて欲しいんですが、

  • nxml, nxhtmlと併用するとfont-lockが消える(つまりハイライトはされない)
  • javascriptの場合は最初の行のインデントがちょっとおかしくなる。

まぁ、今まで頑張って自前でインデントしてたりした時代に比べればましなので、ここら辺にしておこうかなと。

これでXBLだとかHTCなんて言う、どうしたってモードが混在するであろうファイルの編集が少し楽になるかもしれない。

2007-06-01 id:amachangがやってきたお

cperl-mode で Non-hex digit used for Unicode escape な現象が起きる

現在CPANにあがってるcperl-mode v5.0ですが、Linuxに入れたEmacs22では「Non-hex digit used for Unicode escape」なるエラーが出て使えません。orz...

軽くgoogle先生に聞いたところ、

に当たったのでcperl-modeを見てみると、

\\U	Upcase until \\E .  See also \u, uc.

多分、「See also \u」が問題。

\\U	Upcase until \\E .  See also \\u, uc.

としたら問題無く動きました。


ちなみに今日からid:amachangが会社の新しいメンバーとして加わりました。

再び同僚として働けるのが、やはり嬉しいですね。

2007-03-05 まだプログラミングしてねーw

Emacs22でnxhtml-modeが動かない人の為のpatch

nxhtml-modeってのがあるんですけど、それがOSXのCarbon Emacs(Emacs22がベース)で動作しないので、パッチを作ってみたです。

ダウンロード : nxhtml-0.92-070304-emacs22.patch

$ cd /Applications/Emacs.app/Contents/Resources/share/emacs/22.0.92/site-lisp
$ wget http://ourcomments.org/Emacs/DL/elisp/nxhtml/zip/nxhtml-0.92-070304.zip
$ unzip -d nxhtml-mode nxhtml-0.92-070304.zip
$ cd nxhtml-mode
$ wget http://www.art-code.org/files/nxhtml-0.92-070304-emacs22.patch
$ patch -p1 -d . < nxhtml-0.92-070304-emacs22.patch

これで使えるようになると思います。

2006-11-14 妙な緊張をした日

javascript.el

d:id:higepon:20060707:1152249345 によるとjavascript.elがいい感じとの事でしたが、今確かめてみたら404ですた。orz...


Web Archiveにてまだ拾えます。javascript.el

設定は、

;; javascript-mode
(add-to-list 'auto-mode-alist (cons  "\\.\\(js\\|as\\|json\\|jsn\\)\\'" 'javascript-mode))
(autoload 'javascript-mode "javascript" nil t)
(setq js-indent-level 4)

とかで無問題。

これでJSONの編集とかでもきれいにインデントしてくれます。素晴らしい!

追記 (2008-01-08T00:46:49+09:00)

ここで紹介してるjavascript.elは相当古くバージョン1.0のようです。

同じ作者がアップデートしたと思われるjavascript.elの2.0 Beta 8は次の二つで入手出来ます。

MozLab提供のMozReplをインストールしている人
chrome://mozlab/content/mozrepl/javascript.el
nxhtml-modeの中

javascript.elと言う名前でMozLabと同じバージョンが入ってます。

追記2 (2008-01-26T23:39:01+09:00)

米欄にてid:gan2さんから教えて貰いました。

にて最新版が拾えるようです。