Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 1 | " Vim support file to switch on loading plugins for file types |
| 2 | " |
| 3 | " Maintainer: Bram Moolenaar <Bram@vim.org> |
Bram Moolenaar | c9b4b05 | 2006-04-30 18:54:39 +0000 | [diff] [blame] | 4 | " Last change: 2006 Apr 30 |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 5 | |
| 6 | if exists("did_load_ftplugin") |
| 7 | finish |
| 8 | endif |
| 9 | let did_load_ftplugin = 1 |
| 10 | |
| 11 | augroup filetypeplugin |
| 12 | au FileType * call s:LoadFTPlugin() |
Bram Moolenaar | c9b4b05 | 2006-04-30 18:54:39 +0000 | [diff] [blame] | 13 | |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 14 | func! s:LoadFTPlugin() |
Bram Moolenaar | 68b76a6 | 2005-03-25 21:53:48 +0000 | [diff] [blame] | 15 | if exists("b:undo_ftplugin") |
| 16 | exe b:undo_ftplugin |
| 17 | unlet! b:undo_ftplugin b:did_ftplugin |
| 18 | endif |
Bram Moolenaar | c9b4b05 | 2006-04-30 18:54:39 +0000 | [diff] [blame] | 19 | |
Bram Moolenaar | 97b2ad3 | 2006-03-18 21:40:56 +0000 | [diff] [blame] | 20 | let s = expand("<amatch>") |
| 21 | if s != "" |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 22 | 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 Moolenaar | 97b2ad3 | 2006-03-18 21:40:56 +0000 | [diff] [blame] | 27 | |
| 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 Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 33 | endif |
| 34 | endfunc |
| 35 | augroup END |