VimからXcodeを使わずにビルドしてみた。cocoa.vim必須?

Mac

Vimにcocoa.vimを導入してからすっかりXcodeはビルド用になってます。

Vim + cocoa.vimで少し不満だったのが、エラーをみたいときにいちいちXcodeとVimとをいったりきたりしないといけないというところ。わがままなのかもしれないですが、どうせならVimだけでさくっと確認したいなぁ〜と。

そんなわけでからXcodeを使わずに文法チェック(というかビルドしてるという。。。)するための設定をしてみました。



autocmd FileType objc nnoremap <buffer> <C-9> :call XcodeBuildCheck()<CR>
autocmd FileType objc inoremap <buffer> <C-9> <C-o>:call XcodeBuildCheck()<CR>

function! XcodeBuildCheck() "{{{
	let proj_dir = substitute(b:cocoa_proj, '\(.*\)\/.*' , '\1', '')
	let proj_file = substitute(b:cocoa_proj, '\(.*\)\/\(.*\)', '\2', '')
	let current_dir = getcwd()
	execute ":lcd " . escape(expand(proj_dir), " #\\")
	let error_message = system( 'xcodebuild -project ' . escape(expand(proj_file), " #\\") .' -activetarget -activeconfiguration')
	echo error_message
	execute ":lcd " . escape(expand(current_dir), " #\\")
endfunction

上のコードを.vimrcに追加するとXcodeプロジェクトに含まれているファイルを編集しているときにControl+9を押すとシステムのxcodebuildというコマンドを呼び出してビルドをしてくれて、ビルド結果が表示されるようになります。Xcodeをいちいち立ち上げしなくてもビルドできるので楽ちんです♪

やりたかったけど、できなかったこと

  • error_messageを整形するなりして表示されるメッセージを綺麗にしたかった。
  • QuickFixのウィンドウに表示して、エラー行にすぐに飛べるようにしたかった。

1つ目の「メッセージの整形」は、substitute()をつかって抽出できるかな?と試してみたのですが、うまくいかず。2つ目の「QuickFixウィンドウを使う」はできるのかどうかもわからない。そんな状態になってます。VimScriptってよくわからないんですよね。。。。そんなわけでだれか作ってくれないかなぁ〜なんて思ってしまいます。

Objective-CでVimを動かせないかな。。。。

ともあれ、Xcodeを使わずにVimだけでビルドができる & 文法エラーもチェックできるので、ぜひぜひ試してみてください。

というわけで、たかともでした。

ちなみにb:cocoa_projが取得できればcocoa.vimはいらないです。こんな感じ。



if exists('b:cocoa_proj')
	finish
endif
let b:cocoa_proj = fnameescape(globpath(expand('<afile>:p:h'), '*.xcodeproj'))
" Search a few levels up to see if we can find the project file
if empty(b:cocoa_proj)
	let b:cocoa_proj  = fnameescape(globpath(expand('<afile>:p:h:h'), '*.xcodeproj'))
		if empty(b:cocoa_proj)
		let b:cocoa_proj = fnameescape(globpath(expand('<afile>:p:h:h:h'), '*.xcodeproj'))
		if empty(b:cocoa_proj)
			let b:cocoa_proj = fnameescape(globpath(expand('<afile>:p:h:h:h:h'), '*.xcodeproj'))
		endif
	endif
endif

autocmd FileType objc setlocal makeprg=xcodebuild\ -activetarget\ -activeconfiguration
をしておいて、ビルドするときに:lcdでxcodeprojがあるディレクトリにいって:makeする方法を見つけて、泣きそうです。

まぁ、いちいち:lcdしなくてもいい利点はあるものの、やってしまった感が。。。。

コメント »

コメントはまだありません。

コメントする

Get Adobe Flash playerPlugin by wpburn.com wordpress themes