続・開発環境を構築

id:os0x さんに教えてもらったので最新のlog.asをsvn coした。
http://d.hatena.ne.jp/nishiohirokazu/20080325/1206433123

        • -

/Applications/Adobe Flex Builder 3/sdks/3.0.0/frameworks/
のパスに空白文字が入っているのがうっとうしかったので
/usr/lib/flex3を作った。log.asとかもそこに入れた。

ちなみになぜか動かないーって言ってたのはconfigの該当行が丸ごとコメントアウトされているのに気づかずにそこに追加していたせいだった。

        • -

次はactionscript-mode.elかな

        • -

http://blog.pettomato.com/?p=22
からactionscript-mode.elとas-config.elをダウンロード。どこに入れようかな。~/elisp/に入れるか。

mv Desktop/*.el elisp

Macの何がいいって、デスクトップが/home/nishio/Desktopってところだ。しかも/home/nishioは~でいい。Windowsなんか「C:\Documents and Settings\nishio\デスクトップ」だ。なんで空白文字とか非ASCII文字とか混ざってるんだよと。

        • -

 *.elは.emacs.d/に入れるのが普通らしい。

        • -

SourceForgeでcc-modeの5.28を入れる。古いバージョンじゃないとactionscript-mode.elが動かないので。actionscript-mode.elの中でだけ古い方を使うように設定する。

https://sourceforge.net/project/showfiles.php?group_id=3875&package_id=3849

参考文献:http://d.hatena.ne.jp/haida/20080320

        • -

File mode specification error: (file-error "Cannot open load file" "actionscript-mode")
って言われた。.emacs.dにパスを通していないことが原因なので下のようにした。

(setq load-path (cons "~/.emacs.d" load-path))

setqとconsを使う低級な書き方じゃなくてリストに要素を追加する関数があっても良さそうだと思ったけど見つけられなかった。

        • -

一応できたかが色が気に入らない。後で直す。

        • -
(add-to-list 'load-path "~/.emacs.d")

これが正解か。

        • -

yasnippetいれる。http://code.google.com/p/yasnippet/

        • -

http://d.hatena.ne.jp/antipop/20080321/1206090430
これを参考にする。

        • -
nishio:yasnippet nishio$ mkdir mysnippets
nishio:yasnippet nishio$ cd mysnippets/
nishio:mysnippets nishio$ pwd
/Users/nishio/.emacs.d/yasnippet/mysnippets
nishio:mysnippets nishio$ svn co http://svn.coderepos.org/share/config/yasnippet/common coderepos_common

こんな感じでとりあえずcodereposのcommonのところを取ってきた。
あとmkdir privateした。とりあえずここに適当に入れて、他の人にも役立ちそうだと思ったらcommonに入れればいいのかな。

        • -

オリジナルのスニペットpython-mode/class

#contributor : Orestis Markou
#name : class ... :
# --
class ${1:cname}(${2:object}):
    "docstring for $1"
    def __init__(self, ${3:arg}):
        self.$3 = $3
        $0

なんで引数が1個なのかと問いつめたくなるよね。

        • -

まぁ、まだ試し書きの段階だけど。

`(defun join (x sep) (if (= 1 (length x)) (car x) (concat (car x) sep (join (cdr x) sep))))`

klass ${1:cname}(${2:object}):
    "docstring for $1"
    def __init__(self, ${3:arg}):
        ${3:$(join (mapcar (lambda (x)  (concat "self." x " = " x)) (split-string text ", ")) "\n")}
	$0

これを実行してargのところでa, b, cとか書くと下のようになる。

join

klass cname(object):
    "docstring for cname"
    def __init__(self, a, b, c):
        self.a = a
self.b = b
self.c = c

解決すべき課題は
1: 関数を定義したときに関数名が出力されてしまうのはどう回避すればいいか
2: どうすれば正しいインデントになるか
この2点だけ。