diff options
author | Adam Stankiewicz <sheerun@sher.pl> | 2020-10-02 00:36:09 +0200 |
---|---|---|
committer | Adam Stankiewicz <sheerun@sher.pl> | 2020-10-02 00:36:09 +0200 |
commit | 560024abe07ac73b31574167653a9b94821365fb (patch) | |
tree | 16d00f8cf054f3d77271bc03473ab0b6711956f4 /ftdetect/polyglot.vim | |
parent | 3ad297db5c1cf94660e4297ffa81b6281eab2884 (diff) | |
download | vim-polyglot-4.13.1.tar.gz vim-polyglot-4.13.1.zip |
Resolve issues with loading order, closes #571v4.13.1
Diffstat (limited to 'ftdetect/polyglot.vim')
-rw-r--r-- | ftdetect/polyglot.vim | 3434 |
1 files changed, 3434 insertions, 0 deletions
diff --git a/ftdetect/polyglot.vim b/ftdetect/polyglot.vim new file mode 100644 index 00000000..498450d8 --- /dev/null +++ b/ftdetect/polyglot.vim @@ -0,0 +1,3434 @@ +" Vim support file to detect file types +" +" Maintainer: Adam Stankiewicz <sheerun@sher.pl> +" URL: https://github.com/sheerun/vim-polyglot + +" Listen very carefully, I will say this only once +if exists("did_load_polyglot") + finish +endif + +let did_load_polyglot = 1 + +" It can happen vim filetype.vim loads first, then we need a reset +if exists("did_load_filetypes") + au! filetypedetect +endif + +" Prevent filetype.vim of vim from loading again +let did_load_filetypes = 1 + +" Line continuation is used here, remove 'C' from 'cpoptions' +let s:cpo_save = &cpo +set cpo&vim + +func! s:Observe(fn) + let b:polyglot_observe = a:fn + augroup polyglot-observer + au! CursorHold,CursorHoldI,BufWritePost <buffer> + \ execute('if polyglot#' . b:polyglot_observe . '() | au! polyglot-observer | endif') + augroup END +endfunc + +let s:disabled_packages = {} +let s:new_polyglot_disabled = [] + +if exists('g:polyglot_disabled') + for pkg in g:polyglot_disabled + let base = split(pkg, '\.') + if len(base) > 0 + let s:disabled_packages[pkg] = 1 + call add(s:new_polyglot_disabled, base[0]) + endif + endfor +else + let g:polyglot_disabled_not_set = 1 +endif + +function! s:SetDefault(name, value) + if !exists(a:name) + let {a:name} = a:value + endif +endfunction + +call s:SetDefault('g:markdown_enable_spell_checking', 0) +call s:SetDefault('g:markdown_enable_input_abbreviations', 0) +call s:SetDefault('g:markdown_enable_mappings', 0) + +" Enable jsx syntax by default +call s:SetDefault('g:jsx_ext_required', 0) + +" Needed for sql highlighting +call s:SetDefault('g:javascript_sql_dialect', 'sql') + +" Make csv loading faster +call s:SetDefault('g:csv_start', 1) +call s:SetDefault('g:csv_end', 2) + +" Disable json concealing by default +call s:SetDefault('g:vim_json_syntax_conceal', 0) + +call s:SetDefault('g:filetype_euphoria', 'elixir') + +if !exists('g:python_highlight_all') + call s:SetDefault('g:python_highlight_builtins', 1) + call s:SetDefault('g:python_highlight_builtin_objs', 1) + call s:SetDefault('g:python_highlight_builtin_types', 1) + call s:SetDefault('g:python_highlight_builtin_funcs', 1) + call s:SetDefault('g:python_highlight_builtin_funcs_kwarg', 1) + call s:SetDefault('g:python_highlight_exceptions', 1) + call s:SetDefault('g:python_highlight_string_formatting', 1) + call s:SetDefault('g:python_highlight_string_format', 1) + call s:SetDefault('g:python_highlight_string_templates', 1) + call s:SetDefault('g:python_highlight_indent_errors', 1) + call s:SetDefault('g:python_highlight_space_errors', 1) + call s:SetDefault('g:python_highlight_doctests', 1) + call s:SetDefault('g:python_highlight_func_calls', 1) + call s:SetDefault('g:python_highlight_class_vars', 1) + call s:SetDefault('g:python_highlight_operators', 1) + call s:SetDefault('g:python_highlight_file_headers_as_comments', 1) + call s:SetDefault('g:python_slow_sync', 1) +endif + +" We need it because scripts.vim in vim uses "set ft=" which cannot be +" overridden with setf (and we can't use set ft= so our scripts.vim work) +func! s:Setf(ft) + if &filetype !~# '\<'.a:ft.'\>' + let &filetype = a:ft + endif +endfunc + +" Function used for patterns that end in a star: don't set the filetype if the +" file name matches ft_ignore_pat. +" When using this, the entry should probably be further down below with the +" other StarSetf() calls. +func! s:StarSetf(ft) + if expand("<amatch>") !~ g:ft_ignore_pat + exe 'setf ' . a:ft + endif +endfunc + +augroup filetypedetect + +" DO NOT EDIT CODE BELOW, IT IS GENERATED WITH MAKEFILE + +if !has_key(s:disabled_packages, 'sql') + au BufNewFile,BufRead *.bdy,*.ddl,*.fnc,*.pck,*.pkb,*.pks,*.plb,*.pls,*.plsql,*.prc,*.spc,*.sql,*.tpb,*.tps,*.trg,*.tyb,*.tyc,*.typ,*.vw setf sql +endif + +if !has_key(s:disabled_packages, 'gitignore') + au BufNewFile,BufRead *.git/info/exclude,*/.config/git/ignore,{.,}gitignore setf gitignore +endif + +if !has_key(s:disabled_packages, 'tads') + au! BufNewFile,BufRead *.t call polyglot#detect#T() +endif + +if !has_key(s:disabled_packages, 'prolog') + au! BufNewFile,BufRead *.pl call polyglot#detect#Pl() + au BufNewFile,BufRead *.pdb,*.pro,*.prolog,*.yap setf prolog +endif + +if !has_key(s:disabled_packages, 'bzl') + au BufNewFile,BufRead *.BUILD,*.bazel,*.bzl,BUCK,BUILD,BUILD.bazel,Tiltfile,WORKSPACE setf bzl +endif + +if !has_key(s:disabled_packages, 'odin') + au BufNewFile,BufRead *.odin setf odin +endif + +if !has_key(s:disabled_packages, 'dosini') + au BufNewFile,BufRead *.dof,*.ini,*.lektorproject,*.prefs,*.pro,*.properties,*/etc/pacman.conf,*/etc/yum.conf,{.,}editorconfig,{.,}npmrc,buildozer.spec setf dosini + au BufNewFile,BufRead php.ini-* call s:StarSetf('dosini') + au BufNewFile,BufRead */etc/yum.repos.d/* call s:StarSetf('dosini') +endif + +if !has_key(s:disabled_packages, 'visual-basic') + au! BufNewFile,BufRead *.bas call polyglot#detect#Bas() + au BufNewFile,BufRead *.cls,*.ctl,*.dsm,*.frm,*.frx,*.sba,*.vba,*.vbs setf vb +endif + +if !has_key(s:disabled_packages, 'basic') + au BufNewFile,BufRead *.basic setf basic +endif + +if !has_key(s:disabled_packages, 'trasys') + au! BufNewFile,BufRead *.inp call polyglot#detect#Inp() +endif + +if !has_key(s:disabled_packages, 'zig') + au BufNewFile,BufRead *.zig,*.zir setf zig + au BufNewFile,BufRead *.zir setf zir +endif + +if !has_key(s:disabled_packages, 'zephir') + au BufNewFile,BufRead *.zep setf zephir +endif + +if !has_key(s:disabled_packages, 'help') + au BufNewFile,BufRead $VIMRUNTIME/doc/*.txt setf help +endif + +if !has_key(s:disabled_packages, 'helm') + au BufNewFile,BufRead */templates/*.tpl,*/templates/*.yaml setf helm +endif + +if !has_key(s:disabled_packages, 'ansible') + au BufNewFile,BufRead handlers.*.y{a,}ml,local.y{a,}ml,main.y{a,}ml,playbook.y{a,}ml,requirements.y{a,}ml,roles.*.y{a,}ml,site.y{a,}ml,tasks.*.y{a,}ml setf yaml.ansible + au BufNewFile,BufRead host_vars/* call s:StarSetf('yaml.ansible') + au BufNewFile,BufRead group_vars/* call s:StarSetf('yaml.ansible') +endif + +if !has_key(s:disabled_packages, 'xsl') + au BufNewFile,BufRead *.xsl,*.xslt setf xsl +endif + +if !has_key(s:disabled_packages, 'xdc') + au BufNewFile,BufRead *.xdc setf xdc +endif + +if !has_key(s:disabled_packages, 'vue') + au BufNewFile,BufRead *.vue,*.wpy setf vue +endif + +if !has_key(s:disabled_packages, 'vmasm') + au BufNewFile,BufRead *.mar setf vmasm +endif + +if !has_key(s:disabled_packages, 'velocity') + au BufNewFile,BufRead *.vm setf velocity +endif + +if !has_key(s:disabled_packages, 'vcl') + au BufNewFile,BufRead *.vcl setf vcl +endif + +if !has_key(s:disabled_packages, 'vbnet') + au BufNewFile,BufRead *.vb,*.vbhtml setf vbnet +endif + +if !has_key(s:disabled_packages, 'vala') + au BufNewFile,BufRead *.vala,*.valadoc,*.vapi setf vala +endif + +if !has_key(s:disabled_packages, 'v') + au BufNewFile,BufRead *.v setf v +endif + +if !has_key(s:disabled_packages, 'unison') + au BufNewFile,BufRead *.u,*.uu setf unison +endif + +if !has_key(s:disabled_packages, 'typescript') + au BufNewFile,BufRead *.tsx setf typescriptreact + au BufNewFile,BufRead *.ts setf typescript +endif + +if !has_key(s:disabled_packages, 'twig') + au BufNewFile,BufRead *.xml.twig setf xml.twig + au BufNewFile,BufRead *.twig setf html.twig +endif + +if !has_key(s:disabled_packages, 'tptp') + au BufNewFile,BufRead *.ax,*.p,*.tptp setf tptp +endif + +if !has_key(s:disabled_packages, 'toml') + au BufNewFile,BufRead *.toml,*/.cargo/config,*/.cargo/credentials,Cargo.lock,Gopkg.lock,Pipfile,poetry.lock setf toml +endif + +if !has_key(s:disabled_packages, 'tmux') + au BufNewFile,BufRead {.,}tmux*.conf setf tmux +endif + +if !has_key(s:disabled_packages, 'thrift') + au BufNewFile,BufRead *.thrift setf thrift +endif + +if !has_key(s:disabled_packages, 'textile') + au BufNewFile,BufRead *.textile setf textile +endif + +if !has_key(s:disabled_packages, 'terraform') + au BufNewFile,BufRead *.tf,*.tfvars setf terraform +endif + +if !has_key(s:disabled_packages, 'systemd') + au BufNewFile,BufRead *.automount,*.dnssd,*.link,*.mount,*.netdev,*.network,*.nspawn,*.path,*.service,*.slice,*.socket,*.swap,*.target,*.timer,*/systemd/*.conf setf systemd + au BufNewFile,BufRead *.#* call s:StarSetf('systemd') +endif + +if !has_key(s:disabled_packages, 'sxhkd') + au BufNewFile,BufRead *.sxhkdrc,sxhkdrc setf sxhkdrc +endif + +if !has_key(s:disabled_packages, 'swift') + au BufNewFile,BufRead *.swift setf swift +endif + +if !has_key(s:disabled_packages, 'svg-indent') +endif + +if !has_key(s:disabled_packages, 'svg') + au BufNewFile,BufRead *.svg setf svg +endif + +if !has_key(s:disabled_packages, 'svelte') + au BufNewFile,BufRead *.svelte setf svelte +endif + +if !has_key(s:disabled_packages, 'stylus') + au BufNewFile,BufRead *.styl,*.stylus setf stylus +endif + +if !has_key(s:disabled_packages, 'solidity') + au BufNewFile,BufRead *.sol setf solidity +endif + +if !has_key(s:disabled_packages, 'smt2') + au BufNewFile,BufRead *.smt,*.smt2 setf smt2 +endif + +if !has_key(s:disabled_packages, 'slime') + au BufNewFile,BufRead *.slime setf slime +endif + +if !has_key(s:disabled_packages, 'slim') + au BufNewFile,BufRead *.slim setf slim +endif + +if !has_key(s:disabled_packages, 'zinit') +endif + +if !has_key(s:disabled_packages, 'sh') + au BufNewFile,BufRead *.zsh,{.,}zfbfmarks,{.,}zlogin,{.,}zlogout,{.,}zprofile,{.,}zshenv,{.,}zshrc setf zsh + au BufNewFile,BufRead {.,}zsh* call s:StarSetf('zsh') + au BufNewFile,BufRead {.,}zlog* call s:StarSetf('zsh') + au BufNewFile,BufRead {.,}zcompdump* call s:StarSetf('zsh') + au BufNewFile,BufRead *.bash,*.bats,*.cgi,*.command,*.env,*.fcgi,*.ksh,*.sh,*.sh.in,*.tmux,*.tool,*/etc/udev/cdsymlinks.conf,{.,}bash_aliases,{.,}bash_history,{.,}bash_logout,{.,}bash_profile,{.,}bashrc,{.,}cshrc,{.,}env,{.,}env.example,{.,}flaskenv,{.,}login,{.,}profile,9fs,PKGBUILD,bash_aliases,bash_logout,bash_profile,bashrc,cshrc,gradlew,login,man,profile,zlogin,zlogout,zprofile,zshenv,zshrc setf sh +endif + +if !has_key(s:disabled_packages, 'scss') + au BufNewFile,BufRead *.scss setf scss +endif + +if !has_key(s:disabled_packages, 'sbt') + au BufNewFile,BufRead *.sbt setf sbt.scala +endif + +if !has_key(s:disabled_packages, 'scala') + au BufNewFile,BufRead *.kojo,*.sc,*.scala setf scala +endif + +if !has_key(s:disabled_packages, 'rust') + au BufNewFile,BufRead *.rs,*.rs.in setf rust +endif + +if !has_key(s:disabled_packages, 'brewfile') + au BufNewFile,BufRead Brewfile setf brewfile +endif + +if !has_key(s:disabled_packages, 'yard') +endif + +if !has_key(s:disabled_packages, 'rspec') + au BufNewFile,BufRead *_spec.rb set ft=ruby syntax=rspec +endif + +if !has_key(s:disabled_packages, 'ruby') + au BufNewFile,BufRead *.erb,*.erb.deface,*.rhtml setf eruby + au BufNewFile,BufRead *.axlsx,*.builder,*.cap,*.eye,*.fcgi,*.gemspec,*.god,*.jbuilder,*.mspec,*.opal,*.pluginspec,*.podspec,*.rabl,*.rake,*.rant,*.rb,*.rbi,*.rbuild,*.rbw,*.rbx,*.rjs,*.ru,*.ruby,*.rxml,*.spec,*.thor,*.watchr,{.,}Brewfile,{.,}Guardfile,{.,}autotest,{.,}irbrc,{.,}pryrc,{.,}simplecov,Appraisals,Berksfile,Buildfile,Capfile,Cheffile,Dangerfile,Deliverfile,Fastfile,Gemfile,Gemfile.lock,Guardfile,Jarfile,KitchenSink,Mavenfile,Podfile,Puppetfile,Rakefile,Rantfile,Routefile,Snapfile,Thorfile,Vagrantfile,buildfile,vagrantfile setf ruby + au BufNewFile,BufRead [Rr]akefile* call s:StarSetf('ruby') +endif + +if !has_key(s:disabled_packages, 'rst') + au BufNewFile,BufRead *.rest,*.rest.txt,*.rst,*.rst.txt setf rst +endif + +if !has_key(s:disabled_packages, 'reason') + au! BufNewFile,BufRead *.re call polyglot#detect#Re() + au BufNewFile,BufRead *.rei setf reason +endif + +if !has_key(s:disabled_packages, 'razor') + au BufNewFile,BufRead *.cshtml,*.razor setf razor +endif + +if !has_key(s:disabled_packages, 'raml') + au BufNewFile,BufRead *.raml setf raml +endif + +if !has_key(s:disabled_packages, 'raku') + au! BufNewFile,BufRead *.t call polyglot#detect#T() + au! BufNewFile,BufRead *.pm call polyglot#detect#Pm() + au! BufNewFile,BufRead *.pl call polyglot#detect#Pl() + au BufNewFile,BufRead *.6pl,*.6pm,*.nqp,*.p6,*.p6l,*.p6m,*.pl6,*.pm6,*.pod6,*.raku,*.rakudoc,*.rakumod,*.rakutest,*.t6 setf raku +endif + +if !has_key(s:disabled_packages, 'ragel') + au BufNewFile,BufRead *.rl setf ragel +endif + +if !has_key(s:disabled_packages, 'racket') + au BufNewFile,BufRead *.rkt,*.rktd,*.rktl,*.scrbl setf racket +endif + +if !has_key(s:disabled_packages, 'r-lang') + au BufNewFile,BufRead *.rd setf rhelp + au BufNewFile,BufRead *.S,*.r,*.rsx,*.s,{.,}Rprofile,expr-dist setf r +endif + +if !has_key(s:disabled_packages, 'qml') + au BufNewFile,BufRead *.qbs,*.qml setf qml +endif + +if !has_key(s:disabled_packages, 'qmake') + au BufNewFile,BufRead *.pri,*.pro setf qmake +endif + +if !has_key(s:disabled_packages, 'requirements') + au BufNewFile,BufRead *.pip,*require.{txt,in},*requirements.{txt,in},constraints.{txt,in} setf requirements +endif + +if !has_key(s:disabled_packages, 'python-compiler') +endif + +if !has_key(s:disabled_packages, 'python-indent') +endif + +if !has_key(s:disabled_packages, 'python') + au BufNewFile,BufRead *.cgi,*.fcgi,*.gyp,*.gypi,*.lmi,*.ptl,*.py,*.py3,*.pyde,*.pyi,*.pyp,*.pyt,*.pyw,*.rpy,*.smk,*.spec,*.tac,*.wsgi,*.xpy,{.,}gclient,{.,}pythonrc,{.,}pythonstartup,DEPS,SConscript,SConstruct,Snakefile,wscript setf python +endif + +if !has_key(s:disabled_packages, 'purescript') + au BufNewFile,BufRead *.purs setf purescript +endif + +if !has_key(s:disabled_packages, 'puppet') + au BufNewFile,BufRead *.epp setf embeddedpuppet + au BufNewFile,BufRead *.pp,Modulefile setf puppet +endif + +if !has_key(s:disabled_packages, 'pug') + au BufNewFile,BufRead *.jade,*.pug setf pug +endif + +if !has_key(s:disabled_packages, 'protobuf') + au BufNewFile,BufRead *.proto setf proto +endif + +if !has_key(s:disabled_packages, 'powershell') + au BufNewFile,BufRead *.ps1xml setf ps1xml + au BufNewFile,BufRead *.ps1,*.psd1,*.psm1,*.pssc setf ps1 +endif + +if !has_key(s:disabled_packages, 'pony') + au BufNewFile,BufRead *.pony setf pony +endif + +if !has_key(s:disabled_packages, 'plantuml') + au BufNewFile,BufRead *.iuml,*.plantuml,*.pu,*.puml,*.uml setf plantuml +endif + +if !has_key(s:disabled_packages, 'blade') + au BufNewFile,BufRead *.blade,*.blade.php setf blade +endif + +if !has_key(s:disabled_packages, 'php') + au BufNewFile,BufRead *.aw,*.ctp,*.fcgi,*.inc,*.php,*.php3,*.php4,*.php5,*.phps,*.phpt,*.phtml,{.,}php,{.,}php_cs,{.,}php_cs.dist,Phakefile setf php +endif + +if !has_key(s:disabled_packages, 'cql') + au BufNewFile,BufRead *.cql setf cql +endif + +if !has_key(s:disabled_packages, 'pgsql') + au BufNewFile,BufRead *.pgsql let b:sql_type_override='pgsql' | set ft=sql +endif + +if !has_key(s:disabled_packages, 'perl') + au! BufNewFile,BufRead *.tt2 call polyglot#detect#Tt2() + au! BufNewFile,BufRead *.t call polyglot#detect#T() + au! BufNewFile,BufRead *.pm call polyglot#detect#Pm() + au! BufNewFile,BufRead *.pl call polyglot#detect#Pl() + au BufNewFile,BufRead *.xs setf xs + au BufNewFile,BufRead *.comp,*.mason,*.mhtml setf mason + au BufNewFile,BufRead *.pod setf pod + au BufNewFile,BufRead *.al,*.cgi,*.fcgi,*.perl,*.ph,*.plx,*.psgi,{.,}gitolite.rc,Makefile.PL,Rexfile,ack,cpanfile,example.gitolite.rc setf perl +endif + +if !has_key(s:disabled_packages, 'opencl') + au BufNewFile,BufRead *.cl,*.opencl setf opencl +endif + +if !has_key(s:disabled_packages, 'octave') + au! BufNewFile,BufRead *.m call polyglot#detect#M() + au BufNewFile,BufRead *.oct setf octave +endif + +if !has_key(s:disabled_packages, 'ocaml') + au BufNewFile,BufRead *.sexp setf sexplib + au BufNewFile,BufRead *.root setf ocpbuildroot + au BufNewFile,BufRead *.ocp setf ocpbuild + au BufNewFile,BufRead _tags setf ocamlbuild_tags + au BufNewFile,BufRead dune,dune-project,dune-workspace,jbuild setf dune + au BufNewFile,BufRead _oasis setf oasis + au BufNewFile,BufRead *.opam,*.opam.template,opam setf opam + au BufNewFile,BufRead *.om,OMakefile,OMakeroot,OMakeroot.in setf omake + au BufNewFile,BufRead *.eliom,*.eliomi,*.ml,*.ml.cppo,*.ml4,*.mli,*.mli.cppo,*.mlip,*.mll,*.mlp,*.mlt,*.mly,{.,}ocamlinit setf ocaml +endif + +if !has_key(s:disabled_packages, 'objc') + au! BufNewFile,BufRead *.m call polyglot#detect#M() + au! BufNewFile,BufRead *.h call polyglot#detect#H() +endif + +if !has_key(s:disabled_packages, 'nix') + au BufNewFile,BufRead *.nix setf nix +endif + +if !has_key(s:disabled_packages, 'nim') + au BufNewFile,BufRead *.nim,*.nim.cfg,*.nimble,*.nimrod,*.nims,nim.cfg setf nim +endif + +if !has_key(s:disabled_packages, 'nginx') + au BufNewFile,BufRead *.nginx,*.nginxconf,*.vhost,*/nginx/*.conf,*nginx.conf,nginx*.conf,nginx.conf setf nginx + au BufNewFile,BufRead */usr/local/nginx/conf/* call s:StarSetf('nginx') + au BufNewFile,BufRead */etc/nginx/* call s:StarSetf('nginx') +endif + +if !has_key(s:disabled_packages, 'murphi') + au! BufNewFile,BufRead *.m call polyglot#detect#M() +endif + +if !has_key(s:disabled_packages, 'moonscript') + au BufNewFile,BufRead *.moon setf moon +endif + +if !has_key(s:disabled_packages, 'meson') + au BufNewFile,BufRead *.wrap setf dosini + au BufNewFile,BufRead meson.build,meson_options.txt setf meson +endif + +if !has_key(s:disabled_packages, 'mdx') + au BufNewFile,BufRead *.mdx setf markdown.mdx +endif + +if !has_key(s:disabled_packages, 'markdown') + au BufNewFile,BufRead *.markdown,*.md,*.mdown,*.mdwn,*.mkd,*.mkdn,*.mkdown,*.ronn,*.workbook,contents.lr setf markdown +endif + +if !has_key(s:disabled_packages, 'mathematica') + au! BufNewFile,BufRead *.m call polyglot#detect#M() + au BufNewFile,BufRead *.cdf,*.ma,*.mathematica,*.mma,*.mt,*.nb,*.nbp,*.wl,*.wls,*.wlt setf mma +endif + +if !has_key(s:disabled_packages, 'mako') + au BufNewFile,BufRead *.mako,*.mao setf mako + au BufReadPre *.*.mao execute "do BufRead filetypedetect " . expand("<afile>:r") | let b:mako_outer_lang = &filetype + au BufNewFile *.*.mao execute "do BufNewFile filetypedetect " . expand("<afile>:r") | let b:mako_outer_lang = &filetype + au BufReadPre *.*.mako execute "do BufRead filetypedetect " . expand("<afile>:r") | let b:mako_outer_lang = &filetype + au BufNewFile *.*.mako execute "do BufNewFile filetypedetect " . expand("<afile>:r") | let b:mako_outer_lang = &filetype +endif + +if !has_key(s:disabled_packages, 'm4') + au BufNewFile,BufRead *.at,*.m4 setf m4 +endif + +if !has_key(s:disabled_packages, 'lua') + au BufNewFile,BufRead *.fcgi,*.lua,*.nse,*.p8,*.pd_lua,*.rbxs,*.rockspec,*.wlua,{.,}luacheckrc setf lua +endif + +if !has_key(s:disabled_packages, 'log') + au BufNewFile,BufRead *.LOG,*.log,*_LOG,*_log setf log +endif + +if !has_key(s:disabled_packages, 'llvm') + au BufNewFile,BufRead *.td setf tablegen + au BufNewFile,BufRead *.ll setf llvm +endif + +if !has_key(s:disabled_packages, 'livescript') + au BufNewFile,BufRead *._ls,*.ls,Slakefile setf livescript +endif + +if !has_key(s:disabled_packages, 'lilypond') + au BufNewFile,BufRead *.ily,*.ly setf lilypond +endif + +if !has_key(s:disabled_packages, 'less') + au BufNewFile,BufRead *.less setf less +endif + +if !has_key(s:disabled_packages, 'ledger') + au BufNewFile,BufRead *.journal,*.ldg,*.ledger setf ledger +endif + +if !has_key(s:disabled_packages, 'kotlin') + au BufNewFile,BufRead *.kt,*.ktm,*.kts setf kotlin +endif + +if !has_key(s:disabled_packages, 'julia') + au BufNewFile,BufRead *.jl setf julia +endif + +if !has_key(s:disabled_packages, 'jst') + au BufNewFile,BufRead *.ect,*.ejs,*.jst setf jst +endif + +if !has_key(s:disabled_packages, 'jsonnet') + au BufNewFile,BufRead *.jsonnet,*.libsonnet setf jsonnet +endif + +if !has_key(s:disabled_packages, 'json') + au BufNewFile,BufRead *.JSON-tmLanguage,*.avsc,*.geojson,*.gltf,*.har,*.ice,*.json,*.jsonl,*.jsonp,*.mcmeta,*.template,*.tfstate,*.tfstate.backup,*.topojson,*.webapp,*.webmanifest,*.yy,*.yyp,{.,}arcconfig,{.,}htmlhintrc,{.,}tern-config,{.,}tern-project,{.,}watchmanconfig,Pipfile.lock,composer.lock,mcmod.info setf json +endif + +if !has_key(s:disabled_packages, 'json5') + au BufNewFile,BufRead *.json5 setf json5 +endif + +if !has_key(s:disabled_packages, 'jq') + au BufNewFile,BufRead *.jq,{.,}jqrc setf jq + au BufNewFile,BufRead {.,}jqrc* call s:StarSetf('jq') +endif + +if !has_key(s:disabled_packages, 'htmldjango') + au BufNewFile,BufRead *.j2,*.jinja,*.jinja2,*.njk setf htmldjango +endif + +if !has_key(s:disabled_packages, 'jenkins') + au BufNewFile,BufRead *.Jenkinsfile,*.jenkinsfile,Jenkinsfile setf Jenkinsfile + au BufNewFile,BufRead Jenkinsfile* call s:StarSetf('Jenkinsfile') +endif + +if !has_key(s:disabled_packages, 'javascript-sql') +endif + +if !has_key(s:disabled_packages, 'ion') + au BufNewFile,BufRead *.ion,~/.config/ion/initrc setf ion +endif + +if !has_key(s:disabled_packages, 'idris2') + au! BufNewFile,BufRead *.lidr call polyglot#detect#Lidr() + au! BufNewFile,BufRead *.idr call polyglot#detect#Idr() + au BufNewFile,BufRead *.ipkg,idris-response setf idris2 +endif + +if !has_key(s:disabled_packages, 'idris') + au! BufNewFile,BufRead *.lidr call polyglot#detect#Lidr() + au! BufNewFile,BufRead *.idr call polyglot#detect#Idr() + au BufNewFile,BufRead idris-response setf idris +endif + +if !has_key(s:disabled_packages, 'icalendar') + au BufNewFile,BufRead *.ics setf icalendar +endif + +if !has_key(s:disabled_packages, 'i3') + au BufNewFile,BufRead *.i3.config,*.i3config,{.,}i3.config,{.,}i3config,i3.config,i3config setf i3config +endif + +if !has_key(s:disabled_packages, 'html5') + au! BufNewFile,BufRead *.html call polyglot#detect#Html() + au BufNewFile,BufRead *.htm,*.html.hl,*.inc,*.st,*.xht,*.xhtml setf html +endif + +if !has_key(s:disabled_packages, 'hive') + au BufNewFile,BufRead *.hql,*.q,*.ql setf hive +endif + +if !has_key(s:disabled_packages, 'hcl') + au BufNewFile,BufRead *.hcl,*.nomad,*.workflow,Appfile setf hcl +endif + +if !has_key(s:disabled_packages, 'haxe') + au BufNewFile,BufRead *.hx,*.hxsl setf haxe +endif + +if !has_key(s:disabled_packages, 'haskell') + au BufNewFile,BufRead *.bpk,*.hs,*.hs-boot,*.hsc,*.hsig setf haskell +endif + +if !has_key(s:disabled_packages, 'handlebars') + au BufNewFile,BufRead *.handlebars,*.hb,*.hbs,*.hdbs setf html.handlebars + au BufNewFile,BufRead *.hjs,*.hogan,*.hulk,*.mustache setf html.mustache +endif + +if !has_key(s:disabled_packages, 'haml') + au BufNewFile,BufRead *.haml,*.haml.deface,*.hamlbars,*.hamlc setf haml +endif + +if !has_key(s:disabled_packages, 'grub') + au BufNewFile,BufRead */boot/grub/grub.conf,*/boot/grub/menu.lst,*/etc/grub.conf setf grub +endif + +if !has_key(s:disabled_packages, 'gradle') +endif + +if !has_key(s:disabled_packages, 'groovy') + au BufNewFile,BufRead *.gradle,*.groovy,*.grt,*.gtpl,*.gvy,Jenkinsfile setf groovy +endif + +if !has_key(s:disabled_packages, 'graphql') + au BufNewFile,BufRead *.gql,*.graphql,*.graphqls setf graphql +endif + +if !has_key(s:disabled_packages, 'jsx') + au BufNewFile,BufRead *.jsx setf javascriptreact +endif + +if !has_key(s:disabled_packages, 'javascript') + au BufNewFile,BufRead *.flow setf flow + au BufNewFile,BufRead *._js,*.bones,*.cjs,*.es,*.es6,*.frag,*.gs,*.jake,*.javascript,*.js,*.jsb,*.jscad,*.jsfl,*.jsm,*.jss,*.mjs,*.njs,*.pac,*.sjs,*.ssjs,*.xsjs,*.xsjslib,Jakefile setf javascript +endif + +if !has_key(s:disabled_packages, 'go') + au BufNewFile,BufRead *.tmpl setf gohtmltmpl + au BufNewFile,BufRead go.mod setf gomod + au BufNewFile,BufRead *.go setf go +endif + +if !has_key(s:disabled_packages, 'gnuplot') + au BufNewFile,BufRead *.gnu,*.gnuplot,*.gp,*.gpi,*.p,*.plot,*.plt setf gnuplot +endif + +if !has_key(s:disabled_packages, 'gmpl') + au BufNewFile,BufRead *.mod setf gmpl +endif + +if !has_key(s:disabled_packages, 'glsl') + au! BufNewFile,BufRead *.fs call polyglot#detect#Fs() + au BufNewFile,BufRead *.comp,*.fp,*.frag,*.frg,*.fsh,*.fshader,*.geo,*.geom,*.glsl,*.glslf,*.glslv,*.gs,*.gshader,*.shader,*.tesc,*.tese,*.vert,*.vrx,*.vsh,*.vshader setf glsl +endif + +if !has_key(s:disabled_packages, 'git') + au BufNewFile,BufRead COMMIT_EDITMSG,MERGE_MSG,TAG_EDITMSG setf gitcommit + au BufNewFile,BufRead {.,}gitsendemail.* call s:StarSetf('gitsendemail') + au BufNewFile,BufRead git-rebase-todo setf gitrebase + au BufNewFile,BufRead *.gitconfig,*.git/config,*.git/modules/*/config,*/.config/git/config,*/git/config,{.,}gitconfig,{.,}gitmodules setf gitconfig + au BufNewFile,BufRead */{.,}gitconfig.d/* call s:StarSetf('gitconfig') +endif + +if !has_key(s:disabled_packages, 'gdscript') + au BufNewFile,BufRead *.gd setf gdscript3 +endif + +if !has_key(s:disabled_packages, 'fsharp') + au! BufNewFile,BufRead *.fs call polyglot#detect#Fs() + au BufNewFile,BufRead *.fsi,*.fsx setf fsharp +endif + +if !has_key(s:disabled_packages, 'forth') + au! BufNewFile,BufRead *.fs call polyglot#detect#Fs() + au BufNewFile,BufRead *.ft,*.fth setf forth +endif + +if !has_key(s:disabled_packages, 'flatbuffers') + au BufNewFile,BufRead *.fbs setf fbs +endif + +if !has_key(s:disabled_packages, 'fish') + au BufNewFile,BufRead *.fish setf fish +endif + +if !has_key(s:disabled_packages, 'ferm') + au BufNewFile,BufRead *.ferm,ferm.conf setf ferm +endif + +if !has_key(s:disabled_packages, 'fennel') + au BufNewFile,BufRead *.fnl setf fennel +endif + +if !has_key(s:disabled_packages, 'erlang') + au BufNewFile,BufRead *.app,*.app.src,*.erl,*.es,*.escript,*.hrl,*.xrl,*.yaws,*.yrl,Emakefile,rebar.config,rebar.config.lock,rebar.lock setf erlang +endif + +if !has_key(s:disabled_packages, 'emblem') + au BufNewFile,BufRead *.em,*.emblem setf emblem +endif + +if !has_key(s:disabled_packages, 'emberscript') + au BufNewFile,BufRead *.em,*.emberscript setf ember-script +endif + +if !has_key(s:disabled_packages, 'elm') + au BufNewFile,BufRead *.elm setf elm +endif + +if !has_key(s:disabled_packages, 'elixir') + au BufNewFile,BufRead *.eex,*.leex setf eelixir + au BufNewFile,BufRead *.ex,*.exs,mix.lock setf elixir +endif + +if !has_key(s:disabled_packages, 'dockerfile') + au BufNewFile,BufRead docker-compose*.yaml,docker-compose*.yml setf yaml.docker-compose + au BufNewFile,BufRead *.Dockerfile,*.dock,*.dockerfile,Dockerfile,dockerfile setf Dockerfile + au BufNewFile,BufRead Dockerfile* call s:StarSetf('Dockerfile') +endif + +if !has_key(s:disabled_packages, 'yaml') + au BufNewFile,BufRead *.mir,*.reek,*.rviz,*.sublime-syntax,*.syntax,*.yaml,*.yaml-tmlanguage,*.yaml.sed,*.yml,*.yml.mysql,{.,}clang-format,{.,}clang-tidy,{.,}gemrc,fish_history,fish_read_history,glide.lock,yarn.lock setf yaml +endif + +if !has_key(s:disabled_packages, 'dlang') + au BufNewFile,BufRead *.sdl setf dsdl + au BufNewFile,BufRead *.ddoc setf ddoc + au BufNewFile,BufRead *.dd setf dd + au BufNewFile,BufRead *.lst setf dcov + au BufNewFile,BufRead *.d,*.di setf d +endif + +if !has_key(s:disabled_packages, 'dhall') + au BufNewFile,BufRead *.dhall setf dhall +endif + +if !has_key(s:disabled_packages, 'dart') + au BufNewFile,BufRead *.dart,*.drt setf dart +endif + +if !has_key(s:disabled_packages, 'cue') + au BufNewFile,BufRead *.cue setf cuesheet +endif + +if !has_key(s:disabled_packages, 'cucumber') + au BufNewFile,BufRead *.feature,*.story setf cucumber +endif + +if !has_key(s:disabled_packages, 'crystal') + au BufNewFile,BufRead *.ecr setf ecrystal + au BufNewFile,BufRead *.cr,Projectfile setf crystal +endif + +if !has_key(s:disabled_packages, 'cryptol') + au BufNewFile,BufRead *.cry,*.cyl,*.lcry,*.lcyl setf cryptol +endif + +if !has_key(s:disabled_packages, 'cjsx') +endif + +if !has_key(s:disabled_packages, 'coffee-script') + au BufNewFile,BufRead *.coffee.md,*.litcoffee setf litcoffee + au BufNewFile,BufRead *._coffee,*.cake,*.cjsx,*.coffee,*.coffeekup,*.iced,Cakefile setf coffee +endif + +if !has_key(s:disabled_packages, 'cmake') + au BufNewFile,BufRead *.cmake,*.cmake.in,CMakeLists.txt setf cmake +endif + +if !has_key(s:disabled_packages, 'clojure') + au BufNewFile,BufRead *.boot,*.cl2,*.clj,*.cljc,*.cljs,*.cljs.hl,*.cljscm,*.cljx,*.edn,*.hic,build.boot,profile.boot,riemann.config setf clojure +endif + +if !has_key(s:disabled_packages, 'carp') + au BufNewFile,BufRead *.carp setf carp +endif + +if !has_key(s:disabled_packages, 'cpp-modern') +endif + +if !has_key(s:disabled_packages, 'caddyfile') + au BufNewFile,BufRead Caddyfile setf caddyfile +endif + +if !has_key(s:disabled_packages, 'awk') + au BufNewFile,BufRead *.awk,*.gawk setf awk +endif + +if !has_key(s:disabled_packages, 'ave') + au BufNewFile,BufRead *.ave setf ave +endif + +if !has_key(s:disabled_packages, 'autoit') + au BufNewFile,BufRead *.au3 setf autoit +endif + +if !has_key(s:disabled_packages, 'atlas') + au BufNewFile,BufRead *.as,*.atl setf atlas +endif + +if !has_key(s:disabled_packages, 'aspperl') + au! BufNewFile,BufRead *.asp call polyglot#detect#Asp() +endif + +if !has_key(s:disabled_packages, 'aspvbs') + au! BufNewFile,BufRead *.asp call polyglot#detect#Asp() + au! BufNewFile,BufRead *.asa call polyglot#detect#Asa() +endif + +if !has_key(s:disabled_packages, 'asn') + au BufNewFile,BufRead *.asn,*.asn1 setf asn +endif + +if !has_key(s:disabled_packages, 'automake') + au BufNewFile,BufRead GNUmakefile.am,[Mm]akefile.am setf automake +endif + +if !has_key(s:disabled_packages, 'elf') + au BufNewFile,BufRead *.am setf elf +endif + +if !has_key(s:disabled_packages, 'autohotkey') + au BufNewFile,BufRead *.ahk,*.ahkl setf autohotkey +endif + +if !has_key(s:disabled_packages, 'asciidoc') + au BufNewFile,BufRead *.adoc,*.asc,*.asciidoc setf asciidoc +endif + +if !has_key(s:disabled_packages, 'art') + au BufNewFile,BufRead *.art setf art +endif + +if !has_key(s:disabled_packages, 'arduino') + au BufNewFile,BufRead *.ino,*.pde setf arduino +endif + +if !has_key(s:disabled_packages, 'c/c++') + au! BufNewFile,BufRead *.h call polyglot#detect#H() + au BufNewFile,BufRead *.c,*.cats,*.idc,*.qc,*enlightenment/*.cfg setf c + au BufNewFile,BufRead *.c++,*.cc,*.cp,*.cpp,*.cxx,*.h++,*.hh,*.hpp,*.hxx,*.inc,*.inl,*.ipp,*.moc,*.tcc,*.tlh,*.tpp setf cpp +endif + +if !has_key(s:disabled_packages, 'arch') + au BufNewFile,BufRead {.,}arch-inventory,=tagging-method setf arch +endif + +if !has_key(s:disabled_packages, 'aptconf') + au BufNewFile,BufRead */.aptitude/config,*/etc/apt/apt.conf.d/*.conf,apt.conf setf aptconf + au BufNewFile,BufRead */etc/apt/apt.conf.d/[^.]* call s:StarSetf('aptconf') +endif + +if !has_key(s:disabled_packages, 'applescript') + au BufNewFile,BufRead *.applescript,*.scpt setf applescript +endif + +if !has_key(s:disabled_packages, 'apiblueprint') + au BufNewFile,BufRead *.apib setf apiblueprint +endif + +if !has_key(s:disabled_packages, 'apache') + au BufNewFile,BufRead */etc/apache2/sites-*/*.com,*/etc/httpd/*.conf,{.,}htaccess setf apache + au BufNewFile,BufRead srm.conf* call s:StarSetf('apache') + au BufNewFile,BufRead httpd.conf* call s:StarSetf('apache') + au BufNewFile,BufRead apache2.conf* call s:StarSetf('apache') + au BufNewFile,BufRead apache.conf* call s:StarSetf('apache') + au BufNewFile,BufRead access.conf* call s:StarSetf('apache') + au BufNewFile,BufRead */etc/httpd/conf.d/*.conf* call s:StarSetf('apache') + au BufNewFile,BufRead */etc/apache2/sites-*/* call s:StarSetf('apache') + au BufNewFile,BufRead */etc/apache2/mods-*/* call s:StarSetf('apache') + au BufNewFile,BufRead */etc/apache2/conf.*/* call s:StarSetf('apache') + au BufNewFile,BufRead */etc/apache2/*.conf* call s:StarSetf('apache') +endif + +if !has_key(s:disabled_packages, 'ant') + au BufNewFile,BufRead build.xml setf ant +endif + +if !has_key(s:disabled_packages, 'xml') + au BufNewFile,BufRead *.adml,*.admx,*.ant,*.axml,*.builds,*.ccproj,*.ccxml,*.cdxml,*.clixml,*.cproject,*.cscfg,*.csdef,*.csl,*.csproj,*.csproj.user,*.ct,*.depproj,*.dita,*.ditamap,*.ditaval,*.dll.config,*.dotsettings,*.filters,*.fsproj,*.fxml,*.glade,*.gml,*.gmx,*.grxml,*.gst,*.iml,*.ivy,*.jelly,*.jsproj,*.kml,*.launch,*.mdpolicy,*.mjml,*.mm,*.mod,*.mxml,*.natvis,*.ncl,*.ndproj,*.nproj,*.nuspec,*.odd,*.osm,*.pkgproj,*.pluginspec,*.proj,*.props,*.psc1,*.pt,*.rdf,*.resx,*.rss,*.sch,*.scxml,*.sfproj,*.shproj,*.srdf,*.storyboard,*.sublime-snippet,*.targets,*.tml,*.tpm,*.ui,*.urdf,*.ux,*.vbproj,*.vcxproj,*.vsixmanifest,*.vssettings,*.vstemplate,*.vxml,*.wixproj,*.workflow,*.wpl,*.wsdl,*.wsf,*.wxi,*.wxl,*.wxs,*.x3d,*.xacro,*.xaml,*.xib,*.xlf,*.xliff,*.xmi,*.xml,*.xml.dist,*.xproj,*.xsd,*.xspec,*.xul,*.zcml,*/etc/blkid.tab,*/etc/blkid.tab.old,*/etc/xdg/menus/*.menu,*fglrxrc,{.,}classpath,{.,}cproject,{.,}project,App.config,NuGet.config,Settings.StyleCop,Web.Debug.config,Web.Release.config,Web.config,packages.config setf xml +endif + +if !has_key(s:disabled_packages, 'csv') + au BufNewFile,BufRead *.csv,*.tab,*.tsv setf csv +endif + +if !has_key(s:disabled_packages, 'ampl') + au BufNewFile,BufRead *.run setf ampl +endif + +if !has_key(s:disabled_packages, 'aml') + au BufNewFile,BufRead *.aml setf aml +endif + +if !has_key(s:disabled_packages, 'alsaconf') + au BufNewFile,BufRead */etc/asound.conf,*/usr/share/alsa/alsa.conf,{.,}asoundrc setf alsaconf +endif + +if !has_key(s:disabled_packages, 'aidl') + au BufNewFile,BufRead *.aidl setf aidl +endif + +if !has_key(s:disabled_packages, 'ahdl') + au BufNewFile,BufRead *.tdf setf ahdl +endif + +if !has_key(s:disabled_packages, 'ada') + au BufNewFile,BufRead *.ada,*.ada_m,*.adb,*.adc,*.ads,*.gpr setf ada +endif + +if !has_key(s:disabled_packages, 'acpiasl') + au BufNewFile,BufRead *.asl,*.dsl setf asl +endif + +if !has_key(s:disabled_packages, 'acedb') + au BufNewFile,BufRead *.wrm setf acedb +endif + +if !has_key(s:disabled_packages, 'abel') + au BufNewFile,BufRead *.abl setf abel +endif + +if !has_key(s:disabled_packages, 'abc') + au BufNewFile,BufRead *.abc setf abc +endif + +if !has_key(s:disabled_packages, 'abaqus') + au! BufNewFile,BufRead *.inp call polyglot#detect#Inp() +endif + +if !has_key(s:disabled_packages, 'abap') + au BufNewFile,BufRead *.abap setf abap +endif + +if !has_key(s:disabled_packages, 'aap') + au BufNewFile,BufRead *.aap setf aap +endif + +if !has_key(s:disabled_packages, 'a65') + au BufNewFile,BufRead *.a65 setf a65 +endif + +if !has_key(s:disabled_packages, 'a2ps') + au BufNewFile,BufRead */etc/a2ps.cfg,*/etc/a2ps/*.cfg,{.,}a2psrc,a2psrc setf a2ps +endif + +if !has_key(s:disabled_packages, 'haproxy') + au BufNewFile,BufRead *.cfg,haproxy.cfg setf haproxy + au BufNewFile,BufRead haproxy*.conf* call s:StarSetf('haproxy') +endif + +if !has_key(s:disabled_packages, 'conf') + au BufNewFile,BufRead *.conf,auto.master,config setf conf +endif + +if !has_key(s:disabled_packages, '8th') + au BufNewFile,BufRead *.8th setf 8th +endif + +" DO NOT EDIT CODE ABOVE, IT IS GENERATED WITH MAKEFILE + +au! BufNewFile,BufRead,StdinReadPost * if expand("<afile>:e") == "" | + \ call polyglot#shebang#Detect() | endif + +au BufEnter * if &ft == "" && expand("<afile>:e") == "" | + \ call s:Observe('shebang#Detect') | endif + +augroup END + +if !has_key(s:disabled_packages, 'autoindent') + " Code below re-implements sleuth for vim-polyglot + let g:loaded_sleuth = 1 + let g:loaded_foobar = 1 + + " Makes shiftwidth to be synchronized with tabstop by default + if &shiftwidth == &tabstop + let &shiftwidth = 0 + endif + + function! s:guess(lines) abort + let options = {} + let ccomment = 0 + let podcomment = 0 + let triplequote = 0 + let backtick = 0 + let xmlcomment = 0 + let heredoc = '' + let minindent = 10 + let spaces_minus_tabs = 0 + let i = 0 + + for line in a:lines + let i += 1 + + if !len(line) || line =~# '^\W*$' + continue + endif + + if line =~# '^\s*/\*' + let ccomment = 1 + endif + if ccomment + if line =~# '\*/' + let ccomment = 0 + endif + continue + endif + + if line =~# '^=\w' + let podcomment = 1 + endif + if podcomment + if line =~# '^=\%(end\|cut\)\>' + let podcomment = 0 + endif + continue + endif + + if triplequote + if line =~# '^[^"]*"""[^"]*$' + let triplequote = 0 + endif + continue + elseif line =~# '^[^"]*"""[^"]*$' + let triplequote = 1 + endif + + if backtick + if line =~# '^[^`]*`[^`]*$' + let backtick = 0 + endif + continue + elseif &filetype ==# 'go' && line =~# '^[^`]*`[^`]*$' + let backtick = 1 + endif + + if line =~# '^\s*<\!--' + let xmlcomment = 1 + endif + if xmlcomment + if line =~# '-->' + let xmlcomment = 0 + endif + continue + endif + + " This is correct order because both "<<EOF" and "EOF" matches end + if heredoc != '' + if line =~# heredoc + let heredoc = '' + endif + continue + endif + let herematch = matchlist(line, '\C<<\W*\([A-Z]\+\)\s*$') + if len(herematch) > 0 + let heredoc = herematch[1] . '$' + endif + + let spaces_minus_tabs += line[0] == "\t" ? 1 : -1 + + if line[0] == "\t" + setlocal noexpandtab + let &l:shiftwidth=&tabstop + let b:sleuth_culprit .= ':' . i + return 1 + elseif line[0] == " " + let indent = len(matchstr(line, '^ *')) + if (indent % 2 == 0 || indent % 3 == 0) && indent < minindent + let minindent = indent + endif + endif + endfor + + if minindent < 10 + setlocal expandtab + let &l:shiftwidth=minindent + let b:sleuth_culprit .= ':' . i + return 1 + endif + + return 0 + endfunction + + function! s:detect_indent() abort + if &buftype ==# 'help' + return + endif + + let b:sleuth_culprit = expand("<afile>:p") + if s:guess(getline(1, 32)) + return + endif + let pattern = polyglot#sleuth#GlobForFiletype(&filetype) + if len(pattern) == 0 + return + endif + let pattern = '{' . pattern . ',.git,.svn,.hg}' + let dir = expand('%:p:h') + let level = 3 + while isdirectory(dir) && dir !=# fnamemodify(dir, ':h') && level > 0 + " Ignore files from homedir and root + if dir == expand('~') || dir == '/' + unlet b:sleuth_culprit + return + endif + for neighbor in glob(dir . '/' . pattern, 0, 1)[0:level] + let b:sleuth_culprit = neighbor + " Do not consider directories above .git, .svn or .hg + if fnamemodify(neighbor, ":h:t")[0] == "." + let level = 0 + continue + endif + if neighbor !=# expand('%:p') && filereadable(neighbor) + if s:guess(readfile(neighbor, '', 32)) + return + endif + endif + endfor + + let dir = fnamemodify(dir, ':h') + let level -= 1 + endwhile + + unlet b:sleuth_culprit + endfunction + + setglobal smarttab + + function! SleuthIndicator() abort + let sw = &shiftwidth ? &shiftwidth : &tabstop + if &expandtab + return 'sw='.sw + elseif &tabstop == sw + return 'ts='.&tabstop + else + return 'sw='.sw.',ts='.&tabstop + endif + endfunction + + augroup polyglot-sleuth + au! + au FileType * call s:detect_indent() + au User Flags call Hoist('buffer', 5, 'SleuthIndicator') + augroup END + + command! -bar -bang Sleuth call s:detect_indent() +endif + +func! s:verify() + if exists("g:polyglot_disabled_not_set") + if exists("g:polyglot_disabled") + echohl WarningMsg + echo "vim-polyglot: g:polyglot_disabled should be defined before loading vim-polyglot" + echohl None + endif + + unlet g:polyglot_disabled_not_set + endif +endfunc + +au VimEnter * call s:verify() + +" Save polyglot_disabled without postfixes +if exists('g:polyglot_disabled') + let g:polyglot_disabled = s:new_polyglot_disabled +endif + +augroup filetypedetect + +" Ignored extensions +if exists("*fnameescape") +au BufNewFile,BufRead ?\+.orig,?\+.bak,?\+.old,?\+.new,?\+.dpkg-dist,?\+.dpkg-old,?\+.dpkg-new,?\+.dpkg-bak,?\+.rpmsave,?\+.rpmnew,?\+.pacsave,?\+.pacnew + \ exe "doau filetypedetect BufRead " . fnameescape(expand("<afile>:r")) +au BufNewFile,BufRead *~ + \ let s:name = expand("<afile>") | + \ let s:short = substitute(s:name, '\~$', '', '') | + \ if s:name != s:short && s:short != "" | + \ exe "doau filetypedetect BufRead " . fnameescape(s:short) | + \ endif | + \ unlet! s:name s:short +au BufNewFile,BufRead ?\+.in + \ if expand("<afile>:t") != "configure.in" | + \ exe "doau filetypedetect BufRead " . fnameescape(expand("<afile>:r")) | + \ endif +elseif &verbose > 0 + echomsg "Warning: some filetypes will not be recognized because this version of Vim does not have fnameescape()" +endif + +" Pattern used to match file names which should not be inspected. +" Currently finds compressed files. +if !exists("g:ft_ignore_pat") + let g:ft_ignore_pat = '\.\(Z\|gz\|bz2\|zip\|tgz\)$' +endif + +" Vim help file +au BufNewFile,BufRead $VIMRUNTIME/doc/*.txt setf help + +" Abaqus or Trasys +au BufNewFile,BufRead *.inp call dist#ft#Check_inp() + +" 8th (Firth-derivative) +au BufNewFile,BufRead *.8th setf 8th + +" A-A-P recipe +au BufNewFile,BufRead *.aap setf aap + +" A2ps printing utility +au BufNewFile,BufRead */etc/a2ps.cfg,*/etc/a2ps/*.cfg,a2psrc,.a2psrc setf a2ps + +" ABAB/4 +au BufNewFile,BufRead *.abap setf abap + +" ABC music notation +au BufNewFile,BufRead *.abc setf abc + +" ABEL +au BufNewFile,BufRead *.abl setf abel + +" AceDB +au BufNewFile,BufRead *.wrm setf acedb + +" Ada (83, 9X, 95) +au BufNewFile,BufRead *.adb,*.ads,*.ada setf ada +if has("vms") + au BufNewFile,BufRead *.gpr,*.ada_m,*.adc setf ada +else + au BufNewFile,BufRead *.gpr setf ada +endif + +" AHDL +au BufNewFile,BufRead *.tdf setf ahdl + +" AIDL +au BufNewFile,BufRead *.aidl setf aidl + +" AMPL +au BufNewFile,BufRead *.run setf ampl + +" Ant +au BufNewFile,BufRead build.xml setf ant + +" Arduino +au BufNewFile,BufRead *.ino,*.pde setf arduino + +" Apache config file +au BufNewFile,BufRead .htaccess,*/etc/httpd/*.conf setf apache +au BufNewFile,BufRead */etc/apache2/sites-*/*.com setf apache + +" XA65 MOS6510 cross assembler +au BufNewFile,BufRead *.a65 setf a65 + +" Applescript +au BufNewFile,BufRead *.scpt setf applescript + +" Applix ELF +au BufNewFile,BufRead *.am + \ if expand("<afile>") !~? 'Makefile.am\>' | setf elf | endif + +" ALSA configuration +au BufNewFile,BufRead .asoundrc,*/usr/share/alsa/alsa.conf,*/etc/asound.conf setf alsaconf + +" Arc Macro Language +au BufNewFile,BufRead *.aml setf aml + +" APT config file +au BufNewFile,BufRead apt.conf setf aptconf +au BufNewFile,BufRead */.aptitude/config setf aptconf +au BufNewFile,BufRead */etc/apt/apt.conf.d/{[-_[:alnum:]]\+,[-_.[:alnum:]]\+.conf} setf aptconf + +" Arch Inventory file +au BufNewFile,BufRead .arch-inventory,=tagging-method setf arch + +" ART*Enterprise (formerly ART-IM) +au BufNewFile,BufRead *.art setf art + +" AsciiDoc +au BufNewFile,BufRead *.asciidoc,*.adoc setf asciidoc + +" ASN.1 +au BufNewFile,BufRead *.asn,*.asn1 setf asn + +" Active Server Pages (with Visual Basic Script) +au BufNewFile,BufRead *.asa + \ if exists("g:filetype_asa") | + \ exe "setf " . g:filetype_asa | + \ else | + \ setf aspvbs | + \ endif + +" Active Server Pages (with Perl or Visual Basic Script) +au BufNewFile,BufRead *.asp + \ if exists("g:filetype_asp") | + \ exe "setf " . g:filetype_asp | + \ elseif getline(1) . getline(2) . getline(3) =~? "perlscript" | + \ setf aspperl | + \ else | + \ setf aspvbs | + \ endif + +" Grub (must be before catch *.lst) +au BufNewFile,BufRead */boot/grub/menu.lst,*/boot/grub/grub.conf,*/etc/grub.conf setf grub + +" Assembly (all kinds) +" *.lst is not pure assembly, it has two extra columns (address, byte codes) +au BufNewFile,BufRead *.asm,*.[sS],*.[aA],*.mac,*.lst call dist#ft#FTasm() + +" Macro (VAX) +au BufNewFile,BufRead *.mar setf vmasm + +" Atlas +au BufNewFile,BufRead *.atl,*.as setf atlas + +" Autoit v3 +au BufNewFile,BufRead *.au3 setf autoit + +" Autohotkey +au BufNewFile,BufRead *.ahk setf autohotkey + +" Automake +au BufNewFile,BufRead [mM]akefile.am,GNUmakefile.am setf automake + +" Autotest .at files are actually m4 +au BufNewFile,BufRead *.at setf m4 + +" Avenue +au BufNewFile,BufRead *.ave setf ave + +" Awk +au BufNewFile,BufRead *.awk,*.gawk setf awk + +" B +au BufNewFile,BufRead *.mch,*.ref,*.imp setf b + +" BASIC or Visual Basic +au BufNewFile,BufRead *.bas call dist#ft#FTVB("basic") + +" Visual Basic Script (close to Visual Basic) or Visual Basic .NET +au BufNewFile,BufRead *.vb,*.vbs,*.dsm,*.ctl setf vb + +" IBasic file (similar to QBasic) +au BufNewFile,BufRead *.iba,*.ibi setf ibasic + +" FreeBasic file (similar to QBasic) +au BufNewFile,BufRead *.fb,*.bi setf freebasic + +" Batch file for MSDOS. +au BufNewFile,BufRead *.bat,*.sys setf dosbatch +" *.cmd is close to a Batch file, but on OS/2 Rexx files also use *.cmd. +au BufNewFile,BufRead *.cmd + \ if getline(1) =~ '^/\*' | setf rexx | else | setf dosbatch | endif + +" Batch file for 4DOS +au BufNewFile,BufRead *.btm call dist#ft#FTbtm() + +" BC calculator +au BufNewFile,BufRead *.bc setf bc + +" BDF font +au BufNewFile,BufRead *.bdf setf bdf + +" BibTeX bibliography database file +au BufNewFile,BufRead *.bib setf bib + +" BibTeX Bibliography Style +au BufNewFile,BufRead *.bst setf bst + +" BIND configuration +" sudoedit uses namedXXXX.conf +au BufNewFile,BufRead named*.conf,rndc*.conf,rndc*.key setf named + +" BIND zone +au BufNewFile,BufRead named.root setf bindzone +au BufNewFile,BufRead *.db call dist#ft#BindzoneCheck('') + +" Blank +au BufNewFile,BufRead *.bl setf blank + +" Blkid cache file +au BufNewFile,BufRead */etc/blkid.tab,*/etc/blkid.tab.old setf xml + +" BSDL +au BufNewFile,BufRead *bsd,*.bsdl setf bsdl + +" Bazel (http://bazel.io) +autocmd BufRead,BufNewFile *.bzl,*.bazel,WORKSPACE setf bzl +if has("fname_case") + " There is another check for BUILD further below. + autocmd BufRead,BufNewFile *.BUILD,BUILD setf bzl +endif + +" C or lpc +au BufNewFile,BufRead *.c call dist#ft#FTlpc() +au BufNewFile,BufRead *.lpc,*.ulpc setf lpc + +" Calendar +au BufNewFile,BufRead calendar setf calendar + +" C# +au BufNewFile,BufRead *.cs setf cs + +" CSDL +au BufNewFile,BufRead *.csdl setf csdl + +" Cabal +au BufNewFile,BufRead *.cabal setf cabal + +" Cdrdao TOC +au BufNewFile,BufRead *.toc setf cdrtoc + +" Cdrdao config +au BufNewFile,BufRead */etc/cdrdao.conf,*/etc/defaults/cdrdao,*/etc/default/cdrdao,.cdrdao setf cdrdaoconf + +" Cfengine +au BufNewFile,BufRead cfengine.conf setf cfengine + +" ChaiScript +au BufRead,BufNewFile *.chai setf chaiscript + +" Comshare Dimension Definition Language +au BufNewFile,BufRead *.cdl setf cdl + +" Conary Recipe +au BufNewFile,BufRead *.recipe setf conaryrecipe + +" Controllable Regex Mutilator +au BufNewFile,BufRead *.crm setf crm + +" Cyn++ +au BufNewFile,BufRead *.cyn setf cynpp + +" Cynlib +" .cc and .cpp files can be C++ or Cynlib. +au BufNewFile,BufRead *.cc + \ if exists("cynlib_syntax_for_cc")|setf cynlib|else|setf cpp|endif +au BufNewFile,BufRead *.cpp + \ if exists("cynlib_syntax_for_cpp")|setf cynlib|else|setf cpp|endif + +" C++ +au BufNewFile,BufRead *.cxx,*.c++,*.hh,*.hxx,*.hpp,*.ipp,*.moc,*.tcc,*.inl setf cpp +if has("fname_case") + au BufNewFile,BufRead *.C,*.H setf cpp +endif + +" .h files can be C, Ch C++, ObjC or ObjC++. +" Set c_syntax_for_h if you want C, ch_syntax_for_h if you want Ch. ObjC is +" detected automatically. +au BufNewFile,BufRead *.h call dist#ft#FTheader() + +" Ch (CHscript) +au BufNewFile,BufRead *.chf setf ch + +" TLH files are C++ headers generated by Visual C++'s #import from typelibs +au BufNewFile,BufRead *.tlh setf cpp + +" Cascading Style Sheets +au BufNewFile,BufRead *.css setf css + +" Century Term Command Scripts (*.cmd too) +au BufNewFile,BufRead *.con setf cterm + +" Changelog +au BufNewFile,BufRead changelog.Debian,changelog.dch,NEWS.Debian,NEWS.dch,*/debian/changelog + \ setf debchangelog + +au BufNewFile,BufRead [cC]hange[lL]og + \ if getline(1) =~ '; urgency=' + \| setf debchangelog + \| else + \| setf changelog + \| endif + +au BufNewFile,BufRead NEWS + \ if getline(1) =~ '; urgency=' + \| setf debchangelog + \| endif + +" CHILL +au BufNewFile,BufRead *..ch setf chill + +" Changes for WEB and CWEB or CHILL +au BufNewFile,BufRead *.ch call dist#ft#FTchange() + +" ChordPro +au BufNewFile,BufRead *.chopro,*.crd,*.cho,*.crdpro,*.chordpro setf chordpro + +" Clean +au BufNewFile,BufRead *.dcl,*.icl setf clean + +" Clever +au BufNewFile,BufRead *.eni setf cl + +" Clever or dtd +au BufNewFile,BufRead *.ent call dist#ft#FTent() + +" Clipper (or FoxPro; could also be eviews) +au BufNewFile,BufRead *.prg + \ if exists("g:filetype_prg") | + \ exe "setf " . g:filetype_prg | + \ else | + \ setf clipper | + \ endif + +" Clojure +au BufNewFile,BufRead *.clj,*.cljs,*.cljx,*.cljc setf clojure + +" Cmake +au BufNewFile,BufRead CMakeLists.txt,*.cmake,*.cmake.in setf cmake + +" Cmusrc +au BufNewFile,BufRead */.cmus/{autosave,rc,command-history,*.theme} setf cmusrc +au BufNewFile,BufRead */cmus/{rc,*.theme} setf cmusrc + +" Cobol +au BufNewFile,BufRead *.cbl,*.cob,*.lib setf cobol +" cobol or zope form controller python script? (heuristic) +au BufNewFile,BufRead *.cpy + \ if getline(1) =~ '^##' | + \ setf python | + \ else | + \ setf cobol | + \ endif + +" Coco/R +au BufNewFile,BufRead *.atg setf coco + +" Cold Fusion +au BufNewFile,BufRead *.cfm,*.cfi,*.cfc setf cf + +" Configure scripts +au BufNewFile,BufRead configure.in,configure.ac setf config + +" CUDA Cumpute Unified Device Architecture +au BufNewFile,BufRead *.cu,*.cuh setf cuda + +" Dockerfile; Podman uses the same syntax with name Containerfile +au BufNewFile,BufRead Containerfile,Dockerfile,*.Dockerfile setf dockerfile + +" WildPackets EtherPeek Decoder +au BufNewFile,BufRead *.dcd setf dcd + +" Enlightenment configuration files +au BufNewFile,BufRead *enlightenment/*.cfg setf c + +" Eterm +au BufNewFile,BufRead *Eterm/*.cfg setf eterm + +" Euphoria 3 or 4 +au BufNewFile,BufRead *.eu,*.ew,*.ex,*.exu,*.exw call dist#ft#EuphoriaCheck() +if has("fname_case") + au BufNewFile,BufRead *.EU,*.EW,*.EX,*.EXU,*.EXW call dist#ft#EuphoriaCheck() +endif + +" Lynx config files +au BufNewFile,BufRead lynx.cfg setf lynx + +" Quake +au BufNewFile,BufRead *baseq[2-3]/*.cfg,*id1/*.cfg setf quake +au BufNewFile,BufRead *quake[1-3]/*.cfg setf quake + +" Quake C +au BufNewFile,BufRead *.qc setf c + +" Configure files +au BufNewFile,BufRead *.cfg setf cfg + +" Cucumber +au BufNewFile,BufRead *.feature setf cucumber + +" Communicating Sequential Processes +au BufNewFile,BufRead *.csp,*.fdr setf csp + +" CUPL logic description and simulation +au BufNewFile,BufRead *.pld setf cupl +au BufNewFile,BufRead *.si setf cuplsim + +" Dart +au BufRead,BufNewfile *.dart,*.drt setf dart + +" Debian Control +au BufNewFile,BufRead */debian/control setf debcontrol +au BufNewFile,BufRead control + \ if getline(1) =~ '^Source:' + \| setf debcontrol + \| endif + +" Debian Copyright +au BufNewFile,BufRead */debian/copyright setf debcopyright +au BufNewFile,BufRead copyright + \ if getline(1) =~ '^Format:' + \| setf debcopyright + \| endif + +" Debian Sources.list +au BufNewFile,BufRead */etc/apt/sources.list setf debsources +au BufNewFile,BufRead */etc/apt/sources.list.d/*.list setf debsources + +" Deny hosts +au BufNewFile,BufRead denyhosts.conf setf denyhosts + +" dnsmasq(8) configuration files +au BufNewFile,BufRead */etc/dnsmasq.conf setf dnsmasq + +" ROCKLinux package description +au BufNewFile,BufRead *.desc setf desc + +" the D language or dtrace +au BufNewFile,BufRead *.d call dist#ft#DtraceCheck() + +" Desktop files +au BufNewFile,BufRead *.desktop,*.directory setf desktop + +" Dict config +au BufNewFile,BufRead dict.conf,.dictrc setf dictconf + +" Dictd config +au BufNewFile,BufRead dictd.conf setf dictdconf + +" Diff files +au BufNewFile,BufRead *.diff,*.rej setf diff +au BufNewFile,BufRead *.patch + \ if getline(1) =~ '^From [0-9a-f]\{40\} Mon Sep 17 00:00:00 2001$' | + \ setf gitsendemail | + \ else | + \ setf diff | + \ endif + +" Dircolors +au BufNewFile,BufRead .dir_colors,.dircolors,*/etc/DIR_COLORS setf dircolors + +" Diva (with Skill) or InstallShield +au BufNewFile,BufRead *.rul + \ if getline(1).getline(2).getline(3).getline(4).getline(5).getline(6) =~? 'InstallShield' | + \ setf ishd | + \ else | + \ setf diva | + \ endif + +" DCL (Digital Command Language - vms) or DNS zone file +au BufNewFile,BufRead *.com call dist#ft#BindzoneCheck('dcl') + +" DOT +au BufNewFile,BufRead *.dot,*.gv setf dot + +" Dylan - lid files +au BufNewFile,BufRead *.lid setf dylanlid + +" Dylan - intr files (melange) +au BufNewFile,BufRead *.intr setf dylanintr + +" Dylan +au BufNewFile,BufRead *.dylan setf dylan + +" Microsoft Module Definition +au BufNewFile,BufRead *.def setf def + +" Dracula +au BufNewFile,BufRead *.drac,*.drc,*lvs,*lpe setf dracula + +" Datascript +au BufNewFile,BufRead *.ds setf datascript + +" dsl +au BufNewFile,BufRead *.dsl setf dsl + +" DTD (Document Type Definition for XML) +au BufNewFile,BufRead *.dtd setf dtd + +" DTS/DSTI (device tree files) +au BufNewFile,BufRead *.dts,*.dtsi setf dts + +" EDIF (*.edf,*.edif,*.edn,*.edo) or edn +au BufNewFile,BufRead *.ed\(f\|if\|o\) setf edif +au BufNewFile,BufRead *.edn + \ if getline(1) =~ '^\s*(\s*edif\>' | + \ setf edif | + \ else | + \ setf clojure | + \ endif + +" EditorConfig (close enough to dosini) +au BufNewFile,BufRead .editorconfig setf dosini + +" Embedix Component Description +au BufNewFile,BufRead *.ecd setf ecd + +" Eiffel or Specman or Euphoria +au BufNewFile,BufRead *.e,*.E call dist#ft#FTe() + +" Elinks configuration +au BufNewFile,BufRead elinks.conf setf elinks + +" ERicsson LANGuage; Yaws is erlang too +au BufNewFile,BufRead *.erl,*.hrl,*.yaws setf erlang + +" Elm +au BufNewFile,BufRead *.elm setf elm + +" Elm Filter Rules file +au BufNewFile,BufRead filter-rules setf elmfilt + +" ESMTP rc file +au BufNewFile,BufRead *esmtprc setf esmtprc + +" ESQL-C +au BufNewFile,BufRead *.ec,*.EC setf esqlc + +" Esterel +au BufNewFile,BufRead *.strl setf esterel + +" Essbase script +au BufNewFile,BufRead *.csc setf csc + +" Exim +au BufNewFile,BufRead exim.conf setf exim + +" Expect +au BufNewFile,BufRead *.exp setf expect + +" Exports +au BufNewFile,BufRead exports setf exports + +" Falcon +au BufNewFile,BufRead *.fal setf falcon + +" Fantom +au BufNewFile,BufRead *.fan,*.fwt setf fan + +" Factor +au BufNewFile,BufRead *.factor setf factor + +" Fetchmail RC file +au BufNewFile,BufRead .fetchmailrc setf fetchmail + +" FlexWiki - disabled, because it has side effects when a .wiki file +" is not actually FlexWiki +"au BufNewFile,BufRead *.wiki setf flexwiki + +" Focus Executable +au BufNewFile,BufRead *.fex,*.focexec setf focexec + +" Focus Master file (but not for auto.master) +au BufNewFile,BufRead auto.master setf conf +au BufNewFile,BufRead *.mas,*.master setf master + +" Forth +au BufNewFile,BufRead *.fs,*.ft,*.fth setf forth + +" Reva Forth +au BufNewFile,BufRead *.frt setf reva + +" Fortran +if has("fname_case") + au BufNewFile,BufRead *.F,*.FOR,*.FPP,*.FTN,*.F77,*.F90,*.F95,*.F03,*.F08 setf fortran +endif +au BufNewFile,BufRead *.f,*.for,*.fortran,*.fpp,*.ftn,*.f77,*.f90,*.f95,*.f03,*.f08 setf fortran + +" Framescript +au BufNewFile,BufRead *.fsl setf framescript + +" FStab +au BufNewFile,BufRead fstab,mtab setf fstab + +" GDB command files +au BufNewFile,BufRead .gdbinit setf gdb + +" GDMO +au BufNewFile,BufRead *.mo,*.gdmo setf gdmo + +" Gedcom +au BufNewFile,BufRead *.ged,lltxxxxx.txt setf gedcom + +" Git +au BufNewFile,BufRead COMMIT_EDITMSG,MERGE_MSG,TAG_EDITMSG setf gitcommit +au BufNewFile,BufRead *.git/config,.gitconfig,/etc/gitconfig setf gitconfig +au BufNewFile,BufRead */.config/git/config setf gitconfig +au BufNewFile,BufRead .gitmodules,*.git/modules/*/config setf gitconfig +if !empty($XDG_CONFIG_HOME) + au BufNewFile,BufRead $XDG_CONFIG_HOME/git/config setf gitconfig +endif +au BufNewFile,BufRead git-rebase-todo setf gitrebase +au BufRead,BufNewFile .gitsendemail.msg.?????? setf gitsendemail +au BufNewFile,BufRead .msg.[0-9]* + \ if getline(1) =~ '^From.*# This line is ignored.$' | + \ setf gitsendemail | + \ endif +au BufNewFile,BufRead *.git/* + \ if getline(1) =~ '^\x\{40\}\>\|^ref: ' | + \ setf git | + \ endif + +" Gkrellmrc +au BufNewFile,BufRead gkrellmrc,gkrellmrc_? setf gkrellmrc + +" GP scripts (2.0 and onward) +au BufNewFile,BufRead *.gp,.gprc setf gp + +" GPG +au BufNewFile,BufRead */.gnupg/options setf gpg +au BufNewFile,BufRead */.gnupg/gpg.conf setf gpg +au BufNewFile,BufRead */usr/*/gnupg/options.skel setf gpg +if !empty($GNUPGHOME) + au BufNewFile,BufRead $GNUPGHOME/options setf gpg + au BufNewFile,BufRead $GNUPGHOME/gpg.conf setf gpg +endif + +" gnash(1) configuration files +au BufNewFile,BufRead gnashrc,.gnashrc,gnashpluginrc,.gnashpluginrc setf gnash + +" Gitolite +au BufNewFile,BufRead gitolite.conf setf gitolite +au BufNewFile,BufRead {,.}gitolite.rc,example.gitolite.rc setf perl + +" Gnuplot scripts +au BufNewFile,BufRead *.gpi setf gnuplot + +" Go (Google) +au BufNewFile,BufRead *.go setf go + +" GrADS scripts +au BufNewFile,BufRead *.gs setf grads + +" Gretl +au BufNewFile,BufRead *.gretl setf gretl + +" Groovy +au BufNewFile,BufRead *.gradle,*.groovy setf groovy + +" GNU Server Pages +au BufNewFile,BufRead *.gsp setf gsp + +" Group file +au BufNewFile,BufRead */etc/group,*/etc/group-,*/etc/group.edit,*/etc/gshadow,*/etc/gshadow-,*/etc/gshadow.edit,*/var/backups/group.bak,*/var/backups/gshadow.bak setf group + +" GTK RC +au BufNewFile,BufRead .gtkrc,gtkrc setf gtkrc + +" Haml +au BufNewFile,BufRead *.haml setf haml + +" Hamster Classic | Playground files +au BufNewFile,BufRead *.hsc,*.hsm setf hamster + +" Haskell +au BufNewFile,BufRead *.hs,*.hs-boot setf haskell +au BufNewFile,BufRead *.lhs setf lhaskell +au BufNewFile,BufRead *.chs setf chaskell + +" Haste +au BufNewFile,BufRead *.ht setf haste +au BufNewFile,BufRead *.htpp setf hastepreproc + +" Hercules +au BufNewFile,BufRead *.vc,*.ev,*.sum,*.errsum setf hercules + +" HEX (Intel) +au BufNewFile,BufRead *.hex,*.h32 setf hex + +" Hollywood +au BufRead,BufNewFile *.hws setf hollywood + +" Tilde (must be before HTML) +au BufNewFile,BufRead *.t.html setf tilde + +" HTML (.shtml and .stm for server side) +au BufNewFile,BufRead *.html,*.htm,*.shtml,*.stm call dist#ft#FThtml() + +" HTML with Ruby - eRuby +au BufNewFile,BufRead *.erb,*.rhtml setf eruby + +" HTML with M4 +au BufNewFile,BufRead *.html.m4 setf htmlm4 + +" Some template. Used to be HTML Cheetah. +au BufNewFile,BufRead *.tmpl setf template + +" Host config +au BufNewFile,BufRead */etc/host.conf setf hostconf + +" Hosts access +au BufNewFile,BufRead */etc/hosts.allow,*/etc/hosts.deny setf hostsaccess + +" Hyper Builder +au BufNewFile,BufRead *.hb setf hb + +" Httest +au BufNewFile,BufRead *.htt,*.htb setf httest + +" Icon +au BufNewFile,BufRead *.icn setf icon + +" IDL (Interface Description Language) +au BufNewFile,BufRead *.idl call dist#ft#FTidl() + +" Microsoft IDL (Interface Description Language) Also *.idl +" MOF = WMI (Windows Management Instrumentation) Managed Object Format +au BufNewFile,BufRead *.odl,*.mof setf msidl + +" Icewm menu +au BufNewFile,BufRead */.icewm/menu setf icemenu + +" Indent profile (must come before IDL *.pro!) +au BufNewFile,BufRead .indent.pro setf indent +au BufNewFile,BufRead indent.pro call dist#ft#ProtoCheck('indent') + +" IDL (Interactive Data Language) +au BufNewFile,BufRead *.pro call dist#ft#ProtoCheck('idlang') + +" Indent RC +au BufNewFile,BufRead indentrc setf indent + +" Inform +au BufNewFile,BufRead *.inf,*.INF setf inform + +" Initng +au BufNewFile,BufRead */etc/initng/*/*.i,*.ii setf initng + +" Innovation Data Processing +au BufRead,BufNewFile upstream.dat\c,upstream.*.dat\c,*.upstream.dat\c setf upstreamdat +au BufRead,BufNewFile fdrupstream.log,upstream.log\c,upstream.*.log\c,*.upstream.log\c,UPSTREAM-*.log\c setf upstreamlog +au BufRead,BufNewFile upstreaminstall.log\c,upstreaminstall.*.log\c,*.upstreaminstall.log\c setf upstreaminstalllog +au BufRead,BufNewFile usserver.log\c,usserver.*.log\c,*.usserver.log\c setf usserverlog +au BufRead,BufNewFile usw2kagt.log\c,usw2kagt.*.log\c,*.usw2kagt.log\c setf usw2kagtlog + +" Ipfilter +au BufNewFile,BufRead ipf.conf,ipf6.conf,ipf.rules setf ipfilter + +" Informix 4GL (source - canonical, include file, I4GL+M4 preproc.) +au BufNewFile,BufRead *.4gl,*.4gh,*.m4gl setf fgl + +" .INI file for MSDOS +au BufNewFile,BufRead *.ini setf dosini + +" SysV Inittab +au BufNewFile,BufRead inittab setf inittab + +" Inno Setup +au BufNewFile,BufRead *.iss setf iss + +" J +au BufNewFile,BufRead *.ijs setf j + +" JAL +au BufNewFile,BufRead *.jal,*.JAL setf jal + +" Jam +au BufNewFile,BufRead *.jpl,*.jpr setf jam + +" Java +au BufNewFile,BufRead *.java,*.jav setf java + +" JavaCC +au BufNewFile,BufRead *.jj,*.jjt setf javacc + +" JavaScript, ECMAScript, ES module script, CommonJS script +au BufNewFile,BufRead *.js,*.javascript,*.es,*.mjs,*.cjs setf javascript + +" JavaScript with React +au BufNewFile,BufRead *.jsx setf javascriptreact + +" Java Server Pages +au BufNewFile,BufRead *.jsp setf jsp + +" Java Properties resource file (note: doesn't catch font.properties.pl) +au BufNewFile,BufRead *.properties,*.properties_??,*.properties_??_?? setf jproperties + +" Jess +au BufNewFile,BufRead *.clp setf jess + +" Jgraph +au BufNewFile,BufRead *.jgr setf jgraph + +" Jovial +au BufNewFile,BufRead *.jov,*.j73,*.jovial setf jovial + +" JSON +au BufNewFile,BufRead *.json,*.jsonp,*.webmanifest setf json + +" Kixtart +au BufNewFile,BufRead *.kix setf kix + +" Kimwitu[++] +au BufNewFile,BufRead *.k setf kwt + +" Kivy +au BufNewFile,BufRead *.kv setf kivy + +" Kotlin +au BufNewFile,BufRead *.kt,*.ktm,*.kts setf kotlin + +" KDE script +au BufNewFile,BufRead *.ks setf kscript + +" Kconfig +au BufNewFile,BufRead Kconfig,Kconfig.debug setf kconfig + +" Lace (ISE) +au BufNewFile,BufRead *.ace,*.ACE setf lace + +" Latte +au BufNewFile,BufRead *.latte,*.lte setf latte + +" Limits +au BufNewFile,BufRead */etc/limits,*/etc/*limits.conf,*/etc/*limits.d/*.conf setf limits + +" LambdaProlog (*.mod too, see Modsim) +au BufNewFile,BufRead *.sig setf lprolog + +" LDAP LDIF +au BufNewFile,BufRead *.ldif setf ldif + +" Ld loader +au BufNewFile,BufRead *.ld setf ld + +" Less +au BufNewFile,BufRead *.less setf less + +" Lex +au BufNewFile,BufRead *.lex,*.l,*.lxx,*.l++ setf lex + +" Libao +au BufNewFile,BufRead */etc/libao.conf,*/.libao setf libao + +" Libsensors +au BufNewFile,BufRead */etc/sensors.conf,*/etc/sensors3.conf setf sensors + +" LFTP +au BufNewFile,BufRead lftp.conf,.lftprc,*lftp/rc setf lftp + +" Lifelines (or Lex for C++!) +au BufNewFile,BufRead *.ll setf lifelines + +" Lilo: Linux loader +au BufNewFile,BufRead lilo.conf setf lilo + +" Lisp (*.el = ELisp, *.cl = Common Lisp) +" *.jl was removed, it's also used for Julia, better skip than guess wrong. +if has("fname_case") + au BufNewFile,BufRead *.lsp,*.lisp,*.el,*.cl,*.L,.emacs,.sawfishrc setf lisp +else + au BufNewFile,BufRead *.lsp,*.lisp,*.el,*.cl,.emacs,.sawfishrc setf lisp +endif + +" SBCL implementation of Common Lisp +au BufNewFile,BufRead sbclrc,.sbclrc setf lisp + +" Liquid +au BufNewFile,BufRead *.liquid setf liquid + +" Lite +au BufNewFile,BufRead *.lite,*.lt setf lite + +" LiteStep RC files +au BufNewFile,BufRead */LiteStep/*/*.rc setf litestep + +" Login access +au BufNewFile,BufRead */etc/login.access setf loginaccess + +" Login defs +au BufNewFile,BufRead */etc/login.defs setf logindefs + +" Logtalk +au BufNewFile,BufRead *.lgt setf logtalk + +" LOTOS +au BufNewFile,BufRead *.lot,*.lotos setf lotos + +" Lout (also: *.lt) +au BufNewFile,BufRead *.lou,*.lout setf lout + +" Lua +au BufNewFile,BufRead *.lua setf lua + +" Luarocks +au BufNewFile,BufRead *.rockspec setf lua + +" Linden Scripting Language (Second Life) +au BufNewFile,BufRead *.lsl setf lsl + +" Lynx style file (or LotusScript!) +au BufNewFile,BufRead *.lss setf lss + +" M4 +au BufNewFile,BufRead *.m4 + \ if expand("<afile>") !~? 'html.m4$\|fvwm2rc' | setf m4 | endif + +" MaGic Point +au BufNewFile,BufRead *.mgp setf mgp + +" Mail (for Elm, trn, mutt, muttng, rn, slrn, neomutt) +au BufNewFile,BufRead snd.\d\+,.letter,.letter.\d\+,.followup,.article,.article.\d\+,pico.\d\+,mutt{ng,}-*-\w\+,mutt[[:alnum:]_-]\\\{6\},neomutt-*-\w\+,neomutt[[:alnum:]_-]\\\{6\},ae\d\+.txt,/tmp/SLRN[0-9A-Z.]\+,*.eml setf mail + +" Mail aliases +au BufNewFile,BufRead */etc/mail/aliases,*/etc/aliases setf mailaliases + +" Mailcap configuration file +au BufNewFile,BufRead .mailcap,mailcap setf mailcap + +" Makefile +"au BufNewFile,BufRead *[mM]akefile,*.mk,*.mak,*.dsp setf make + +" MakeIndex +au BufNewFile,BufRead *.ist,*.mst setf ist + +" Mallard +au BufNewFile,BufRead *.page setf mallard + +" Manpage +au BufNewFile,BufRead *.man setf man + +" Man config +au BufNewFile,BufRead */etc/man.conf,man.config setf manconf + +" Maple V +au BufNewFile,BufRead *.mv,*.mpl,*.mws setf maple + +" Map (UMN mapserver config file) +au BufNewFile,BufRead *.map setf map + +" Markdown +au BufNewFile,BufRead *.markdown,*.mdown,*.mkd,*.mkdn,*.mdwn,*.md setf markdown + +" Mason +au BufNewFile,BufRead *.mason,*.mhtml,*.comp setf mason + +" Mathematica, Matlab, Murphi or Objective C +au BufNewFile,BufRead *.m call dist#ft#FTm() + +" Mathematica notebook +au BufNewFile,BufRead *.nb setf mma + +" Maya Extension Language +au BufNewFile,BufRead *.mel setf mel + +" Mercurial (hg) commit file +au BufNewFile,BufRead hg-editor-*.txt setf hgcommit + +" Mercurial config (looks like generic config file) +au BufNewFile,BufRead *.hgrc,*hgrc setf cfg + +" Meson Build system config +au BufNewFile,BufRead meson.build,meson_options.txt setf meson + +" Messages (logs mostly) +au BufNewFile,BufRead */log/{auth,cron,daemon,debug,kern,lpr,mail,messages,news/news,syslog,user}{,.log,.err,.info,.warn,.crit,.notice}{,.[0-9]*,-[0-9]*} setf messages + +" Metafont +au BufNewFile,BufRead *.mf setf mf + +" MetaPost +au BufNewFile,BufRead *.mp setf mp + +" MGL +au BufNewFile,BufRead *.mgl setf mgl + +" MIX - Knuth assembly +au BufNewFile,BufRead *.mix,*.mixal setf mix + +" MMIX or VMS makefile +au BufNewFile,BufRead *.mms call dist#ft#FTmms() + +" Symbian meta-makefile definition (MMP) +au BufNewFile,BufRead *.mmp setf mmp + +" Modsim III (or LambdaProlog) +au BufNewFile,BufRead *.mod + \ if getline(1) =~ '\<module\>' | + \ setf lprolog | + \ else | + \ setf modsim3 | + \ endif + +" Modula 2 (.md removed in favor of Markdown) +au BufNewFile,BufRead *.m2,*.DEF,*.MOD,*.mi setf modula2 + +" Modula 3 (.m3, .i3, .mg, .ig) +au BufNewFile,BufRead *.[mi][3g] setf modula3 + +" Monk +au BufNewFile,BufRead *.isc,*.monk,*.ssc,*.tsc setf monk + +" MOO +au BufNewFile,BufRead *.moo setf moo + +" Modconf +au BufNewFile,BufRead */etc/modules.conf,*/etc/modules,*/etc/conf.modules setf modconf + +" Mplayer config +au BufNewFile,BufRead mplayer.conf,*/.mplayer/config setf mplayerconf + +" Motorola S record +au BufNewFile,BufRead *.s19,*.s28,*.s37,*.mot,*.srec setf srec + +" Mrxvtrc +au BufNewFile,BufRead mrxvtrc,.mrxvtrc setf mrxvtrc + +" Msql +au BufNewFile,BufRead *.msql setf msql + +" Mysql +au BufNewFile,BufRead *.mysql setf mysql + +" Mutt setup files (must be before catch *.rc) +au BufNewFile,BufRead */etc/Muttrc.d/* call s:StarSetf('muttrc') + +" M$ Resource files +au BufNewFile,BufRead *.rc,*.rch setf rc + +" MuPAD source +au BufRead,BufNewFile *.mu setf mupad + +" Mush +au BufNewFile,BufRead *.mush setf mush + +" Mutt setup file (also for Muttng) +au BufNewFile,BufRead Mutt{ng,}rc setf muttrc + +" N1QL +au BufRead,BufNewfile *.n1ql,*.nql setf n1ql + +" Nano +au BufNewFile,BufRead */etc/nanorc,*.nanorc setf nanorc + +" Nastran input/DMAP +"au BufNewFile,BufRead *.dat setf nastran + +" Natural +au BufNewFile,BufRead *.NS[ACGLMNPS] setf natural + +" Noemutt setup file +au BufNewFile,BufRead Neomuttrc setf neomuttrc + +" Netrc +au BufNewFile,BufRead .netrc setf netrc + +" Ninja file +au BufNewFile,BufRead *.ninja setf ninja + +" NPM RC file +au BufNewFile,BufRead npmrc,.npmrc setf dosini + +" Novell netware batch files +au BufNewFile,BufRead *.ncf setf ncf + +" Nroff/Troff (*.ms and *.t are checked below) +au BufNewFile,BufRead *.me + \ if expand("<afile>") != "read.me" && expand("<afile>") != "click.me" | + \ setf nroff | + \ endif +au BufNewFile,BufRead *.tr,*.nr,*.roff,*.tmac,*.mom setf nroff +au BufNewFile,BufRead *.[1-9] call dist#ft#FTnroff() + +" Nroff or Objective C++ +au BufNewFile,BufRead *.mm call dist#ft#FTmm() + +" Not Quite C +au BufNewFile,BufRead *.nqc setf nqc + +" NSE - Nmap Script Engine - uses Lua syntax +au BufNewFile,BufRead *.nse setf lua + +" NSIS +au BufNewFile,BufRead *.nsi,*.nsh setf nsis + +" OCAML +au BufNewFile,BufRead *.ml,*.mli,*.mll,*.mly,.ocamlinit setf ocaml + +" Occam +au BufNewFile,BufRead *.occ setf occam + +" Omnimark +au BufNewFile,BufRead *.xom,*.xin setf omnimark + +" OpenROAD +au BufNewFile,BufRead *.or setf openroad + +" OPL +au BufNewFile,BufRead *.[Oo][Pp][Ll] setf opl + +" Oracle config file +au BufNewFile,BufRead *.ora setf ora + +" Packet filter conf +au BufNewFile,BufRead pf.conf setf pf + +" Pacman Config (close enough to dosini) +au BufNewFile,BufRead */etc/pacman.conf setf dosini + +" Pacman hooks +au BufNewFile,BufRead *.hook + \ if getline(1) == '[Trigger]' | + \ setf dosini | + \ endif + +" Pam conf +au BufNewFile,BufRead */etc/pam.conf setf pamconf + +" Pam environment +au BufNewFile,BufRead pam_env.conf,.pam_environment setf pamenv + +" PApp +au BufNewFile,BufRead *.papp,*.pxml,*.pxsl setf papp + +" Password file +au BufNewFile,BufRead */etc/passwd,*/etc/passwd-,*/etc/passwd.edit,*/etc/shadow,*/etc/shadow-,*/etc/shadow.edit,*/var/backups/passwd.bak,*/var/backups/shadow.bak setf passwd + +" Pascal (also *.p) +au BufNewFile,BufRead *.pas,*.pp setf pascal + +" Delphi or Lazarus program file +au BufNewFile,BufRead *.dpr,*.lpr setf pascal + +" PDF +au BufNewFile,BufRead *.pdf setf pdf + +" PCMK - HAE - crm configure edit +au BufNewFile,BufRead *.pcmk setf pcmk + +" Perl +if has("fname_case") + au BufNewFile,BufRead *.pl,*.PL call dist#ft#FTpl() +else + au BufNewFile,BufRead *.pl call dist#ft#FTpl() +endif +au BufNewFile,BufRead *.plx,*.al,*.psgi setf perl +au BufNewFile,BufRead *.p6,*.pm6,*.pl6 setf perl6 +au BufNewFile,BufRead *.raku,*.rakumod setf perl6 + +" Perl, XPM or XPM2 +au BufNewFile,BufRead *.pm + \ if getline(1) =~ "XPM2" | + \ setf xpm2 | + \ elseif getline(1) =~ "XPM" | + \ setf xpm | + \ else | + \ setf perl | + \ endif + +" Perl POD +au BufNewFile,BufRead *.pod setf pod +au BufNewFile,BufRead *.pod6 setf pod6 + +" Php, php3, php4, etc. +" Also Phtml (was used for PHP 2 in the past) +" Also .ctp for Cake template file +au BufNewFile,BufRead *.php,*.php\d,*.phtml,*.ctp setf php + +" PHP config +au BufNewFile,BufRead php.ini-* setf dosini + +" Pike and Cmod +au BufNewFile,BufRead *.pike,*.pmod setf pike +au BufNewFile,BufRead *.cmod setf cmod + +" Pinfo config +au BufNewFile,BufRead */etc/pinforc,*/.pinforc setf pinfo + +" Palm Resource compiler +au BufNewFile,BufRead *.rcp setf pilrc + +" Pine config +au BufNewFile,BufRead .pinerc,pinerc,.pinercex,pinercex setf pine + +" Pipenv Pipfiles +au BufNewFile,BufRead Pipfile setf config +au BufNewFile,BufRead Pipfile.lock setf json + +" PL/1, PL/I +au BufNewFile,BufRead *.pli,*.pl1 setf pli + +" PL/M (also: *.inp) +au BufNewFile,BufRead *.plm,*.p36,*.pac setf plm + +" PL/SQL +au BufNewFile,BufRead *.pls,*.plsql setf plsql + +" PLP +au BufNewFile,BufRead *.plp setf plp + +" PO and PO template (GNU gettext) +au BufNewFile,BufRead *.po,*.pot setf po + +" Postfix main config +au BufNewFile,BufRead main.cf setf pfmain + +" PostScript (+ font files, encapsulated PostScript, Adobe Illustrator) +au BufNewFile,BufRead *.ps,*.pfa,*.afm,*.eps,*.epsf,*.epsi,*.ai setf postscr + +" PostScript Printer Description +au BufNewFile,BufRead *.ppd setf ppd + +" Povray +au BufNewFile,BufRead *.pov setf pov + +" Povray configuration +au BufNewFile,BufRead .povrayrc setf povini + +" Povray, PHP or assembly +au BufNewFile,BufRead *.inc call dist#ft#FTinc() + +" Printcap and Termcap +au BufNewFile,BufRead *printcap + \ let b:ptcap_type = "print" | setf ptcap +au BufNewFile,BufRead *termcap + \ let b:ptcap_type = "term" | setf ptcap + +" PCCTS / ANTRL +"au BufNewFile,BufRead *.g setf antrl +au BufNewFile,BufRead *.g setf pccts + +" PPWizard +au BufNewFile,BufRead *.it,*.ih setf ppwiz + +" Obj 3D file format +" TODO: is there a way to avoid MS-Windows Object files? +au BufNewFile,BufRead *.obj setf obj + +" Oracle Pro*C/C++ +au BufNewFile,BufRead *.pc setf proc + +" Privoxy actions file +au BufNewFile,BufRead *.action setf privoxy + +" Procmail +au BufNewFile,BufRead .procmail,.procmailrc setf procmail + +" Progress or CWEB +au BufNewFile,BufRead *.w call dist#ft#FTprogress_cweb() + +" Progress or assembly +au BufNewFile,BufRead *.i call dist#ft#FTprogress_asm() + +" Progress or Pascal +au BufNewFile,BufRead *.p call dist#ft#FTprogress_pascal() + +" Software Distributor Product Specification File (POSIX 1387.2-1995) +au BufNewFile,BufRead *.psf setf psf +au BufNewFile,BufRead INDEX,INFO + \ if getline(1) =~ '^\s*\(distribution\|installed_software\|root\|bundle\|product\)\s*$' | + \ setf psf | + \ endif + +" Prolog +au BufNewFile,BufRead *.pdb setf prolog + +" Promela +au BufNewFile,BufRead *.pml setf promela + +" Google protocol buffers +au BufNewFile,BufRead *.proto setf proto + +" Protocols +au BufNewFile,BufRead */etc/protocols setf protocols + +" Pyrex +au BufNewFile,BufRead *.pyx,*.pxd setf pyrex + +" Python, Python Shell Startup and Python Stub Files +" Quixote (Python-based web framework) +au BufNewFile,BufRead *.py,*.pyw,.pythonstartup,.pythonrc setf python +au BufNewFile,BufRead *.ptl,*.pyi,SConstruct setf python + +" Radiance +au BufNewFile,BufRead *.rad,*.mat setf radiance + +" Ratpoison config/command files +au BufNewFile,BufRead .ratpoisonrc,ratpoisonrc setf ratpoison + +" RCS file +au BufNewFile,BufRead *\,v setf rcs + +" Readline +au BufNewFile,BufRead .inputrc,inputrc setf readline + +" Registry for MS-Windows +au BufNewFile,BufRead *.reg + \ if getline(1) =~? '^REGEDIT[0-9]*\s*$\|^Windows Registry Editor Version \d*\.\d*\s*$' | setf registry | endif + +" Renderman Interface Bytestream +au BufNewFile,BufRead *.rib setf rib + +" Rego Policy Language +au BufNewFile,BufRead *.rego setf rego + +" Rexx +au BufNewFile,BufRead *.rex,*.orx,*.rxo,*.rxj,*.jrexx,*.rexxj,*.rexx,*.testGroup,*.testUnit setf rexx + +" R (Splus) +if has("fname_case") + au BufNewFile,BufRead *.s,*.S setf r +else + au BufNewFile,BufRead *.s setf r +endif + +" R Help file +if has("fname_case") + au BufNewFile,BufRead *.rd,*.Rd setf rhelp +else + au BufNewFile,BufRead *.rd setf rhelp +endif + +" R noweb file +if has("fname_case") + au BufNewFile,BufRead *.Rnw,*.rnw,*.Snw,*.snw setf rnoweb +else + au BufNewFile,BufRead *.rnw,*.snw setf rnoweb +endif + +" R Markdown file +if has("fname_case") + au BufNewFile,BufRead *.Rmd,*.rmd,*.Smd,*.smd setf rmd +else + au BufNewFile,BufRead *.rmd,*.smd setf rmd +endif + +" R reStructuredText file +if has("fname_case") + au BufNewFile,BufRead *.Rrst,*.rrst,*.Srst,*.srst setf rrst +else + au BufNewFile,BufRead *.rrst,*.srst setf rrst +endif + +" Rexx, Rebol or R +au BufNewFile,BufRead *.r,*.R call dist#ft#FTr() + +" Remind +au BufNewFile,BufRead .reminders,*.remind,*.rem setf remind + +" Resolv.conf +au BufNewFile,BufRead resolv.conf setf resolv + +" Relax NG Compact +au BufNewFile,BufRead *.rnc setf rnc + +" Relax NG XML +au BufNewFile,BufRead *.rng setf rng + +" RPL/2 +au BufNewFile,BufRead *.rpl setf rpl + +" Robots.txt +au BufNewFile,BufRead robots.txt setf robots + +" Rpcgen +au BufNewFile,BufRead *.x setf rpcgen + +" reStructuredText Documentation Format +au BufNewFile,BufRead *.rst setf rst + +" RTF +au BufNewFile,BufRead *.rtf setf rtf + +" Interactive Ruby shell +au BufNewFile,BufRead .irbrc,irbrc setf ruby + +" Ruby +au BufNewFile,BufRead *.rb,*.rbw setf ruby + +" RubyGems +au BufNewFile,BufRead *.gemspec setf ruby + +" Rust +au BufNewFile,BufRead *.rs setf rust + +" Rackup +au BufNewFile,BufRead *.ru setf ruby + +" Bundler +au BufNewFile,BufRead Gemfile setf ruby + +" Ruby on Rails +au BufNewFile,BufRead *.builder,*.rxml,*.rjs setf ruby + +" Rantfile and Rakefile is like Ruby +au BufNewFile,BufRead [rR]antfile,*.rant,[rR]akefile,*.rake setf ruby + +" S-lang (or shader language, or SmallLisp) +au BufNewFile,BufRead *.sl setf slang + +" Samba config +au BufNewFile,BufRead smb.conf setf samba + +" SAS script +au BufNewFile,BufRead *.sas setf sas + +" Sass +au BufNewFile,BufRead *.sass setf sass + +" Sather +au BufNewFile,BufRead *.sa setf sather + +" Scala +au BufNewFile,BufRead *.scala setf scala + +" SBT - Scala Build Tool +au BufNewFile,BufRead *.sbt setf sbt + +" Scilab +au BufNewFile,BufRead *.sci,*.sce setf scilab + +" SCSS +au BufNewFile,BufRead *.scss setf scss + +" SD: Streaming Descriptors +au BufNewFile,BufRead *.sd setf sd + +" SDL +au BufNewFile,BufRead *.sdl,*.pr setf sdl + +" sed +au BufNewFile,BufRead *.sed setf sed + +" Sieve (RFC 3028, 5228) +au BufNewFile,BufRead *.siv,*.sieve setf sieve + +" Sendmail +au BufNewFile,BufRead sendmail.cf setf sm + +" Sendmail .mc files are actually m4. Could also be MS Message text file. +au BufNewFile,BufRead *.mc call dist#ft#McSetf() + +" Services +au BufNewFile,BufRead */etc/services setf services + +" Service Location config +au BufNewFile,BufRead */etc/slp.conf setf slpconf + +" Service Location registration +au BufNewFile,BufRead */etc/slp.reg setf slpreg + +" Service Location SPI +au BufNewFile,BufRead */etc/slp.spi setf slpspi + +" Setserial config +au BufNewFile,BufRead */etc/serial.conf setf setserial + +" SGML +au BufNewFile,BufRead *.sgm,*.sgml + \ if getline(1).getline(2).getline(3).getline(4).getline(5) =~? 'linuxdoc' | + \ setf sgmllnx | + \ elseif getline(1) =~ '<!DOCTYPE.*DocBook' || getline(2) =~ '<!DOCTYPE.*DocBook' | + \ let b:docbk_type = "sgml" | + \ let b:docbk_ver = 4 | + \ setf docbk | + \ else | + \ setf sgml | + \ endif + +" SGMLDECL +au BufNewFile,BufRead *.decl,*.dcl,*.dec + \ if getline(1).getline(2).getline(3) =~? '^<!SGML' | + \ setf sgmldecl | + \ endif + +" SGML catalog file +au BufNewFile,BufRead catalog setf catalog + +" Shell scripts (sh, ksh, bash, bash2, csh); Allow .profile_foo etc. +" Gentoo ebuilds and Arch Linux PKGBUILDs are actually bash scripts +" NOTE: Patterns ending in a star are further down, these have lower priority. +au BufNewFile,BufRead .bashrc,bashrc,bash.bashrc,.bash[_-]profile,.bash[_-]logout,.bash[_-]aliases,bash-fc[-.],*.bash,*/{,.}bash[_-]completion{,.d,.sh}{,/*},*.ebuild,*.eclass,PKGBUILD call dist#ft#SetFileTypeSH("bash") +au BufNewFile,BufRead .kshrc,*.ksh call dist#ft#SetFileTypeSH("ksh") +au BufNewFile,BufRead */etc/profile,.profile,*.sh,*.env call dist#ft#SetFileTypeSH(getline(1)) + + +" Shell script (Arch Linux) or PHP file (Drupal) +au BufNewFile,BufRead *.install + \ if getline(1) =~ '<?php' | + \ setf php | + \ else | + \ call dist#ft#SetFileTypeSH("bash") | + \ endif + +" tcsh scripts (patterns ending in a star further below) +au BufNewFile,BufRead .tcshrc,*.tcsh,tcsh.tcshrc,tcsh.login call dist#ft#SetFileTypeShell("tcsh") + +" csh scripts, but might also be tcsh scripts (on some systems csh is tcsh) +" (patterns ending in a start further below) +au BufNewFile,BufRead .login,.cshrc,csh.cshrc,csh.login,csh.logout,*.csh,.alias call dist#ft#CSH() + +" Z-Shell script (patterns ending in a star further below) +au BufNewFile,BufRead .zprofile,*/etc/zprofile,.zfbfmarks setf zsh +au BufNewFile,BufRead .zshrc,.zshenv,.zlogin,.zlogout,.zcompdump setf zsh +au BufNewFile,BufRead *.zsh setf zsh + +" Scheme +au BufNewFile,BufRead *.scm,*.ss,*.rkt setf scheme + +" Screen RC +au BufNewFile,BufRead .screenrc,screenrc setf screen + +" Simula +au BufNewFile,BufRead *.sim setf simula + +" SINDA +au BufNewFile,BufRead *.sin,*.s85 setf sinda + +" SiSU +au BufNewFile,BufRead *.sst,*.ssm,*.ssi,*.-sst,*._sst setf sisu +au BufNewFile,BufRead *.sst.meta,*.-sst.meta,*._sst.meta setf sisu + +" SKILL +au BufNewFile,BufRead *.il,*.ils,*.cdf setf skill + +" SLRN +au BufNewFile,BufRead .slrnrc setf slrnrc +au BufNewFile,BufRead *.score setf slrnsc + +" Smalltalk (and TeX) +au BufNewFile,BufRead *.st setf st +au BufNewFile,BufRead *.cls + \ if getline(1) =~ '^%' | + \ setf tex | + \ elseif getline(1)[0] == '#' && getline(1) =~ 'rexx' | + \ setf rexx | + \ else | + \ setf st | + \ endif + +" Smarty templates +au BufNewFile,BufRead *.tpl setf smarty + +" SMIL or XML +au BufNewFile,BufRead *.smil + \ if getline(1) =~ '<?\s*xml.*?>' | + \ setf xml | + \ else | + \ setf smil | + \ endif + +" SMIL or SNMP MIB file +au BufNewFile,BufRead *.smi + \ if getline(1) =~ '\<smil\>' | + \ setf smil | + \ else | + \ setf mib | + \ endif + +" SMITH +au BufNewFile,BufRead *.smt,*.smith setf smith + +" Snobol4 and spitbol +au BufNewFile,BufRead *.sno,*.spt setf snobol4 + +" SNMP MIB files +au BufNewFile,BufRead *.mib,*.my setf mib + +" Snort Configuration +au BufNewFile,BufRead *.hog,snort.conf,vision.conf setf hog +au BufNewFile,BufRead *.rules call dist#ft#FTRules() + +" Spec (Linux RPM) +au BufNewFile,BufRead *.spec setf spec + +" Speedup (AspenTech plant simulator) +au BufNewFile,BufRead *.speedup,*.spdata,*.spd setf spup + +" Slice +au BufNewFile,BufRead *.ice setf slice + +" Spice +au BufNewFile,BufRead *.sp,*.spice setf spice + +" Spyce +au BufNewFile,BufRead *.spy,*.spi setf spyce + +" Squid +au BufNewFile,BufRead squid.conf setf squid + +" SQL for Oracle Designer +au BufNewFile,BufRead *.tyb,*.typ,*.tyc,*.pkb,*.pks setf sql + +" SQL +au BufNewFile,BufRead *.sql call dist#ft#SQL() + +" SQLJ +au BufNewFile,BufRead *.sqlj setf sqlj + +" SQR +au BufNewFile,BufRead *.sqr,*.sqi setf sqr + +" OpenSSH configuration +au BufNewFile,BufRead ssh_config,*/.ssh/config setf sshconfig +au BufNewFile,BufRead */etc/ssh/ssh_config.d/*.conf setf sshconfig + +" OpenSSH server configuration +au BufNewFile,BufRead sshd_config setf sshdconfig +au BufNewFile,BufRead */etc/ssh/sshd_config.d/*.conf setf sshdconfig + +" Stata +au BufNewFile,BufRead *.ado,*.do,*.imata,*.mata setf stata +" Also *.class, but not when it's a Java bytecode file +au BufNewFile,BufRead *.class + \ if getline(1) !~ "^\xca\xfe\xba\xbe" | setf stata | endif + +" SMCL +au BufNewFile,BufRead *.hlp,*.ihlp,*.smcl setf smcl + +" Stored Procedures +au BufNewFile,BufRead *.stp setf stp + +" Standard ML +au BufNewFile,BufRead *.sml setf sml + +" Sratus VOS command macro +au BufNewFile,BufRead *.cm setf voscm + +" Swift +au BufNewFile,BufRead *.swift setf swift +au BufNewFile,BufRead *.swift.gyb setf swiftgyb + +" Swift Intermediate Language +au BufNewFile,BufRead *.sil setf sil + +" Sysctl +au BufNewFile,BufRead */etc/sysctl.conf,*/etc/sysctl.d/*.conf setf sysctl + +" Systemd unit files +au BufNewFile,BufRead */systemd/*.{automount,dnssd,link,mount,netdev,network,nspawn,path,service,slice,socket,swap,target,timer} setf systemd +" Systemd overrides +au BufNewFile,BufRead */etc/systemd/*.conf.d/*.conf setf systemd +au BufNewFile,BufRead */etc/systemd/system/*.d/*.conf setf systemd +au BufNewFile,BufRead */.config/systemd/user/*.d/*.conf setf systemd +" Systemd temp files +au BufNewFile,BufRead */etc/systemd/system/*.d/.#* setf systemd +au BufNewFile,BufRead */etc/systemd/system/.#* setf systemd +au BufNewFile,BufRead */.config/systemd/user/*.d/.#* setf systemd +au BufNewFile,BufRead */.config/systemd/user/.#* setf systemd + +" Synopsys Design Constraints +au BufNewFile,BufRead *.sdc setf sdc + +" Sudoers +au BufNewFile,BufRead */etc/sudoers,sudoers.tmp setf sudoers + +" SVG (Scalable Vector Graphics) +au BufNewFile,BufRead *.svg setf svg + +" Tads (or Nroff or Perl test file) +au BufNewFile,BufRead *.t + \ if !dist#ft#FTnroff() && !dist#ft#FTperl() | setf tads | endif + +" Tags +au BufNewFile,BufRead tags setf tags + +" TAK +au BufNewFile,BufRead *.tak setf tak + +" Task +au BufRead,BufNewFile {pending,completed,undo}.data setf taskdata +au BufRead,BufNewFile *.task setf taskedit + +" Tcl (JACL too) +au BufNewFile,BufRead *.tcl,*.tk,*.itcl,*.itk,*.jacl setf tcl + +" TealInfo +au BufNewFile,BufRead *.tli setf tli + +" Telix Salt +au BufNewFile,BufRead *.slt setf tsalt + +" Tera Term Language +au BufRead,BufNewFile *.ttl setf teraterm + +" Terminfo +au BufNewFile,BufRead *.ti setf terminfo + +" TeX +au BufNewFile,BufRead *.latex,*.sty,*.dtx,*.ltx,*.bbl setf tex +au BufNewFile,BufRead *.tex call dist#ft#FTtex() + +" ConTeXt +au BufNewFile,BufRead *.mkii,*.mkiv,*.mkvi setf context + +" Texinfo +au BufNewFile,BufRead *.texinfo,*.texi,*.txi setf texinfo + +" TeX configuration +au BufNewFile,BufRead texmf.cnf setf texmf + +" Tidy config +au BufNewFile,BufRead .tidyrc,tidyrc,tidy.conf setf tidy + +" TF mud client +au BufNewFile,BufRead *.tf,.tfrc,tfrc setf tf + +" tmux configuration +au BufNewFile,BufRead {.,}tmux*.conf setf tmux + +" TPP - Text Presentation Program +au BufNewFile,BufReadPost *.tpp setf tpp + +" Treetop +au BufRead,BufNewFile *.treetop setf treetop + +" Trustees +au BufNewFile,BufRead trustees.conf setf trustees + +" TSS - Geometry +au BufNewFile,BufReadPost *.tssgm setf tssgm + +" TSS - Optics +au BufNewFile,BufReadPost *.tssop setf tssop + +" TSS - Command Line (temporary) +au BufNewFile,BufReadPost *.tsscl setf tsscl + +" TWIG files +au BufNewFile,BufReadPost *.twig setf twig + +" Typescript +au BufNewFile,BufReadPost *.ts setf typescript + +" TypeScript with React +au BufNewFile,BufRead *.tsx setf typescriptreact + +" Motif UIT/UIL files +au BufNewFile,BufRead *.uit,*.uil setf uil + +" Udev conf +au BufNewFile,BufRead */etc/udev/udev.conf setf udevconf + +" Udev permissions +au BufNewFile,BufRead */etc/udev/permissions.d/*.permissions setf udevperm +" +" Udev symlinks config +au BufNewFile,BufRead */etc/udev/cdsymlinks.conf setf sh + +" UnrealScript +au BufNewFile,BufRead *.uc setf uc + +" Updatedb +au BufNewFile,BufRead */etc/updatedb.conf setf updatedb + +" Upstart (init(8)) config files +au BufNewFile,BufRead */usr/share/upstart/*.conf setf upstart +au BufNewFile,BufRead */usr/share/upstart/*.override setf upstart +au BufNewFile,BufRead */etc/init/*.conf,*/etc/init/*.override setf upstart +au BufNewFile,BufRead */.init/*.conf,*/.init/*.override setf upstart +au BufNewFile,BufRead */.config/upstart/*.conf setf upstart +au BufNewFile,BufRead */.config/upstart/*.override setf upstart + +" Vera +au BufNewFile,BufRead *.vr,*.vri,*.vrh setf vera + +" Verilog HDL +au BufNewFile,BufRead *.v setf verilog + +" Verilog-AMS HDL +au BufNewFile,BufRead *.va,*.vams setf verilogams + +" SystemVerilog +au BufNewFile,BufRead *.sv,*.svh setf systemverilog + +" VHDL +au BufNewFile,BufRead *.hdl,*.vhd,*.vhdl,*.vbe,*.vst,*.vho setf vhdl + +" Vim script +au BufNewFile,BufRead *.vim,*.vba,.exrc,_exrc setf vim + +" Viminfo file +au BufNewFile,BufRead .viminfo,_viminfo setf viminfo + +" Virata Config Script File or Drupal module +au BufRead,BufNewFile *.hw,*.module,*.pkg + \ if getline(1) =~ '<?php' | + \ setf php | + \ else | + \ setf virata | + \ endif + +" Visual Basic (also uses *.bas) or FORM +au BufNewFile,BufRead *.frm call dist#ft#FTVB("form") + +" SaxBasic is close to Visual Basic +au BufNewFile,BufRead *.sba setf vb + +" Vgrindefs file +au BufNewFile,BufRead vgrindefs setf vgrindefs + +" VRML V1.0c +au BufNewFile,BufRead *.wrl setf vrml + +" Vroom (vim testing and executable documentation) +au BufNewFile,BufRead *.vroom setf vroom + +" Vue.js Single File Component +au BufNewFile,BufRead *.vue setf vue + +" WebAssembly +au BufNewFile,BufRead *.wast,*.wat setf wast + +" Webmacro +au BufNewFile,BufRead *.wm setf webmacro + +" Wget config +au BufNewFile,BufRead .wgetrc,wgetrc setf wget + +" Website MetaLanguage +au BufNewFile,BufRead *.wml setf wml + +" Winbatch +au BufNewFile,BufRead *.wbt setf winbatch + +" WSML +au BufNewFile,BufRead *.wsml setf wsml + +" WPL +au BufNewFile,BufRead *.wpl setf xml + +" WvDial +au BufNewFile,BufRead wvdial.conf,.wvdialrc setf wvdial + +" CVS RC file +au BufNewFile,BufRead .cvsrc setf cvsrc + +" CVS commit file +au BufNewFile,BufRead cvs\d\+ setf cvs + +" WEB (*.web is also used for Winbatch: Guess, based on expecting "%" comment +" lines in a WEB file). +au BufNewFile,BufRead *.web + \ if getline(1)[0].getline(2)[0].getline(3)[0].getline(4)[0].getline(5)[0] =~ "%" | + \ setf web | + \ else | + \ setf winbatch | + \ endif + +" Windows Scripting Host and Windows Script Component +au BufNewFile,BufRead *.ws[fc] setf wsh + +" XHTML +au BufNewFile,BufRead *.xhtml,*.xht setf xhtml + +" X Pixmap (dynamically sets colors, use BufEnter to make it work better) +au BufEnter *.xpm + \ if getline(1) =~ "XPM2" | + \ setf xpm2 | + \ else | + \ setf xpm | + \ endif +au BufEnter *.xpm2 setf xpm2 + +" XFree86 config +au BufNewFile,BufRead XF86Config + \ if getline(1) =~ '\<XConfigurator\>' | + \ let b:xf86conf_xfree86_version = 3 | + \ endif | + \ setf xf86conf +au BufNewFile,BufRead */xorg.conf.d/*.conf + \ let b:xf86conf_xfree86_version = 4 | + \ setf xf86conf + +" Xorg config +au BufNewFile,BufRead xorg.conf,xorg.conf-4 let b:xf86conf_xfree86_version = 4 | setf xf86conf + +" Xinetd conf +au BufNewFile,BufRead */etc/xinetd.conf setf xinetd + +" XS Perl extension interface language +au BufNewFile,BufRead *.xs setf xs + +" X resources file +au BufNewFile,BufRead .Xdefaults,.Xpdefaults,.Xresources,xdm-config,*.ad setf xdefaults + +" Xmath +au BufNewFile,BufRead *.msc,*.msf setf xmath +au BufNewFile,BufRead *.ms + \ if !dist#ft#FTnroff() | setf xmath | endif + +" XML specific variants: docbk and xbl +au BufNewFile,BufRead *.xml call dist#ft#FTxml() + +" XMI (holding UML models) is also XML +au BufNewFile,BufRead *.xmi setf xml + +" CSPROJ files are Visual Studio.NET's XML-based project config files +au BufNewFile,BufRead *.csproj,*.csproj.user setf xml + +" Qt Linguist translation source and Qt User Interface Files are XML +" However, for .ts Typescript is more common. +au BufNewFile,BufRead *.ui setf xml + +" TPM's are RDF-based descriptions of TeX packages (Nikolai Weibull) +au BufNewFile,BufRead *.tpm setf xml + +" Xdg menus +au BufNewFile,BufRead */etc/xdg/menus/*.menu setf xml + +" ATI graphics driver configuration +au BufNewFile,BufRead fglrxrc setf xml + +" Web Services Description Language (WSDL) +au BufNewFile,BufRead *.wsdl setf xml + +" XLIFF (XML Localisation Interchange File Format) is also XML +au BufNewFile,BufRead *.xlf setf xml +au BufNewFile,BufRead *.xliff setf xml + +" XML User Interface Language +au BufNewFile,BufRead *.xul setf xml + +" X11 xmodmap (also see below) +au BufNewFile,BufRead *Xmodmap setf xmodmap + +" Xquery +au BufNewFile,BufRead *.xq,*.xql,*.xqm,*.xquery,*.xqy setf xquery + +" XSD +au BufNewFile,BufRead *.xsd setf xsd + +" Xslt +au BufNewFile,BufRead *.xsl,*.xslt setf xslt + +" Yacc +au BufNewFile,BufRead *.yy,*.yxx,*.y++ setf yacc + +" Yacc or racc +au BufNewFile,BufRead *.y call dist#ft#FTy() + +" Yaml +au BufNewFile,BufRead *.yaml,*.yml setf yaml + +" Raml +au BufNewFile,BufRead *.raml setf raml + +" yum conf (close enough to dosini) +au BufNewFile,BufRead */etc/yum.conf setf dosini + +" Zimbu +au BufNewFile,BufRead *.zu setf zimbu +" Zimbu Templates +au BufNewFile,BufRead *.zut setf zimbutempl + +" Zope +" dtml (zope dynamic template markup language), pt (zope page template), +" cpt (zope form controller page template) +au BufNewFile,BufRead *.dtml,*.pt,*.cpt call dist#ft#FThtml() +" zsql (zope sql method) +au BufNewFile,BufRead *.zsql call dist#ft#SQL() + +" Z80 assembler asz80 +au BufNewFile,BufRead *.z8a setf z8a + +augroup END + + +" Source the user-specified filetype file, for backwards compatibility with +" Vim 5.x. +if exists("myfiletypefile") && filereadable(expand(myfiletypefile)) + execute "source " . myfiletypefile +endif + + +" Check for "*" after loading myfiletypefile, so that scripts.vim is only used +" when there are no matching file name extensions. +" Don't do this for compressed files. +augroup filetypedetect +au BufNewFile,BufRead * + \ if !did_filetype() && expand("<amatch>") !~ g:ft_ignore_pat + \ | runtime! scripts.vim | endif +au StdinReadPost * if !did_filetype() | runtime! scripts.vim | endif + + +" Extra checks for when no filetype has been detected now. Mostly used for +" patterns that end in "*". E.g., "zsh*" matches "zsh.vim", but that's a Vim +" script file. +" Most of these should call s:StarSetf() to avoid names ending in .gz and the +" like are used. + +" More Apache style config files +au BufNewFile,BufRead */etc/proftpd/*.conf*,*/etc/proftpd/conf.*/* call s:StarSetf('apachestyle') +au BufNewFile,BufRead proftpd.conf* call s:StarSetf('apachestyle') + +" More Apache config files +au BufNewFile,BufRead access.conf*,apache.conf*,apache2.conf*,httpd.conf*,srm.conf* call s:StarSetf('apache') +au BufNewFile,BufRead */etc/apache2/*.conf*,*/etc/apache2/conf.*/*,*/etc/apache2/mods-*/*,*/etc/apache2/sites-*/*,*/etc/httpd/conf.d/*.conf* call s:StarSetf('apache') + +" Asterisk config file +au BufNewFile,BufRead *asterisk/*.conf* call s:StarSetf('asterisk') +au BufNewFile,BufRead *asterisk*/*voicemail.conf* call s:StarSetf('asteriskvm') + +" Bazaar version control +au BufNewFile,BufRead bzr_log.* setf bzr + +" Bazel build file +if !has("fname_case") + au BufNewFile,BufRead *.BUILD,BUILD setf bzl +endif + +" BIND zone +au BufNewFile,BufRead */named/db.*,*/bind/db.* call s:StarSetf('bindzone') + +" Calendar +au BufNewFile,BufRead */.calendar/*, + \*/share/calendar/*/calendar.*,*/share/calendar/calendar.* + \ call s:StarSetf('calendar') + +" Changelog +au BufNewFile,BufRead [cC]hange[lL]og* + \ if getline(1) =~ '; urgency=' + \| call s:StarSetf('debchangelog') + \|else + \| call s:StarSetf('changelog') + \|endif + +" Crontab +au BufNewFile,BufRead crontab,crontab.*,*/etc/cron.d/* call s:StarSetf('crontab') + +" dnsmasq(8) configuration +au BufNewFile,BufRead */etc/dnsmasq.d/* call s:StarSetf('dnsmasq') + +" Dracula +au BufNewFile,BufRead drac.* call s:StarSetf('dracula') + +" Fvwm +au BufNewFile,BufRead */.fvwm/* call s:StarSetf('fvwm') +au BufNewFile,BufRead *fvwmrc*,*fvwm95*.hook + \ let b:fvwm_version = 1 | call s:StarSetf('fvwm') +au BufNewFile,BufRead *fvwm2rc* + \ if expand("<afile>:e") == "m4" + \| call s:StarSetf('fvwm2m4') + \|else + \| let b:fvwm_version = 2 | call s:StarSetf('fvwm') + \|endif + +" Gedcom +au BufNewFile,BufRead */tmp/lltmp* call s:StarSetf('gedcom') + +" Git +au BufNewFile,BufRead */.gitconfig.d/*,/etc/gitconfig.d/* call s:StarSetf('gitconfig') + +" Gitolite +au BufNewFile,BufRead */gitolite-admin/conf/* call s:StarSetf('gitolite') + +" GTK RC +au BufNewFile,BufRead .gtkrc*,gtkrc* call s:StarSetf('gtkrc') + +" Jam +au BufNewFile,BufRead Prl*.*,JAM*.* call s:StarSetf('jam') + +" Jargon +au! BufNewFile,BufRead *jarg* + \ if getline(1).getline(2).getline(3).getline(4).getline(5) =~? 'THIS IS THE JARGON FILE' + \| call s:StarSetf('jargon') + \|endif + +" Java Properties resource file (note: doesn't catch font.properties.pl) +au BufNewFile,BufRead *.properties_??_??_* call s:StarSetf('jproperties') + +" Kconfig +au BufNewFile,BufRead Kconfig.* call s:StarSetf('kconfig') + +" Lilo: Linux loader +au BufNewFile,BufRead lilo.conf* call s:StarSetf('lilo') + +" Logcheck +au BufNewFile,BufRead */etc/logcheck/*.d*/* call s:StarSetf('logcheck') + +" Makefile +au BufNewFile,BufRead [mM]akefile* call s:StarSetf('make') + +" Ruby Makefile +au BufNewFile,BufRead [rR]akefile* call s:StarSetf('ruby') + +" Mail (also matches muttrc.vim, so this is below the other checks) +au BufNewFile,BufRead {neo,}mutt[[:alnum:]._-]\\\{6\} setf mail + +au BufNewFile,BufRead reportbug-* call s:StarSetf('mail') + +" Modconf +au BufNewFile,BufRead */etc/modutils/* + \ if executable(expand("<afile>")) != 1 + \| call s:StarSetf('modconf') + \|endif +au BufNewFile,BufRead */etc/modprobe.* call s:StarSetf('modconf') + +" Mutt setup file +au BufNewFile,BufRead .mutt{ng,}rc*,*/.mutt{ng,}/mutt{ng,}rc* call s:StarSetf('muttrc') +au BufNewFile,BufRead mutt{ng,}rc*,Mutt{ng,}rc* call s:StarSetf('muttrc') + +" Neomutt setup file +au BufNewFile,BufRead .neomuttrc*,*/.neomutt/neomuttrc* call s:StarSetf('neomuttrc') +au BufNewFile,BufRead neomuttrc*,Neomuttrc* call s:StarSetf('neomuttrc') + +" Nroff macros +au BufNewFile,BufRead tmac.* call s:StarSetf('nroff') + +" OpenBSD hostname.if +au BufNewFile,BufRead /etc/hostname.* call s:StarSetf('config') + +" Pam conf +au BufNewFile,BufRead */etc/pam.d/* call s:StarSetf('pamconf') + +" Printcap and Termcap +au BufNewFile,BufRead *printcap* + \ if !did_filetype() + \| let b:ptcap_type = "print" | call s:StarSetf('ptcap') + \|endif +au BufNewFile,BufRead *termcap* + \ if !did_filetype() + \| let b:ptcap_type = "term" | call s:StarSetf('ptcap') + \|endif + +" ReDIF +" Only used when the .rdf file was not detected to be XML. +au BufRead,BufNewFile *.rdf call dist#ft#Redif() + +" Remind +au BufNewFile,BufRead .reminders* call s:StarSetf('remind') + +" SGML catalog file +au BufNewFile,BufRead sgml.catalog* call s:StarSetf('catalog') + +" Shell scripts ending in a star +au BufNewFile,BufRead .bashrc*,.bash[_-]profile*,.bash[_-]logout*,.bash[_-]aliases*,bash-fc[-.]*,,PKGBUILD* call dist#ft#SetFileTypeSH("bash") +au BufNewFile,BufRead .kshrc* call dist#ft#SetFileTypeSH("ksh") +au BufNewFile,BufRead .profile* call dist#ft#SetFileTypeSH(getline(1)) + +" tcsh scripts ending in a star +au BufNewFile,BufRead .tcshrc* call dist#ft#SetFileTypeShell("tcsh") + +" csh scripts ending in a star +au BufNewFile,BufRead .login*,.cshrc* call dist#ft#CSH() + +" VHDL +au BufNewFile,BufRead *.vhdl_[0-9]* call s:StarSetf('vhdl') + +" Vim script +au BufNewFile,BufRead *vimrc* call s:StarSetf('vim') + +" Subversion commit file +au BufNewFile,BufRead svn-commit*.tmp setf svn + +" X resources file +au BufNewFile,BufRead Xresources*,*/app-defaults/*,*/Xresources/* call s:StarSetf('xdefaults') + +" XFree86 config +au BufNewFile,BufRead XF86Config-4* + \ let b:xf86conf_xfree86_version = 4 | call s:StarSetf('xf86conf') +au BufNewFile,BufRead XF86Config* + \ if getline(1) =~ '\<XConfigurator\>' + \| let b:xf86conf_xfree86_version = 3 + \|endif + \|call s:StarSetf('xf86conf') + +" X11 xmodmap +au BufNewFile,BufRead *xmodmap* call s:StarSetf('xmodmap') + +" Xinetd conf +au BufNewFile,BufRead */etc/xinetd.d/* call s:StarSetf('xinetd') + +" yum conf (close enough to dosini) +au BufNewFile,BufRead */etc/yum.repos.d/* call s:StarSetf('dosini') + +" Z-Shell script ending in a star +au BufNewFile,BufRead .zsh*,.zlog*,.zcompdump* call s:StarSetf('zsh') +au BufNewFile,BufRead zsh*,zlog* call s:StarSetf('zsh') + + +" Plain text files, needs to be far down to not override others. This avoids +" the "conf" type being used if there is a line starting with '#'. +au BufNewFile,BufRead *.text,README setf text + +" Help files match *.txt but should have a last line that is a modeline. +au BufNewFile,BufRead *.txt + \ if getline('$') !~ 'vim:.*ft=help' + \| setf text + \| endif + +" NOTE: The above command could have ended the filetypedetect autocmd group +" and started another one. Let's make sure it has ended to get to a consistent +" state. +augroup END + +" Generic configuration file. Use FALLBACK, it's just guessing! +au filetypedetect BufNewFile,BufRead,StdinReadPost * + \ if !did_filetype() && expand("<amatch>") !~ g:ft_ignore_pat + \ && (getline(1) =~ '^#' || getline(2) =~ '^#' || getline(3) =~ '^#' + \ || getline(4) =~ '^#' || getline(5) =~ '^#') | + \ setf FALLBACK conf | + \ endif + +" Restore 'cpoptions' +let &cpo = s:cpo_save +unlet s:cpo_save |