MonoDevelop
Unity付属のテキストエディターMonoDevelopはインテリセンス的補完や動的補完(Emacsでいう dynamic abbribiation 略してdabbrev、Vimの入力補完)もできるしEmacsキーバインドにもできて なかなかよいのだが、問題もある。
- 日本語入力中に文字が見えない。漢字変換し終わったら見えるが、ひらがな入力中・漢字変換中に見えないので困る。
- なんか動作が遅い。もっとキビキビ動いてほしいなあ。
あとUnity本体にも問題がある。
VisualStudio 2010 Express
- UnityとMonoDevelop日本語対応状況再確認 http://d.hatena.ne.jp/tiri_tomato/20130725/1374713075
にも同じことが書いてある。そこではVisualStudioを使うとよい、と書かれているのでやってみた。しかし私の場合だめだった。
- インテリセンス補完が効かない。
VisualStudioには動的補完がないようなので、インテリセンスで補完できないのは、ぜんぜん補完できないということだ。無料版のExpressなのが悪いのだろうか? 私の設定がまずいのか? いちおうUnityEditor.dll指定してるはずなのだが。
あと
- 改行コードがLFとCRLFが混ざる。
- TABと半角空白の区別が見た目でつかない。(設定でどうにかなる?)
という問題もある。
Emacs for gnupack
そこで使い慣れたEmacsです。
- csharp-modeというのを導入すればインデントやキーワード色つけが可能だ。
- インテリセンス補完はないが、dabbrevがあるので、すでにEmacsの読み込んだファイルのどこかに単語があれば補完できる。
- 「*.cs」という拡張子のファイルを保存するとき、文字コード「UTF-8 BOM有り」改行コード「LF」に自動変換できる。
- 改行コードLFとCRLFが混ざったのも一目で見て分かる、修正できる。
- TAB文字と半角空白の区別、trailing whitespaceも、設定次第でカラー表示できる。
- 動作もキビキビ。起動だけは遅めだ(MonoDevelopやVisualStudioよりは早い)が、Unityと組み合わせるときの私の設定だと「Unityより前」に起動しておいて、ずーっと起動しっぱなしで使うので問題ない。
ただし csharp-mode を導入してもインデントが変だ。
http://www.emacswiki.org/emacs/CSharpMode の画像のインデント、奇妙でしょう。
関数のインデントはいいのだが、その中のifやforで {} が後ろに下がる。
if (a == b) { Debug.Log("good"); }
みたいになるのだ。
- [Emacs][C#] C#ですらEmacsで書きたい人のcsharp-mode http://ongaeshi.hatenablog.com/entry/20110116/1295187496
に修正方法が書いてあったが、そのとおりにしても、こちらの環境では直らない。
- MSDN Blogs > All About Interop > Dino's .emacs file http://blogs.msdn.com/b/dotnetinterop/archive/2008/04/14/dino-s-emacs-file.aspx
の設定ファイルは効果があった。
ただしインデントが半角空白x2だったので、半角空白x4になおしたのが以下。
csharp-setting.el: modify csharp-mode setting. copied alm ...
これで VisualStudio準拠のC#コーディング規則 http://msdn.microsoft.com/ja-jp/library/ff926074.aspx でC#書ける。
Emacs自体の設定は
- C:\home\bin\gnupack に日本語IME対応Emacsを含むgnupack http://gnupack.sourceforge.jp/docs/latest/UsersGuide.html をインストール。
- C:\home\bin\gnupack\config.ini の該当箇所を以下のように書き換え。
[SetEnv] _font_ = Ricty Discord HOME = z:\home [Emacs] geometry = 100x60+0+0 fontName = %_font_% fontSize = 12 colorTheme = simple-1
- Z:\home\.emacs.d 配下に init.elやcsharp-mode.elを置く。
- Windowsの環境変数設定で EMACS_SERVER_FILE=Z:\home\.emacs.d\server\server と指定。
- Unityで [Edit - Preference - External - Editor] を開いてC:\home\bin\gnupack\app\emacs\emacs\bin\emacsclientw.exe と指定する。
- Emacsをあらかじめ起動しておく。
- UnityでC#ファイルをダブルクリックすると、Emacsで読み込まれる。
- EmacsでC#ファイルを閉じるのは通常の操作(私はC-x bでBufferList出してd x)ではだめで、C-x # とする。しかし多数のファイルを開いてしまっていてまとめて閉じたいときにそれは面倒なので、そんなときはEmacs自体を一度閉じてまた起動する。
- なぜかUnityでC#ダブルクリックしてもEmacsが反応しなくなってしまったときはEmacsを再起動。
私のEmacs設定すべてについては
https://gist.github.com/itouhiro の init.el, emacs23.el, ntemacs23.el, ntemacs24.el にある。上に示したcsharp-sedtting.elというのは実際にはntemacs23.elに含んでいる。Emacs24.2の設定だがEmacs23でも使える。
Emacs実践入門 ?思考を直感的にコード化し、開発を加速する (WEB+DB PRESS plus)
- 作者: 大竹智也
- 出版社/メーカー: 技術評論社
- 発売日: 2012/03/07
- メディア: 単行本(ソフトカバー)
- 購入: 22人 クリック: 396回
- この商品を含むブログ (1件) を見る