quickrun の outputter を利用して、Boost.Phoenix のエラーメッセージを見やすくする

前回の続きです。
前回は、syntax + conceal の設定で、namespace を短縮しましたが、今回は quickrun の outputter 内で直接エラーメッセージを置換してみました。

[vim]

" outputter の quickfix をベースに作成
let my_outputter = quickrun#outputter#quickfix#new()
function! my_outputter.init(session)
    " 元の処理を呼び出す
    call call(quickrun#outputter#quickfix#new().init, [a:session], self)
endfunction

function! my_outputter.finish(session)
    let data = self._result
    " エラーメッセージを適当に置換
    let data = substitute(data, "boost::phoenix::detail", "phx_d", "g")
    let data = substitute(data, "boost::phoenix", "phx", "g")
    let data = substitute(data, "boost::proto::detail", "prt_d", "g")
    let data = substitute(data, "boost::proto", "proto", "g")
    let self._result = data
    call call(quickrun#outputter#quickfix#new().finish, [a:session], self)
endfunction

" quickrun に outputter を登録
call quickrun#register_outputter("my_outputter", my_outputter)

[ビフォー]

[アフター]


こんな感じ。
quickfix への出力前にエラーメッセージを直接置換しています。
他の outputter だと処理が違うかも。
前回よりはマシですが、所詮はエラーメッセージを短くしているだけなので、可読性はあまり上がりませんね。
本気で、可読性を上げるならばもうちょっと違うアプローチをする必要がありそうです。


あと、Twitterで、

って突っ込まれて、

std::vector<std::vector<int>> → std::vector<...>

みたいな感じにしてみようと思ったんですが、正規表現で頭が爆発しそうになったので止めました。
誰か書いてくれないかな(チラチラ