blob: 9109a6e458657751bcc4fc0a2dea7d32d874bd5f [file] [log] [blame]
Bram Moolenaar9da17d72022-02-09 21:50:44 +00001vim9script noclear
Bram Moolenaar071d4272004-06-13 20:20:40 +00002
Bram Moolenaar9da17d72022-02-09 21:50:44 +00003# Vim support file to switch on loading plugins for file types
4#
5# Maintainer: Bram Moolenaar <Bram@vim.org>
6# Last change: 2022 Feb 09
7
8if exists("g:did_load_ftplugin")
Bram Moolenaar071d4272004-06-13 20:20:40 +00009 finish
10endif
Bram Moolenaar9da17d72022-02-09 21:50:44 +000011g:did_load_ftplugin = 1
Bram Moolenaar071d4272004-06-13 20:20:40 +000012
13augroup filetypeplugin
Bram Moolenaar9da17d72022-02-09 21:50:44 +000014 au FileType * call LoadFTPlugin()
Bram Moolenaar071d4272004-06-13 20:20:40 +000015augroup END
Bram Moolenaar3e79c972022-02-04 19:48:06 +000016
Bram Moolenaar9da17d72022-02-09 21:50:44 +000017if exists('*LoadFTPlugin')
18 # No need to define the function again.
19 finish
20endif
21
22def LoadFTPlugin()
Bram Moolenaar3e79c972022-02-04 19:48:06 +000023 if exists("b:undo_ftplugin")
24 exe b:undo_ftplugin
25 unlet! b:undo_ftplugin b:did_ftplugin
26 endif
27
28 var s = expand("<amatch>")
29 if s != ""
30 if &cpo =~# "S" && exists("b:did_ftplugin")
31 # In compatible mode options are reset to the global values, need to
32 # set the local values also when a plugin was already used.
33 unlet b:did_ftplugin
34 endif
35
36 # When there is a dot it is used to separate filetype names. Thus for
37 # "aaa.bbb" load "aaa" and then "bbb".
38 for name in split(s, '\.')
39 exe 'runtime! ftplugin/' .. name .. '.vim ftplugin/' .. name .. '_*.vim ftplugin/' .. name .. '/*.vim'
40 endfor
41 endif
42enddef