quickrun はファイルタイプに従ったコマンド定義に従って編集中のファイルを実行してくれます。C/C++ であれば実行可能なコンパイラでコンパイルし、実行した結果を表示してくれます。
しかし例えば C++ で boost を使う場合、ヘッダオンリーな物であれば問題無いのですが、ライブラリをリンクする必要がある場合には、quickrun では面倒な実行方法を取らざるを得ません。
ユーザからすれば
#include <boost/filesystem.hpp>
と書かれていれば、出来れば -lboost_filesystem
をリンクして欲しいものです。今日はそれを実現してくれる quickrunex.vim というのを作りました。上記の様に
boost/filesystem.hpp
が include されていれば自動で -lboost_filesystem
を付与してくれます。現在対応しているライブラリとしては
- libuv
- v8
- gtk
- boost/chrono
- boost/date_time
- boost/exception
- boost/filesystem
- boost/graph
- boost/iostream
- boost/locale
- boost/math
- boost/python
- boost/random
- boost/serialization
- boost/signals
- boost/system
- boost/thread
- boost/timer
- boost/wave
- fltk2
- fltk3
#include
するだけで自動的にライブラリをリンクしてくれます。mingw32 と msvc にも対応しています。linux でも動くはずです。また mingw の boost であれば
libboost_system-mgw46-1_46.dll.a
の様に -lboost_system
ではリンクしてくれないライブラリもありますが、これも自動で補完してくれます。ですので、vim を起動してガシガシ書いて、一度も終了せずにアプリケーションを書けてしまいます。
今後、ユーザが拡張して仕組みを増やせる様にしたいと思うと同時に、C/C++ 以外にも使えたらいいなーと思っています。
ただし以下の点に注意しておいて下さい。
quickrunex.vim は quickrun.vim の v0.6.0 ブランチを使っています。master ブランチでは動作しません。
非推奨APIである
quickrun#register_hook
を使っています。help にも削除される可能性があると書いてありますので、いずれ動かなくなるかもしれません。まぁ、thinca さんの事なので、おそらく別の方法で hook を登録出来る仕組みを作ってくれると信じていますが。
宜しければどうぞ。
mattn/quickrunex-vim - GitHub
quickrun extension for C/C++
https://github.com/mattn/quickrunex-vim