blob: 2500a7f27b0710ff33398861e31315647339f5b1 [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>
Bram Moolenaar92f645b2022-02-11 13:29:40 +00006# Last change: 2022 Feb 11
Bram Moolenaar9da17d72022-02-09 21:50:44 +00007
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")
Bram Moolenaar92f645b2022-02-11 13:29:40 +000024 # We assume b:undo_ftplugin is using legacy script syntax
25 legacy exe b:undo_ftplugin
Bram Moolenaar3e79c972022-02-04 19:48:06 +000026 unlet! b:undo_ftplugin b:did_ftplugin
27 endif
28
29 var s = expand("<amatch>")
30 if s != ""
31 if &cpo =~# "S" && exists("b:did_ftplugin")
32 # In compatible mode options are reset to the global values, need to
33 # set the local values also when a plugin was already used.
34 unlet b:did_ftplugin
35 endif
36
37 # When there is a dot it is used to separate filetype names. Thus for
38 # "aaa.bbb" load "aaa" and then "bbb".
39 for name in split(s, '\.')
40 exe 'runtime! ftplugin/' .. name .. '.vim ftplugin/' .. name .. '_*.vim ftplugin/' .. name .. '/*.vim'
41 endfor
42 endif
43enddef