こんにちわ。
Haxeの開発環境と言えば、ネット上で紹介されるのはFlashDevelopやIDEAばかり。しかしこれらのIDEは、導入がめんどうだったり、独自のビルド用ファイルを使っていたりと気軽さや小回りに欠けるきらいがあります。
やはり、苛虐趣味の変態あるいは自分の頭のスペックはエディタだけで開発できるほどハイスペックと自慢したい人種であるところの僕としては、Haxeの開発といえどやはりVimで行いたいものです。
幸い、Haxeは公式のコンパイラが高性能かつ、Makefile的なモノにあたる*.hxmlの仕様が簡潔なのもあり、素のVimでもほぼストレスなく開発出来ます。
そして、その上で以下にあげるプラグインを導入すれば、IDEに負けない、人に優しいプヨグラミング環境の構築が実現でタイピング速度も倍点ですね?
vaxe
オムニ補完をはじめとした機能を全部乗せで提供する、オールインワンなHaxe用プラグインです。
半年ほど前は不安定だったりしたのですが、今ではかなり安定して動作しています。
色々なプラグインとの連携も考慮されており、公式の画像だとこんな感じになっちょります。
このプラギンの一番のメリットはやはり、Haxeコンパイラを利用した高速で高度なオムニ補完機能です。
公式でのアナウンスーはありませんが、Neocompleteから利用出来ます。
以下はVaxeの設定例です。
細かいところとかは、GithubのREADMEやhelpを参照したほうが安全です。
"set autogroup
augroup MyAutoCmd
autocmd!
augroup END
" vaxeの動作にはautowriteを有効にする必要がある
autocmd MyAutoCmd FileType haxe
\ setlautowrite
autocmd MyAutoCmd FileType hxml
\ setlautowrite
autocmd MyAutoCmd FileType nmml.xml
\ setlautowriteletg:vaxe_haxe_version =3function!s:init_vaxe_keymap()" .hxmlファイルを開いてくれるやつnnoremap<buffer>,vo :<C-u>call vaxe#OpenHxml()<CR>" タグファイル作ってくれるやつ(別途、.ctagsの定義をしませう)nnoremap<buffer>,vc :<C-u>call vaxe#Ctags()<CR>" 自動インポートなnnoremap<buffer>,vi :<C-u>call vaxe#ImportClass()<CR>endfunction
autocmd MyAutoCmd FileType haxe calls:init_vaxe_keymap()
autocmd MyAutoCmd FileType hxml calls:init_vaxe_keymap()
autocmd MyAutoCmd FileType nmml.xml calls:init_vaxe_keymap()" 以下はNeocomplete用if!exists('g:neocomplete#sources#omni#input_patterns')letg:neocomplete#sources#omni#input_patterns = {}
endifletg:neocomplete#sources#omni#input_patterns.haxe ='\v([\]''"\)]|\w|(^\s*))(\.|\()'
おすすめの連携プラグイン
vaxe的には、Tagbar, syntatic, powerline or airline の連携をおすすめ(という備えている)ようですが、僕はTagbar以外はどれも好きになれないので代替となるものを入れます。
Tagbar(そのまま)
エラー箇所を表示 vim-hier
カーソル化のエラー情報を出力 quickfixstatus
クールなステータスライン lightline.vim
お好みの方法でこの四つを導入します。
NeoBundle 'majutsushi/tagbar'
NeoBundle 'cohama/vim-hier'
NeoBundle 'dannyob/quickfixstatus'
NeoBundle 'itchyny/lightline.vim'
次に、vaxeは :make を定義してくれていますので、makeすれば自動でbuild.hxml
を探し出してコンパイルとエラー箇所の解析を行ってくれます。
以下のようなアレを定義して、hierやstatusの挙動やらをいい感じに制御したります。
" make後の結果をquickfixへ出力させる
autocmd QuickfixCmdPost makecopen
autocmd QuickfixCmdPost makecall<SID>auto_ccl()function!s:auto_ccl()if&ft!='qf'returnendif" リストが空ならそのまま閉じるif getqflist()== []
:QuickfixStatusDisable
:ccloseelse
:QuickfixStatusEnable
endif
:HierUpdate
endfunction
最後に、ステータスラインです。見たところ、ビルド用のhxmlファイル名と、ビルドターゲットを表示してくれるもののようです。
なので、vaxeのソースをのぞいてそれっぽい関数を勝手に使います。
function! MyVaxe()if&ft=='haxe'return pathshorten(fnamemodify(vaxe#CurrentBuild(),':p:.')) . ' [' . vaxe#CurrentBuildPlatform() . ']'elsereturn''endifendfunction
こんな感じの関数を作って、'component_function'に突っ込んでやりましょう。
なお、lightlineのカスタマイズについてはlightline.vim を使って vim のステータスラインをカスタマイズの記事がとても参考になります。
以上のプラグインを入れてみたらイメージ図は以下のような感じになります。
端末のVimの画像なので、GVim系を使えばもっときれいに表示出来る可能性が重点ですね?