unite.vim で converter 後に matcher を呼び出す

前回 unite-filters の converter で表示形式を設定したんですが、同様の処理を word に対して行った場合、その word で絞り込みを行うことができません。

let s:filters = {
    \   "name" : "converter_add_updatetime",
    \   "description" : "add updatetime"
\}

function! s:filters.filter(candidates, context)
    let candidates = deepcopy(a:candidates)
    for candidate in candidates
        let updatetime = strftime("(%Y/%m/%d %H:%M:%S) ", getftime(candidate.action__path))
        " abbr と word に更新日を追加する
        " この時に word で絞り込みを行いたいがうまく動作しない
        let candidate.abbr = updatetime . candidate.abbr
        let candidate.word = updatetime . candidate.word
    endfor
    return candidates
endfunction

call unite#define_filter(s:filters)
unlet s:filters


call unite#custom#source('file', 'converters', ["converter_add_updatetime"])


この問題は絞り込み(matcher)の後に converter が呼ばれるためです。
これは次のように converter → matcher の順で処理するように設定することで回避することができます。

" converters には特に設定する必要はない
" call unite#custom#source('file', 'converters', ["converter_default"])

" matchers に対して converter を設定する
call unite#custom#source('file', 'matchers', ["converter_add_updatetime", "matcher_default"])


unite-filters は奥が深いですね…。