let s:dir = expand(':p:h') .. '/filetype' function! vimrc#ui#filetype#menu() abort let files = readdir(s:dir) let menu = {} for f in files let m = matchlist(f, '\(\S\+\)\.vim') if !empty(m) let menu[m[1]] = ['eval', printf('vimrc#ui#filetype#%s#menu()', m[1])] endif endfor return menu endfunction