" 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

" Switch to compatible mode for the time being
let s:cpo_save = &cpo
set cpo&vim

let did_load_polyglot = 1

let g:polyglot_initialized = 0

func! polyglot#init#init()
  " A no-op as sourcing this file is enough
endfunc

func! polyglot#init#is_disabled(caller, name, path)
  if !g:polyglot_initialized
    if a:path[0:7] == "autoload"
      let g:polyglot_initialized = 1

      for p in globpath(&rtp, a:path, 0, 1)
        if p != a:caller
          exe "source " . p
        endif
      endfor
    endif
  endif

  return has_key(g:polyglot_is_disabled, a:name)
endfunc

let g:polyglot_is_disabled = {}
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 g:polyglot_is_disabled[pkg] = 1
      call add(s:new_polyglot_disabled, base[0])
    endif
  endfor
else
  let g:polyglot_disabled_not_set = 1
endif

func! PolyglotVerify()
  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
endfun

au VimEnter * call PolyglotVerify()

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')

" Enable jsdoc highlighting by default
call s:SetDefault('g:javascript_plugin_jsdoc', 1)

" Make csv loading faster
call s:SetDefault('g:csv_start', 1)
call s:SetDefault('g:csv_end', 2)
call s:SetDefault('g:csv_default_delim', ',')

" 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

" Some variables are needed for haxe loading

" 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 polyglot-observer | augroup END

if exists('s:cpo_save')
  " Restore 'cpoptions'
  let &cpo = s:cpo_save
  unlet s:cpo_save
endif

" Load user-defined filetype.vim and oter plugins ftdetect first
" This is to use polyglot-defined ftdetect always as fallback to user settings
augroup filetypedetect
  runtime! filetype.vim
  runtime! ftdetect/*.vim
augroup END


augroup filetypedetect

" Switch to compatible mode for the time being
let s:cpo_save = &cpo
set cpo&vim

if !has_key(g:polyglot_is_disabled, 'ftdetect')

" 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


" DO NOT EDIT CODE BELOW, IT IS GENERATED WITH MAKEFILE

if !has_key(g:polyglot_is_disabled, 'bicep')
  au BufNewFile,BufRead *.bicep setf bicep
endif

if !has_key(g:polyglot_is_disabled, 'org')
  au BufNewFile,BufRead *.org setf org
endif

if !has_key(g:polyglot_is_disabled, 'mermaid')
  au BufNewFile,BufRead *.mermaid,*.mm,*.mmd setf mermaid
endif

if !has_key(g:polyglot_is_disabled, 'openscad')
  au BufNewFile,BufRead *.scad setf openscad
endif

if !has_key(g:polyglot_is_disabled, 'nftables')
  au BufNewFile,BufRead *.nft,*/nftables.conf setf nftables
endif

if !has_key(g:polyglot_is_disabled, 'just')
  au BufNewFile,BufRead *.just,justfile setf just
endif

if !has_key(g:polyglot_is_disabled, 'sway')
  au BufNewFile,BufRead *.sway.config,*.swayconfig,*sway/config,swayconfig setf swayconfig
endif

if !has_key(g:polyglot_is_disabled, 'hjson')
  au BufNewFile,BufRead *.hjson setf hjson
endif

if !has_key(g:polyglot_is_disabled, 'gleam')
  au BufNewFile,BufRead *.gleam setf gleam
endif

if !has_key(g:polyglot_is_disabled, 'jsonc')
  au BufNewFile,BufRead *.cjson,*.jsonc,{.,}babelrc,{.,}eslintrc.json,{.,}jshintrc,{.,}jslintrc,{.,}mocharc.json,coc-settings.json,coffeelint.json,jsconfig.json,tsconfig.json setf jsonc
endif

if !has_key(g:polyglot_is_disabled, 'mint')
  au BufNewFile,BufRead *.mint setf mint
endif

if !has_key(g:polyglot_is_disabled, 'context')
  au BufNewFile,BufRead *.mkii,*.mkiv,*.mkvi setf context
endif

if !has_key(g:polyglot_is_disabled, 'xpm2')
  au BufNewFile,BufRead *.xpm2 setf xpm2
endif

if !has_key(g:polyglot_is_disabled, 'xpm')
  au! BufNewFile,BufRead,BufWritePost *.pm call polyglot#detect#Pm()
  au BufNewFile,BufRead *.xpm setf xpm
endif

if !has_key(g:polyglot_is_disabled, 'xf86conf')
  au BufNewFile,BufRead */xorg.conf.d/*.conf,xorg.conf,xorg.conf-4 setf xf86conf
  au BufNewFile,BufRead XF86Config-4* call s:StarSetf('xf86conf')
  au BufNewFile,BufRead XF86Config* call s:StarSetf('xf86conf')
endif

if !has_key(g:polyglot_is_disabled, 'text')
  au BufNewFile,BufRead *.text,README setf text
endif

if !has_key(g:polyglot_is_disabled, 'svn')
  au BufNewFile,BufRead svn-commit*.tmp setf svn
endif

if !has_key(g:polyglot_is_disabled, 'logcheck')
  au BufNewFile,BufRead */etc/logcheck/*.d*/* call s:StarSetf('logcheck')
endif

if !has_key(g:polyglot_is_disabled, 'fvwm')
  au BufNewFile,BufRead */.fvwm/* call s:StarSetf('fvwm')
endif

if !has_key(g:polyglot_is_disabled, 'crontab')
  au BufNewFile,BufRead crontab setf crontab
  au BufNewFile,BufRead crontab.* call s:StarSetf('crontab')
  au BufNewFile,BufRead */etc/cron.d/* call s:StarSetf('crontab')
endif

if !has_key(g:polyglot_is_disabled, 'bzr')
  au BufNewFile,BufRead bzr_log.* call s:StarSetf('bzr')
endif

if !has_key(g:polyglot_is_disabled, 'asteriskvm')
  au BufNewFile,BufRead *asterisk*/*voicemail.conf* call s:StarSetf('asteriskvm')
endif

if !has_key(g:polyglot_is_disabled, 'asterisk')
  au BufNewFile,BufRead *asterisk/*.conf* call s:StarSetf('asterisk')
endif

if !has_key(g:polyglot_is_disabled, 'apachestyle')
  au BufNewFile,BufRead proftpd.conf* call s:StarSetf('apachestyle')
  au BufNewFile,BufRead */etc/proftpd/conf.*/* call s:StarSetf('apachestyle')
  au BufNewFile,BufRead */etc/proftpd/*.conf* call s:StarSetf('apachestyle')
endif

if !has_key(g:polyglot_is_disabled, 'z8a')
  au BufNewFile,BufRead *.z8a setf z8a
endif

if !has_key(g:polyglot_is_disabled, 'zimbu')
  au BufNewFile,BufRead *.zu setf zimbu
endif

if !has_key(g:polyglot_is_disabled, 'yacc')
  au BufNewFile,BufRead *.y++,*.yxx,*.yy setf yacc
endif

if !has_key(g:polyglot_is_disabled, 'xslt')
  au BufNewFile,BufRead *.xsl,*.xslt setf xslt
endif

if !has_key(g:polyglot_is_disabled, 'xsd')
  au BufNewFile,BufRead *.xsd setf xsd
endif

if !has_key(g:polyglot_is_disabled, 'xquery')
  au BufNewFile,BufRead *.xq,*.xql,*.xqm,*.xquery,*.xqy setf xquery
endif

if !has_key(g:polyglot_is_disabled, 'xmodmap')
  au BufNewFile,BufRead *Xmodmap setf xmodmap
  au BufNewFile,BufRead *xmodmap* call s:StarSetf('xmodmap')
endif

if !has_key(g:polyglot_is_disabled, 'xmath')
  au BufNewFile,BufRead *.msc,*.msf setf xmath
endif

if !has_key(g:polyglot_is_disabled, 'xdefaults')
  au BufNewFile,BufRead *.ad,{.,}Xdefaults,{.,}Xpdefaults,{.,}Xresources,xdm-config setf xdefaults
  au BufNewFile,BufRead Xresources* call s:StarSetf('xdefaults')
  au BufNewFile,BufRead */app-defaults/* call s:StarSetf('xdefaults')
  au BufNewFile,BufRead */Xresources/* call s:StarSetf('xdefaults')
endif

if !has_key(g:polyglot_is_disabled, 'xinetd')
  au BufNewFile,BufRead */etc/xinetd.conf setf xinetd
  au BufNewFile,BufRead */etc/xinetd.d/* call s:StarSetf('xinetd')
endif

if !has_key(g:polyglot_is_disabled, 'xhtml')
  au BufNewFile,BufRead *.xht,*.xhtml setf xhtml
endif

if !has_key(g:polyglot_is_disabled, 'wsh')
  au BufNewFile,BufRead *.ws[fc] setf wsh
endif

if !has_key(g:polyglot_is_disabled, 'cvs')
  au BufNewFile,BufRead cvs\d\+ setf cvs
endif

if !has_key(g:polyglot_is_disabled, 'cvsrc')
  au BufNewFile,BufRead {.,}cvsrc setf cvsrc
endif

if !has_key(g:polyglot_is_disabled, 'wvdial')
  au BufNewFile,BufRead {.,}wvdialrc,wvdial.conf setf wvdial
endif

if !has_key(g:polyglot_is_disabled, 'wsml')
  au BufNewFile,BufRead *.wsml setf wsml
endif

if !has_key(g:polyglot_is_disabled, 'winbatch')
  au BufNewFile,BufRead *.wbt setf winbatch
endif

if !has_key(g:polyglot_is_disabled, 'wml')
  au BufNewFile,BufRead *.wml setf wml
endif

if !has_key(g:polyglot_is_disabled, 'wget')
  au BufNewFile,BufRead {.,}wgetrc,wgetrc setf wget
endif

if !has_key(g:polyglot_is_disabled, 'webmacro')
  au BufNewFile,BufRead *.wm setf webmacro
endif

if !has_key(g:polyglot_is_disabled, 'wast')
  au BufNewFile,BufRead *.wast,*.wat setf wast
endif

if !has_key(g:polyglot_is_disabled, 'vroom')
  au BufNewFile,BufRead *.vroom setf vroom
endif

if !has_key(g:polyglot_is_disabled, 'vrml')
  au BufNewFile,BufRead *.wrl setf vrml
endif

if !has_key(g:polyglot_is_disabled, 'vgrindefs')
  au BufNewFile,BufRead vgrindefs setf vgrindefs
endif

if !has_key(g:polyglot_is_disabled, 'viminfo')
  au BufNewFile,BufRead {.,}viminfo,_viminfo setf viminfo
endif

if !has_key(g:polyglot_is_disabled, 'vim')
  au BufNewFile,BufRead *.vba,*.vim,{.,}exrc,_exrc setf vim
  au BufNewFile,BufRead *vimrc* call s:StarSetf('vim')
endif

if !has_key(g:polyglot_is_disabled, 'vhdl')
  au BufNewFile,BufRead *.hdl,*.vbe,*.vhd,*.vhdl,*.vho,*.vst setf vhdl
  au BufNewFile,BufRead *.vhdl_[0-9]* call s:StarSetf('vhdl')
endif

if !has_key(g:polyglot_is_disabled, 'systemverilog')
  au BufNewFile,BufRead *.sv,*.svh setf systemverilog
endif

if !has_key(g:polyglot_is_disabled, 'verilogams')
  au BufNewFile,BufRead *.va,*.vams setf verilogams
endif

if !has_key(g:polyglot_is_disabled, 'verilog')
  au BufNewFile,BufRead *.v setf verilog
endif

if !has_key(g:polyglot_is_disabled, 'vera')
  au BufNewFile,BufRead *.vr,*.vrh,*.vri setf vera
endif

if !has_key(g:polyglot_is_disabled, 'upstart')
  au BufNewFile,BufRead */.config/upstart/*.conf,*/.config/upstart/*.override,*/.init/*.conf,*/.init/*.override,*/etc/init/*.conf,*/etc/init/*.override,*/usr/share/upstart/*.conf,*/usr/share/upstart/*.override setf upstart
endif

if !has_key(g:polyglot_is_disabled, 'updatedb')
  au BufNewFile,BufRead */etc/updatedb.conf setf updatedb
endif

if !has_key(g:polyglot_is_disabled, 'uc')
  au BufNewFile,BufRead *.uc setf uc
endif

if !has_key(g:polyglot_is_disabled, 'udevperm')
  au BufNewFile,BufRead */etc/udev/permissions.d/*.permissions setf udevperm
endif

if !has_key(g:polyglot_is_disabled, 'udevconf')
  au BufNewFile,BufRead */etc/udev/udev.conf setf udevconf
endif

if !has_key(g:polyglot_is_disabled, 'uil')
  au BufNewFile,BufRead *.uil,*.uit setf uil
endif

if !has_key(g:polyglot_is_disabled, 'tsscl')
  au BufNewFile,BufRead *.tsscl setf tsscl
endif

if !has_key(g:polyglot_is_disabled, 'tssop')
  au BufNewFile,BufRead *.tssop setf tssop
endif

if !has_key(g:polyglot_is_disabled, 'tssgm')
  au BufNewFile,BufRead *.tssgm setf tssgm
endif

if !has_key(g:polyglot_is_disabled, 'trustees')
  au BufNewFile,BufRead trustees.conf setf trustees
endif

if !has_key(g:polyglot_is_disabled, 'treetop')
  au BufNewFile,BufRead *.treetop setf treetop
endif

if !has_key(g:polyglot_is_disabled, 'tpp')
  au BufNewFile,BufRead *.tpp setf tpp
endif

if !has_key(g:polyglot_is_disabled, 'tidy')
  au BufNewFile,BufRead {.,}tidyrc,tidy.conf,tidyrc setf tidy
endif

if !has_key(g:polyglot_is_disabled, 'texmf')
  au BufNewFile,BufRead texmf.cnf setf texmf
endif

if !has_key(g:polyglot_is_disabled, 'texinfo')
  au BufNewFile,BufRead *.texi,*.texinfo,*.txi setf texinfo
endif

if !has_key(g:polyglot_is_disabled, 'tex')
  au BufNewFile,BufRead *.bbl,*.dtx,*.latex,*.ltx,*.sty setf tex
endif

if !has_key(g:polyglot_is_disabled, 'terminfo')
  au BufNewFile,BufRead *.ti setf terminfo
endif

if !has_key(g:polyglot_is_disabled, 'teraterm')
  au BufNewFile,BufRead *.ttl setf teraterm
endif

if !has_key(g:polyglot_is_disabled, 'tsalt')
  au BufNewFile,BufRead *.slt setf tsalt
endif

if !has_key(g:polyglot_is_disabled, 'tli')
  au BufNewFile,BufRead *.tli setf tli
endif

if !has_key(g:polyglot_is_disabled, 'tcl')
  au BufNewFile,BufRead *.itcl,*.itk,*.jacl,*.tcl,*.tk setf tcl
endif

if !has_key(g:polyglot_is_disabled, 'taskedit')
  au BufNewFile,BufRead *.task setf taskedit
endif

if !has_key(g:polyglot_is_disabled, 'taskdata')
  au BufNewFile,BufRead {pending,completed,undo}.data setf taskdata
endif

if !has_key(g:polyglot_is_disabled, 'tak')
  au BufNewFile,BufRead *.tak setf tak
endif

if !has_key(g:polyglot_is_disabled, 'tags')
  au BufNewFile,BufRead tags setf tags
endif

if !has_key(g:polyglot_is_disabled, 'sudoers')
  au BufNewFile,BufRead */etc/sudoers,sudoers.tmp setf sudoers
endif

if !has_key(g:polyglot_is_disabled, 'sdc')
  au BufNewFile,BufRead *.sdc setf sdc
endif

if !has_key(g:polyglot_is_disabled, 'sysctl')
  au BufNewFile,BufRead */etc/sysctl.conf,*/etc/sysctl.d/*.conf setf sysctl
endif

if !has_key(g:polyglot_is_disabled, 'sil')
  au BufNewFile,BufRead *.sil setf sil
endif

if !has_key(g:polyglot_is_disabled, 'swiftgyb')
  au BufNewFile,BufRead *.swift.gyb setf swiftgyb
endif

if !has_key(g:polyglot_is_disabled, 'voscm')
  au BufNewFile,BufRead *.cm setf voscm
endif

if !has_key(g:polyglot_is_disabled, 'sml')
  au BufNewFile,BufRead *.sml setf sml
endif

if !has_key(g:polyglot_is_disabled, 'stp')
  au BufNewFile,BufRead *.stp setf stp
endif

if !has_key(g:polyglot_is_disabled, 'smcl')
  au BufNewFile,BufRead *.hlp,*.ihlp,*.smcl setf smcl
endif

if !has_key(g:polyglot_is_disabled, 'stata')
  au BufNewFile,BufRead *.ado,*.do,*.imata,*.mata setf stata
endif

if !has_key(g:polyglot_is_disabled, 'sshdconfig')
  au BufNewFile,BufRead */etc/ssh/sshd_config.d/*.conf,sshd_config setf sshdconfig
endif

if !has_key(g:polyglot_is_disabled, 'sshconfig')
  au BufNewFile,BufRead */.ssh/config,*/etc/ssh/ssh_config.d/*.conf,ssh_config setf sshconfig
endif

if !has_key(g:polyglot_is_disabled, 'sqr')
  au BufNewFile,BufRead *.sqi,*.sqr setf sqr
endif

if !has_key(g:polyglot_is_disabled, 'sqlj')
  au BufNewFile,BufRead *.sqlj setf sqlj
endif

if !has_key(g:polyglot_is_disabled, 'squid')
  au BufNewFile,BufRead squid.conf setf squid
endif

if !has_key(g:polyglot_is_disabled, 'spice')
  au BufNewFile,BufRead *.sp,*.spice setf spice
endif

if !has_key(g:polyglot_is_disabled, 'slice')
  au BufNewFile,BufRead *.ice setf slice
endif

if !has_key(g:polyglot_is_disabled, 'spup')
  au BufNewFile,BufRead *.spd,*.spdata,*.speedup setf spup
endif

if !has_key(g:polyglot_is_disabled, 'hog')
  au BufNewFile,BufRead *.hog,snort.conf,vision.conf setf hog
endif

if !has_key(g:polyglot_is_disabled, 'mib')
  au BufNewFile,BufRead *.mib,*.my setf mib
endif

if !has_key(g:polyglot_is_disabled, 'snobol4')
  au BufNewFile,BufRead *.sno,*.spt setf snobol4
endif

if !has_key(g:polyglot_is_disabled, 'smith')
  au BufNewFile,BufRead *.smith,*.smt setf smith
endif

if !has_key(g:polyglot_is_disabled, 'st')
  au BufNewFile,BufRead *.st setf st
endif

if !has_key(g:polyglot_is_disabled, 'slrnsc')
  au BufNewFile,BufRead *.score setf slrnsc
endif

if !has_key(g:polyglot_is_disabled, 'slrnrc')
  au BufNewFile,BufRead {.,}slrnrc setf slrnrc
endif

if !has_key(g:polyglot_is_disabled, 'skill')
  au BufNewFile,BufRead *.cdf,*.il,*.ils setf skill
endif

if !has_key(g:polyglot_is_disabled, 'sisu')
  au BufNewFile,BufRead *.-sst,*.-sst.meta,*._sst,*._sst.meta,*.ssi,*.ssm,*.sst,*.sst.meta setf sisu
endif

if !has_key(g:polyglot_is_disabled, 'sinda')
  au BufNewFile,BufRead *.s85,*.sin setf sinda
endif

if !has_key(g:polyglot_is_disabled, 'simula')
  au BufNewFile,BufRead *.sim setf simula
endif

if !has_key(g:polyglot_is_disabled, 'screen')
  au BufNewFile,BufRead {.,}screenrc,screenrc setf screen
endif

if !has_key(g:polyglot_is_disabled, 'scheme')
  au BufNewFile,BufRead *.scm,*.ss setf scheme
endif

if !has_key(g:polyglot_is_disabled, 'catalog')
  au BufNewFile,BufRead catalog setf catalog
  au BufNewFile,BufRead sgml.catalog* call s:StarSetf('catalog')
endif

if !has_key(g:polyglot_is_disabled, 'setserial')
  au BufNewFile,BufRead */etc/serial.conf setf setserial
endif

if !has_key(g:polyglot_is_disabled, 'slpspi')
  au BufNewFile,BufRead */etc/slp.spi setf slpspi
endif

if !has_key(g:polyglot_is_disabled, 'spyce')
  au BufNewFile,BufRead *.spi,*.spy setf spyce
endif

if !has_key(g:polyglot_is_disabled, 'slpreg')
  au BufNewFile,BufRead */etc/slp.reg setf slpreg
endif

if !has_key(g:polyglot_is_disabled, 'slpconf')
  au BufNewFile,BufRead */etc/slp.conf setf slpconf
endif

if !has_key(g:polyglot_is_disabled, 'services')
  au BufNewFile,BufRead */etc/services setf services
endif

if !has_key(g:polyglot_is_disabled, 'sm')
  au BufNewFile,BufRead sendmail.cf setf sm
endif

if !has_key(g:polyglot_is_disabled, 'sieve')
  au BufNewFile,BufRead *.sieve,*.siv setf sieve
endif

if !has_key(g:polyglot_is_disabled, 'sdl')
  au BufNewFile,BufRead *.pr,*.sdl setf sdl
endif

if !has_key(g:polyglot_is_disabled, 'sd')
  au BufNewFile,BufRead *.sd setf sd
endif

if !has_key(g:polyglot_is_disabled, 'scilab')
  au BufNewFile,BufRead *.sce,*.sci setf scilab
endif

if !has_key(g:polyglot_is_disabled, 'sbt')
  au BufNewFile,BufRead *.sbt setf sbt
endif

if !has_key(g:polyglot_is_disabled, 'sather')
  au BufNewFile,BufRead *.sa setf sather
endif

if !has_key(g:polyglot_is_disabled, 'sass')
  au BufNewFile,BufRead *.sass setf sass
endif

if !has_key(g:polyglot_is_disabled, 'sas')
  au BufNewFile,BufRead *.sas setf sas
endif

if !has_key(g:polyglot_is_disabled, 'samba')
  au BufNewFile,BufRead smb.conf setf samba
endif

if !has_key(g:polyglot_is_disabled, 'slang')
  au BufNewFile,BufRead *.sl setf slang
endif

if !has_key(g:polyglot_is_disabled, 'rtf')
  au BufNewFile,BufRead *.rtf setf rtf
endif

if !has_key(g:polyglot_is_disabled, 'rpcgen')
  au BufNewFile,BufRead *.x setf rpcgen
endif

if !has_key(g:polyglot_is_disabled, 'robots')
  au BufNewFile,BufRead robots.txt setf robots
endif

if !has_key(g:polyglot_is_disabled, 'rpl')
  au BufNewFile,BufRead *.rpl setf rpl
endif

if !has_key(g:polyglot_is_disabled, 'rng')
  au BufNewFile,BufRead *.rng setf rng
endif

if !has_key(g:polyglot_is_disabled, 'rnc')
  au BufNewFile,BufRead *.rnc setf rnc
endif

if !has_key(g:polyglot_is_disabled, 'resolv')
  au BufNewFile,BufRead resolv.conf setf resolv
endif

if !has_key(g:polyglot_is_disabled, 'remind')
  au BufNewFile,BufRead *.rem,*.remind,{.,}reminders setf remind
  au BufNewFile,BufRead .reminders* call s:StarSetf('remind')
endif

if !has_key(g:polyglot_is_disabled, 'rrst')
  au BufNewFile,BufRead *.rrst,*.srst setf rrst
endif

if !has_key(g:polyglot_is_disabled, 'rmd')
  au BufNewFile,BufRead *.rmd,*.smd setf rmd
endif

if !has_key(g:polyglot_is_disabled, 'rnoweb')
  au BufNewFile,BufRead *.rnw,*.snw setf rnoweb
endif

if !has_key(g:polyglot_is_disabled, 'rexx')
  au BufNewFile,BufRead *.jrexx,*.orx,*.rex,*.rexx,*.rexxj,*.rxj,*.rxo,*.testGroup,*.testUnit setf rexx
endif

if !has_key(g:polyglot_is_disabled, 'rego')
  au BufNewFile,BufRead *.rego setf rego
endif

if !has_key(g:polyglot_is_disabled, 'rib')
  au BufNewFile,BufRead *.rib setf rib
endif

if !has_key(g:polyglot_is_disabled, 'readline')
  au BufNewFile,BufRead {.,}inputrc,inputrc setf readline
endif

if !has_key(g:polyglot_is_disabled, 'rcs')
  au BufNewFile,BufRead *\,v setf rcs
endif

if !has_key(g:polyglot_is_disabled, 'ratpoison')
  au BufNewFile,BufRead {.,}ratpoisonrc,ratpoisonrc setf ratpoison
endif

if !has_key(g:polyglot_is_disabled, 'radiance')
  au BufNewFile,BufRead *.mat,*.rad setf radiance
endif

if !has_key(g:polyglot_is_disabled, 'pyrex')
  au BufNewFile,BufRead *.pxd,*.pyx setf pyrex
endif

if !has_key(g:polyglot_is_disabled, 'protocols')
  au BufNewFile,BufRead */etc/protocols setf protocols
endif

if !has_key(g:polyglot_is_disabled, 'promela')
  au BufNewFile,BufRead *.pml setf promela
endif

if !has_key(g:polyglot_is_disabled, 'psf')
  au BufNewFile,BufRead *.psf setf psf
endif

if !has_key(g:polyglot_is_disabled, 'procmail')
  au BufNewFile,BufRead {.,}procmail,{.,}procmailrc setf procmail
endif

if !has_key(g:polyglot_is_disabled, 'privoxy')
  au BufNewFile,BufRead *.action setf privoxy
endif

if !has_key(g:polyglot_is_disabled, 'obj')
  au BufNewFile,BufRead *.obj setf obj
endif

if !has_key(g:polyglot_is_disabled, 'ppwiz')
  au BufNewFile,BufRead *.ih,*.it setf ppwiz
endif

if !has_key(g:polyglot_is_disabled, 'pccts')
  au BufNewFile,BufRead *.g setf pccts
endif

if !has_key(g:polyglot_is_disabled, 'povini')
  au BufNewFile,BufRead {.,}povrayrc setf povini
endif

if !has_key(g:polyglot_is_disabled, 'pov')
  au BufNewFile,BufRead *.pov setf pov
endif

if !has_key(g:polyglot_is_disabled, 'ppd')
  au BufNewFile,BufRead *.ppd setf ppd
endif

if !has_key(g:polyglot_is_disabled, 'postscr')
  au BufNewFile,BufRead *.afm,*.ai,*.eps,*.epsf,*.epsi,*.pfa,*.ps setf postscr
endif

if !has_key(g:polyglot_is_disabled, 'pfmain')
  au BufNewFile,BufRead main.cf setf pfmain
endif

if !has_key(g:polyglot_is_disabled, 'po')
  au BufNewFile,BufRead *.po,*.pot setf po
endif

if !has_key(g:polyglot_is_disabled, 'plp')
  au BufNewFile,BufRead *.plp setf plp
endif

if !has_key(g:polyglot_is_disabled, 'plsql')
  au BufNewFile,BufRead *.pls,*.plsql setf plsql
endif

if !has_key(g:polyglot_is_disabled, 'plm')
  au BufNewFile,BufRead *.p36,*.pac,*.plm setf plm
endif

if !has_key(g:polyglot_is_disabled, 'pli')
  au BufNewFile,BufRead *.pl1,*.pli setf pli
endif

if !has_key(g:polyglot_is_disabled, 'pine')
  au BufNewFile,BufRead {.,}pinerc,{.,}pinercex,pinerc,pinercex setf pine
endif

if !has_key(g:polyglot_is_disabled, 'pilrc')
  au BufNewFile,BufRead *.rcp setf pilrc
endif

if !has_key(g:polyglot_is_disabled, 'pinfo')
  au BufNewFile,BufRead */.pinforc,*/etc/pinforc setf pinfo
endif

if !has_key(g:polyglot_is_disabled, 'cmod')
  au BufNewFile,BufRead *.cmod setf cmod
endif

if !has_key(g:polyglot_is_disabled, 'pike')
  au BufNewFile,BufRead *.pike,*.pmod setf pike
endif

if !has_key(g:polyglot_is_disabled, 'pdf')
  au BufNewFile,BufRead *.pdf setf pdf
endif

if !has_key(g:polyglot_is_disabled, 'pascal')
  au BufNewFile,BufRead *.dpr,*.lpr,*.pas,*.pp setf pascal
endif

if !has_key(g:polyglot_is_disabled, 'passwd')
  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
endif

if !has_key(g:polyglot_is_disabled, 'papp')
  au BufNewFile,BufRead *.papp,*.pxml,*.pxsl setf papp
endif

if !has_key(g:polyglot_is_disabled, 'pamenv')
  au BufNewFile,BufRead {.,}pam_environment,pam_env.conf setf pamenv
endif

if !has_key(g:polyglot_is_disabled, 'pamconf')
  au BufNewFile,BufRead */etc/pam.conf setf pamconf
  au BufNewFile,BufRead */etc/pam.d/* call s:StarSetf('pamconf')
endif

if !has_key(g:polyglot_is_disabled, 'pf')
  au BufNewFile,BufRead pf.conf setf pf
endif

if !has_key(g:polyglot_is_disabled, 'ora')
  au BufNewFile,BufRead *.ora setf ora
endif

if !has_key(g:polyglot_is_disabled, 'opl')
  au BufNewFile,BufRead *.[Oo][Pp][Ll] setf opl
endif

if !has_key(g:polyglot_is_disabled, 'openroad')
  au BufNewFile,BufRead *.or setf openroad
endif

if !has_key(g:polyglot_is_disabled, 'omnimark')
  au BufNewFile,BufRead *.xin,*.xom setf omnimark
endif

if !has_key(g:polyglot_is_disabled, 'occam')
  au BufNewFile,BufRead *.occ setf occam
endif

if !has_key(g:polyglot_is_disabled, 'nsis')
  au BufNewFile,BufRead *.nsh,*.nsi setf nsis
endif

if !has_key(g:polyglot_is_disabled, 'nqc')
  au BufNewFile,BufRead *.nqc setf nqc
endif

if !has_key(g:polyglot_is_disabled, 'nroff')
  au BufNewFile,BufRead *.1,*.1in,*.1m,*.1x,*.2,*.3,*.3in,*.3m,*.3p,*.3pm,*.3qt,*.3x,*.4,*.5,*.6,*.7,*.8,*.9,*.man,*.mdoc setf nroff
  au BufNewFile,BufRead *.mom,*.nr,*.roff,*.tmac,*.tr setf nroff
  au BufNewFile,BufRead tmac.* call s:StarSetf('nroff')
endif

if !has_key(g:polyglot_is_disabled, 'ncf')
  au BufNewFile,BufRead *.ncf setf ncf
endif

if !has_key(g:polyglot_is_disabled, 'ninja')
  au BufNewFile,BufRead *.ninja setf ninja
endif

if !has_key(g:polyglot_is_disabled, 'netrc')
  au BufNewFile,BufRead {.,}netrc setf netrc
endif

if !has_key(g:polyglot_is_disabled, 'neomuttrc')
  au BufNewFile,BufRead Neomuttrc setf neomuttrc
  au BufNewFile,BufRead neomuttrc* call s:StarSetf('neomuttrc')
  au BufNewFile,BufRead Neomuttrc* call s:StarSetf('neomuttrc')
  au BufNewFile,BufRead .neomuttrc* call s:StarSetf('neomuttrc')
  au BufNewFile,BufRead */.neomutt/neomuttrc* call s:StarSetf('neomuttrc')
endif

if !has_key(g:polyglot_is_disabled, 'natural')
  au BufNewFile,BufRead *.NS[ACGLMNPS] setf natural
endif

if !has_key(g:polyglot_is_disabled, 'nanorc')
  au BufNewFile,BufRead *.nanorc,*/etc/nanorc setf nanorc
endif

if !has_key(g:polyglot_is_disabled, 'n1ql')
  au BufNewFile,BufRead *.n1ql,*.nql setf n1ql
endif

if !has_key(g:polyglot_is_disabled, 'mush')
  au BufNewFile,BufRead *.mush setf mush
endif

if !has_key(g:polyglot_is_disabled, 'mupad')
  au BufNewFile,BufRead *.mu setf mupad
endif

if !has_key(g:polyglot_is_disabled, 'muttrc')
  au BufNewFile,BufRead Mutt{ng,}rc setf muttrc
  au BufNewFile,BufRead mutt{ng,}rc* call s:StarSetf('muttrc')
  au BufNewFile,BufRead Mutt{ng,}rc* call s:StarSetf('muttrc')
  au BufNewFile,BufRead .mutt{ng,}rc* call s:StarSetf('muttrc')
  au BufNewFile,BufRead */etc/Muttrc.d/* call s:StarSetf('muttrc')
  au BufNewFile,BufRead */.mutt{ng,}/mutt{ng,}rc* call s:StarSetf('muttrc')
endif

if !has_key(g:polyglot_is_disabled, 'msql')
  au BufNewFile,BufRead *.msql setf msql
endif

if !has_key(g:polyglot_is_disabled, 'mrxvtrc')
  au BufNewFile,BufRead {.,}mrxvtrc,mrxvtrc setf mrxvtrc
endif

if !has_key(g:polyglot_is_disabled, 'srec')
  au BufNewFile,BufRead *.mot,*.s19,*.s28,*.s37,*.srec setf srec
endif

if !has_key(g:polyglot_is_disabled, 'mplayerconf')
  au BufNewFile,BufRead */.mplayer/config,mplayer.conf setf mplayerconf
endif

if !has_key(g:polyglot_is_disabled, 'modconf')
  au BufNewFile,BufRead */etc/conf.modules,*/etc/modules,*/etc/modules.conf setf modconf
  au BufNewFile,BufRead */etc/modprobe.* call s:StarSetf('modconf')
endif

if !has_key(g:polyglot_is_disabled, 'moo')
  au BufNewFile,BufRead *.moo setf moo
endif

if !has_key(g:polyglot_is_disabled, 'monk')
  au BufNewFile,BufRead *.isc,*.monk,*.ssc,*.tsc setf monk
endif

if !has_key(g:polyglot_is_disabled, 'modula3')
  au BufNewFile,BufRead *.[mi][3g] setf modula3
endif

if !has_key(g:polyglot_is_disabled, 'modula2')
  au BufNewFile,BufRead *.DEF,*.MOD,*.m2,*.mi setf modula2
endif

if !has_key(g:polyglot_is_disabled, 'mmp')
  au BufNewFile,BufRead *.mmp setf mmp
endif

if !has_key(g:polyglot_is_disabled, 'mix')
  au BufNewFile,BufRead *.mix,*.mixal setf mix
endif

if !has_key(g:polyglot_is_disabled, 'mgl')
  au BufNewFile,BufRead *.mgl setf mgl
endif

if !has_key(g:polyglot_is_disabled, 'mp')
  au BufNewFile,BufRead *.mp setf mp
endif

if !has_key(g:polyglot_is_disabled, 'mf')
  au BufNewFile,BufRead *.mf setf mf
endif

if !has_key(g:polyglot_is_disabled, 'messages')
  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
endif

if !has_key(g:polyglot_is_disabled, 'hgcommit')
  au BufNewFile,BufRead hg-editor-*.txt setf hgcommit
endif

if !has_key(g:polyglot_is_disabled, 'mel')
  au BufNewFile,BufRead *.mel setf mel
endif

if !has_key(g:polyglot_is_disabled, 'maple')
  au BufNewFile,BufRead *.mpl,*.mv,*.mws setf maple
endif

if !has_key(g:polyglot_is_disabled, 'manconf')
  au BufNewFile,BufRead */etc/man.conf,man.config setf manconf
endif

if !has_key(g:polyglot_is_disabled, 'mallard')
  au BufNewFile,BufRead *.page setf mallard
endif

if !has_key(g:polyglot_is_disabled, 'ist')
  au BufNewFile,BufRead *.ist,*.mst setf ist
endif

if !has_key(g:polyglot_is_disabled, 'mailcap')
  au BufNewFile,BufRead {.,}mailcap,mailcap setf mailcap
endif

if !has_key(g:polyglot_is_disabled, 'mailaliases')
  au BufNewFile,BufRead */etc/aliases,*/etc/mail/aliases setf mailaliases
endif

if !has_key(g:polyglot_is_disabled, 'mail')
  au BufNewFile,BufRead *.eml,{.,}article,{.,}article.\d\+,{.,}followup,{.,}letter,{.,}letter.\d\+,/tmp/SLRN[0-9A-Z.]\+,ae\d\+.txt,mutt[[:alnum:]_-]\\\{6\},mutt{ng,}-*-\w\+,neomutt-*-\w\+,neomutt[[:alnum:]_-]\\\{6\},pico.\d\+,snd.\d\+,{neo,}mutt[[:alnum:]._-]\\\{6\} setf mail
  au BufNewFile,BufRead reportbug-* call s:StarSetf('mail')
endif

if !has_key(g:polyglot_is_disabled, 'mgp')
  au BufNewFile,BufRead *.mgp setf mgp
endif

if !has_key(g:polyglot_is_disabled, 'lss')
  au BufNewFile,BufRead *.lss setf lss
endif

if !has_key(g:polyglot_is_disabled, 'lsl')
  au BufNewFile,BufRead *.lsl setf lsl
endif

if !has_key(g:polyglot_is_disabled, 'lout')
  au BufNewFile,BufRead *.lou,*.lout setf lout
endif

if !has_key(g:polyglot_is_disabled, 'lotos')
  au BufNewFile,BufRead *.lot,*.lotos setf lotos
endif

if !has_key(g:polyglot_is_disabled, 'logtalk')
  au BufNewFile,BufRead *.lgt setf logtalk
endif

if !has_key(g:polyglot_is_disabled, 'logindefs')
  au BufNewFile,BufRead */etc/login.defs setf logindefs
endif

if !has_key(g:polyglot_is_disabled, 'loginaccess')
  au BufNewFile,BufRead */etc/login.access setf loginaccess
endif

if !has_key(g:polyglot_is_disabled, 'litestep')
  au BufNewFile,BufRead */LiteStep/*/*.rc setf litestep
endif

if !has_key(g:polyglot_is_disabled, 'lite')
  au BufNewFile,BufRead *.lite,*.lt setf lite
endif

if !has_key(g:polyglot_is_disabled, 'liquid')
  au BufNewFile,BufRead *.liquid setf liquid
endif

if !has_key(g:polyglot_is_disabled, 'lisp')
  au BufNewFile,BufRead *.cl,*.el,*.lisp,*.lsp,{.,}emacs,{.,}sawfishrc,{.,}sbclrc,sbclrc setf lisp
endif

if !has_key(g:polyglot_is_disabled, 'lilo')
  au BufNewFile,BufRead lilo.conf setf lilo
  au BufNewFile,BufRead lilo.conf* call s:StarSetf('lilo')
endif

if !has_key(g:polyglot_is_disabled, 'lifelines')
  au BufNewFile,BufRead *.ll setf lifelines
endif

if !has_key(g:polyglot_is_disabled, 'lftp')
  au BufNewFile,BufRead *lftp/rc,{.,}lftprc,lftp.conf setf lftp
endif

if !has_key(g:polyglot_is_disabled, 'sensors')
  au BufNewFile,BufRead */etc/sensors.conf,*/etc/sensors3.conf setf sensors
endif

if !has_key(g:polyglot_is_disabled, 'libao')
  au BufNewFile,BufRead */.libao,*/etc/libao.conf setf libao
endif

if !has_key(g:polyglot_is_disabled, 'lex')
  au BufNewFile,BufRead *.l,*.l++,*.lex,*.lxx setf lex
endif

if !has_key(g:polyglot_is_disabled, 'ld')
  au BufNewFile,BufRead *.ld setf ld
endif

if !has_key(g:polyglot_is_disabled, 'ldif')
  au BufNewFile,BufRead *.ldif setf ldif
endif

if !has_key(g:polyglot_is_disabled, 'lprolog')
  au BufNewFile,BufRead *.sig setf lprolog
endif

if !has_key(g:polyglot_is_disabled, 'limits')
  au BufNewFile,BufRead */etc/*limits.conf,*/etc/*limits.d/*.conf,*/etc/limits setf limits
endif

if !has_key(g:polyglot_is_disabled, 'latte')
  au BufNewFile,BufRead *.latte,*.lte setf latte
endif

if !has_key(g:polyglot_is_disabled, 'lace')
  au BufNewFile,BufRead *.ACE,*.ace setf lace
endif

if !has_key(g:polyglot_is_disabled, 'kconfig')
  au BufNewFile,BufRead Kconfig,Kconfig.debug setf kconfig
  au BufNewFile,BufRead Kconfig.* call s:StarSetf('kconfig')
endif

if !has_key(g:polyglot_is_disabled, 'kscript')
  au BufNewFile,BufRead *.ks setf kscript
endif

if !has_key(g:polyglot_is_disabled, 'kivy')
  au BufNewFile,BufRead *.kv setf kivy
endif

if !has_key(g:polyglot_is_disabled, 'kwt')
  au BufNewFile,BufRead *.k setf kwt
endif

if !has_key(g:polyglot_is_disabled, 'kix')
  au BufNewFile,BufRead *.kix setf kix
endif

if !has_key(g:polyglot_is_disabled, 'jovial')
  au BufNewFile,BufRead *.j73,*.jov,*.jovial setf jovial
endif

if !has_key(g:polyglot_is_disabled, 'jgraph')
  au BufNewFile,BufRead *.jgr setf jgraph
endif

if !has_key(g:polyglot_is_disabled, 'jess')
  au BufNewFile,BufRead *.clp setf jess
endif

if !has_key(g:polyglot_is_disabled, 'jproperties')
  au BufNewFile,BufRead *.properties,*.properties_??,*.properties_??_?? setf jproperties
  au BufNewFile,BufRead *.properties_??_??_* call s:StarSetf('jproperties')
endif

if !has_key(g:polyglot_is_disabled, 'jsp')
  au BufNewFile,BufRead *.jsp setf jsp
endif

if !has_key(g:polyglot_is_disabled, 'javacc')
  au BufNewFile,BufRead *.jj,*.jjt setf javacc
endif

if !has_key(g:polyglot_is_disabled, 'java')
  au BufNewFile,BufRead *.jav,*.java setf java
endif

if !has_key(g:polyglot_is_disabled, 'jam')
  au BufNewFile,BufRead *.jpl,*.jpr setf jam
  au BufNewFile,BufRead Prl*.* call s:StarSetf('jam')
  au BufNewFile,BufRead JAM*.* call s:StarSetf('jam')
endif

if !has_key(g:polyglot_is_disabled, 'jal')
  au BufNewFile,BufRead *.JAL,*.jal setf jal
endif

if !has_key(g:polyglot_is_disabled, 'j')
  au BufNewFile,BufRead *.ijs setf j
endif

if !has_key(g:polyglot_is_disabled, 'iss')
  au BufNewFile,BufRead *.iss setf iss
endif

if !has_key(g:polyglot_is_disabled, 'inittab')
  au BufNewFile,BufRead inittab setf inittab
endif

if !has_key(g:polyglot_is_disabled, 'fgl')
  au BufNewFile,BufRead *.4gh,*.4gl,*.m4gl setf fgl
endif

if !has_key(g:polyglot_is_disabled, 'ipfilter')
  au BufNewFile,BufRead ipf.conf,ipf.rules,ipf6.conf setf ipfilter
endif

if !has_key(g:polyglot_is_disabled, 'usw2kagtlog')
  au BufNewFile,BufRead *.usw2kagt.log\c,usw2kagt.*.log\c,usw2kagt.log\c setf usw2kagtlog
endif

if !has_key(g:polyglot_is_disabled, 'usserverlog')
  au BufNewFile,BufRead *.usserver.log\c,usserver.*.log\c,usserver.log\c setf usserverlog
endif

if !has_key(g:polyglot_is_disabled, 'upstreaminstalllog')
  au BufNewFile,BufRead *.upstreaminstall.log\c,upstreaminstall.*.log\c,upstreaminstall.log\c setf upstreaminstalllog
endif

if !has_key(g:polyglot_is_disabled, 'upstreamlog')
  au BufNewFile,BufRead *.upstream.log\c,UPSTREAM-*.log\c,fdrupstream.log,upstream.*.log\c,upstream.log\c setf upstreamlog
endif

if !has_key(g:polyglot_is_disabled, 'upstreamdat')
  au BufNewFile,BufRead *.upstream.dat\c,upstream.*.dat\c,upstream.dat\c setf upstreamdat
endif

if !has_key(g:polyglot_is_disabled, 'initng')
  au BufNewFile,BufRead *.ii,*/etc/initng/*/*.i setf initng
endif

if !has_key(g:polyglot_is_disabled, 'inform')
  au BufNewFile,BufRead *.INF,*.inf setf inform
endif

if !has_key(g:polyglot_is_disabled, 'indent')
  au BufNewFile,BufRead {.,}indent.pro,indentrc setf indent
endif

if !has_key(g:polyglot_is_disabled, 'icemenu')
  au BufNewFile,BufRead */.icewm/menu setf icemenu
endif

if !has_key(g:polyglot_is_disabled, 'msidl')
  au BufNewFile,BufRead *.mof,*.odl setf msidl
endif

if !has_key(g:polyglot_is_disabled, 'icon')
  au BufNewFile,BufRead *.icn setf icon
endif

if !has_key(g:polyglot_is_disabled, 'hb')
  au BufNewFile,BufRead *.hb setf hb
endif

if !has_key(g:polyglot_is_disabled, 'hostsaccess')
  au BufNewFile,BufRead */etc/hosts.allow,*/etc/hosts.deny setf hostsaccess
endif

if !has_key(g:polyglot_is_disabled, 'hostconf')
  au BufNewFile,BufRead */etc/host.conf setf hostconf
endif

if !has_key(g:polyglot_is_disabled, 'template')
  au BufNewFile,BufRead *.tmpl setf template
endif

if !has_key(g:polyglot_is_disabled, 'htmlm4')
  au BufNewFile,BufRead *.html.m4 setf htmlm4
endif

if !has_key(g:polyglot_is_disabled, 'tilde')
  au BufNewFile,BufRead *.t.html setf tilde
endif

if !has_key(g:polyglot_is_disabled, 'hollywood')
  au BufNewFile,BufRead *.hws setf hollywood
endif

if !has_key(g:polyglot_is_disabled, 'hex')
  au BufNewFile,BufRead *.h32,*.hex setf hex
endif

if !has_key(g:polyglot_is_disabled, 'hastepreproc')
  au BufNewFile,BufRead *.htpp setf hastepreproc
endif

if !has_key(g:polyglot_is_disabled, 'haste')
  au BufNewFile,BufRead *.ht setf haste
endif

if !has_key(g:polyglot_is_disabled, 'chaskell')
  au BufNewFile,BufRead *.chs setf chaskell
endif

if !has_key(g:polyglot_is_disabled, 'lhaskell')
  au BufNewFile,BufRead *.lhs setf lhaskell
endif

if !has_key(g:polyglot_is_disabled, 'gtkrc')
  au BufNewFile,BufRead {.,}gtkrc,gtkrc setf gtkrc
  au BufNewFile,BufRead gtkrc* call s:StarSetf('gtkrc')
  au BufNewFile,BufRead .gtkrc* call s:StarSetf('gtkrc')
endif

if !has_key(g:polyglot_is_disabled, 'group')
  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
endif

if !has_key(g:polyglot_is_disabled, 'gsp')
  au BufNewFile,BufRead *.gsp setf gsp
endif

if !has_key(g:polyglot_is_disabled, 'gretl')
  au BufNewFile,BufRead *.gretl setf gretl
endif

if !has_key(g:polyglot_is_disabled, 'grads')
  au BufNewFile,BufRead *.gs setf grads
endif

if !has_key(g:polyglot_is_disabled, 'gitolite')
  au BufNewFile,BufRead gitolite.conf setf gitolite
  au BufNewFile,BufRead */gitolite-admin/conf/* call s:StarSetf('gitolite')
endif

if !has_key(g:polyglot_is_disabled, 'gnash')
  au BufNewFile,BufRead {.,}gnashpluginrc,{.,}gnashrc,gnashpluginrc,gnashrc setf gnash
endif

if !has_key(g:polyglot_is_disabled, 'gpg')
  au BufNewFile,BufRead */.gnupg/gpg.conf,*/.gnupg/options,*/usr/*/gnupg/options.skel setf gpg
endif

if !has_key(g:polyglot_is_disabled, 'gp')
  au BufNewFile,BufRead *.gp,{.,}gprc setf gp
endif

if !has_key(g:polyglot_is_disabled, 'gkrellmrc')
  au BufNewFile,BufRead gkrellmrc,gkrellmrc_? setf gkrellmrc
endif

if !has_key(g:polyglot_is_disabled, 'gedcom')
  au BufNewFile,BufRead *.ged,lltxxxxx.txt setf gedcom
  au BufNewFile,BufRead */tmp/lltmp* call s:StarSetf('gedcom')
endif

if !has_key(g:polyglot_is_disabled, 'gdmo')
  au BufNewFile,BufRead *.gdmo,*.mo setf gdmo
endif

if !has_key(g:polyglot_is_disabled, 'gdb')
  au BufNewFile,BufRead {.,}gdbinit setf gdb
endif

if !has_key(g:polyglot_is_disabled, 'fstab')
  au BufNewFile,BufRead fstab,mtab setf fstab
endif

if !has_key(g:polyglot_is_disabled, 'framescript')
  au BufNewFile,BufRead *.fsl setf framescript
endif

if !has_key(g:polyglot_is_disabled, 'fortran')
  au BufNewFile,BufRead *.f,*.f03,*.f08,*.f77,*.f90,*.f95,*.for,*.fortran,*.fpp,*.ftn setf fortran
endif

if !has_key(g:polyglot_is_disabled, 'reva')
  au BufNewFile,BufRead *.frt setf reva
endif

if !has_key(g:polyglot_is_disabled, 'focexec')
  au BufNewFile,BufRead *.fex,*.focexec setf focexec
endif

if !has_key(g:polyglot_is_disabled, 'fetchmail')
  au BufNewFile,BufRead {.,}fetchmailrc setf fetchmail
endif

if !has_key(g:polyglot_is_disabled, 'fan')
  au BufNewFile,BufRead *.fan,*.fwt setf fan
endif

if !has_key(g:polyglot_is_disabled, 'falcon')
  au BufNewFile,BufRead *.fal setf falcon
endif

if !has_key(g:polyglot_is_disabled, 'exports')
  au BufNewFile,BufRead exports setf exports
endif

if !has_key(g:polyglot_is_disabled, 'expect')
  au BufNewFile,BufRead *.exp setf expect
endif

if !has_key(g:polyglot_is_disabled, 'exim')
  au BufNewFile,BufRead exim.conf setf exim
endif

if !has_key(g:polyglot_is_disabled, 'csc')
  au BufNewFile,BufRead *.csc setf csc
endif

if !has_key(g:polyglot_is_disabled, 'esterel')
  au BufNewFile,BufRead *.strl setf esterel
endif

if !has_key(g:polyglot_is_disabled, 'esqlc')
  au BufNewFile,BufRead *.EC,*.ec setf esqlc
endif

if !has_key(g:polyglot_is_disabled, 'esmtprc')
  au BufNewFile,BufRead *esmtprc setf esmtprc
endif

if !has_key(g:polyglot_is_disabled, 'elmfilt')
  au BufNewFile,BufRead filter-rules setf elmfilt
endif

if !has_key(g:polyglot_is_disabled, 'elinks')
  au BufNewFile,BufRead elinks.conf setf elinks
endif

if !has_key(g:polyglot_is_disabled, 'ecd')
  au BufNewFile,BufRead *.ecd setf ecd
endif

if !has_key(g:polyglot_is_disabled, 'edif')
  au BufNewFile,BufRead *.ed\(f\|if\|o\) setf edif
endif

if !has_key(g:polyglot_is_disabled, 'dts')
  au BufNewFile,BufRead *.dts,*.dtsi setf dts
endif

if !has_key(g:polyglot_is_disabled, 'dtd')
  au BufNewFile,BufRead *.dtd setf dtd
endif

if !has_key(g:polyglot_is_disabled, 'dsl')
  au BufNewFile,BufRead *.dsl setf dsl
endif

if !has_key(g:polyglot_is_disabled, 'datascript')
  au BufNewFile,BufRead *.ds setf datascript
endif

if !has_key(g:polyglot_is_disabled, 'dracula')
  au BufNewFile,BufRead *.drac,*.drc,*lpe,*lvs setf dracula
  au BufNewFile,BufRead drac.* call s:StarSetf('dracula')
endif

if !has_key(g:polyglot_is_disabled, 'def')
  au BufNewFile,BufRead *.def setf def
endif

if !has_key(g:polyglot_is_disabled, 'dylan')
  au BufNewFile,BufRead *.dylan setf dylan
endif

if !has_key(g:polyglot_is_disabled, 'dylanintr')
  au BufNewFile,BufRead *.intr setf dylanintr
endif

if !has_key(g:polyglot_is_disabled, 'dylanlid')
  au BufNewFile,BufRead *.lid setf dylanlid
endif

if !has_key(g:polyglot_is_disabled, 'dot')
  au BufNewFile,BufRead *.dot,*.gv setf dot
endif

if !has_key(g:polyglot_is_disabled, 'dircolors')
  au BufNewFile,BufRead */etc/DIR_COLORS,{.,}dir_colors,{.,}dircolors setf dircolors
endif

if !has_key(g:polyglot_is_disabled, 'diff')
  au BufNewFile,BufRead *.diff,*.rej setf diff
endif

if !has_key(g:polyglot_is_disabled, 'dictdconf')
  au BufNewFile,BufRead dictd.conf setf dictdconf
endif

if !has_key(g:polyglot_is_disabled, 'dictconf')
  au BufNewFile,BufRead {.,}dictrc,dict.conf setf dictconf
endif

if !has_key(g:polyglot_is_disabled, 'desktop')
  au BufNewFile,BufRead *.desktop,*.directory setf desktop
endif

if !has_key(g:polyglot_is_disabled, 'desc')
  au BufNewFile,BufRead *.desc setf desc
endif

if !has_key(g:polyglot_is_disabled, 'dnsmasq')
  au BufNewFile,BufRead */etc/dnsmasq.conf setf dnsmasq
  au BufNewFile,BufRead */etc/dnsmasq.d/* call s:StarSetf('dnsmasq')
endif

if !has_key(g:polyglot_is_disabled, 'denyhosts')
  au BufNewFile,BufRead denyhosts.conf setf denyhosts
endif

if !has_key(g:polyglot_is_disabled, 'debsources')
  au BufNewFile,BufRead */etc/apt/sources.list,*/etc/apt/sources.list.d/*.list setf debsources
endif

if !has_key(g:polyglot_is_disabled, 'debcopyright')
  au BufNewFile,BufRead */debian/copyright setf debcopyright
endif

if !has_key(g:polyglot_is_disabled, 'debcontrol')
  au BufNewFile,BufRead */debian/control setf debcontrol
endif

if !has_key(g:polyglot_is_disabled, 'cuplsim')
  au BufNewFile,BufRead *.si setf cuplsim
endif

if !has_key(g:polyglot_is_disabled, 'cupl')
  au BufNewFile,BufRead *.pld setf cupl
endif

if !has_key(g:polyglot_is_disabled, 'csp')
  au BufNewFile,BufRead *.csp,*.fdr setf csp
endif

if !has_key(g:polyglot_is_disabled, 'quake')
  au BufNewFile,BufRead *baseq[2-3]/*.cfg,*id1/*.cfg,*quake[1-3]/*.cfg setf quake
endif

if !has_key(g:polyglot_is_disabled, 'lynx')
  au BufNewFile,BufRead lynx.cfg setf lynx
endif

if !has_key(g:polyglot_is_disabled, 'eterm')
  au BufNewFile,BufRead *Eterm/*.cfg setf eterm
endif

if !has_key(g:polyglot_is_disabled, 'dcd')
  au BufNewFile,BufRead *.dcd setf dcd
endif

if !has_key(g:polyglot_is_disabled, 'dockerfile')
  au BufNewFile,BufRead *.Dockerfile,*.dock,Containerfile,Dockerfile,dockerfile setf dockerfile
  au BufNewFile,BufRead Dockerfile* call s:StarSetf('dockerfile')
endif

if !has_key(g:polyglot_is_disabled, 'cuda')
  au BufNewFile,BufRead *.cu,*.cuh setf cuda
endif

if !has_key(g:polyglot_is_disabled, 'config')
  au BufNewFile,BufRead Pipfile,configure.ac,configure.in setf config
  au BufNewFile,BufRead /etc/hostname.* call s:StarSetf('config')
endif

if !has_key(g:polyglot_is_disabled, 'cf')
  au BufNewFile,BufRead *.cfc,*.cfi,*.cfm setf cf
endif

if !has_key(g:polyglot_is_disabled, 'coco')
  au BufNewFile,BufRead *.atg setf coco
endif

if !has_key(g:polyglot_is_disabled, 'cobol')
  au BufNewFile,BufRead *.cbl,*.cob,*.lib setf cobol
endif

if !has_key(g:polyglot_is_disabled, 'cmusrc')
  au BufNewFile,BufRead */.cmus/{autosave,rc,command-history,*.theme},*/cmus/{rc,*.theme} setf cmusrc
endif

if !has_key(g:polyglot_is_disabled, 'cl')
  au BufNewFile,BufRead *.eni setf cl
endif

if !has_key(g:polyglot_is_disabled, 'clean')
  au BufNewFile,BufRead *.dcl,*.icl setf clean
endif

if !has_key(g:polyglot_is_disabled, 'chordpro')
  au BufNewFile,BufRead *.cho,*.chopro,*.chordpro,*.crd,*.crdpro setf chordpro
endif

if !has_key(g:polyglot_is_disabled, 'chill')
  au BufNewFile,BufRead *..ch setf chill
endif

if !has_key(g:polyglot_is_disabled, 'debchangelog')
  au BufNewFile,BufRead */debian/changelog,NEWS.Debian,NEWS.dch,changelog.Debian,changelog.dch setf debchangelog
endif

if !has_key(g:polyglot_is_disabled, 'cterm')
  au BufNewFile,BufRead *.con setf cterm
endif

if !has_key(g:polyglot_is_disabled, 'css')
  au BufNewFile,BufRead *.css setf css
endif

if !has_key(g:polyglot_is_disabled, 'ch')
  au BufNewFile,BufRead *.chf setf ch
endif

if !has_key(g:polyglot_is_disabled, 'cynpp')
  au BufNewFile,BufRead *.cyn setf cynpp
endif

if !has_key(g:polyglot_is_disabled, 'crm')
  au BufNewFile,BufRead *.crm setf crm
endif

if !has_key(g:polyglot_is_disabled, 'conaryrecipe')
  au BufNewFile,BufRead *.recipe setf conaryrecipe
endif

if !has_key(g:polyglot_is_disabled, 'cdl')
  au BufNewFile,BufRead *.cdl setf cdl
endif

if !has_key(g:polyglot_is_disabled, 'chaiscript')
  au BufNewFile,BufRead *.chai setf chaiscript
endif

if !has_key(g:polyglot_is_disabled, 'cdrdaoconf')
  au BufNewFile,BufRead */etc/cdrdao.conf,*/etc/default/cdrdao,*/etc/defaults/cdrdao,{.,}cdrdao setf cdrdaoconf
endif

if !has_key(g:polyglot_is_disabled, 'cdrtoc')
  au BufNewFile,BufRead *.toc setf cdrtoc
endif

if !has_key(g:polyglot_is_disabled, 'cabal')
  au BufNewFile,BufRead *.cabal setf cabal
endif

if !has_key(g:polyglot_is_disabled, 'csdl')
  au BufNewFile,BufRead *.csdl setf csdl
endif

if !has_key(g:polyglot_is_disabled, 'cs')
  au BufNewFile,BufRead *.cs setf cs
endif

if !has_key(g:polyglot_is_disabled, 'calendar')
  au BufNewFile,BufRead calendar setf calendar
  au BufNewFile,BufRead */share/calendar/calendar.* call s:StarSetf('calendar')
  au BufNewFile,BufRead */share/calendar/*/calendar.* call s:StarSetf('calendar')
  au BufNewFile,BufRead */.calendar/* call s:StarSetf('calendar')
endif

if !has_key(g:polyglot_is_disabled, 'lpc')
  au BufNewFile,BufRead *.lpc,*.ulpc setf lpc
endif

if !has_key(g:polyglot_is_disabled, 'bsdl')
  au BufNewFile,BufRead *.bsdl,*bsd setf bsdl
endif

if !has_key(g:polyglot_is_disabled, 'blank')
  au BufNewFile,BufRead *.bl setf blank
endif

if !has_key(g:polyglot_is_disabled, 'bindzone')
  au BufNewFile,BufRead named.root setf bindzone
  au BufNewFile,BufRead */named/db.* call s:StarSetf('bindzone')
  au BufNewFile,BufRead */bind/db.* call s:StarSetf('bindzone')
endif

if !has_key(g:polyglot_is_disabled, 'named')
  au BufNewFile,BufRead named*.conf,rndc*.conf,rndc*.key setf named
endif

if !has_key(g:polyglot_is_disabled, 'bst')
  au BufNewFile,BufRead *.bst setf bst
endif

if !has_key(g:polyglot_is_disabled, 'bib')
  au BufNewFile,BufRead *.bib setf bib
endif

if !has_key(g:polyglot_is_disabled, 'bdf')
  au BufNewFile,BufRead *.bdf setf bdf
endif

if !has_key(g:polyglot_is_disabled, 'bc')
  au BufNewFile,BufRead *.bc setf bc
endif

if !has_key(g:polyglot_is_disabled, 'dosbatch')
  au BufNewFile,BufRead *.bat,*.sys setf dosbatch
endif

if !has_key(g:polyglot_is_disabled, 'hamster')
  au BufNewFile,BufRead *.hsc,*.hsm setf hamster
endif

if !has_key(g:polyglot_is_disabled, 'freebasic')
  au BufNewFile,BufRead *.bi,*.fb setf freebasic
endif

if !has_key(g:polyglot_is_disabled, 'ibasic')
  au BufNewFile,BufRead *.iba,*.ibi setf ibasic
endif

if !has_key(g:polyglot_is_disabled, 'b')
  au BufNewFile,BufRead *.imp,*.mch,*.ref setf b
endif

if !has_key(g:polyglot_is_disabled, '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(g:polyglot_is_disabled, 'gitignore')
  au BufNewFile,BufRead *.git/info/exclude,*/.config/git/ignore,{.,}gitignore setf gitignore
endif

if !has_key(g:polyglot_is_disabled, 'prolog')
  au! BufNewFile,BufRead,BufWritePost *.pl call polyglot#detect#Pl()
  au BufNewFile,BufRead *.pdb,*.pro,*.prolog,*.yap setf prolog
endif

if !has_key(g:polyglot_is_disabled, 'bzl')
  au BufNewFile,BufRead *.BUILD,*.bazel,*.bzl,*.star,BUCK,BUILD,BUILD.bazel,Tiltfile,WORKSPACE setf bzl
endif

if !has_key(g:polyglot_is_disabled, 'odin')
  au BufNewFile,BufRead *.odin setf odin
endif

if !has_key(g:polyglot_is_disabled, 'dosini')
  au BufNewFile,BufRead *.dof,*.ini,*.lektorproject,*.prefs,*.pro,*.properties,*.url,*/etc/pacman.conf,*/etc/yum.conf,{.,}coveragerc,{.,}editorconfig,{.,}flake8,{.,}npmrc,{.,}pylintrc,buildozer.spec,pylintrc 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(g:polyglot_is_disabled, 'spec')
  au BufNewFile,BufRead *.spec setf spec
endif

if !has_key(g:polyglot_is_disabled, 'visual-basic')
  au! BufNewFile,BufRead,BufWritePost *.bas call polyglot#detect#Bas()
  au BufNewFile,BufRead *.cls,*.ctl,*.dsm,*.frm,*.frx,*.sba,*.vba,*.vbs setf vb
endif

if !has_key(g:polyglot_is_disabled, 'basic')
  au BufNewFile,BufRead *.basic setf basic
endif

if !has_key(g:polyglot_is_disabled, 'trasys')
  au! BufNewFile,BufRead,BufWritePost *.inp call polyglot#detect#Inp()
endif

if !has_key(g:polyglot_is_disabled, 'zig')
  au BufNewFile,BufRead *.zir setf zir
  au BufNewFile,BufRead *.zig,*.zir setf zig
endif

if !has_key(g:polyglot_is_disabled, 'zephir')
  au BufNewFile,BufRead *.zep setf zephir
endif

if !has_key(g:polyglot_is_disabled, 'help')
  au BufNewFile,BufRead $VIMRUNTIME/doc/*.txt setf help
endif

if !has_key(g:polyglot_is_disabled, 'helm')
  au BufNewFile,BufRead */templates/*.tpl,*/templates/*.yaml setf helm
endif

if !has_key(g:polyglot_is_disabled, 'smarty')
  au BufNewFile,BufRead *.tpl setf smarty
endif

if !has_key(g:polyglot_is_disabled, '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(g:polyglot_is_disabled, 'xsl')
  au BufNewFile,BufRead *.xsl,*.xslt setf xsl
endif

if !has_key(g:polyglot_is_disabled, 'xdc')
  au BufNewFile,BufRead *.xdc setf xdc
endif

if !has_key(g:polyglot_is_disabled, 'vue')
  au BufNewFile,BufRead *.vue,*.wpy setf vue
endif

if !has_key(g:polyglot_is_disabled, 'vmasm')
  au BufNewFile,BufRead *.mar setf vmasm
endif

if !has_key(g:polyglot_is_disabled, 'velocity')
  au BufNewFile,BufRead *.vm setf velocity
endif

if !has_key(g:polyglot_is_disabled, 'vcl')
  au BufNewFile,BufRead *.vcl setf vcl
endif

if !has_key(g:polyglot_is_disabled, 'vbnet')
  au BufNewFile,BufRead *.vb,*.vbhtml setf vbnet
endif

if !has_key(g:polyglot_is_disabled, 'vala')
  au BufNewFile,BufRead *.vala,*.valadoc,*.vapi setf vala
endif

if !has_key(g:polyglot_is_disabled, 'v')
  au BufNewFile,BufRead *.v,*.vsh,*.vv setf vlang
endif

if !has_key(g:polyglot_is_disabled, 'unison')
  au BufNewFile,BufRead *.u,*.uu setf unison
endif

if !has_key(g:polyglot_is_disabled, 'typescript')
  au BufNewFile,BufRead *.cts,*.mts,*.ts setf typescript
  au BufNewFile,BufRead *.tsx setf typescriptreact
endif

if !has_key(g:polyglot_is_disabled, 'twig')
  au BufNewFile,BufRead *.twig setf html.twig
  au BufNewFile,BufRead *.xml.twig setf xml.twig
endif

if !has_key(g:polyglot_is_disabled, 'tutor')
  au BufNewFile,BufRead *.tutor setf tutor
endif

if !has_key(g:polyglot_is_disabled, 'tptp')
  au BufNewFile,BufRead *.ax,*.p,*.tptp setf tptp
endif

if !has_key(g:polyglot_is_disabled, 'toml')
  au BufNewFile,BufRead *.toml,*/.cargo/config,*/.cargo/credentials,Cargo.lock,Gopkg.lock,Pipfile,poetry.lock setf toml
endif

if !has_key(g:polyglot_is_disabled, 'tmux')
  au BufNewFile,BufRead {.,}tmux*.conf setf tmux
endif

if !has_key(g:polyglot_is_disabled, 'thrift')
  au BufNewFile,BufRead *.thrift setf thrift
endif

if !has_key(g:polyglot_is_disabled, 'textile')
  au BufNewFile,BufRead *.textile setf textile
endif

if !has_key(g:polyglot_is_disabled, 'terraform')
  au BufNewFile,BufRead *.tf,*.tfvars setf terraform
  au BufNewFile,BufRead *.hcl,*.nomad,*.workflow,{.,}terraformrc,Appfile,terraform.rc setf hcl
endif

if !has_key(g:polyglot_is_disabled, 'tf')
  au BufNewFile,BufRead *.tf,{.,}tfrc,tfrc setf tf
endif

if !has_key(g:polyglot_is_disabled, '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(g:polyglot_is_disabled, 'sxhkd')
  au BufNewFile,BufRead *.sxhkdrc,sxhkdrc setf sxhkdrc
endif

if !has_key(g:polyglot_is_disabled, 'swift')
  au BufNewFile,BufRead *.swift setf swift
endif

if !has_key(g:polyglot_is_disabled, 'svg')
  au BufNewFile,BufRead *.svg setf svg
endif

if !has_key(g:polyglot_is_disabled, 'svelte')
  au BufNewFile,BufRead *.svelte setf svelte
endif

if !has_key(g:polyglot_is_disabled, 'stylus')
  au BufNewFile,BufRead *.styl,*.stylus setf stylus
endif

if !has_key(g:polyglot_is_disabled, 'solidity')
  au BufNewFile,BufRead *.sol setf solidity
endif

if !has_key(g:polyglot_is_disabled, 'smt2')
  au BufNewFile,BufRead *.smt,*.smt2 setf smt2
endif

if !has_key(g:polyglot_is_disabled, 'slime')
  au BufNewFile,BufRead *.slime setf slime
endif

if !has_key(g:polyglot_is_disabled, 'slim')
  au BufNewFile,BufRead *.slim setf slim
endif

if !has_key(g:polyglot_is_disabled, 'sh')
  au BufNewFile,BufRead *.bash,*.bats,*.cgi,*.command,*.env,*.fcgi,*.ksh,*.sh,*.sh.in,*.tmux,*.tool,*.zsh-theme,*/etc/udev/cdsymlinks.conf,{.,}bash_aliases,{.,}bash_history,{.,}bash_logout,{.,}bash_profile,{.,}bashrc,{.,}cshrc,{.,}env,{.,}env.example,{.,}flaskenv,{.,}kshrc,{.,}login,{.,}profile,9fs,PKGBUILD,bash_aliases,bash_logout,bash_profile,bashrc,cshrc,gradlew,kshrc,login,man,profile setf sh
  au BufNewFile,BufRead *.zsh,*/etc/zprofile,{.,}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')
endif

if !has_key(g:polyglot_is_disabled, 'scss')
  au BufNewFile,BufRead *.scss setf scss
endif

if !has_key(g:polyglot_is_disabled, 'scala')
  au BufNewFile,BufRead *.kojo,*.sc,*.scala setf scala
endif

if !has_key(g:polyglot_is_disabled, 'rust')
  au BufNewFile,BufRead *.rs,*.rs.in setf rust
endif

if !has_key(g:polyglot_is_disabled, 'brewfile')
  au BufNewFile,BufRead Brewfile setf brewfile
endif

if !has_key(g:polyglot_is_disabled, 'rspec')
  au BufNewFile,BufRead *_spec.rb set ft=ruby syntax=rspec
endif

if !has_key(g:polyglot_is_disabled, 'ruby')
  au BufNewFile,BufRead *.axlsx,*.builder,*.cap,*.eye,*.fcgi,*.gemspec,*.god,*.jbuilder,*.mspec,*.opal,*.pluginspec,*.podspec,*.prawn,*.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,Guardfile,Jarfile,KitchenSink,Mavenfile,Podfile,Puppetfile,Rakefile,Routefile,Snapfile,Steepfile,Thorfile,Vagrantfile,[Rr]antfile,buildfile,vagrantfile setf ruby
  au BufNewFile,BufRead [Rr]akefile* call s:StarSetf('ruby')
  au BufNewFile,BufRead *.erb,*.erb.deface,*.rhtml setf eruby
endif

if !has_key(g:polyglot_is_disabled, 'rst')
  au BufNewFile,BufRead *.rest,*.rest.txt,*.rst,*.rst.txt setf rst
endif

if !has_key(g:polyglot_is_disabled, 'reason')
  au! BufNewFile,BufRead,BufWritePost *.re call polyglot#detect#Re()
  au BufNewFile,BufRead *.rei setf reason
endif

if !has_key(g:polyglot_is_disabled, 'razor')
  au BufNewFile,BufRead *.cshtml,*.razor setf razor
endif

if !has_key(g:polyglot_is_disabled, 'raml')
  au BufNewFile,BufRead *.raml setf raml
endif

if !has_key(g:polyglot_is_disabled, 'ragel')
  au BufNewFile,BufRead *.rl setf ragel
endif

if !has_key(g:polyglot_is_disabled, 'racket')
  au BufNewFile,BufRead *.rkt,*.rktd,*.rktl,*.scrbl setf racket
endif

if !has_key(g:polyglot_is_disabled, 'r-lang')
  au BufNewFile,BufRead *.S,*.r,*.rsx,*.s,{.,}Rprofile,expr-dist setf r
  au BufNewFile,BufRead *.rd setf rhelp
endif

if !has_key(g:polyglot_is_disabled, 'qml')
  au BufNewFile,BufRead *.qbs,*.qml setf qml
endif

if !has_key(g:polyglot_is_disabled, 'qmake')
  au BufNewFile,BufRead *.pri,*.pro setf qmake
endif

if !has_key(g:polyglot_is_disabled, 'requirements')
  au BufNewFile,BufRead *.pip,*require.{txt,in},*requirements.{txt,in},constraints.{txt,in} setf requirements
endif

if !has_key(g:polyglot_is_disabled, '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(g:polyglot_is_disabled, 'purescript')
  au BufNewFile,BufRead *.purs setf purescript
endif

if !has_key(g:polyglot_is_disabled, 'puppet')
  au BufNewFile,BufRead *.pp,Modulefile setf puppet
  au BufNewFile,BufRead *.epp setf embeddedpuppet
endif

if !has_key(g:polyglot_is_disabled, 'pug')
  au BufNewFile,BufRead *.jade,*.pug setf pug
endif

if !has_key(g:polyglot_is_disabled, 'protobuf')
  au BufNewFile,BufRead *.proto setf proto
endif

if !has_key(g:polyglot_is_disabled, 'powershell')
  au BufNewFile,BufRead *.ps1,*.psd1,*.psm1,*.pssc setf ps1
  au BufNewFile,BufRead *.ps1xml setf ps1xml
endif

if !has_key(g:polyglot_is_disabled, 'pony')
  au BufNewFile,BufRead *.pony setf pony
endif

if !has_key(g:polyglot_is_disabled, 'plantuml')
  au BufNewFile,BufRead *.iuml,*.plantuml,*.pu,*.puml,*.uml setf plantuml
endif

if !has_key(g:polyglot_is_disabled, 'pest')
  au BufNewFile,BufRead *.pest setf pest
endif

if !has_key(g:polyglot_is_disabled, 'blade')
  au BufNewFile,BufRead *.blade,*.blade.php setf blade
endif

if !has_key(g:polyglot_is_disabled, 'php')
  au BufNewFile,BufRead *.aw,*.ctp,*.fcgi,*.inc,*.php,*.php3,*.php4,*.php5,*.php9,*.phps,*.phpt,*.phtml,{.,}php,{.,}php_cs,{.,}php_cs.dist,Phakefile setf php
endif

if !has_key(g:polyglot_is_disabled, 'cql')
  au BufNewFile,BufRead *.cql setf cql
endif

if !has_key(g:polyglot_is_disabled, 'pgsql')
  au BufNewFile,BufRead *.pgsql let b:sql_type_override='pgsql' | set ft=sql
endif

if !has_key(g:polyglot_is_disabled, 'opencl')
  au BufNewFile,BufRead *.cl,*.opencl setf opencl
endif

if !has_key(g:polyglot_is_disabled, 'octave')
  au! BufNewFile,BufRead,BufWritePost *.m call polyglot#detect#M()
  au BufNewFile,BufRead *.oct setf octave
endif

if !has_key(g:polyglot_is_disabled, 'ocaml')
  au BufNewFile,BufRead *.eliom,*.eliomi,*.ml,*.ml.cppo,*.ml4,*.mli,*.mli.cppo,*.mlip,*.mll,*.mlp,*.mlt,*.mly,{.,}ocamlinit setf ocaml
  au BufNewFile,BufRead *.om,OMakefile,OMakeroot,OMakeroot.in setf omake
  au BufNewFile,BufRead *.opam,*.opam.template,opam setf opam
  au BufNewFile,BufRead _oasis setf oasis
  au BufNewFile,BufRead dune,dune-project,dune-workspace,jbuild setf dune
  au BufNewFile,BufRead _tags setf ocamlbuild_tags
  au BufNewFile,BufRead *.ocp setf ocpbuild
  au BufNewFile,BufRead *.root setf ocpbuildroot
  au BufNewFile,BufRead *.sexp setf sexplib
endif

if !has_key(g:polyglot_is_disabled, 'objc')
  au! BufNewFile,BufRead,BufWritePost *.m call polyglot#detect#M()
  au! BufNewFile,BufRead,BufWritePost *.h call polyglot#detect#H()
endif

if !has_key(g:polyglot_is_disabled, 'nix')
  au BufNewFile,BufRead *.nix setf nix
endif

if !has_key(g:polyglot_is_disabled, 'nim')
  au BufNewFile,BufRead *.nim,*.nim.cfg,*.nimble,*.nimrod,*.nims,nim.cfg setf nim
endif

if !has_key(g:polyglot_is_disabled, '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(g:polyglot_is_disabled, 'murphi')
  au! BufNewFile,BufRead,BufWritePost *.m call polyglot#detect#M()
endif

if !has_key(g:polyglot_is_disabled, 'moonscript')
  au BufNewFile,BufRead *.moon setf moon
endif

if !has_key(g:polyglot_is_disabled, 'meson')
  au BufNewFile,BufRead meson.build,meson_options.txt setf meson
  au BufNewFile,BufRead *.wrap setf dosini
endif

if !has_key(g:polyglot_is_disabled, 'mdx')
  au BufNewFile,BufRead *.mdx setf markdown.mdx
endif

if !has_key(g:polyglot_is_disabled, 'mathematica')
  au! BufNewFile,BufRead,BufWritePost *.m call polyglot#detect#M()
  au BufNewFile,BufRead *.cdf,*.ma,*.mathematica,*.mma,*.mt,*.nb,*.nbp,*.wl,*.wls,*.wlt setf mma
endif

if !has_key(g:polyglot_is_disabled, '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(g:polyglot_is_disabled, 'm4')
  au BufNewFile,BufRead *.at,*.m4,*.mc setf m4
endif

if !has_key(g:polyglot_is_disabled, 'lua')
  au BufNewFile,BufRead *.fcgi,*.lua,*.nse,*.p8,*.pd_lua,*.rbxs,*.rockspec,*.wlua,{.,}luacheckrc setf lua
endif

if !has_key(g:polyglot_is_disabled, 'log')
  au BufNewFile,BufRead *.LOG,*.log,*_LOG,*_log setf log
endif

if !has_key(g:polyglot_is_disabled, 'llvm')
  au BufNewFile,BufRead *.ll setf llvm
  au BufNewFile,BufRead *.td setf tablegen
endif

if !has_key(g:polyglot_is_disabled, 'livescript')
  au BufNewFile,BufRead *._ls,*.ls,Slakefile setf ls
endif

if !has_key(g:polyglot_is_disabled, 'lilypond')
  au BufNewFile,BufRead *.ily,*.ly setf lilypond
endif

if !has_key(g:polyglot_is_disabled, 'less')
  au BufNewFile,BufRead *.less setf less
endif

if !has_key(g:polyglot_is_disabled, 'ledger')
  au BufNewFile,BufRead *.journal,*.ldg,*.ledger setf ledger
endif

if !has_key(g:polyglot_is_disabled, 'kotlin')
  au BufNewFile,BufRead *.kt,*.ktm,*.kts setf kotlin
endif

if !has_key(g:polyglot_is_disabled, 'julia')
  au BufNewFile,BufRead *.jl setf julia
endif

if !has_key(g:polyglot_is_disabled, 'jst')
  au BufNewFile,BufRead *.ect,*.ejs,*.ejs.t,*.jst setf jst
endif

if !has_key(g:polyglot_is_disabled, 'tads')
  au! BufNewFile,BufRead,BufWritePost *.t call polyglot#detect#T()
endif

if !has_key(g:polyglot_is_disabled, 'raku')
  au! BufNewFile,BufRead,BufWritePost *.t call polyglot#detect#T()
  au! BufNewFile,BufRead,BufWritePost *.pm call polyglot#detect#Pm()
  au! BufNewFile,BufRead,BufWritePost *.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(g:polyglot_is_disabled, 'perl')
  au! BufNewFile,BufRead,BufWritePost *.t call polyglot#detect#T()
  au! BufNewFile,BufRead,BufWritePost *.pm call polyglot#detect#Pm()
  au! BufNewFile,BufRead,BufWritePost *.pl call polyglot#detect#Pl()
  au BufNewFile,BufRead *.al,*.cgi,*.fcgi,*.perl,*.ph,*.plx,*.psgi,{.,}gitolite.rc,Makefile.PL,Rexfile,ack,cpanfile,example.gitolite.rc setf perl
  au BufNewFile,BufRead *.pod setf pod
  au BufNewFile,BufRead *.comp,*.mason,*.mhtml setf mason
  au! BufNewFile,BufRead,BufWritePost *.tt2 call polyglot#detect#Tt2()
  au! BufNewFile,BufRead,BufWritePost *.tt2 call polyglot#detect#Tt2()
  au BufNewFile,BufRead *.xs setf xs
endif

if !has_key(g:polyglot_is_disabled, 'rc')
  au BufNewFile,BufRead *.rc,*.rch setf rc
endif

if !has_key(g:polyglot_is_disabled, 'jsonnet')
  au BufNewFile,BufRead *.jsonnet,*.libsonnet setf jsonnet
endif

if !has_key(g:polyglot_is_disabled, 'json')
  au BufNewFile,BufRead *.4DForm,*.4DProject,*.JSON-tmLanguage,*.avsc,*.geojson,*.gltf,*.har,*.ice,*.json,*.jsonl,*.jsonp,*.mcmeta,*.template,*.tfstate,*.tfstate.backup,*.topojson,*.webapp,*.webmanifest,*.yy,*.yyp,{.,}arcconfig,{.,}auto-changelog,{.,}c8rc,{.,}htmlhintrc,{.,}imgbotconfig,{.,}nycrc,{.,}tern-config,{.,}tern-project,{.,}watchmanconfig,Pipfile.lock,composer.lock,mcmod.info setf json
endif

if !has_key(g:polyglot_is_disabled, 'json5')
  au BufNewFile,BufRead *.json5 setf json5
endif

if !has_key(g:polyglot_is_disabled, 'jq')
  au BufNewFile,BufRead *.jq,{.,}jqrc setf jq
  au BufNewFile,BufRead .jqrc* call s:StarSetf('jq')
endif

if !has_key(g:polyglot_is_disabled, 'htmldjango')
  au BufNewFile,BufRead *.j2,*.jinja,*.jinja2 setf htmldjango
endif

if !has_key(g:polyglot_is_disabled, 'jenkins')
  au BufNewFile,BufRead *.Jenkinsfile,*.jenkinsfile,Jenkinsfile setf Jenkinsfile
  au BufNewFile,BufRead Jenkinsfile* call s:StarSetf('Jenkinsfile')
endif

if !has_key(g:polyglot_is_disabled, 'ion')
  au BufNewFile,BufRead *.ion,~/.config/ion/initrc setf ion
endif

if !has_key(g:polyglot_is_disabled, 'idris2')
  au! BufNewFile,BufRead,BufWritePost *.idr call polyglot#detect#Idr()
  au BufNewFile,BufRead *.ipkg,idris-response setf idris2
  au! BufNewFile,BufRead,BufWritePost *.lidr call polyglot#detect#Lidr()
endif

if !has_key(g:polyglot_is_disabled, 'idris')
  au! BufNewFile,BufRead,BufWritePost *.lidr call polyglot#detect#Lidr()
  au! BufNewFile,BufRead,BufWritePost *.idr call polyglot#detect#Idr()
  au BufNewFile,BufRead idris-response setf idris
endif

if !has_key(g:polyglot_is_disabled, 'icalendar')
  au BufNewFile,BufRead *.ics setf icalendar
endif

if !has_key(g:polyglot_is_disabled, 'hive')
  au BufNewFile,BufRead *.hql,*.q,*.ql setf hive
endif

if !has_key(g:polyglot_is_disabled, 'haxe')
  au BufNewFile,BufRead *.hx,*.hxsl setf haxe
  au BufNewFile,BufRead *.hxml setf hxml
  au BufNewFile,BufRead *.hss setf hss
endif

if !has_key(g:polyglot_is_disabled, 'haskell')
  au BufNewFile,BufRead *.bpk,*.hs,*.hs-boot,*.hsc,*.hsig setf haskell
endif

if !has_key(g:polyglot_is_disabled, 'haproxy')
  au BufNewFile,BufRead haproxy*.conf* call s:StarSetf('haproxy')
  au BufNewFile,BufRead haproxy*.cfg* call s:StarSetf('haproxy')
endif

if !has_key(g:polyglot_is_disabled, 'handlebars')
  au BufNewFile,BufRead *.hjs,*.hogan,*.hulk,*.mustache setf html.mustache
  au BufNewFile,BufRead *.handlebars,*.hb,*.hbs,*.hdbs setf html.handlebars
endif

if !has_key(g:polyglot_is_disabled, 'haml')
  au BufNewFile,BufRead *.haml,*.haml.deface,*.hamlbars,*.hamlc setf haml
endif

if !has_key(g:polyglot_is_disabled, 'grub')
  au BufNewFile,BufRead */boot/grub/grub.conf,*/boot/grub/menu.lst,*/etc/grub.conf setf grub
endif

if !has_key(g:polyglot_is_disabled, 'groovy')
  au BufNewFile,BufRead *.gradle,*.groovy,*.grt,*.gtpl,*.gvy,Jenkinsfile setf groovy
endif

if !has_key(g:polyglot_is_disabled, 'graphql')
  au BufNewFile,BufRead *.gql,*.graphql,*.graphqls setf graphql
endif

if !has_key(g:polyglot_is_disabled, 'jsx')
  au BufNewFile,BufRead *.jsx setf javascriptreact
endif

if !has_key(g:polyglot_is_disabled, 'javascript')
  au! BufNewFile,BufRead,BufWritePost *.frag call polyglot#detect#Frag()
  au BufNewFile,BufRead *._js,*.bones,*.cjs,*.es,*.es6,*.gs,*.jake,*.javascript,*.js,*.jsb,*.jscad,*.jsfl,*.jslib,*.jsm,*.jspre,*.jss,*.jsx,*.mjs,*.njs,*.pac,*.sjs,*.ssjs,*.xsjs,*.xsjslib,Jakefile setf javascript
  au BufNewFile,BufRead *.flow setf flow
endif

if !has_key(g:polyglot_is_disabled, 'go')
  au BufNewFile,BufRead *.go setf go
  au BufNewFile,BufRead go.mod setf gomod
  au BufNewFile,BufRead go.sum setf gosum
  au BufNewFile,BufRead go.work setf gowork
  au BufNewFile,BufRead *.tmpl setf gohtmltmpl
endif

if !has_key(g:polyglot_is_disabled, 'hercules')
  au BufNewFile,BufRead *.errsum,*.ev,*.sum,*.vc setf hercules
endif

if !has_key(g:polyglot_is_disabled, 'gnuplot')
  au BufNewFile,BufRead *.gnu,*.gnuplot,*.gp,*.gpi,*.p,*.plot,*.plt setf gnuplot
endif

if !has_key(g:polyglot_is_disabled, 'gmpl')
  au BufNewFile,BufRead *.mod setf gmpl
endif

if !has_key(g:polyglot_is_disabled, 'glsl')
  au! BufNewFile,BufRead,BufWritePost *.fs call polyglot#detect#Fs()
  au! BufNewFile,BufRead,BufWritePost *.frag call polyglot#detect#Frag()
  au BufNewFile,BufRead *.comp,*.fp,*.frg,*.fsh,*.fshader,*.geo,*.geom,*.glsl,*.glslf,*.glslv,*.gs,*.gshader,*.rchit,*.rmiss,*.shader,*.tesc,*.tese,*.vert,*.vrx,*.vsh,*.vshader setf glsl
endif

if !has_key(g:polyglot_is_disabled, 'git')
  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')
  au BufNewFile,BufRead git-rebase-todo setf gitrebase
  au BufNewFile,BufRead .gitsendemail.* call s:StarSetf('gitsendemail')
  au BufNewFile,BufRead COMMIT_EDITMSG,MERGE_MSG,TAG_EDITMSG setf gitcommit
endif

if !has_key(g:polyglot_is_disabled, 'fsharp')
  au! BufNewFile,BufRead,BufWritePost *.fs call polyglot#detect#Fs()
  au BufNewFile,BufRead *.fsi,*.fsx setf fsharp
endif

if !has_key(g:polyglot_is_disabled, 'forth')
  au! BufNewFile,BufRead,BufWritePost *.fs call polyglot#detect#Fs()
  au BufNewFile,BufRead *.ft,*.fth setf forth
endif

if !has_key(g:polyglot_is_disabled, 'flatbuffers')
  au BufNewFile,BufRead *.fbs setf fbs
endif

if !has_key(g:polyglot_is_disabled, 'fish')
  au BufNewFile,BufRead *.fish setf fish
endif

if !has_key(g:polyglot_is_disabled, 'ferm')
  au BufNewFile,BufRead *.ferm,ferm.conf setf ferm
endif

if !has_key(g:polyglot_is_disabled, 'fennel')
  au BufNewFile,BufRead *.fnl setf fennel
endif

if !has_key(g:polyglot_is_disabled, '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(g:polyglot_is_disabled, 'emblem')
  au BufNewFile,BufRead *.em,*.emblem setf emblem
endif

if !has_key(g:polyglot_is_disabled, 'emberscript')
  au BufNewFile,BufRead *.em,*.emberscript setf ember-script
endif

if !has_key(g:polyglot_is_disabled, 'elm')
  au BufNewFile,BufRead *.elm setf elm
endif

if !has_key(g:polyglot_is_disabled, 'elixir')
  au BufNewFile,BufRead *.ex,*.exs,mix.lock setf elixir
  au BufNewFile,BufRead *.eex,*.html.heex,*.html.leex,*.leex setf eelixir
endif

if !has_key(g:polyglot_is_disabled, 'docker-compose')
  au BufNewFile,BufRead docker-compose*.yaml,docker-compose*.yml setf yaml.docker-compose
endif

if !has_key(g:polyglot_is_disabled, 'yaml')
  au BufNewFile,BufRead *.mir,*.reek,*.rviz,*.sublime-syntax,*.syntax,*.yaml,*.yaml-tmlanguage,*.yaml.sed,*.yml,*.yml.mysql,{.,}clang-format,{.,}clang-tidy,{.,}gemrc,CITATION.cff,fish_history,fish_read_history,glide.lock,yarn.lock setf yaml
endif

if !has_key(g:polyglot_is_disabled, 'mysql')
  au BufNewFile,BufRead *.mysql setf mysql
endif

if !has_key(g:polyglot_is_disabled, 'sed')
  au BufNewFile,BufRead *.sed setf sed
endif

if !has_key(g:polyglot_is_disabled, 'dlang')
  au BufNewFile,BufRead *.d,*.di setf d
  au BufNewFile,BufRead *.lst setf dcov
  au BufNewFile,BufRead *.dd setf dd
  au BufNewFile,BufRead *.ddoc setf ddoc
  au BufNewFile,BufRead *.sdl setf dsdl
endif

if !has_key(g:polyglot_is_disabled, 'dhall')
  au BufNewFile,BufRead *.dhall setf dhall
endif

if !has_key(g:polyglot_is_disabled, 'dart')
  au BufNewFile,BufRead *.dart,*.drt setf dart
endif

if !has_key(g:polyglot_is_disabled, 'cue')
  au BufNewFile,BufRead *.cue setf cuesheet
endif

if !has_key(g:polyglot_is_disabled, 'cucumber')
  au BufNewFile,BufRead *.feature,*.story setf cucumber
endif

if !has_key(g:polyglot_is_disabled, 'crystal')
  au BufNewFile,BufRead *.cr,Projectfile setf crystal
  au BufNewFile,BufRead *.ecr setf ecrystal
endif

if !has_key(g:polyglot_is_disabled, 'cryptol')
  au BufNewFile,BufRead *.cry,*.cyl,*.lcry,*.lcyl setf cryptol
endif

if !has_key(g:polyglot_is_disabled, 'coffee-script')
  au BufNewFile,BufRead *._coffee,*.cake,*.cjsx,*.coffee,*.coffeekup,*.cson,*.iced,Cakefile setf coffee
  au BufNewFile,BufRead *.coffee.md,*.litcoffee setf litcoffee
endif

if !has_key(g:polyglot_is_disabled, 'markdown')
  au BufNewFile,BufRead *.livemd,*.markdown,*.md,*.mdown,*.mdwn,*.mkd,*.mkdn,*.mkdown,*.ronn,*.scd,*.workbook,contents.lr setf markdown
endif

if !has_key(g:polyglot_is_disabled, 'cmake')
  au BufNewFile,BufRead *.cmake,*.cmake.in,CMakeLists.txt setf cmake
endif

if !has_key(g:polyglot_is_disabled, 'clojure')
  au BufNewFile,BufRead *.bb,*.boot,*.cl2,*.clj,*.cljc,*.cljs,*.cljs.hl,*.cljscm,*.cljx,*.edn,*.hic,build.boot,profile.boot,riemann.config setf clojure
endif

if !has_key(g:polyglot_is_disabled, 'carp')
  au BufNewFile,BufRead *.carp setf carp
endif

if !has_key(g:polyglot_is_disabled, 'caddyfile')
  au BufNewFile,BufRead Caddyfile setf caddyfile
endif

if !has_key(g:polyglot_is_disabled, 'awk')
  au BufNewFile,BufRead *.awk,*.gawk setf awk
endif

if !has_key(g:polyglot_is_disabled, 'ave')
  au BufNewFile,BufRead *.ave setf ave
endif

if !has_key(g:polyglot_is_disabled, 'autoit')
  au BufNewFile,BufRead *.au3 setf autoit
endif

if !has_key(g:polyglot_is_disabled, 'atlas')
  au BufNewFile,BufRead *.as,*.atl setf atlas
endif

if !has_key(g:polyglot_is_disabled, 'aspperl')
  au! BufNewFile,BufRead,BufWritePost *.asp call polyglot#detect#Asp()
endif

if !has_key(g:polyglot_is_disabled, 'aspvbs')
  au! BufNewFile,BufRead,BufWritePost *.asp call polyglot#detect#Asp()
  au! BufNewFile,BufRead,BufWritePost *.asa call polyglot#detect#Asa()
endif

if !has_key(g:polyglot_is_disabled, 'asn')
  au BufNewFile,BufRead *.asn,*.asn1 setf asn
endif

if !has_key(g:polyglot_is_disabled, 'automake')
  au BufNewFile,BufRead GNUmakefile.am,[mM]akefile.am setf automake
endif

if !has_key(g:polyglot_is_disabled, 'elf')
  au BufNewFile,BufRead *.am setf elf
endif

if !has_key(g:polyglot_is_disabled, 'make')
  au BufNewFile,BufRead *.dsp,*.mak,*.mk,*[mM]akefile setf make
endif

if !has_key(g:polyglot_is_disabled, 'autohotkey')
  au BufNewFile,BufRead *.ahk,*.ahkl setf autohotkey
endif

if !has_key(g:polyglot_is_disabled, 'asciidoc')
  au BufNewFile,BufRead *.adoc,*.asc,*.asciidoc setf asciidoc
endif

if !has_key(g:polyglot_is_disabled, 'art')
  au BufNewFile,BufRead *.art setf art
endif

if !has_key(g:polyglot_is_disabled, 'arduino')
  au BufNewFile,BufRead *.ino,*.pde setf arduino
endif

if !has_key(g:polyglot_is_disabled, 'c/c++')
  au! BufNewFile,BufRead,BufWritePost *.h call polyglot#detect#H()
  au BufNewFile,BufRead *.c++,*.cc,*.cp,*.cpp,*.cxx,*.h++,*.hh,*.hpp,*.hxx,*.inc,*.inl,*.ipp,*.ixx,*.moc,*.tcc,*.tlh,*.tpp setf cpp
  au! BufNewFile,BufRead,BufWritePost *.h call polyglot#detect#H()
  au BufNewFile,BufRead *.c,*.cats,*.idc,*.qc,*enlightenment/*.cfg setf c
endif

if !has_key(g:polyglot_is_disabled, 'arch')
  au BufNewFile,BufRead {.,}arch-inventory,=tagging-method setf arch
endif

if !has_key(g:polyglot_is_disabled, '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(g:polyglot_is_disabled, 'applescript')
  au BufNewFile,BufRead *.applescript,*.scpt setf applescript
endif

if !has_key(g:polyglot_is_disabled, 'apiblueprint')
  au BufNewFile,BufRead *.apib setf apiblueprint
endif

if !has_key(g:polyglot_is_disabled, '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(g:polyglot_is_disabled, 'ant')
  au BufNewFile,BufRead build.xml setf ant
endif

if !has_key(g:polyglot_is_disabled, 'xml')
  au BufNewFile,BufRead *.adml,*.admx,*.ant,*.axaml,*.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,*.hzp,*.iml,*.ivy,*.jelly,*.jsproj,*.kml,*.launch,*.mdpolicy,*.mjml,*.mod,*.mxml,*.natvis,*.ncl,*.ndproj,*.nproj,*.nuspec,*.odd,*.osm,*.pkgproj,*.pluginspec,*.proj,*.props,*.psc1,*.pt,*.qhelp,*.rdf,*.res,*.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,*.xmp,*.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(g:polyglot_is_disabled, 'csv')
  au BufNewFile,BufRead *.csv,*.tab,*.tsv setf csv
endif

if !has_key(g:polyglot_is_disabled, 'ampl')
  " AMPL
  au BufNewFile,BufRead *.run setf ampl
endif

if !has_key(g:polyglot_is_disabled, 'aml')
  au BufNewFile,BufRead *.aml setf aml
endif

if !has_key(g:polyglot_is_disabled, 'alsaconf')
  au BufNewFile,BufRead */etc/asound.conf,*/usr/share/alsa/alsa.conf,{.,}asoundrc setf alsaconf
endif

if !has_key(g:polyglot_is_disabled, 'conf')
  au BufNewFile,BufRead *.conf,*/etc/hosts,auto.master,config setf conf
endif

if !has_key(g:polyglot_is_disabled, 'master')
  au BufNewFile,BufRead *.mas,*.master setf master
endif

if !has_key(g:polyglot_is_disabled, 'aidl')
  " AIDL
  au BufNewFile,BufRead *.aidl setf aidl
endif

if !has_key(g:polyglot_is_disabled, 'ahdl')
  " AHDL
  au BufNewFile,BufRead *.tdf setf ahdl
endif

if !has_key(g:polyglot_is_disabled, 'ada')
  " Ada (83, 9X, 95)
  au BufNewFile,BufRead *.ada,*.ada_m,*.adb,*.adc,*.ads,*.gpr setf ada
endif

if !has_key(g:polyglot_is_disabled, 'acpiasl')
  au BufNewFile,BufRead *.asl,*.dsl setf asl
endif

if !has_key(g:polyglot_is_disabled, 'acedb')
  " AceDB
  au BufNewFile,BufRead *.wrm setf acedb
endif

if !has_key(g:polyglot_is_disabled, 'abel')
  " ABEL
  au BufNewFile,BufRead *.abl setf abel
endif

if !has_key(g:polyglot_is_disabled, 'abc')
  " ABC music notation
  au BufNewFile,BufRead *.abc setf abc
endif

if !has_key(g:polyglot_is_disabled, 'abaqus')
  au! BufNewFile,BufRead,BufWritePost *.inp call polyglot#detect#Inp()
endif

if !has_key(g:polyglot_is_disabled, 'abap')
  " ABAB/4
  au BufNewFile,BufRead *.abap setf abap
endif

if !has_key(g:polyglot_is_disabled, 'aap')
  " A-A-P recipe
  au BufNewFile,BufRead *.aap setf aap
endif

if !has_key(g:polyglot_is_disabled, 'a65')
  " XA65 MOS6510 cross assembler
  au BufNewFile,BufRead *.a65 setf a65
endif

if !has_key(g:polyglot_is_disabled, 'a2ps')
  au BufNewFile,BufRead */etc/a2ps.cfg,*/etc/a2ps/*.cfg,{.,}a2psrc,a2psrc setf a2ps
endif

if !has_key(g:polyglot_is_disabled, 'cfg')
  au BufNewFile,BufRead *.cfg,*.hgrc,*hgrc setf cfg
endif

if !has_key(g:polyglot_is_disabled, '8th')
  " 8th (Firth-derivative)
  au BufNewFile,BufRead *.8th setf 8th
endif


" DO NOT EDIT CODE ABOVE, IT IS GENERATED WITH MAKEFILE

let s:detect_func = 'shebang#Detect'

func! s:PolyglotObserve(fn)
  call function("polyglot#" . a:fn)
endfunc

func! s:Observe()
  augroup polyglot-observer
    au!
    au CursorHold,CursorHoldI <buffer> if (&ft == "" || &ft == "conf") | call s:PolyglotObserve(s:detect_func) | endif
  augroup END
endfunc

au BufNewFile,BufRead,StdinReadPost,BufWritePost * if (&ft == "" || &ft == "conf") && expand("<afile>:e") == "" |
  \ call polyglot#shebang#Detect() | endif

au BufWinEnter * if &ft == "" && expand("<afile>:e") == "" |
  \ call s:Observe() | endif

au BufWritePost * au! polyglot-observer

augroup END

endif

if !has_key(g:polyglot_is_disabled, 'sensible')
  " Use 2-spaces tab indentation by default
  if &tabstop == 8
    let &tabstop = 2
  endif

  " Set shiftwidth to proper value as users often mix it with tabstop
  if &shiftwidth > &tabstop
    let &shiftwidth = &tabstop
  endif

  " Use utf-8 encoding by default
  set encoding=utf-8

  " Reload unchanged files automatically.
  set autoread

  " This is needed to avoid swapfile warning when auto-reloading
  set shortmess+=A

  " Avoids swapfiles in current directory
  if &directory =~# '^\.,'
    if !empty($HOME)
      if has('win32')
        let &directory = expand('$HOME/vimfiles') . '//,' . &directory
      else
        let &directory = expand('$HOME/.vim') . '//,' . &directory
      endif
    endif
    if !empty($XDG_DATA_HOME)
      let &directory = expand('$XDG_DATA_HOME') . '//,' . &directory
    endif
    if has('macunix')
      let &directory = expand('$HOME/Library/Autosave Information') . '//,' . &directory
    endif
  endif

  " Autoindent when starting new line, or using `o` or `O`.
  set autoindent
endif

if !has_key(g:polyglot_is_disabled, 'autoindent')
  " Code below re-implements sleuth for vim-polyglot
  let g:loaded_sleuth = 1

  let s:default_shiftwidth = &shiftwidth

  func! s:get_shiftwidth(indents) abort
    let shiftwidth = 0
    let max_count = 0
    let final_counts = {}
    for [indent, indent_count] in items(a:indents)
      let indent_count = indent_count * 1.5
      for [indent2, indent2_count] in items(a:indents)
        if indent2 > indent && indent2 % indent == 0
          let indent_count = indent_count + indent2_count
        endif
      endfor
      let final_counts[indent] = indent_count
    endfor
    for [indent, final_count] in items(final_counts)
      if final_count > max_count
        let shiftwidth = indent
        let max_count = final_count
      endif
    endfor
    return shiftwidth
  endfunc

  func! 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 lineno = 0
    let stack = [0]
    let indents = { '2': 0, '3': 0, '4': 0, '6': 0, '8': 0 }

    for line in a:lines
      let lineno += 1

      if line =~# '^\s*$'
        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

      if line[0] == "\t"
        let spaces_minus_tabs -= 1
      else
        if line[0] == " "
          let spaces_minus_tabs += 1
        endif
        let indent = len(matchstr(line, '^ *'))
        while stack[-1] > indent
          call remove(stack, -1)
        endwhile

        let indent_inc = indent - stack[-1]

        if indent_inc == 0 && len(stack) > 1
          let indent_inc = indent - stack[-2]
        endif

        if has_key(indents, indent_inc)
          let indents[indent_inc] += 1
          let prev_indent = indent
        endif

        if stack[-1] != indent
          call add(stack, indent)
        endif
      endif
    endfor

    if spaces_minus_tabs < 0
      setlocal noexpandtab
      let &l:shiftwidth=&tabstop
      return 1
    endif

    let shiftwidth = s:get_shiftwidth(indents)

    if shiftwidth > 0
      setlocal expandtab
      let &l:shiftwidth=shiftwidth
      try
        " Sunchronize tabstop with shiftwidth
        let &l:softtabstop = -1
      catch /^Vim\%((\a\+)\)\=:E487/
        " -1 was not supported before Vim 7.4
        let &l:softtabstop = a:num_spaces
      endtry
      return 1
    endif

    return 0
  endfunc

  func! s:detect_indent() abort
    if &buftype ==# 'help'
      return
    endif

    " Do not autodetect indent if language or user sets it
    if &l:shiftwidth != s:default_shiftwidth
      return
    endif

    let b:sleuth_culprit = expand("<afile>:p")
    if s:guess(getline(1, 128))
      return
    endif
    if s:guess(getline(1, 1024))
      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

    let b:sleuth_culprit = "default"
  endfunc

  set smarttab

  func! 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
  endfunc

  augroup polyglot-sleuth
    au!
    au BufEnter * call s:detect_indent()
    au User Flags call Hoist('buffer', 5, 'SleuthIndicator')
  augroup END

  command! -bar -bang Sleuth call s:detect_indent()
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

" *.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 polyglot#ft#FTbtm()

" BIND zone
au BufNewFile,BufRead *.db			call polyglot#ft#BindzoneCheck('')

" C or lpc
au BufNewFile,BufRead *.c			call polyglot#ft#FTlpc()

" Cynlib
" .cc and .cpp files can be C++ or Cynlib.
au BufNewFile,BufRead *.cpp if exists("cynlib_syntax_for_cpp")|setf cynlib|else|setf cpp|endif

au BufNewFile,BufRead *.h			call polyglot#ft#FTheader()

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

" Changes for WEB and CWEB or CHILL
au BufNewFile,BufRead *.ch			call polyglot#ft#FTchange()

" Clever or dtd
au BufNewFile,BufRead *.ent			call polyglot#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

au BufNewFile,BufRead *.cpy
	\ if getline(1) =~ '^##' |
	\   setf python |
	\ else |
	\   setf cobol |
	\ endif

" Euphoria 3 or 4
au BufNewFile,BufRead *.eu,*.ew,*.ex,*.exu,*.exw  call polyglot#ft#EuphoriaCheck()
if has("fname_case")
   au BufNewFile,BufRead *.EU,*.EW,*.EX,*.EXU,*.EXW  call polyglot#ft#EuphoriaCheck()
endif

au BufNewFile,BufRead control
	\  if getline(1) =~ '^Source:'
	\|   setf debcontrol
	\| endif

au BufNewFile,BufRead copyright
	\  if getline(1) =~ '^Format:'
	\|   setf debcopyright
	\| endif

" the D language or dtrace
au BufNewFile,BufRead *.d			call polyglot#ft#DtraceCheck()

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

" 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 polyglot#ft#BindzoneCheck('dcl')

au BufNewFile,BufRead *.edn
	\ if getline(1) =~ '^\s*(\s*edif\>' |
	\   setf edif |
	\ else |
	\   setf clojure |
	\ endif

" Eiffel or Specman or Euphoria
au BufNewFile,BufRead *.e,*.E			call polyglot#ft#FTe()

if !empty($XDG_CONFIG_HOME)
  au BufNewFile,BufRead $XDG_CONFIG_HOME/git/config		setf gitconfig
endif

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

if !empty($GNUPGHOME)
  au BufNewFile,BufRead $GNUPGHOME/options	setf gpg
  au BufNewFile,BufRead $GNUPGHOME/gpg.conf	setf gpg
endif

" HTML (.shtml and .stm for server side)
au BufNewFile,BufRead *.html,*.htm,*.shtml,*.stm  call polyglot#ft#FThtml()

" IDL (Interface Description Language)
au BufNewFile,BufRead *.idl			call polyglot#ft#FTidl()

au BufNewFile,BufRead indent.pro		call polyglot#ft#ProtoCheck('indent')

" IDL (Interactive Data Language)
au BufNewFile,BufRead *.pro			call polyglot#ft#ProtoCheck('idlang')

" M4
au BufNewFile,BufRead *.m4
	\ if expand("<afile>") !~? 'html.m4$\|fvwm2rc' | setf m4 | endif

" Mathematica, Matlab, Murphi or Objective C
au BufNewFile,BufRead *.m			call polyglot#ft#FTm()

" MMIX or VMS makefile
au BufNewFile,BufRead *.mms			call polyglot#ft#FTmms()

" Modsim III (or LambdaProlog)
au BufNewFile,BufRead *.mod
	\ if getline(1) =~ '\<module\>' |
	\   setf lprolog |
	\ else |
	\   setf modsim3 |
	\ endif

" Mutt setup files (must be before catch *.rc)
au BufNewFile,BufRead */etc/Muttrc.d/*		call s:StarSetf('muttrc')

" 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 *.[1-9]			call polyglot#ft#FTnroff()

" Nroff or Objective C++
au BufNewFile,BufRead *.mm			call polyglot#ft#FTmm()

" Pacman hooks
au BufNewFile,BufRead *.hook
	\ if getline(1) == '[Trigger]' |
	\   setf dosini |
	\ endif

" Perl
au BufNewFile,BufRead *.pl			call polyglot#ft#FTpl()

" Perl, XPM or XPM2
au BufNewFile,BufRead *.pm
	\ if getline(1) =~ "XPM2" |
	\   setf xpm2 |
	\ elseif getline(1) =~ "XPM" |
	\   setf xpm |
	\ else |
	\   setf perl |
	\ endif

" Povray, PHP or assembly
au BufNewFile,BufRead *.inc			call polyglot#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

" Progress or CWEB
au BufNewFile,BufRead *.w			call polyglot#ft#FTprogress_cweb()

" Progress or assembly
au BufNewFile,BufRead *.i			call polyglot#ft#FTprogress_asm()

" Progress or Pascal
au BufNewFile,BufRead *.p			call polyglot#ft#FTprogress_pascal()

" Software Distributor Product Specification File (POSIX 1387.2-1995)
au BufNewFile,BufRead INDEX,INFO
	\ if getline(1) =~ '^\s*\(distribution\|installed_software\|root\|bundle\|product\)\s*$' |
	\   setf psf |
	\ endif

" 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

" Rexx, Rebol or R
au BufNewFile,BufRead *.r,*.R				call polyglot#ft#FTr()

" Sendmail .mc files are actually m4.  Could also be MS Message text file.
au BufNewFile,BufRead *.mc			call polyglot#ft#McSetf()

" 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

" 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 polyglot#ft#SetFileTypeSH("bash")
au BufNewFile,BufRead .kshrc,*.ksh call polyglot#ft#SetFileTypeSH("ksh")
au BufNewFile,BufRead */etc/profile,.profile,*.sh,*.env call polyglot#ft#SetFileTypeSH(getline(1))


" Shell script (Arch Linux) or PHP file (Drupal)
au BufNewFile,BufRead *.install
	\ if getline(1) =~ '<?php' |
	\   setf php |
	\ else |
	\   call polyglot#ft#SetFileTypeSH("bash") |
	\ endif

" tcsh scripts (patterns ending in a star further below)
au BufNewFile,BufRead .tcshrc,*.tcsh,tcsh.tcshrc,tcsh.login	call polyglot#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 polyglot#ft#CSH()

au BufNewFile,BufRead *.cls
	\ if getline(1) =~ '^%' |
	\  setf tex |
	\ elseif getline(1)[0] == '#' && getline(1) =~ 'rexx' |
	\  setf rexx |
	\ else |
	\  setf st |
	\ endif

" 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

au BufNewFile,BufRead *.rules			call polyglot#ft#FTRules()

" SQL
au BufNewFile,BufRead *.sql			call polyglot#ft#SQL()

" 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

au BufNewFile,BufRead *.tex			call polyglot#ft#FTtex()

" 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 polyglot#ft#FTVB("form")

" 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

" 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

" 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

au BufNewFile,BufRead *.ms
	\ if !polyglot#ft#FTnroff() | setf xmath | endif

" XML  specific variants: docbk and xbl
au BufNewFile,BufRead *.xml			call polyglot#ft#FTxml()

" Yacc or racc
au BufNewFile,BufRead *.y			call polyglot#ft#FTy()

" Zope
"   dtml (zope dynamic template markup language), pt (zope page template),
"   cpt (zope form controller page template)
au BufNewFile,BufRead *.dtml,*.pt,*.cpt		call polyglot#ft#FThtml()
"   zsql (zope sql method)
au BufNewFile,BufRead *.zsql			call polyglot#ft#SQL()

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')

" 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 polyglot#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 polyglot#ft#SetFileTypeSH("bash")
au BufNewFile,BufRead .kshrc* call polyglot#ft#SetFileTypeSH("ksh")
au BufNewFile,BufRead .profile* call polyglot#ft#SetFileTypeSH(getline(1))

" tcsh scripts ending in a star
au BufNewFile,BufRead .tcshrc*	call polyglot#ft#SetFileTypeShell("tcsh")

" csh scripts ending in a star
au BufNewFile,BufRead .login*,.cshrc*  call polyglot#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')


" 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

" Use the filetype detect plugins.  They may overrule any of the previously
" detected filetypes. No need to load if everything is enabled
if exists("did_load_filetypes") && exists("g:polyglot_disabled")
  unlet did_load_filetypes
  runtime! extras/filetype.vim
endif

let s:runtime = resolve($VIMRUNTIME)
let s:base = resolve(expand('<sfile>:p:h:h:h'))

func! s:process_rtp(rtp)
  " Remove vim-polyglot from paths and make everything absolute
  let rtp = []
  for path in a:rtp[1:-2]
    let abspath = resolve(path)
    if stridx(abspath, s:base) != 0
      call add(rtp, abspath)
    endif
  endfor
  let result = [a:rtp[0]]
  " Then all other stuff (until vimruntime)
  let i = 0
  for path in rtp[0:len(rtp)-1]
    if path == s:runtime
      break
    endif
    call add(result, path)
    let i = i + 1
  endfor
  " Then vim-polyglot
  call add(result, s:base)
  " Then all other files, until after-files
  while i < len(rtp)
    let path = rtp[i]
    if match(path, '[/\\]after$') > -1
      break
    endif
    call add(result, path)
    let i = i + 1
  endwhile
  " Then vim-polyglot after path
  call add(result, s:base . '/after')
  " Then all other after paths
  while i < len(rtp)
    let path = rtp[i]
    call add(result, path)
    let i = i + 1
  endwhile
  " User's after directory is always last
  call add(result, a:rtp[len(a:rtp)-1])
  return result
endfunc

" We want vim-polyglot files to load only as fallback
let &rtp = join(s:process_rtp(split(&rtp, ',')), ',')

" Restore 'cpoptions'
let &cpo = s:cpo_save
unlet s:cpo_save
