java-mode で yasnippet ではまったで解決で

どもです。
色々とちまちまぐだぐだやっているわけでございますが,
この度遅ればせながら,yasnippet を導入させてもらいました。
そう,ajc-java-complete を使うために。
ほいで,java-mode で yasnippet を使えたらいいんでないの? と
思考するのは当然の理。

https://github.com/nekop/yasnippet-java-mode
から clone して,追加。
ロードする。固まる。CPUを使っているわけではない。
ブロックしている感じ。
うーん。
ntemacs を再起動。
やはり java-mode 用のスニペットをロードしている段階で固まる。
困ったぞ。

結論から言うとですね,Windows における使ってはいけないファイル名を
使っているのが原因でした。
コンストラクタのスニペットのファイルが,「con」。
で,これを ctor とリネームして,中身も編集して解決。
一応中身。

# -*- mode: snippet -*-
#name : constructor
#key : ctor
# --
public ${1:`(file-name-sans-extension (buffer-name))`}($2) {
    $0
}


ここに至るまで大変やったんやで!!
他のモードのファイルと比べて1行目の mode なんちゃらが
余計なのか? とファイルの1行目を,最近覚え始めたsedを使って華麗に削除してみる。

% for f in *; do sed -i -e '1d' $f; done;

とかね。
結果はもちのろんでダメ。

ん? なんやら末尾に改行があるファイルと無いファイルがあるぞ,と。
では末尾に改行を追加。これだけだとファイルの最後に改行があるファイルについては,
改行が2回続くことになるので,その後空行を削除。つまり,

% for f in *; do sed -i -e '$s/\(.*\)/\1\n/' $f; done;

% for f in *; do sed -i -e '/^$/d' $f; done;

てな感じ。
まあ,これでは解決しなかったんですけどね。
しかもファイルの最後以外に空行があった場合にも削除されているという・・・。こわっ。
あとで要チェックやね。

ほいで今度は,どのファイルならロードできるかと,1つずつファイルをコピーして,
emacs を起動して,というテストを繰り返しました。
んで,3つ目のファイルを試しているときにふと気づく。。。
ん? なんかこれファイル名関係じゃね? と。
ファイル名を見ていくと,「con」がある。
ん? con ってたしか Windows では使ったらダメ的なファイル名じゃなかったけ?
バイス名とかぶるとかなんとか,よく知らんけど。
で,それを ctor にしてみたら,解決!!
パチパチパチ。
おつかれちゃん。

てか,yasnippet の展開はすげーと思うけど,それを終了? 抜ける?
ためにどうするのかわからん。
マイナーモードはオフってます。勝手に展開されるとうざい気がするので。
んで,今は,M-x yas-exit-all-snippets を使っています。
ググったけどわからんかった。
だれか教えてくれ〜。