blob: a434b9372b048ba929ac16afd00abf1a676fd24b [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" Vim support file to switch on loading plugins for file types
2"
3" Maintainer: Bram Moolenaar <Bram@vim.org>
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00004" Last change: 2006 Apr 30
Bram Moolenaar071d4272004-06-13 20:20:40 +00005
6if exists("did_load_ftplugin")
7 finish
8endif
9let did_load_ftplugin = 1
10
11augroup filetypeplugin
12 au FileType * call s:LoadFTPlugin()
Bram Moolenaarc9b4b052006-04-30 18:54:39 +000013
Bram Moolenaar071d4272004-06-13 20:20:40 +000014 func! s:LoadFTPlugin()
Bram Moolenaar68b76a62005-03-25 21:53:48 +000015 if exists("b:undo_ftplugin")
16 exe b:undo_ftplugin
17 unlet! b:undo_ftplugin b:did_ftplugin
18 endif
Bram Moolenaarc9b4b052006-04-30 18:54:39 +000019
Bram Moolenaar97b2ad32006-03-18 21:40:56 +000020 let s = expand("<amatch>")
21 if s != ""
Bram Moolenaar071d4272004-06-13 20:20:40 +000022 if &cpo =~# "S" && exists("b:did_ftplugin")
23 " In compatible mode options are reset to the global values, need to
24 " set the local values also when a plugin was already used.
25 unlet b:did_ftplugin
26 endif
Bram Moolenaar97b2ad32006-03-18 21:40:56 +000027
28 " When there is a dot it is used to separate filetype names. Thus for
29 " "aaa.bbb" load "aaa" and then "bbb".
30 for name in split(s, '\.')
31 exe 'runtime! ftplugin/' . name . '.vim ftplugin/' . name . '_*.vim ftplugin/' . name . '/*.vim'
32 endfor
Bram Moolenaar071d4272004-06-13 20:20:40 +000033 endif
34 endfunc
35augroup END