autoload に定義されている関数を呼びやすくする

autoload に以下のような定義を書くことで、ユーザコードから定義されている関数を呼び出す事が出来ます。

[./autoload/accel/functional.vim]

" accel#functional は、ディレクトリ構成と同じにする必要がある
function! accel#functional#plus(a, b)
    return a:a + a:b
endfunction

function! accel#functional#minus(a, b)
    return a:a - a:b
endfunction

[ユーザコード]

echo accel#functional#plus(2, 3)
echo accel#functional#minus(5, 6)

[出力]

5
-1


この様に、関数名の前にディレクトリ構成を記述することで、ユーザコードから呼び出すことが出来る、関数が定義できます。
しかし、ディレクトリ構成が深い場合、ディレクトリ構成も含めた関数名が長くなってしまうので、コードが読みづらくなってしまいます。
あと書くのがめんどくさい。

" accel#functional とか邪魔
echo accel#functional#plus(accel#functional#minus(5, 2), accel#functional#minus(2, 5))

と、いう事でちょっと改良。

[./autoload/accel/functional.vim]

function! accel#functional#plus(a, b)
    return a:a + a:b
endfunction

function! accel#functional#minus(a, b)
    return a:a - a:b
endfunction

" 関数テーブルを用意
let accel#functional#functional = {
    \ "plus"  : function("accel#functional#plus"),
    \ "minus" : function("accel#functional#minus")
    \ }

[ユーザコード]

" 関数テーブルを好きに名前付けする
let f = accel#functional#functional
" 呼び出しがすっきり
echo f.plus(2, 3)
echo f.minus(5, 6)
echo f.plus(f.minus(5, 2), f.minus(2, 5) )

" 普通に呼び出すことも出来る
echo accel#functional#plus(6, 3)
echo accel#functional#minus(1, 6)

[出力]

5
-1
0
9
-5

関数テーブルを用意して、そこから関数の呼び出しを行います。
これでだいぶ関数の記述がすっきりしたと思います。