1071d4279SBram Moolenaar" Vim support file to switch on loading plugins for file types 2071d4279SBram Moolenaar" 3071d4279SBram Moolenaar" Maintainer: Bram Moolenaar <[email protected]> 4*c9b4b05bSBram Moolenaar" Last change: 2006 Apr 30 5071d4279SBram Moolenaar 6071d4279SBram Moolenaarif exists("did_load_ftplugin") 7071d4279SBram Moolenaar finish 8071d4279SBram Moolenaarendif 9071d4279SBram Moolenaarlet did_load_ftplugin = 1 10071d4279SBram Moolenaar 11071d4279SBram Moolenaaraugroup filetypeplugin 12071d4279SBram Moolenaar au FileType * call s:LoadFTPlugin() 1397b2ad35SBram Moolenaar 14071d4279SBram Moolenaar func! s:LoadFTPlugin() 15071d4279SBram Moolenaar if exists("b:undo_ftplugin") 16071d4279SBram Moolenaar exe b:undo_ftplugin 17293ee4d4SBram Moolenaar unlet! b:undo_ftplugin b:did_ftplugin 18071d4279SBram Moolenaar endif 1997b2ad35SBram Moolenaar 2097b2ad35SBram Moolenaar let s = expand("<amatch>") 2197b2ad35SBram Moolenaar if s != "" 22071d4279SBram Moolenaar if &cpo =~# "S" && exists("b:did_ftplugin") 23071d4279SBram Moolenaar " In compatible mode options are reset to the global values, need to 24071d4279SBram Moolenaar " set the local values also when a plugin was already used. 25071d4279SBram Moolenaar unlet b:did_ftplugin 26071d4279SBram Moolenaar endif 2797b2ad35SBram Moolenaar 2897b2ad35SBram Moolenaar " When there is a dot it is used to separate filetype names. Thus for 2997b2ad35SBram Moolenaar " "aaa.bbb" load "aaa" and then "bbb". 3097b2ad35SBram Moolenaar for name in split(s, '\.') 3197b2ad35SBram Moolenaar exe 'runtime! ftplugin/' . name . '.vim ftplugin/' . name . '_*.vim ftplugin/' . name . '/*.vim' 3297b2ad35SBram Moolenaar endfor 33071d4279SBram Moolenaar endif 34071d4279SBram Moolenaar endfunc 35071d4279SBram Moolenaaraugroup END 36