vim-users.jp

Vim Advent Calendar 2012 ujihisa 5

Posted at 2013/03/13
このエントリーをはてなブックマークに追加

Vim Advent Calendar 2012 の 103 日目の記事です。 昨日はdetonさんによる日本語のカーソル移動の改善: 文節単位のWORD移動(W,E,B)プラグインと、句読点に移動するmapでした。この記事が投稿されるのは3月13日の予定です。2月上旬、まだ外が寒い時期、SimCity (2013) を予約購入しました。Amazonのダウンロード版です。そして来るSimCity発売日3月5日、特に何も起こらず、Amazonからきたメールを再びチェック、そこにはダウンロード版のパッケージが到着するのは13日、送料は$2くらい、みたいに書かれていました。つらく、長い日々でした。途中、風邪を二回ひきました。

unite-build

unite-buildはuniteのsourceのうちあまり有名でないものの一つです。

https://github.com/shougo/unite-build

この記事の読者の皆様はquickrunについてはおそらく既にご存知でしょう。unite-buildはquickrunのoutputter/quickfixに似て非なるものです。

  • quickrunとunite-buildに共通する性質
    • 別の窓がひらいてそこに求めている出力が届く
    • 非同期実行。結果がじわじわくる
    • エラーがあったときに指定したエラー行にジャンプできる
  • quickrun固有の性質
    • ファイルを保存しなくても実行できる
    • ファイルの保存を前提とした実行は推奨されない (例: プロジェクト全体のビルド & 実行)
  • unite-build固有の性質
    • ファイルの保存が必須
    • そもそも編集中ファイルにあまり関係なくプロジェクト全体のビルドが推奨される

unite-buildはmakeコマンドによるCのコンパイルに対応しています。

vim本体やvimprocの開発などでCを書いている皆様は、ぜひ利用を検討してみてはいかがでしょうか。

repoman

Gentoo LinuxのPortageのために使うebuildファイルを編集するとき、repomanコマンドで

  • 構文エラーなどの基本的にミスを検知
  • そのebuildが利用する予定の外部リソースを取得し、ハッシュ値を計算、Manifestファイルに記述
  • 構文エラーとまではいかないが何か抜け落ちていたりよくない記述をしていたりを検出

が行えます。repomanはカレントディレクトリにあるすべてのebuildファイルを対象とするようです。

これはいかにもunite-buildを使ってくださいといわんばかりのものです。

unite-buildのrepoman対応

というわけで先日unite-buildにpull requestを送り、採用されました。最新版unite-buildを用いてrepomanを用いることができます。ebuildの開発がはかどること間違いなしです。

参考までに著者のunite-buildのrepoman用の設定を記述しておきます。これは<Space>mで編集中ebuildファイルを保存し、repomanで外部リソース取得・ハッシュ値の計算、そしてebuildファイルの検査を行います。

augroup vimrc-ebuild
  autocmd!
  autocmd FileType ebuild nnoremap <buffer> <space>m :<C-u>write<Cr>:Unite -buffer-name=build build:repoman:manifest build:repoman:full -horizontal<Cr>
augroup END

今後の課題

unite-buildのrepoman機能はrepomanの出力する警告メッセージなどを厳密にはパースしておらず、エラー行へのジャンプなどが実現できていません。読者の皆様のパッチをとても楽しみにしています。Gentoo使いでない方もぜひ毎日unite-build経由でrepomanしてみてはいかがでしょうか。

repomanに限らず、いろいろ対応されると便利そうです。ScalaのSBTや、ClojureのLeiningenや、HaskellのGHCなど、未対応のおいしそうな対象がたくさんあります。

ujihisa

もどる
blog comments powered by Disqus