osyo-manga / vital-over

18 stars 3 forks source link

regexpengine=1 の時にマッピング展開がされない場合がある #98

Closed haya14busa closed 9 years ago

haya14busa commented 9 years ago
echo "\<S-Tab>" =~# "\\%#=1^\<S-Tab>" | " => 0
echo "\<S-Tab>" =~# "\\%#=2^\<S-Tab>" | " => 1

regexpengineによってfilterの結果が変わり, マッピングが展開できないパターンが存在します. つらすぎる...

該当箇所: https://github.com/osyo-manga/vital-over/blob/8293881cb3830e729d34a679b3d47d51042de25e/autoload/vital/__latest__/Over/Commandline/Base.vim#L428

haya14busa commented 9 years ago

対処法として考えられるのは

  1. 7.4 では \%#=2 をつける
  2. 7.3 では仕方ないので multi {lhs} 機能を無効にして1キーだと展開してあげる

とかデスかね...

haya14busa commented 9 years ago

vital-over/autoload/vital/latest/Over/Keymapping.vim

function! s:match_key(keymapping, key)
    if exists("+regexpengine")
        let keys = sort(keys(a:keymapping))
        return get(filter(keys, 'a:key =~# ''\%#=2^'' . v:val'), -1, '')
    else
        return has_key(a:keymapping, a:key) ? a:key : ''
    endif
endfunction

workaroundだけどこうかなー

haya14busa commented 9 years ago

https://github.com/osyo-manga/vital-over/commit/ac4c0f1b45764ea111c3f96560d3448782c37523

これで一緒に直りました!!! ありがとうございます!

osyo-manga commented 9 years ago

ありがとうございました。