submode#enter_with でエラーになった話
submode.vim で次のような設定をしたら
call submode#enter_with('itunes_volume_up', 'n', 's', '<Space>iu', ':call itunes#volume_up(g:itunes_volume)<CR>')
E474: 無効な引数です
というようなエラーを吐き出した。
設定自体は間違ってないんだけどなー、と思いつつエラーが出ている箇所を調べてみたらどうやら :map の左辺値の文字数が多すぎてエラーになっているぽい。
実際のコードはこんな感じ。
nnoremap <silent> <Plug>(submode-before-entering:itunes_volume_up:with:<Space>iu) :call itunes#volume_up(g:itunes_volume)<CR>
これは、例えば次のようなマッピングでも同様のエラーが出る
" a は51文字 :map aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa :echo "homu"
で、調べてみたら :map の左辺値は50文字までらしい。
自分でマッピングする場合は殆ど問題にならないんだけどプラグイン側で設定されていると気づきづらいなぁ…。
ちなみに submode#enter_with の場合は 12文字以下の文字を設定すれば問題ないぽい。