summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--README.md3
-rw-r--r--autoload/polyglot/detect.vim75
-rw-r--r--autoload/polyglot/shebang.vim2
-rw-r--r--autoload/polyglot/sleuth.vim15
-rw-r--r--ftdetect/polyglot.vim161
-rw-r--r--ftoff.vim3
-rw-r--r--ftplugin/Dockerfile.vim37
-rw-r--r--ftplugin/make.vim37
-rw-r--r--ftplugin/sbt.vim19
-rw-r--r--ftplugin/xf86conf.vim23
-rw-r--r--indent/Dockerfile.vim27
-rw-r--r--indent/make.vim120
-rw-r--r--indent/xf86conf.vim41
-rw-r--r--packages.yaml67
-rwxr-xr-xscripts/build37
-rwxr-xr-xscripts/import_vim209
-rwxr-xr-xscripts/test43
-rw-r--r--syntax/Dockerfile.vim63
-rw-r--r--syntax/make.vim148
-rw-r--r--syntax/sbt.vim9
-rw-r--r--syntax/xf86conf.vim209
-rw-r--r--tests/extensions.vim4
-rw-r--r--tests/filetypes.vim32
-rw-r--r--tests/native.vim703
24 files changed, 1787 insertions, 300 deletions
diff --git a/README.md b/README.md
index b5b2e7cf..4c4452ac 100644
--- a/README.md
+++ b/README.md
@@ -7,7 +7,7 @@ A collection of language packs for Vim.
> One to rule them all, one to find them, one to bring them all and in the darkness bind them.
- It **won't affect your startup time**, as scripts are loaded only on demand\*.
-- It **installs and updates 120+ times faster** than the <!--Package Count-->591<!--/Package Count--> packages it consists of.
+- It **installs and updates 120+ times faster** than the <!--Package Count-->593<!--/Package Count--> packages it consists of.
- It is more secure because scripts loaded for all extensions are generated by vim-polyglot (ftdetect).
- Solid syntax and indentation support (other features skipped). Only the best language packs.
- All unnecessary files are ignored (like enormous documentation from php support).
@@ -163,7 +163,6 @@ On top of all language packs from [vim repository](https://github.com/vim/vim/tr
- [rst](https://github.com/marshallward/vim-restructuredtext)
- [ruby](https://github.com/vim-ruby/vim-ruby)
- [rust](https://github.com/rust-lang/rust.vim)
-- [sbt](https://github.com/derekwyatt/vim-sbt)
- [scala](https://github.com/derekwyatt/vim-scala)
- [scss](https://github.com/cakebaker/scss-syntax.vim)
- [sh](https://github.com/arzg/vim-sh)
diff --git a/autoload/polyglot/detect.vim b/autoload/polyglot/detect.vim
index 85b9cd6a..bdd2e48d 100644
--- a/autoload/polyglot/detect.vim
+++ b/autoload/polyglot/detect.vim
@@ -4,7 +4,10 @@ set cpo&vim
" DO NOT EDIT CODE BELOW, IT IS GENERATED WITH MAKEFILE
-func! polyglot#detect#Inp()
+func! polyglot#detect#Inp(...)
+ if a:0 != 1 && did_filetype()
+ return
+ endif
let line = getline(nextnonblank(1))
if line =~# '^\*'
set ft=abaqus | return
@@ -17,14 +20,20 @@ func! polyglot#detect#Inp()
endfor
endfunc
-func! polyglot#detect#Asa()
+func! polyglot#detect#Asa(...)
+ if a:0 != 1 && did_filetype()
+ return
+ endif
if exists("g:filetype_asa")
let &ft = g:filetype_asa | return
endif
set ft=aspvbs | return
endfunc
-func! polyglot#detect#Asp()
+func! polyglot#detect#Asp(...)
+ if a:0 != 1 && did_filetype()
+ return
+ endif
if exists("g:filetype_asp")
let &ft = g:filetype_asp | return
endif
@@ -37,7 +46,10 @@ func! polyglot#detect#Asp()
set ft=aspvbs | return
endfunc
-func! polyglot#detect#H()
+func! polyglot#detect#H(...)
+ if a:0 != 1 && did_filetype()
+ return
+ endif
for lnum in range(1, min([line("$"), 200]))
let line = getline(lnum)
if line =~# '^\s*\(@\(interface\|class\|protocol\|property\|end\|synchronised\|selector\|implementation\)\(\<\|\>\)\|#import\s\+.\+\.h[">]\)'
@@ -56,7 +68,10 @@ func! polyglot#detect#H()
set ft=cpp | return
endfunc
-func! polyglot#detect#M()
+func! polyglot#detect#M(...)
+ if a:0 != 1 && did_filetype()
+ return
+ endif
let saw_comment = 0
for lnum in range(1, min([line("$"), 100]))
let line = getline(lnum)
@@ -85,7 +100,10 @@ func! polyglot#detect#M()
set ft=octave | return
endfunc
-func! polyglot#detect#Fs()
+func! polyglot#detect#Fs(...)
+ if a:0 != 1 && did_filetype()
+ return
+ endif
for lnum in range(1, min([line("$"), 50]))
let line = getline(lnum)
if line =~# '^\(: \|new-device\)'
@@ -104,7 +122,10 @@ func! polyglot#detect#Fs()
set ft=forth | return
endfunc
-func! polyglot#detect#Re()
+func! polyglot#detect#Re(...)
+ if a:0 != 1 && did_filetype()
+ return
+ endif
for lnum in range(1, min([line("$"), 50]))
let line = getline(lnum)
if line =~# '^\s*#\%(\%(if\|ifdef\|define\|pragma\)\s\+\w\|\s*include\s\+[<"]\|template\s*<\)'
@@ -114,7 +135,10 @@ func! polyglot#detect#Re()
endfor
endfunc
-func! polyglot#detect#Idr()
+func! polyglot#detect#Idr(...)
+ if a:0 != 1 && did_filetype()
+ return
+ endif
for lnum in range(1, min([line("$"), 5]))
let line = getline(lnum)
if line =~# '^\s*--.*[Ii]dris \=1'
@@ -148,7 +172,10 @@ func! polyglot#detect#Idr()
set ft=idris2 | return
endfunc
-func! polyglot#detect#Lidr()
+func! polyglot#detect#Lidr(...)
+ if a:0 != 1 && did_filetype()
+ return
+ endif
for lnum in range(1, min([line("$"), 200]))
let line = getline(lnum)
if line =~# '^>\s*--.*[Ii]dris \=1'
@@ -158,7 +185,10 @@ func! polyglot#detect#Lidr()
set ft=lidris2 | return
endfunc
-func! polyglot#detect#Bas()
+func! polyglot#detect#Bas(...)
+ if a:0 != 1 && did_filetype()
+ return
+ endif
for lnum in range(1, min([line("$"), 5]))
let line = getline(lnum)
if line =~? 'VB_Name\|Begin VB\.\(Form\|MDIForm\|UserControl\)'
@@ -168,7 +198,10 @@ func! polyglot#detect#Bas()
set ft=basic | return
endfunc
-func! polyglot#detect#Pm()
+func! polyglot#detect#Pm(...)
+ if a:0 != 1 && did_filetype()
+ return
+ endif
let line = getline(nextnonblank(1))
if line =~# 'XPM2'
set ft=xpm2 | return
@@ -192,7 +225,10 @@ func! polyglot#detect#Pm()
set ft=perl | return
endfunc
-func! polyglot#detect#Pl()
+func! polyglot#detect#Pl(...)
+ if a:0 != 1 && did_filetype()
+ return
+ endif
let line = getline(nextnonblank(1))
if line =~# '^[^#]*:-' || line =~# '^\s*\%(%\|/\*\)' || line =~# '\.\s*$'
set ft=prolog | return
@@ -213,7 +249,10 @@ func! polyglot#detect#Pl()
set ft=perl | return
endfunc
-func! polyglot#detect#T()
+func! polyglot#detect#T(...)
+ if a:0 != 1 && did_filetype()
+ return
+ endif
for lnum in range(1, min([line("$"), 5]))
let line = getline(lnum)
if line =~# '^\.'
@@ -236,7 +275,10 @@ func! polyglot#detect#T()
set ft=perl | return
endfunc
-func! polyglot#detect#Tt2()
+func! polyglot#detect#Tt2(...)
+ if a:0 != 1 && did_filetype()
+ return
+ endif
for lnum in range(1, min([line("$"), 3]))
let line = getline(lnum)
if line =~? '<\%(!DOCTYPE HTML\|[%?]\|html\)'
@@ -246,7 +288,10 @@ func! polyglot#detect#Tt2()
set ft=tt2 | return
endfunc
-func! polyglot#detect#Html()
+func! polyglot#detect#Html(...)
+ if a:0 != 1 && did_filetype()
+ return
+ endif
let line = getline(nextnonblank(1))
if line =~# '^\(%\|<[%&].*>\)'
set ft=mason | return
diff --git a/autoload/polyglot/shebang.vim b/autoload/polyglot/shebang.vim
index 62eb11a2..ef6bc0ed 100644
--- a/autoload/polyglot/shebang.vim
+++ b/autoload/polyglot/shebang.vim
@@ -513,7 +513,6 @@ let s:interpreters = {
\ 'pdksh': 'sh',
\ 'rc': 'sh',
\ 'sh': 'sh',
- \ 'zsh': 'sh',
\ 'boolector': 'smt2',
\ 'cvc4': 'smt2',
\ 'mathsat5': 'smt2',
@@ -526,6 +525,7 @@ let s:interpreters = {
\ 'z3': 'smt2',
\ 'deno': 'typescript',
\ 'ts-node': 'typescript',
+ \ 'zsh': 'zsh',
\ }
" DO NOT EDIT CODE ABOVE, IT IS GENERATED WITH MAKEFILE
diff --git a/autoload/polyglot/sleuth.vim b/autoload/polyglot/sleuth.vim
index 1250badf..f8dc2344 100644
--- a/autoload/polyglot/sleuth.vim
+++ b/autoload/polyglot/sleuth.vim
@@ -1,6 +1,5 @@
let s:globs = {
\ '8th': '*.8th',
- \ 'Dockerfile': '*.dockerfile,*.dock,*.Dockerfile,Dockerfile,dockerfile,Dockerfile*',
\ 'Jenkinsfile': '*.jenkinsfile,*.Jenkinsfile,Jenkinsfile,Jenkinsfile*',
\ 'a2ps': 'a2psrc,.a2psrc',
\ 'a65': '*.a65',
@@ -35,7 +34,7 @@ let s:globs = {
\ 'atlas': '*.atl,*.as',
\ 'autohotkey': '*.ahk,*.ahkl',
\ 'autoit': '*.au3',
- \ 'automake': '*.mak,*.dsp,*.mk,Makefile.am,makefile.am,GNUmakefile.am',
+ \ 'automake': '[mM]akefile.am,GNUmakefile.am',
\ 'ave': '*.ave',
\ 'awk': '*.awk,*.gawk',
\ 'b': '*.mch,*.ref,*.imp',
@@ -203,7 +202,7 @@ let s:globs = {
\ 'gtkrc': '.gtkrc,gtkrc,.gtkrc*,gtkrc*',
\ 'haml': '*.haml,*.haml.deface,*.hamlc,*.hamlbars',
\ 'hamster': '*.hsc,*.hsm',
- \ 'haproxy': '*.cfg,haproxy.cfg,haproxy*.conf*',
+ \ 'haproxy': 'haproxy*.conf*,haproxy*.cfg*',
\ 'haskell': '*.hs,*.hs-boot,*.hsc,*.bpk,*.hsig',
\ 'haste': '*.ht',
\ 'hastepreproc': '*.htpp',
@@ -305,6 +304,7 @@ let s:globs = {
\ 'mail': '*.eml,snd.\d\+,.letter,.letter.\d\+,.followup,.article,.article.\d\+,pico.\d\+,mutt{ng,}-*-\w\+,mutt[[:alnum:]_-]\\\{6\},neomutt-*-\w\+,neomutt[[:alnum:]_-]\\\{6\},ae\d\+.txt,{neo,}mutt[[:alnum:]._-]\\\{6\},reportbug-*',
\ 'mailaliases': '',
\ 'mailcap': '.mailcap,mailcap',
+ \ 'make': '*.mak,*.dsp,*.mk,*[mM]akefile',
\ 'mako': '*.mako,*.mao',
\ 'mallard': '*.page',
\ 'manconf': 'man.config',
@@ -374,7 +374,7 @@ let s:globs = {
\ 'pamconf': '',
\ 'pamenv': 'pam_env.conf,.pam_environment',
\ 'papp': '*.papp,*.pxml,*.pxsl',
- \ 'pascal': '*.pas,*.dpr',
+ \ 'pascal': '*.pas,*.pp,*.dpr,*.lpr',
\ 'passwd': '',
\ 'pccts': '*.g',
\ 'pcmk': '*.pcmk',
@@ -455,7 +455,7 @@ let s:globs = {
\ 'sas': '*.sas',
\ 'sass': '*.sass',
\ 'sather': '*.sa',
- \ 'sbt.scala': '*.sbt',
+ \ 'sbt': '*.sbt',
\ 'scala': '*.scala,*.kojo,*.sc',
\ 'scheme': '*.scm,*.ss,*.rkt',
\ 'scilab': '*.sci,*.sce',
@@ -469,7 +469,7 @@ let s:globs = {
\ 'services': '',
\ 'setserial': '',
\ 'sexplib': '*.sexp',
- \ 'sh': '*.sh,*.bash,*.bats,*.cgi,*.command,*.env,*.fcgi,*.ksh,*.sh.in,*.tmux,*.tool,.bash_aliases,.bash_history,.bash_logout,.bash_profile,.bashrc,.cshrc,.env,.env.example,.flaskenv,.login,.profile,9fs,PKGBUILD,bash_aliases,bash_logout,bash_profile,bashrc,cshrc,gradlew,login,man,profile,zlogin,zlogout,zprofile,zshenv,zshrc',
+ \ 'sh': '*.sh,*.bash,*.bats,*.cgi,*.command,*.env,*.fcgi,*.ksh,*.sh.in,*.tmux,*.tool,.bash_aliases,.bash_history,.bash_logout,.bash_profile,.bashrc,.cshrc,.env,.env.example,.flaskenv,.login,.profile,9fs,PKGBUILD,bash_aliases,bash_logout,bash_profile,bashrc,cshrc,gradlew,login,man,profile',
\ 'sieve': '*.siv,*.sieve',
\ 'sil': '*.sil',
\ 'simula': '*.sim',
@@ -536,7 +536,7 @@ let s:globs = {
\ 'textile': '*.textile',
\ 'tf': '*.tf,.tfrc,tfrc',
\ 'thrift': '*.thrift',
- \ 'tidy': '.tidyrc,tidyrc',
+ \ 'tidy': '.tidyrc,tidyrc,tidy.conf',
\ 'tilde': '*.t.html',
\ 'tli': '*.tli',
\ 'tmux': '.tmux*.conf',
@@ -594,6 +594,7 @@ let s:globs = {
\ 'wvdial': 'wvdial.conf,.wvdialrc',
\ 'xdc': '*.xdc',
\ 'xdefaults': '*.ad,.Xdefaults,.Xpdefaults,.Xresources,xdm-config,Xresources*',
+ \ 'xf86conf': 'XF86Config-4*,XF86Config*,xorg.conf,xorg.conf-4',
\ 'xhtml': '*.xhtml,*.xht',
\ 'xinetd': '',
\ 'xmath': '*.msc,*.msf',
diff --git a/ftdetect/polyglot.vim b/ftdetect/polyglot.vim
index 960e41b1..a408d502 100644
--- a/ftdetect/polyglot.vim
+++ b/ftdetect/polyglot.vim
@@ -27,6 +27,9 @@ let did_load_filetypes = 1
let s:cpo_save = &cpo
set cpo&vim
+" Be consistent across different systems
+set nofileignorecase
+
func! s:Observe(fn)
let b:polyglot_observe = a:fn
augroup polyglot-observer
@@ -118,9 +121,10 @@ augroup filetypedetect
" DO NOT EDIT CODE BELOW, IT IS GENERATED WITH MAKEFILE
-if !has_key(s:disabled_packages, 'html')
- au! BufNewFile,BufRead,BufWritePost *.html call polyglot#detect#Html()
- au BufNewFile,BufRead *.htm,*.html.hl,*.inc,*.st,*.xht,*.xhtml setf html
+if !has_key(s:disabled_packages, '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(s:disabled_packages, 'pullrequest')
@@ -351,7 +355,7 @@ if !has_key(s:disabled_packages, 'tpp')
endif
if !has_key(s:disabled_packages, 'tidy')
- au BufNewFile,BufRead {.,}tidyrc,tidyrc setf tidy
+ au BufNewFile,BufRead {.,}tidyrc,tidy.conf,tidyrc setf tidy
endif
if !has_key(s:disabled_packages, 'texmf')
@@ -563,10 +567,6 @@ if !has_key(s:disabled_packages, 'sieve')
au BufNewFile,BufRead *.sieve,*.siv setf sieve
endif
-if !has_key(s:disabled_packages, 'sed')
- au BufNewFile,BufRead *.sed setf sed
-endif
-
if !has_key(s:disabled_packages, 'sdl')
au BufNewFile,BufRead *.pr,*.sdl setf sdl
endif
@@ -579,6 +579,10 @@ if !has_key(s:disabled_packages, 'scilab')
au BufNewFile,BufRead *.sce,*.sci setf scilab
endif
+if !has_key(s:disabled_packages, 'sbt')
+ au BufNewFile,BufRead *.sbt setf sbt
+endif
+
if !has_key(s:disabled_packages, 'sather')
au BufNewFile,BufRead *.sa setf sather
endif
@@ -781,7 +785,7 @@ if !has_key(s:disabled_packages, 'pdf')
endif
if !has_key(s:disabled_packages, 'pascal')
- au BufNewFile,BufRead *.dpr,*.pas setf pascal
+ au BufNewFile,BufRead *.dpr,*.lpr,*.pas,*.pp setf pascal
endif
if !has_key(s:disabled_packages, 'passwd')
@@ -887,10 +891,6 @@ if !has_key(s:disabled_packages, 'muttrc')
au BufNewFile,BufRead */.mutt{ng,}/mutt{ng,}rc* call s:StarSetf('muttrc')
endif
-if !has_key(s:disabled_packages, 'mysql')
- au BufNewFile,BufRead *.mysql setf mysql
-endif
-
if !has_key(s:disabled_packages, 'msql')
au BufNewFile,BufRead *.msql setf msql
endif
@@ -1242,6 +1242,11 @@ if !has_key(s:disabled_packages, 'tilde')
au BufNewFile,BufRead *.t.html setf tilde
endif
+if !has_key(s:disabled_packages, 'html')
+ au BufNewFile,BufRead,BufWritePost *.html call polyglot#detect#Html()
+ au BufNewFile,BufRead *.htm,*.html.hl,*.inc,*.st,*.xht,*.xhtml setf html
+endif
+
if !has_key(s:disabled_packages, 'hollywood')
au BufNewFile,BufRead *.hws setf hollywood
endif
@@ -1695,11 +1700,11 @@ if !has_key(s:disabled_packages, 'gitignore')
endif
if !has_key(s:disabled_packages, 'tads')
- au! BufNewFile,BufRead,BufWritePost *.t call polyglot#detect#T()
+ au BufNewFile,BufRead,BufWritePost *.t call polyglot#detect#T()
endif
if !has_key(s:disabled_packages, 'prolog')
- au! BufNewFile,BufRead,BufWritePost *.pl call polyglot#detect#Pl()
+ au BufNewFile,BufRead,BufWritePost *.pl call polyglot#detect#Pl()
au BufNewFile,BufRead *.pdb,*.pro,*.prolog,*.yap setf prolog
endif
@@ -1722,7 +1727,7 @@ if !has_key(s:disabled_packages, 'spec')
endif
if !has_key(s:disabled_packages, 'visual-basic')
- au! BufNewFile,BufRead,BufWritePost *.bas call polyglot#detect#Bas()
+ au BufNewFile,BufRead,BufWritePost *.bas call polyglot#detect#Bas()
au BufNewFile,BufRead *.cls,*.ctl,*.dsm,*.frm,*.frx,*.sba,*.vba,*.vbs setf vb
endif
@@ -1731,7 +1736,7 @@ if !has_key(s:disabled_packages, 'basic')
endif
if !has_key(s:disabled_packages, 'trasys')
- au! BufNewFile,BufRead,BufWritePost *.inp call polyglot#detect#Inp()
+ au BufNewFile,BufRead,BufWritePost *.inp call polyglot#detect#Inp()
endif
if !has_key(s:disabled_packages, 'zig')
@@ -1881,8 +1886,8 @@ if !has_key(s:disabled_packages, 'slim')
endif
if !has_key(s:disabled_packages, 'sh')
- au BufNewFile,BufRead *.bash,*.bats,*.cgi,*.command,*.env,*.fcgi,*.ksh,*.sh,*.sh.in,*.tmux,*.tool,*/etc/udev/cdsymlinks.conf,{.,}bash_aliases,{.,}bash_history,{.,}bash_logout,{.,}bash_profile,{.,}bashrc,{.,}cshrc,{.,}env,{.,}env.example,{.,}flaskenv,{.,}login,{.,}profile,9fs,PKGBUILD,bash_aliases,bash_logout,bash_profile,bashrc,cshrc,gradlew,login,man,profile,zlogin,zlogout,zprofile,zshenv,zshrc setf sh
- au BufNewFile,BufRead *.zsh,{.,}zfbfmarks,{.,}zlogin,{.,}zlogout,{.,}zprofile,{.,}zshenv,{.,}zshrc setf zsh
+ au BufNewFile,BufRead *.bash,*.bats,*.cgi,*.command,*.env,*.fcgi,*.ksh,*.sh,*.sh.in,*.tmux,*.tool,*/etc/udev/cdsymlinks.conf,{.,}bash_aliases,{.,}bash_history,{.,}bash_logout,{.,}bash_profile,{.,}bashrc,{.,}cshrc,{.,}env,{.,}env.example,{.,}flaskenv,{.,}login,{.,}profile,9fs,PKGBUILD,bash_aliases,bash_logout,bash_profile,bashrc,cshrc,gradlew,login,man,profile 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')
@@ -1892,10 +1897,6 @@ if !has_key(s:disabled_packages, 'scss')
au BufNewFile,BufRead *.scss setf scss
endif
-if !has_key(s:disabled_packages, 'sbt')
- au BufNewFile,BufRead *.sbt setf sbt.scala
-endif
-
if !has_key(s:disabled_packages, 'scala')
au BufNewFile,BufRead *.kojo,*.sc,*.scala setf scala
endif
@@ -1923,7 +1924,7 @@ if !has_key(s:disabled_packages, 'rst')
endif
if !has_key(s:disabled_packages, 'reason')
- au! BufNewFile,BufRead,BufWritePost *.re call polyglot#detect#Re()
+ au BufNewFile,BufRead,BufWritePost *.re call polyglot#detect#Re()
au BufNewFile,BufRead *.rei setf reason
endif
@@ -1936,9 +1937,9 @@ if !has_key(s:disabled_packages, 'raml')
endif
if !has_key(s:disabled_packages, '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,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
@@ -2018,14 +2019,14 @@ if !has_key(s:disabled_packages, 'pgsql')
endif
if !has_key(s:disabled_packages, '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,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,BufWritePost *.tt2 call polyglot#detect#Tt2()
+ au BufNewFile,BufRead,BufWritePost *.tt2 call polyglot#detect#Tt2()
au BufNewFile,BufRead *.xs setf xs
endif
@@ -2038,7 +2039,7 @@ if !has_key(s:disabled_packages, 'opencl')
endif
if !has_key(s:disabled_packages, 'octave')
- au! BufNewFile,BufRead,BufWritePost *.m call polyglot#detect#M()
+ au BufNewFile,BufRead,BufWritePost *.m call polyglot#detect#M()
au BufNewFile,BufRead *.oct setf octave
endif
@@ -2055,8 +2056,8 @@ if !has_key(s:disabled_packages, 'ocaml')
endif
if !has_key(s:disabled_packages, 'objc')
- au! BufNewFile,BufRead,BufWritePost *.m call polyglot#detect#M()
- au! BufNewFile,BufRead,BufWritePost *.h call polyglot#detect#H()
+ au BufNewFile,BufRead,BufWritePost *.m call polyglot#detect#M()
+ au BufNewFile,BufRead,BufWritePost *.h call polyglot#detect#H()
endif
if !has_key(s:disabled_packages, 'nix')
@@ -2074,7 +2075,7 @@ if !has_key(s:disabled_packages, 'nginx')
endif
if !has_key(s:disabled_packages, 'murphi')
- au! BufNewFile,BufRead,BufWritePost *.m call polyglot#detect#M()
+ au BufNewFile,BufRead,BufWritePost *.m call polyglot#detect#M()
endif
if !has_key(s:disabled_packages, 'moonscript')
@@ -2090,12 +2091,8 @@ if !has_key(s:disabled_packages, 'mdx')
au BufNewFile,BufRead *.mdx setf markdown.mdx
endif
-if !has_key(s:disabled_packages, 'markdown')
- au BufNewFile,BufRead *.markdown,*.md,*.mdown,*.mdwn,*.mkd,*.mkdn,*.mkdown,*.ronn,*.workbook,contents.lr setf markdown
-endif
-
if !has_key(s:disabled_packages, 'mathematica')
- au! BufNewFile,BufRead,BufWritePost *.m call polyglot#detect#M()
+ 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
@@ -2183,14 +2180,14 @@ if !has_key(s:disabled_packages, 'ion')
endif
if !has_key(s:disabled_packages, 'idris2')
- au! BufNewFile,BufRead,BufWritePost *.idr call polyglot#detect#Idr()
+ 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()
+ au BufNewFile,BufRead,BufWritePost *.lidr call polyglot#detect#Lidr()
endif
if !has_key(s:disabled_packages, 'idris')
- au! BufNewFile,BufRead,BufWritePost *.lidr call polyglot#detect#Lidr()
- au! BufNewFile,BufRead,BufWritePost *.idr call polyglot#detect#Idr()
+ 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
@@ -2218,6 +2215,11 @@ if !has_key(s:disabled_packages, 'haskell')
au BufNewFile,BufRead *.bpk,*.hs,*.hs-boot,*.hsc,*.hsig setf haskell
endif
+if !has_key(s:disabled_packages, 'haproxy')
+ au BufNewFile,BufRead haproxy*.conf* call s:StarSetf('haproxy')
+ au BufNewFile,BufRead haproxy*.cfg* call s:StarSetf('haproxy')
+endif
+
if !has_key(s:disabled_packages, 'handlebars')
au BufNewFile,BufRead *.hjs,*.hogan,*.hulk,*.mustache setf html.mustache
au BufNewFile,BufRead *.handlebars,*.hb,*.hbs,*.hdbs setf html.handlebars
@@ -2263,7 +2265,7 @@ if !has_key(s:disabled_packages, 'gmpl')
endif
if !has_key(s:disabled_packages, 'glsl')
- au! BufNewFile,BufRead,BufWritePost *.fs call polyglot#detect#Fs()
+ au BufNewFile,BufRead,BufWritePost *.fs call polyglot#detect#Fs()
au BufNewFile,BufRead *.comp,*.fp,*.frag,*.frg,*.fsh,*.fshader,*.geo,*.geom,*.glsl,*.glslf,*.glslv,*.gs,*.gshader,*.shader,*.tesc,*.tese,*.vert,*.vrx,*.vsh,*.vshader setf glsl
endif
@@ -2280,12 +2282,12 @@ if !has_key(s:disabled_packages, 'gdscript')
endif
if !has_key(s:disabled_packages, 'fsharp')
- au! BufNewFile,BufRead,BufWritePost *.fs call polyglot#detect#Fs()
+ au BufNewFile,BufRead,BufWritePost *.fs call polyglot#detect#Fs()
au BufNewFile,BufRead *.fsi,*.fsx setf fsharp
endif
if !has_key(s:disabled_packages, 'forth')
- au! BufNewFile,BufRead,BufWritePost *.fs call polyglot#detect#Fs()
+ au BufNewFile,BufRead,BufWritePost *.fs call polyglot#detect#Fs()
au BufNewFile,BufRead *.ft,*.fth setf forth
endif
@@ -2327,8 +2329,6 @@ if !has_key(s:disabled_packages, 'elixir')
endif
if !has_key(s:disabled_packages, 'dockerfile')
- au BufNewFile,BufRead *.Dockerfile,*.dock,*.dockerfile,Dockerfile,dockerfile setf Dockerfile
- au BufNewFile,BufRead Dockerfile* call s:StarSetf('Dockerfile')
au BufNewFile,BufRead docker-compose*.yaml,docker-compose*.yml setf yaml.docker-compose
endif
@@ -2336,6 +2336,14 @@ if !has_key(s:disabled_packages, 'yaml')
au BufNewFile,BufRead *.mir,*.reek,*.rviz,*.sublime-syntax,*.syntax,*.yaml,*.yaml-tmlanguage,*.yaml.sed,*.yml,*.yml.mysql,{.,}clang-format,{.,}clang-tidy,{.,}gemrc,fish_history,fish_read_history,glide.lock,yarn.lock setf yaml
endif
+if !has_key(s:disabled_packages, 'mysql')
+ au BufNewFile,BufRead *.mysql setf mysql
+endif
+
+if !has_key(s:disabled_packages, 'sed')
+ au BufNewFile,BufRead *.sed setf sed
+endif
+
if !has_key(s:disabled_packages, 'dlang')
au BufNewFile,BufRead *.d,*.di setf d
au BufNewFile,BufRead *.lst setf dcov
@@ -2374,6 +2382,10 @@ if !has_key(s:disabled_packages, 'coffee-script')
au BufNewFile,BufRead *.coffee.md,*.litcoffee setf litcoffee
endif
+if !has_key(s:disabled_packages, 'markdown')
+ au BufNewFile,BufRead *.markdown,*.md,*.mdown,*.mdwn,*.mkd,*.mkdn,*.mkdown,*.ronn,*.workbook,contents.lr setf markdown
+endif
+
if !has_key(s:disabled_packages, 'cmake')
au BufNewFile,BufRead *.cmake,*.cmake.in,CMakeLists.txt setf cmake
endif
@@ -2407,12 +2419,12 @@ if !has_key(s:disabled_packages, 'atlas')
endif
if !has_key(s:disabled_packages, 'aspperl')
- au! BufNewFile,BufRead,BufWritePost *.asp call polyglot#detect#Asp()
+ au BufNewFile,BufRead,BufWritePost *.asp call polyglot#detect#Asp()
endif
if !has_key(s:disabled_packages, 'aspvbs')
- au! BufNewFile,BufRead,BufWritePost *.asp call polyglot#detect#Asp()
- au! BufNewFile,BufRead,BufWritePost *.asa call polyglot#detect#Asa()
+ au BufNewFile,BufRead,BufWritePost *.asp call polyglot#detect#Asp()
+ au BufNewFile,BufRead,BufWritePost *.asa call polyglot#detect#Asa()
endif
if !has_key(s:disabled_packages, 'asn')
@@ -2420,13 +2432,17 @@ if !has_key(s:disabled_packages, 'asn')
endif
if !has_key(s:disabled_packages, 'automake')
- au BufNewFile,BufRead *.dsp,*.mak,*.mk,GNUmakefile.am,Makefile.am,makefile.am setf automake
+ au BufNewFile,BufRead GNUmakefile.am,[mM]akefile.am setf automake
endif
if !has_key(s:disabled_packages, 'elf')
au BufNewFile,BufRead *.am setf elf
endif
+if !has_key(s:disabled_packages, 'make')
+ au BufNewFile,BufRead *.dsp,*.mak,*.mk,*[mM]akefile setf make
+endif
+
if !has_key(s:disabled_packages, 'autohotkey')
au BufNewFile,BufRead *.ahk,*.ahkl setf autohotkey
endif
@@ -2444,9 +2460,9 @@ if !has_key(s:disabled_packages, 'arduino')
endif
if !has_key(s:disabled_packages, 'c/c++')
- au! BufNewFile,BufRead,BufWritePost *.h call polyglot#detect#H()
+ au BufNewFile,BufRead,BufWritePost *.h call polyglot#detect#H()
au BufNewFile,BufRead *.c++,*.cc,*.cp,*.cpp,*.cxx,*.h++,*.hh,*.hpp,*.hxx,*.inc,*.inl,*.ipp,*.moc,*.tcc,*.tlh,*.tpp setf cpp
- au! BufNewFile,BufRead,BufWritePost *.h call polyglot#detect#H()
+ au BufNewFile,BufRead,BufWritePost *.h call polyglot#detect#H()
au BufNewFile,BufRead *.c,*.cats,*.idc,*.qc,*enlightenment/*.cfg setf c
endif
@@ -2506,6 +2522,14 @@ if !has_key(s:disabled_packages, 'alsaconf')
au BufNewFile,BufRead */etc/asound.conf,*/usr/share/alsa/alsa.conf,{.,}asoundrc setf alsaconf
endif
+if !has_key(s:disabled_packages, 'conf')
+ au BufNewFile,BufRead *.conf,auto.master,config setf conf
+endif
+
+if !has_key(s:disabled_packages, 'master')
+ au BufNewFile,BufRead *.mas,*.master setf master
+endif
+
if !has_key(s:disabled_packages, 'aidl')
" AIDL
au BufNewFile,BufRead *.aidl setf aidl
@@ -2541,7 +2565,7 @@ if !has_key(s:disabled_packages, 'abc')
endif
if !has_key(s:disabled_packages, 'abaqus')
- au! BufNewFile,BufRead,BufWritePost *.inp call polyglot#detect#Inp()
+ au BufNewFile,BufRead,BufWritePost *.inp call polyglot#detect#Inp()
endif
if !has_key(s:disabled_packages, 'abap')
@@ -2563,19 +2587,6 @@ if !has_key(s:disabled_packages, 'a2ps')
au BufNewFile,BufRead */etc/a2ps.cfg,*/etc/a2ps/*.cfg,{.,}a2psrc,a2psrc setf a2ps
endif
-if !has_key(s:disabled_packages, 'haproxy')
- au BufNewFile,BufRead *.cfg,haproxy.cfg setf haproxy
- au BufNewFile,BufRead haproxy*.conf* call s:StarSetf('haproxy')
-endif
-
-if !has_key(s:disabled_packages, 'conf')
- au BufNewFile,BufRead *.conf,auto.master,config setf conf
-endif
-
-if !has_key(s:disabled_packages, 'master')
- au BufNewFile,BufRead *.mas,*.master setf master
-endif
-
if !has_key(s:disabled_packages, 'cfg')
au BufNewFile,BufRead *.cfg,*.hgrc,*hgrc setf cfg
endif
@@ -3635,9 +3646,6 @@ au BufNewFile,BufRead *.mod
\ setf modsim3 |
\ endif
-" Modula 2 (.md removed in favor of Markdown)
-au BufNewFile,BufRead *.m2,*.DEF,*.MOD,*.mi setf modula2
-
" Modula 3 (.m3, .i3, .mg, .ig)
au BufNewFile,BufRead *.[mi][3g] setf modula3
@@ -3950,13 +3958,6 @@ au BufNewFile,BufRead *.rego setf rego
" Rexx
au BufNewFile,BufRead *.rex,*.orx,*.rxo,*.rxj,*.jrexx,*.rexxj,*.rexx,*.testGroup,*.testUnit setf rexx
-" R (Splus)
-if has("fname_case")
- au BufNewFile,BufRead *.s,*.S setf r
-else
- au BufNewFile,BufRead *.s setf r
-endif
-
" R Help file
if has("fname_case")
au BufNewFile,BufRead *.rd,*.Rd setf rhelp
diff --git a/ftoff.vim b/ftoff.vim
new file mode 100644
index 00000000..049e26cc
--- /dev/null
+++ b/ftoff.vim
@@ -0,0 +1,3 @@
+if exists("did_load_polyglot")
+ unlet did_load_polyglot
+endif
diff --git a/ftplugin/Dockerfile.vim b/ftplugin/Dockerfile.vim
deleted file mode 100644
index 85fb1ee5..00000000
--- a/ftplugin/Dockerfile.vim
+++ /dev/null
@@ -1,37 +0,0 @@
-if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'dockerfile') == -1
-
-" Define comment string
-setlocal commentstring=#\ %s
-
-" Enable automatic comment insertion
-setlocal formatoptions+=cro
-
-function! DockerfileReplaceInstruction(original, replacement)
- let syn = synIDtrans(synID(line("."), col(".") - 1, 0))
- if syn != hlID("Comment") && syn != hlID("Constant") && strlen(getline(".")) == 0
- let word = a:replacement
- else
- let word = a:original
- endif
- let g:UnduBuffer = a:original
- return word
-endfunction
-
-inoreabbr <silent> <buffer> from <C-R>=DockerfileReplaceInstruction("from", "FROM")<CR>
-inoreabbr <silent> <buffer> maintainer <C-R>=DockerfileReplaceInstruction("maintainer", "MAINTAINER")<CR>
-inoreabbr <silent> <buffer> run <C-R>=DockerfileReplaceInstruction("run", "RUN")<CR>
-inoreabbr <silent> <buffer> cmd <C-R>=DockerfileReplaceInstruction("cmd", "CMD")<CR>
-inoreabbr <silent> <buffer> label <C-R>=DockerfileReplaceInstruction("label", "LABEL")<CR>
-inoreabbr <silent> <buffer> expose <C-R>=DockerfileReplaceInstruction("expose", "EXPOSE")<CR>
-inoreabbr <silent> <buffer> env <C-R>=DockerfileReplaceInstruction("env", "ENV")<CR>
-inoreabbr <silent> <buffer> add <C-R>=DockerfileReplaceInstruction("add", "ADD")<CR>
-inoreabbr <silent> <buffer> copy <C-R>=DockerfileReplaceInstruction("copy", "COPY")<CR>
-inoreabbr <silent> <buffer> entrypoint <C-R>=DockerfileReplaceInstruction("entrypoint", "ENTRYPOINT")<CR>
-inoreabbr <silent> <buffer> volume <C-R>=DockerfileReplaceInstruction("volume", "VOLUME")<CR>
-inoreabbr <silent> <buffer> user <C-R>=DockerfileReplaceInstruction("user", "USER")<CR>
-inoreabbr <silent> <buffer> workdir <C-R>=DockerfileReplaceInstruction("workdir", "WORKDIR")<CR>
-inoreabbr <silent> <buffer> arg <C-R>=DockerfileReplaceInstruction("arg", "ARG")<CR>
-inoreabbr <silent> <buffer> onbuild <C-R>=DockerfileReplaceInstruction("onbuild", "ONBUILD")<CR>
-inoreabbr <silent> <buffer> stopsignal <C-R>=DockerfileReplaceInstruction("stopsignal", "STOPSIGNAL")<CR>
-
-endif
diff --git a/ftplugin/make.vim b/ftplugin/make.vim
new file mode 100644
index 00000000..18d69dc8
--- /dev/null
+++ b/ftplugin/make.vim
@@ -0,0 +1,37 @@
+if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'make') == -1
+
+" Vim filetype plugin file
+" Language: Make
+" Maintainer: Bram Moolenaar <Bram@vim.org>
+" Last Change: 2019 Apr 02
+
+" Only do this when not done yet for this buffer
+if exists("b:did_ftplugin")
+ finish
+endif
+let b:did_ftplugin = 1
+
+let b:undo_ftplugin = "setl et< sts< fo< com< cms< inc<"
+
+" Make sure a hard tab is used, required for most make programs
+setlocal noexpandtab softtabstop=0
+
+" Set 'formatoptions' to break comment lines but not other lines,
+" and insert the comment leader when hitting <CR> or using "o".
+setlocal fo-=t fo+=croql
+
+" Set 'comments' to format dashed lists in comments
+setlocal com=sO:#\ -,mO:#\ \ ,b:#
+
+" Set 'commentstring' to put the marker after a #.
+setlocal commentstring=#\ %s
+
+" Including files.
+let &l:include = '^\s*include'
+
+" For matchit.vim, suggested by Albert Netymk and Ken Takata.
+if exists("loaded_matchit")
+ let b:match_words = '^ *ifn\=\(eq\|def\)\>:^ *else\(\s\+ifn\=\(eq\|def\)\)\=\>:^ *endif\>,\<define\>:\<endef\>,^!\s*if\(n\=def\)\=\>:^!\s*else\(if\(n\=def\)\=\)\=\>:^!\s*endif\>'
+endif
+
+endif
diff --git a/ftplugin/sbt.vim b/ftplugin/sbt.vim
new file mode 100644
index 00000000..13601c87
--- /dev/null
+++ b/ftplugin/sbt.vim
@@ -0,0 +1,19 @@
+if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'sbt') == -1
+
+" Vim filetype plugin file
+" Language: sbt
+" Maintainer: Steven Dobay <stevendobay at protonmail.com>
+" License: Same as Vim
+" Last Change: 2017.04.30
+" ----------------------------------------------------------------------------
+
+if exists('b:did_ftplugin') || &cp
+ finish
+endif
+
+let b:did_ftplugin = 1
+
+runtime! ftplugin/scala.vim
+
+
+endif
diff --git a/ftplugin/xf86conf.vim b/ftplugin/xf86conf.vim
new file mode 100644
index 00000000..c298379b
--- /dev/null
+++ b/ftplugin/xf86conf.vim
@@ -0,0 +1,23 @@
+if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'xf86conf') == -1
+
+" Vim filetype plugin file
+" Language: XFree86 Configuration File
+" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
+" Latest Revision: 2008-07-09
+
+if exists("b:did_ftplugin")
+ finish
+endif
+let b:did_ftplugin = 1
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+let b:undo_ftplugin = "setl com< cms< fo<"
+
+setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
+endif
diff --git a/indent/Dockerfile.vim b/indent/Dockerfile.vim
deleted file mode 100644
index 18db33d1..00000000
--- a/indent/Dockerfile.vim
+++ /dev/null
@@ -1,27 +0,0 @@
-if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'dockerfile') == -1
-
-if exists('b:did_indent') | finish | endif
-let b:did_indent = 1
-
-
-function! DockerfileIndent(line)
- let prev_line = getline(a:line - 1)
- if a:line > 1 && prev_line =~ '\\\s*$'
- let i = indent(a:line - 1)
- if i == 0
- let i += &l:shiftwidth
- if &l:expandtab && prev_line =~# '^RUN\s'
- " Overindent past RUN
- let i = 4 + &l:shiftwidth
- endif
- endif
- return i
- endif
-
- return -1
-endfunction
-
-
-set indentexpr=DockerfileIndent(v:lnum)
-
-endif
diff --git a/indent/make.vim b/indent/make.vim
new file mode 100644
index 00000000..07436042
--- /dev/null
+++ b/indent/make.vim
@@ -0,0 +1,120 @@
+if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'make') == -1
+
+" Vim indent file
+" Language: Makefile
+" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
+" Latest Revision: 2007-05-07
+
+if exists("b:did_indent")
+ finish
+endif
+let b:did_indent = 1
+
+setlocal indentexpr=GetMakeIndent()
+setlocal indentkeys=!^F,o,O,<:>,=else,=endif
+setlocal nosmartindent
+
+if exists("*GetMakeIndent")
+ finish
+endif
+
+let s:comment_rx = '^\s*#'
+let s:rule_rx = '^[^ \t#:][^#:]*:\{1,2}\%([^=:]\|$\)'
+let s:continued_rule_rx = '^[^#:]*:\{1,2}\%([^=:]\|$\)'
+let s:continuation_rx = '\\$'
+let s:assignment_rx = '^\s*\h\w*\s*[+?]\==\s*\zs.*\\$'
+let s:folded_assignment_rx = '^\s*\h\w*\s*[+?]\=='
+" TODO: This needs to be a lot more restrictive in what it matches.
+let s:just_inserted_rule_rx = '^\s*[^#:]\+:\{1,2}$'
+let s:conditional_directive_rx = '^ *\%(ifn\=\%(eq\|def\)\|else\)\>'
+let s:end_conditional_directive_rx = '^\s*\%(else\|endif\)\>'
+
+function s:remove_continuation(line)
+ return substitute(a:line, s:continuation_rx, "", "")
+endfunction
+
+function GetMakeIndent()
+ " TODO: Should this perhaps be v:lnum -1?
+" let prev_lnum = prevnonblank(v:lnum - 1)
+ let prev_lnum = v:lnum - 1
+ if prev_lnum == 0
+ return 0
+ endif
+ let prev_line = getline(prev_lnum)
+
+ let prev_prev_lnum = prev_lnum - 1
+ let prev_prev_line = prev_prev_lnum != 0 ? getline(prev_prev_lnum) : ""
+
+ " TODO: Deal with comments. In comments, continuations aren't interesting.
+ if prev_line =~ s:continuation_rx
+ if prev_prev_line =~ s:continuation_rx
+ return indent(prev_lnum)
+ elseif prev_line =~ s:rule_rx
+ return shiftwidth()
+ elseif prev_line =~ s:assignment_rx
+ call cursor(prev_lnum, 1)
+ if search(s:assignment_rx, 'W') != 0
+ return virtcol('.') - 1
+ else
+ " TODO: ?
+ return shiftwidth()
+ endif
+ else
+ " TODO: OK, this might be a continued shell command, so perhaps indent
+ " properly here? Leave this out for now, but in the next release this
+ " should be using indent/sh.vim somehow.
+ "if prev_line =~ '^\t' " s:rule_command_rx
+ " if prev_line =~ '^\s\+[@-]\%(if\)\>'
+ " return indent(prev_lnum) + 2
+ " endif
+ "endif
+ return indent(prev_lnum) + shiftwidth()
+ endif
+ elseif prev_prev_line =~ s:continuation_rx
+ let folded_line = s:remove_continuation(prev_prev_line) . ' ' . s:remove_continuation(prev_line)
+ let lnum = prev_prev_lnum - 1
+ let line = getline(lnum)
+ while line =~ s:continuation_rx
+ let folded_line = s:remove_continuation(line) . ' ' . folded_line
+ let lnum -= 1
+ let line = getline(lnum)
+ endwhile
+ let folded_lnum = lnum + 1
+ if folded_line =~ s:rule_rx
+ if getline(v:lnum) =~ s:rule_rx
+ return 0
+ else
+ return &ts
+ endif
+ else
+" elseif folded_line =~ s:folded_assignment_rx
+ if getline(v:lnum) =~ s:rule_rx
+ return 0
+ else
+ return indent(folded_lnum)
+ endif
+" else
+" " TODO: ?
+" return indent(prev_lnum)
+ endif
+ elseif prev_line =~ s:rule_rx
+ if getline(v:lnum) =~ s:rule_rx
+ return 0
+ else
+ return &ts
+ endif
+ elseif prev_line =~ s:conditional_directive_rx
+ return shiftwidth()
+ else
+ let line = getline(v:lnum)
+ if line =~ s:just_inserted_rule_rx
+ return 0
+ elseif line =~ s:end_conditional_directive_rx
+ return v:lnum - 1 == 0 ? 0 : indent(v:lnum - 1) - shiftwidth()
+ else
+ return v:lnum - 1 == 0 ? 0 : indent(v:lnum - 1)
+ endif
+ endif
+endfunction
+
+endif
diff --git a/indent/xf86conf.vim b/indent/xf86conf.vim
new file mode 100644
index 00000000..261c4416
--- /dev/null
+++ b/indent/xf86conf.vim
@@ -0,0 +1,41 @@
+if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'xf86conf') == -1
+
+" Vim indent file
+" Language: XFree86 Configuration File
+" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
+" Latest Revision: 2006-12-20
+
+if exists("b:did_indent")
+ finish
+endif
+let b:did_indent = 1
+
+setlocal indentexpr=GetXF86ConfIndent()
+setlocal indentkeys=!^F,o,O,=End
+setlocal nosmartindent
+
+if exists("*GetXF86ConfIndent")
+ finish
+endif
+
+function GetXF86ConfIndent()
+ let lnum = prevnonblank(v:lnum - 1)
+
+ if lnum == 0
+ return 0
+ endif
+
+ let ind = indent(lnum)
+
+ if getline(lnum) =~? '^\s*\(Sub\)\=Section\>'
+ let ind = ind + shiftwidth()
+ endif
+
+ if getline(v:lnum) =~? '^\s*End\(Sub\)\=Section\>'
+ let ind = ind - shiftwidth()
+ endif
+
+ return ind
+endfunction
+
+endif
diff --git a/packages.yaml b/packages.yaml
index e160bfd6..c348e351 100644
--- a/packages.yaml
+++ b/packages.yaml
@@ -245,20 +245,27 @@ filetypes:
- name: autohotkey
linguist: AutoHotkey
---
-name: automake
+name: make
remote: vim/vim:runtime
-glob: '**/automake.vim'
+glob: '**/make.vim'
filetypes:
-- name: automake
+- name: make
filenames:
- - Makefile.am
- - makefile.am
- - GNUmakefile.am
+ - '*[mM]akefile'
extensions:
- mak
- dsp
- mk
---
+name: automake
+remote: vim/vim:runtime
+glob: '**/automake.vim'
+filetypes:
+- name: automake
+ filenames:
+ - '[mM]akefile.am'
+ - GNUmakefile.am
+---
name: asn
remote: vim/vim:runtime
glob: '**/asn.vim'
@@ -493,15 +500,8 @@ filetypes:
---
name: dockerfile
remote: ekalinin/Dockerfile.vim
+glob: '**/docker-compose.vim'
filetypes:
-- name: Dockerfile
- linguist: Dockerfile
- extra_extensions:
- - dock
- - Dockerfile
- extra_filenames:
- - dockerfile
- - Dockerfile*
- name: yaml.docker-compose
filenames:
- 'docker-compose*.yaml'
@@ -754,8 +754,13 @@ filetypes:
linguist: HAProxy
extra_filenames:
- 'haproxy*.conf*'
+ - 'haproxy*.cfg*'
ignored_warnings:
- 'haproxy*.c*'
+ ignored_extensions:
+ - cfg
+ ignored_filenames:
+ - haproxy.cfg
---
name: haskell
remote: neovimhaskell/haskell-vim
@@ -1471,13 +1476,6 @@ filetypes:
# handled by sbt plugin
- sbt
---
-name: sbt
-remote: derekwyatt/vim-sbt
-filetypes:
-- name: sbt.scala
- extensions:
- - sbt
----
name: scss
remote: cakebaker/scss-syntax.vim
filetypes:
@@ -1497,10 +1495,19 @@ filetypes:
- '.zlogin'
- '.zprofile'
- '.zlogout'
+ - 'zshrc'
+ - 'zshenv'
+ - 'zlogin'
+ - 'zprofile'
+ - 'zlogout'
# Udev symlinks config
extra_filenames:
- '*/etc/udev/cdsymlinks.conf'
+ ignored_interpreters:
+ - zsh
- name: zsh
+ interpreters:
+ - zsh
extensions:
- zsh
filenames:
@@ -1513,6 +1520,7 @@ filetypes:
- '.zcompdump*'
- '.zfbfmarks'
- '.zsh*'
+ - '*/etc/zprofile'
---
name: zinit
remote: zinit-zsh/zplugin-vim-syntax
@@ -2321,7 +2329,7 @@ glob: "**/dockerfile.vim"
filetypes:
- name: dockerfile
patterns:
- - pattern: Containerfile,Dockerfile,*.Dockerfile
+ - pattern: Containerfile,Dockerfile,*.Dockerfile,*.dock,dockerfile,Dockerfile*
description: Dockerfile; Podman uses the same syntax with name Containerfile
---
name: dcd
@@ -3974,9 +3982,9 @@ glob: "**/pascal.vim"
filetypes:
- name: pascal
patterns:
- - pattern: "*.pas"
+ - pattern: "*.pas,*.pp"
description: Pascal (also *.p)
- - pattern: "*.dpr"
+ - pattern: "*.dpr,*.lpr"
description: Delphi or Lazarus program file
---
name: pdf
@@ -4624,6 +4632,7 @@ filetypes:
name: st
remote: vim/vim:runtime
glob: "**/st.vim"
+after: html
filetypes:
- name: st
patterns:
@@ -4969,7 +4978,7 @@ glob: "**/tidy.vim"
filetypes:
- name: tidy
patterns:
- - pattern: ".tidyrc,tidyrc"
+ - pattern: ".tidyrc,tidyrc,tidy.conf"
description: Tidy config
---
name: tf
@@ -5491,3 +5500,11 @@ name: html5
remote: sheerun/html5.vim
dependencies: html
filetypes: []
+---
+name: xf86conf
+remote: vim/vim:runtime
+glob: "**/xf86conf.vim"
+filetypes:
+- name: xf86conf
+ patterns:
+ - pattern: "XF86Config-4*,XF86Config*,*/xorg.conf.d/*.conf,xorg.conf,xorg.conf-4"
diff --git a/scripts/build b/scripts/build
index 4783ed21..6f85776b 100755
--- a/scripts/build
+++ b/scripts/build
@@ -22,6 +22,7 @@ def except(hash, *keys)
h
end
+
def verify(packages, heuristics)
extensions_with_heuristics = Set.new(heuristics.flat_map { |e| e["extensions"] })
no_heuristics = Hash.new { |a, b| a[b] = [] }
@@ -64,7 +65,7 @@ def sort_packages(packages)
for p in packages
for f in p["filetypes"]
for e in f["extensions"]
- by_extension[e] << p["name"]
+ by_extension[e] << p["name"] unless by_extension[e].include?(p["name"])
end
end
end
@@ -84,6 +85,25 @@ def sort_packages(packages)
end
end
end
+
+ for e in f["extensions"]
+ if e.count(".") > 0
+ ext = e.split(".").last
+ for name in by_extension[ext]
+ if p["name"] != name
+ implicit_dependencies[p["name"]] |= [name]
+ end
+ end
+ end
+
+ if e.match?(/[A-Z]/) && by_extension[e.downcase].size > 0
+ for name in by_extension[e.downcase]
+ if p["name"] != name
+ implicit_dependencies[p["name"]] |= [name]
+ end
+ end
+ end
+ end
end
end
@@ -120,6 +140,7 @@ def load_data()
end
end
end
+ filetype.delete("patterns")
end
if filetype["linguist"]
if filetype["extensions"]
@@ -338,7 +359,11 @@ def pattern_to_condition(rule)
end
def rules_to_code(rules)
- output = ""
+ output = <<~EOF
+ if a:0 != 1 && did_filetype()
+ return
+ endif
+ EOF
vars = []
each_hash(rules) do |h|
@@ -595,7 +620,7 @@ def generate_ftdetect(packages, heuristics)
for heuristic in filetype_heuristics.uniq
extensions = heuristic["extensions"].map { |e| "*.#{e}" }
- autocommands << "au! BufNewFile,BufRead,BufWritePost #{extensions.join(",")} call polyglot#detect##{camelize(heuristic["extensions"].first)}()"
+ autocommands << "au BufNewFile,BufRead,BufWritePost #{extensions.join(",")} call polyglot#detect##{camelize(heuristic["extensions"].first)}()"
end
if autocommands.size > 0 && filetype["description"]
@@ -621,7 +646,7 @@ def generate_ftdetect(packages, heuristics)
for heuristic in heuristics
output << <<~EOS
- func! polyglot#detect##{camelize(heuristic["extensions"].first)}()
+ func! polyglot#detect##{camelize(heuristic["extensions"].first)}(...)
#{indent(rules_to_code(heuristic), 2)}
endfunc
EOS
@@ -843,8 +868,4 @@ if __FILE__ == $0
generate_plugins(packages)
generate_tests(packages)
puts(" Bye! Have a wonderful time!")
-
- if !ENV["DEV"]
- FileUtils.rm_rf("tmp")
- end
end
diff --git a/scripts/import_vim b/scripts/import_vim
index 0cf9231c..9e65da67 100755
--- a/scripts/import_vim
+++ b/scripts/import_vim
@@ -1,15 +1,16 @@
#!/usr/bin/env ruby
require 'yaml'
+require 'json'
def comma_expanson(s)
- s.scan(/{[^{]+}|[^{]+/).map { |a| a[0] == "{" ? a : a.split(",", -1) }.reduce([]) do |a, b|
+ s.scan(/{[^{]+}|[^{]+/).map { |a| a[0] == "{" ? a : a.split(/(?<!\\),/, -1) }.reduce([]) do |a, b|
a.size > 0 ?
(b.is_a?(String) ?
a[0..-2] + [a[-1] + b] :
a[0..-2] + [a[-1] + b[0]] + b[1..-1]) :
[b].flatten
- end
+ end.map { |e| e.gsub('\\,', ',')}
end
def import_autocommands
@@ -37,6 +38,9 @@ vim -es -u DEFAULTS -c 'exe("func! Capture() \\n redir => capture \\n silent aut
end
end
+ for k, v in filetypes
+ filetypes[k].uniq!
+ end
filetypes
end
@@ -87,8 +91,6 @@ def generate_packages_entries(filetypes, comments)
return entries
end
-filetypes = import_autocommands
-
def fix_quotes(a)
a = a.gsub(/\\/) { '\\\\' }
a.scan(/^.*?"(.+?)"\n/m).each { |p| a[p[0]] = p[0].gsub('"') { '\\"'} }
@@ -114,9 +116,200 @@ def get_comments
result
end
-comments = get_comments()
-autocommands = import_autocommands()
-entries = generate_packages_entries(autocommands, comments)
-print(entries.join(""))
+def square_expansion(s)
+ return [s] unless s.include?('[')
+ s.scan(/(\[[^\]]+\]|[^\[]+)/).map { |x| x[0] }
+ .map { |x| x[0] == "[" ? x[1..-2].split("") : [x] }
+ .reduce(&:product).map(&:flatten).map(&:join)
+end
+
+def brace_expansion(s)
+ if !s.include?('{')
+ return [s]
+ end
+ r=1 # Dummy value to forward-declare the parse function `r`
+ t=->x{ # Function to parse a bracket block
+ x=x[0].gsub(/^{(.*)}$/){$1} # Remove outer brackets if both are present
+ # x[0] is required because of quirks in the `scan` function
+ x=x.scan(/(({(\g<1>|,)*}|[^,{}]|(?<=,|^)(?=,|$))+)/)
+ # Regex black magic: collect elements of outer bracket
+ x.map{|i|i=i[0];i[?{]?r[i]:i}.flatten # For each element with brackets, run parse function
+ }
+ r=->x{ # Function to parse bracket expansions a{b,c}{d,e}
+ i=x.scan(/({(\g<1>)*}|[^{} ]+)/) # Regex black magic: scan for adjacent sets of brackets
+ i=i.map(&t) # Map all elements against the bracket parser function `t`
+ i.shift.product(*i).map &:join # Combine the adjacent sets with cartesian product and join them together
+ }
+ s.split.map(&r).flatten
+end
+
+def generate_tests(autocommands)
+ existing = JSON.parse(File.read('tmp/vim/vim/src/testdir/test_filetype.vim')
+ .match(/let s:filename_checks = ({.*?\\ })/m)[1]
+ .gsub(' \\', ' ').gsub("'", '"')
+ .gsub('$VIMRUNTIME .', '').gsub(",\n }", "}"))
+
+ output = []
+
+ generated = {}
+ for ft in autocommands.keys().sort()
+ patterns = autocommands[ft]
+
+ files1 = []
+ to_delete = []
+
+ patterns.reject! { |p| p.match?(/[\|\\\(]/) }
+
+ patterns = patterns.map do |pattern|
+ pattern = pattern.gsub('[0-9]', '1').gsub('[2-3]', '2').gsub('[1-3]', '1').gsub('?', 'x')
+
+ if pattern.match?(/\/\*\.[^\*\/]+$/)
+ pattern = pattern.gsub(/\/\*\.([^\*\/]+)$/, '/file.\1')
+ end
+
+ if pattern.match?(/[\/\.-]\*$/)
+ pattern = pattern[0..-2] + "file"
+ end
+
+ pattern = pattern.gsub(/\/\*\//) { '/any/' }
+
+ pattern
+ end
+
+ patterns = patterns.flat_map { |p| brace_expansion(p) }
+ for pattern in patterns
+ if pattern.match(/^\*[.\,][^\*\/]+$/)
+ files1 << pattern.gsub('*', 'file')
+
+ to_delete << pattern
+ end
+ if pattern.match(/^[^\*\/]+\.\*$/)
+ files1 << pattern.gsub('*', 'file')
+ to_delete << pattern
+ end
+ end
+ files1.sort!
+ patterns = patterns - to_delete
+
+ files2 = []
+ for pattern in patterns
+ if !pattern.match(/\*/)
+ files2 << pattern
+ to_delete << pattern
+ end
+ end
+ files2.sort!
+ patterns = patterns - to_delete
+
+ patterns = patterns.flat_map do |pattern|
+ if pattern.match?(/^\*\//)
+ [pattern[1..-1], "any" + pattern[1..-1]]
+ else
+ [pattern]
+ end
+ end
+
+ patterns = patterns.flat_map do |pattern|
+ if pattern.match?(/^\*[-\.]/)
+ ["some" + pattern[1..-1]]
+ elsif pattern.match?(/^\*/)
+ [pattern[1..-1], "some-" + pattern[1..-1]]
+ else
+ [pattern]
+ end
+ end
+
+ patterns = patterns.flat_map do |pattern|
+ if pattern.match?(/[^\/]+\/\*-[^\\]+$/)
+ [pattern.gsub('/*-', '/file-')]
+ elsif pattern.match?(/[^\/]+\/\*\.[^\\]+$/)
+ [pattern.gsub('/*.', '/file.')]
+ elsif pattern.match?(/[^\/]+\/\*[^\\]+$/)
+ [pattern.gsub('/*', '/'), pattern.gsub('/*', '/some-')]
+ else
+ [pattern]
+ end
+ end
+
+ patterns = patterns.flat_map do |pattern|
+ if pattern.include?('-*/')
+ [pattern.gsub('-*/', '-file/')]
+ elsif pattern.include?('.*/')
+ [pattern.gsub('.*/', '.file/')]
+ elsif pattern.include?('*/')
+ [pattern.gsub('*/', '/'), pattern.gsub('*/', '-some/')]
+ else
+ [pattern]
+ end
+ end
+
+ patterns = patterns.flat_map do |pattern|
+ if pattern.match?(/[^\/]+\.\*\.([^\*\/]+)$/)
+ [pattern.gsub('.*.', '.file.')]
+ elsif pattern.match?(/[^\/]+-\*\.([^\*\/]+)$/)
+ [pattern.gsub('-*.', '-file.')]
+ elsif pattern.match?(/[^\/]+\*\.([^\*\/]+)$/)
+ [pattern.gsub('*.', '.'), pattern.gsub('*.', '-file.')]
+ else
+ [pattern]
+ end
+ end
+
+ patterns = patterns.flat_map do |pattern|
+ if pattern.match?(/\*$/)
+ [pattern[0..-2], pattern[0..-2] + "-file"]
+ else
+ [pattern]
+ end
+ end
+ patterns.sort!
+
+ files = [*files1, *files2, *patterns].flat_map { |e| square_expansion(e) }
+ generated[ft] = files
+
+ end
+
+
+ for ft, original in existing
+ for file in generated.fetch(ft, [])
+
+ unless original.include?(file) || ['file.DEF', 'file.MOD', 'file.BUILD', 'BUILD'].include?(file) || ft == "help"
+ original << file
+ end
+ end
+ generated.delete(ft)
+ output << " \\ '#{ft}': #{JSON.generate(original).gsub('"', "'").gsub("','", "', '")},"
+ end
+
+ for ft, paths in generated
+ idx = output.find_index { |a| a > " \\ '" + ft }
+ output.insert(idx, " \\ '#{ft}': #{JSON.generate(paths).gsub('"', "'").gsub("','", "', '")},")
+ end
+
+
+ output << " \\ }"
+
+ msgs = <<'EOF'
+ \ 'messages': ['/log/auth', '/log/cron', '/log/daemon', '/log/debug', '/log/kern', '/log/lpr', '/log/mail', '/log/messages', '/log/news/news', '/log/syslog', '/log/user',
+ \ '/log/auth.log', '/log/cron.log', '/log/daemon.log', '/log/debug.log', '/log/kern.log', '/log/lpr.log', '/log/mail.log', '/log/messages.log', '/log/news/news.log', '/log/syslog.log', '/log/user.log',
+ \ '/log/auth.err', '/log/cron.err', '/log/daemon.err', '/log/debug.err', '/log/kern.err', '/log/lpr.err', '/log/mail.err', '/log/messages.err', '/log/news/news.err', '/log/syslog.err', '/log/user.err',
+ \ '/log/auth.info', '/log/cron.info', '/log/daemon.info', '/log/debug.info', '/log/kern.info', '/log/lpr.info', '/log/mail.info', '/log/messages.info', '/log/news/news.info', '/log/syslog.info', '/log/user.info',
+ \ '/log/auth.warn', '/log/cron.warn', '/log/daemon.warn', '/log/debug.warn', '/log/kern.warn', '/log/lpr.warn', '/log/mail.warn', '/log/messages.warn', '/log/news/news.warn', '/log/syslog.warn', '/log/user.warn',
+ \ '/log/auth.crit', '/log/cron.crit', '/log/daemon.crit', '/log/debug.crit', '/log/kern.crit', '/log/lpr.crit', '/log/mail.crit', '/log/messages.crit', '/log/news/news.crit', '/log/syslog.crit', '/log/user.crit',
+ \ '/log/auth.notice', '/log/cron.notice', '/log/daemon.notice', '/log/debug.notice', '/log/kern.notice', '/log/lpr.notice', '/log/mail.notice', '/log/messages.notice', '/log/news/news.notice', '/log/syslog.notice', '/log/user.notice'],
+EOF
+
+
+ "let s:filename_checks = {\n" + output.join("\n").gsub("'/doc/help.txt'", "$VIMRUNTIME . '/doc/help.txt'").gsub(/ \\ 'messages':.*?\],\n/m) { msgs }
+
+
+end
+
+#comments = get_comments()
+autocommands = import_autocommands()
+# entries = generate_packages_entries(autocommands, comments)
+# print(entries.join(""))
+result = generate_tests(autocommands)
+print(result)
diff --git a/scripts/test b/scripts/test
index b87d511c..ae408063 100755
--- a/scripts/test
+++ b/scripts/test
@@ -1,17 +1,17 @@
#!/usr/bin/env ruby
def run_script(src)
- system("bash", "-c", src)
+ if system("bash", "-eo", "pipefail", "-c", src) != true
+ exit(1)
+ end
end
def run_vimscript(src)
+
wrapper = <<~EOF
vim --clean --not-a-term -u <(cat <<- "EOM"
- let g:polyglot_test = 1
set nocompatible
- let &rtp='$PWD,' . &rtp
- filetype plugin indent on
- syntax on
+ let &rtp='#{Dir.pwd},' . &rtp
set t_ti= t_te=
set shortmess+=F
set noswapfile
@@ -23,18 +23,36 @@ def run_vimscript(src)
endif
endfunc
EOM
+ EOF
+
+ wrapper += <<~'EOF'
) -S <(cat <<- "EOM"
- try
#{src}
- catch
- echo v:exception
- echo v:throwpoint
- endtry
+
+ redir @q
+ silent function /^NewTest_
+ redir END
+ let s:tests = split(substitute(@q, '\(function\|def\) \(\k*()\)', '\2', 'g'))
+ for test in s:tests
+ echo test
+ %bwipe!
+ exe 'call ' . test
+ set noinsertmode
+ if len(v:errors) > 0
+ for err in v:errors
+ echo err
+ endfor
+ cq!
+ endif
+ endfor
+
qa!
EOM
) | perl -pe 's/\e\[[0-9;]*[a-zA-Z]//g'
EOF
+ wrapper.gsub!('#{src}') { src }
+
run_script(wrapper)
end
@@ -47,6 +65,11 @@ EOF
run_vimscript('source tests/filetypes.vim')
run_vimscript('source tests/extensions.vim')
+
+if !ENV['DEV']
+ run_vimscript('source tests/native.vim')
+end
+
run_script(test_helptags)
# run_vimscript("
diff --git a/syntax/Dockerfile.vim b/syntax/Dockerfile.vim
deleted file mode 100644
index 2f68794c..00000000
--- a/syntax/Dockerfile.vim
+++ /dev/null
@@ -1,63 +0,0 @@
-if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'dockerfile') == -1
-
-" Vim syntax file
-" Language: Dockerfile
-" Maintainer: Eugene Kalinin
-" Latest Revision: 11 September 2013
-" Source: http://docs.docker.io/en/latest/use/builder/
-
-if exists("b:current_syntax")
- finish
-endif
-
-" case sensitivity (fix #17)
-" syn case ignore
-
-" Keywords
-syn keyword dockerfileKeywords FROM AS MAINTAINER RUN CMD COPY
-syn keyword dockerfileKeywords EXPOSE ADD ENTRYPOINT
-syn keyword dockerfileKeywords VOLUME USER WORKDIR ONBUILD
-syn keyword dockerfileKeywords LABEL ARG HEALTHCHECK SHELL STOPSIGNAL
-
-" Bash statements
-setlocal iskeyword+=-
-syn keyword bashStatement add-apt-repository adduser apk apt-get aptitude apt-key autoconf bundle
-syn keyword bashStatement cd chgrp chmod chown clear complete composer cp curl du echo egrep
-syn keyword bashStatement expr fgrep find gem gnufind gnugrep gpg grep groupadd head less ln
-syn keyword bashStatement ls make mkdir mv node npm pacman pip pip3 php python rails rm rmdir rpm ruby
-syn keyword bashStatement sed sleep sort strip tar tail tailf touch useradd virtualenv yum
-syn keyword bashStatement usermod bash cat a2ensite a2dissite a2enmod a2dismod apache2ctl
-syn keyword bashStatement wget gzip
-
-" Strings
-syn region dockerfileString start=/"/ skip=/\\"|\\\\/ end=/"/
-syn region dockerfileString1 start=/'/ skip=/\\'|\\\\/ end=/'/
-
-" Emails
-syn region dockerfileEmail start=/</ end=/>/ contains=@ oneline
-
-" Urls
-syn match dockerfileUrl /\(http\|https\|ssh\|hg\|git\)\:\/\/[a-zA-Z0-9\/\-\._]\+/
-
-" Task tags
-syn keyword dockerfileTodo contained TODO FIXME XXX
-
-" Comments
-syn region dockerfileComment start="#" end="\n" contains=dockerfileTodo
-syn region dockerfileEnvWithComment start="^\s*ENV\>" end="\n" contains=dockerfileEnv
-syn match dockerfileEnv contained /\<ENV\>/
-
-" Highlighting
-hi link dockerfileKeywords Keyword
-hi link dockerfileEnv Keyword
-hi link dockerfileString String
-hi link dockerfileString1 String
-hi link dockerfileComment Comment
-hi link dockerfileEmail Identifier
-hi link dockerfileUrl Identifier
-hi link dockerfileTodo Todo
-hi link bashStatement Function
-
-let b:current_syntax = "dockerfile"
-
-endif
diff --git a/syntax/make.vim b/syntax/make.vim
new file mode 100644
index 00000000..349305ba
--- /dev/null
+++ b/syntax/make.vim
@@ -0,0 +1,148 @@
+if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'make') == -1
+
+" Vim syntax file
+" Language: Makefile
+" Maintainer: Roland Hieber <rohieb+vim-iR0jGdkV@rohieb.name>, <https://github.com/rohieb>
+" Previous Maintainer: Claudio Fleiner <claudio@fleiner.com>
+" URL: https://github.com/vim/vim/blob/master/runtime/syntax/make.vim
+" Last Change: 2020 May 03
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+" some special characters
+syn match makeSpecial "^\s*[@+-]\+"
+syn match makeNextLine "\\\n\s*"
+
+" catch unmatched define/endef keywords. endef only matches it is by itself on a line, possibly followed by a commend
+syn region makeDefine start="^\s*define\s" end="^\s*endef\s*\(#.*\)\?$"
+ \ contains=makeStatement,makeIdent,makePreCondit,makeDefine
+
+" Microsoft Makefile specials
+syn case ignore
+syn match makeInclude "^!\s*include\s.*$"
+syn match makePreCondit "^!\s*\(cmdswitches\|error\|message\|include\|if\|ifdef\|ifndef\|else\|else\s*if\|else\s*ifdef\|else\s*ifndef\|endif\|undef\)\>"
+syn case match
+
+" identifiers
+syn region makeIdent start="\$(" skip="\\)\|\\\\" end=")" contains=makeStatement,makeIdent
+syn region makeIdent start="\${" skip="\\}\|\\\\" end="}" contains=makeStatement,makeIdent
+syn match makeIdent "\$\$\w*"
+syn match makeIdent "\$[^({]"
+syn match makeIdent "^ *[^:#= \t]*\s*[:+?!*]="me=e-2
+syn match makeIdent "^ *[^:#= \t]*\s*::="me=e-3
+syn match makeIdent "^ *[^:#= \t]*\s*="me=e-1
+syn match makeIdent "%"
+
+" Makefile.in variables
+syn match makeConfig "@[A-Za-z0-9_]\+@"
+
+" make targets
+syn match makeImplicit "^\.[A-Za-z0-9_./\t -]\+\s*:$"me=e-1
+syn match makeImplicit "^\.[A-Za-z0-9_./\t -]\+\s*:[^=]"me=e-2
+
+syn region makeTarget transparent matchgroup=makeTarget
+ \ start="^[~A-Za-z0-9_./$()%-][A-Za-z0-9_./\t $()%-]*:\{1,2}[^:=]"rs=e-1
+ \ end=";"re=e-1,me=e-1 end="[^\\]$"
+ \ keepend contains=makeIdent,makeSpecTarget,makeNextLine,makeComment,makeDString
+ \ skipnl nextGroup=makeCommands
+syn match makeTarget "^[~A-Za-z0-9_./$()%*@-][A-Za-z0-9_./\t $()%*@-]*::\=\s*$"
+ \ contains=makeIdent,makeSpecTarget,makeComment
+ \ skipnl nextgroup=makeCommands,makeCommandError
+
+syn region makeSpecTarget transparent matchgroup=makeSpecTarget
+ \ start="^\.\(SUFFIXES\|PHONY\|DEFAULT\|PRECIOUS\|IGNORE\|SILENT\|EXPORT_ALL_VARIABLES\|KEEP_STATE\|LIBPATTERNS\|NOTPARALLEL\|DELETE_ON_ERROR\|INTERMEDIATE\|POSIX\|SECONDARY\)\>\s*:\{1,2}[^:=]"rs=e-1
+ \ end="[^\\]$" keepend
+ \ contains=makeIdent,makeSpecTarget,makeNextLine,makeComment skipnl nextGroup=makeCommands
+syn match makeSpecTarget "^\.\(SUFFIXES\|PHONY\|DEFAULT\|PRECIOUS\|IGNORE\|SILENT\|EXPORT_ALL_VARIABLES\|KEEP_STATE\|LIBPATTERNS\|NOTPARALLEL\|DELETE_ON_ERROR\|INTERMEDIATE\|POSIX\|SECONDARY\)\>\s*::\=\s*$"
+ \ contains=makeIdent,makeComment
+ \ skipnl nextgroup=makeCommands,makeCommandError
+
+syn match makeCommandError "^\s\+\S.*" contained
+syn region makeCommands contained start=";"hs=s+1 start="^\t"
+ \ end="^[^\t#]"me=e-1,re=e-1 end="^$"
+ \ contains=makeCmdNextLine,makeSpecial,makeComment,makeIdent,makePreCondit,makeDefine,makeDString,makeSString
+ \ nextgroup=makeCommandError
+syn match makeCmdNextLine "\\\n."he=e-1 contained
+
+" some directives
+syn match makePreCondit "^ *\(ifn\=\(eq\|def\)\>\|else\(\s\+ifn\=\(eq\|def\)\)\=\>\|endif\>\)"
+syn match makeInclude "^ *[-s]\=include\s.*$"
+syn match makeStatement "^ *vpath"
+syn match makeExport "^ *\(export\|unexport\)\>"
+syn match makeOverride "^ *override\>"
+" Statements / Functions (GNU make)
+syn match makeStatement contained "(\(abspath\|addprefix\|addsuffix\|and\|basename\|call\|dir\|error\|eval\|file\|filter-out\|filter\|findstring\|firstword\|flavor\|foreach\|guile\|if\|info\|join\|lastword\|notdir\|or\|origin\|patsubst\|realpath\|shell\|sort\|strip\|subst\|suffix\|value\|warning\|wildcard\|word\|wordlist\|words\)\>"ms=s+1
+
+" Comment
+if exists("make_microsoft")
+ syn match makeComment "#.*" contains=@Spell,makeTodo
+elseif !exists("make_no_comments")
+ syn region makeComment start="#" end="^$" end="[^\\]$" keepend contains=@Spell,makeTodo
+ syn match makeComment "#$" contains=@Spell
+endif
+syn keyword makeTodo TODO FIXME XXX contained
+
+" match escaped quotes and any other escaped character
+" except for $, as a backslash in front of a $ does
+" not make it a standard character, but instead it will
+" still act as the beginning of a variable
+" The escaped char is not highlightet currently
+syn match makeEscapedChar "\\[^$]"
+
+
+syn region makeDString start=+\(\\\)\@<!"+ skip=+\\.+ end=+"+ contained contains=makeIdent
+syn region makeSString start=+\(\\\)\@<!'+ skip=+\\.+ end=+'+ contained contains=makeIdent
+syn region makeBString start=+\(\\\)\@<!`+ skip=+\\.+ end=+`+ contains=makeIdent,makeSString,makeDString,makeNextLine
+
+" Syncing
+syn sync minlines=20 maxlines=200
+
+" Sync on Make command block region: When searching backwards hits a line that
+" can't be a command or a comment, use makeCommands if it looks like a target,
+" NONE otherwise.
+syn sync match makeCommandSync groupthere NONE "^[^\t#]"
+syn sync match makeCommandSync groupthere makeCommands "^[A-Za-z0-9_./$()%-][A-Za-z0-9_./\t $()%-]*:\{1,2}[^:=]"
+syn sync match makeCommandSync groupthere makeCommands "^[A-Za-z0-9_./$()%-][A-Za-z0-9_./\t $()%-]*:\{1,2}\s*$"
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link makeNextLine makeSpecial
+hi def link makeCmdNextLine makeSpecial
+hi link makeOverride makeStatement
+hi link makeExport makeStatement
+
+hi def link makeSpecTarget Statement
+if !exists("make_no_commands")
+hi def link makeCommands Number
+endif
+hi def link makeImplicit Function
+hi def link makeTarget Function
+hi def link makeInclude Include
+hi def link makePreCondit PreCondit
+hi def link makeStatement Statement
+hi def link makeIdent Identifier
+hi def link makeSpecial Special
+hi def link makeComment Comment
+hi def link makeDString String
+hi def link makeSString String
+hi def link makeBString Function
+hi def link makeError Error
+hi def link makeTodo Todo
+hi def link makeDefine Define
+hi def link makeCommandError Error
+hi def link makeConfig PreCondit
+
+let b:current_syntax = "make"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
+" vim: ts=8
+
+endif
diff --git a/syntax/sbt.vim b/syntax/sbt.vim
index 80b360e6..2a280624 100644
--- a/syntax/sbt.vim
+++ b/syntax/sbt.vim
@@ -1,9 +1,9 @@
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'sbt') == -1
" Vim syntax file
-" Language: sbt
-" Maintainer: Derek Wyatt <derek@{myfirstname}{mylastname}.org>
-" Last Change: 2013 Oct 20
+" Language: sbt
+" Maintainer: Steven Dobay <stevendobay at protonmail.com>
+" Last Change: 2017.04.30
if exists("b:current_syntax")
finish
@@ -17,7 +17,6 @@ syn match sbtStringEscape "\\[nrfvb\\\"]" contained
syn match sbtIdentitifer "^\S\+\ze\s*\(:=\|++=\|+=\|<<=\|<+=\)"
syn match sbtBeginningSeq "^[Ss]eq\>"
-syn match sbtAddPlugin "^addSbtPlugin\>"
syn match sbtSpecial "\(:=\|++=\|+=\|<<=\|<+=\)"
@@ -28,10 +27,10 @@ syn region sbtDocComment start="/\*\*" end="\*/" keepend
hi link sbtString String
hi link sbtIdentitifer Keyword
hi link sbtBeginningSeq Keyword
-hi link sbtAddPlugin Keyword
hi link sbtSpecial Special
hi link sbtComment Comment
hi link sbtLineComment Comment
hi link sbtDocComment Comment
+
endif
diff --git a/syntax/xf86conf.vim b/syntax/xf86conf.vim
new file mode 100644
index 00000000..1c295057
--- /dev/null
+++ b/syntax/xf86conf.vim
@@ -0,0 +1,209 @@
+if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'xf86conf') == -1
+
+" Vim syntax file
+" This is a GENERATED FILE. Please always refer to source file at the URI below.
+" Language: XF86Config (XFree86 configuration file)
+" Former Maintainer: David Ne\v{c}as (Yeti) <yeti@physics.muni.cz>
+" Last Change: 2010 Nov 01
+" URL: http://trific.ath.cx/Ftp/vim/syntax/xf86conf.vim
+" Required Vim Version: 6.0
+"
+" Options: let xf86conf_xfree86_version = 3 or 4
+" to force XFree86 3.x or 4.x XF86Config syntax
+
+" Setup
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+if !exists("b:xf86conf_xfree86_version")
+ if exists("xf86conf_xfree86_version")
+ let b:xf86conf_xfree86_version = xf86conf_xfree86_version
+ else
+ let b:xf86conf_xfree86_version = 4
+ endif
+endif
+
+syn case ignore
+
+" Comments
+syn match xf86confComment "#.*$" contains=xf86confTodo
+syn case match
+syn keyword xf86confTodo FIXME TODO XXX NOT contained
+syn case ignore
+syn match xf86confTodo "???" contained
+
+" Sectioning errors
+syn keyword xf86confSectionError Section contained
+syn keyword xf86confSectionError EndSection
+syn keyword xf86confSubSectionError SubSection
+syn keyword xf86confSubSectionError EndSubSection
+syn keyword xf86confModeSubSectionError Mode
+syn keyword xf86confModeSubSectionError EndMode
+syn cluster xf86confSectionErrors contains=xf86confSectionError,xf86confSubSectionError,xf86confModeSubSectionError
+
+" Values
+if b:xf86conf_xfree86_version >= 4
+ syn region xf86confString start=+"+ skip=+\\\\\|\\"+ end=+"+ contained contains=xf86confSpecialChar,xf86confConstant,xf86confOptionName oneline keepend nextgroup=xf86confValue skipwhite
+else
+ syn region xf86confString start=+"+ skip=+\\\\\|\\"+ end=+"+ contained contains=xf86confSpecialChar,xf86confOptionName oneline keepend
+endif
+syn match xf86confSpecialChar "\\\d\d\d\|\\." contained
+syn match xf86confDecimalNumber "\(\s\|-\)\zs\d*\.\=\d\+\>"
+syn match xf86confFrequency "\(\s\|-\)\zs\d\+\.\=\d*\(Hz\|k\|kHz\|M\|MHz\)"
+syn match xf86confOctalNumber "\<0\o\+\>"
+syn match xf86confOctalNumberError "\<0\o\+[89]\d*\>"
+syn match xf86confHexadecimalNumber "\<0x\x\+\>"
+syn match xf86confValue "\s\+.*$" contained contains=xf86confComment,xf86confString,xf86confFrequency,xf86conf\w\+Number,xf86confConstant
+syn keyword xf86confOption Option nextgroup=xf86confString skipwhite
+syn match xf86confModeLineValue "\"[^\"]\+\"\(\_s\+[0-9.]\+\)\{9}" nextgroup=xf86confSync skipwhite skipnl
+
+" Sections and subsections
+if b:xf86conf_xfree86_version >= 4
+ syn region xf86confSection matchgroup=xf86confSectionDelim start="^\s*Section\s\+\"\(Files\|Server[_ ]*Flags\|Input[_ ]*Device\|Device\|Video[_ ]*Adaptor\|Server[_ ]*Layout\|DRI\|Extensions\|Vendor\|Keyboard\|Pointer\|InputClass\)\"" end="^\s*EndSection\>" skip="#.*$\|\"[^\"]*\"" contains=xf86confComment,xf86confOption,xf86confKeyword,xf86confSectionError
+ syn region xf86confSectionModule matchgroup=xf86confSectionDelim start="^\s*Section\s\+\"Module\"" end="^\s*EndSection\>" skip="#.*$\|\"[^\"]*\"" contains=xf86confSubsectionAny,xf86confComment,xf86confOption,xf86confKeyword
+ syn region xf86confSectionMonitor matchgroup=xf86confSectionDelim start="^\s*Section\s\+\"Monitor\"" end="^\s*EndSection\>" skip="#.*$\|\"[^\"]*\"" contains=xf86confSubsectionMode,xf86confModeLine,xf86confComment,xf86confOption,xf86confKeyword
+ syn region xf86confSectionModes matchgroup=xf86confSectionDelim start="^\s*Section\s\+\"Modes\"" end="^\s*EndSection\>" skip="#.*$\|\"[^\"]*\"" contains=xf86confSubsectionMode,xf86confModeLine,xf86confComment
+ syn region xf86confSectionScreen matchgroup=xf86confSectionDelim start="^\s*Section\s\+\"Screen\"" end="^\s*EndSection\>" skip="#.*$\|\"[^\"]*\"" contains=xf86confSubsectionDisplay,xf86confComment,xf86confOption,xf86confKeyword
+ syn region xf86confSubSectionAny matchgroup=xf86confSectionDelim start="^\s*SubSection\s\+\"[^\"]\+\"" end="^\s*EndSubSection\>" skip="#.*$\|\"[^\"]*\"" contains=xf86confComment,xf86confOption,xf86confKeyword,@xf86confSectionErrors
+ syn region xf86confSubSectionMode matchgroup=xf86confSectionDelim start="^\s*Mode\s\+\"[^\"]\+\"" end="^\s*EndMode\>" skip="#.*$\|\"[^\"]*\"" contains=xf86confComment,xf86confKeyword,@xf86confSectionErrors
+ syn region xf86confSubSectionDisplay matchgroup=xf86confSectionDelim start="^\s*SubSection\s\+\"Display\"" end="^\s*EndSubSection\>" skip="#.*$\|\"[^\"]*\"" contains=xf86confComment,xf86confOption,xf86confKeyword,@xf86confSectionErrors
+else
+ syn region xf86confSection matchgroup=xf86confSectionDelim start="^\s*Section\s\+\"\(Files\|Server[_ ]*Flags\|Device\|Keyboard\|Pointer\)\"" end="^\s*EndSection\>" skip="#.*$\|\"[^\"]*\"" contains=xf86confComment,xf86confOptionName,xf86confOption,xf86confKeyword
+ syn region xf86confSectionMX matchgroup=xf86confSectionDelim start="^\s*Section\s\+\"\(Module\|Xinput\)\"" end="^\s*EndSection\>" skip="#.*$\|\"[^\"]*\"" contains=xf86confSubsectionAny,xf86confComment,xf86confOptionName,xf86confOption,xf86confKeyword
+ syn region xf86confSectionMonitor matchgroup=xf86confSectionDelim start="^\s*Section\s\+\"Monitor\"" end="^\s*EndSection\>" skip="#.*$\|\"[^\"]*\"" contains=xf86confSubsectionMode,xf86confModeLine,xf86confComment,xf86confOptionName,xf86confOption,xf86confKeyword
+ syn region xf86confSectionScreen matchgroup=xf86confSectionDelim start="^\s*Section\s\+\"Screen\"" end="^\s*EndSection\>" skip="#.*$\|\"[^\"]*\"" contains=xf86confSubsectionDisplay,xf86confComment,xf86confOptionName,xf86confOption,xf86confKeyword
+ syn region xf86confSubSectionAny matchgroup=xf86confSectionDelim start="^\s*SubSection\s\+\"[^\"]\+\"" end="^\s*EndSubSection\>" skip="#.*$\|\"[^\"]*\"" contains=xf86confComment,xf86confOptionName,xf86confOption,xf86confKeyword,@xf86confSectionErrors
+ syn region xf86confSubSectionMode matchgroup=xf86confSectionDelim start="^\s*Mode\s\+\"[^\"]\+\"" end="^\s*EndMode\>" skip="#.*$\|\"[^\"]*\"" contains=xf86confComment,xf86confOptionName,xf86confOption,xf86confKeyword,@xf86confSectionErrors
+ syn region xf86confSubSectionDisplay matchgroup=xf86confSectionDelim start="^\s*SubSection\s\+\"Display\"" end="^\s*EndSubSection\>" skip="#.*$\|\"[^\"]*\"" contains=xf86confComment,xf86confOptionName,xf86confOption,xf86confKeyword,@xf86confSectionErrors
+endif
+
+" Options
+if b:xf86conf_xfree86_version >= 4
+ command -nargs=+ Xf86confdeclopt syn keyword xf86confOptionName <args> contained
+else
+ command -nargs=+ Xf86confdeclopt syn keyword xf86confOptionName <args> contained nextgroup=xf86confValue,xf86confComment skipwhite
+endif
+
+Xf86confdeclopt 18bitBus AGPFastWrite AGPMode Accel AllowClosedownGrabs AllowDeactivateGrabs
+Xf86confdeclopt AllowMouseOpenFail AllowNonLocalModInDev AllowNonLocalXvidtune AlwaysCore
+Xf86confdeclopt AngleOffset AutoRepeat BaudRate BeamTimeout Beep BlankTime BlockWrite BottomX
+Xf86confdeclopt BottomY ButtonNumber ButtonThreshold Buttons ByteSwap CacheLines ChordMiddle
+Xf86confdeclopt ClearDTR ClearDTS ClickMode CloneDisplay CloneHSync CloneMode CloneVRefresh
+Xf86confdeclopt ColorKey Composite CompositeSync CoreKeyboard CorePointer Crt2Memory CrtScreen
+Xf86confdeclopt CrtcNumber CyberShadow CyberStretch DDC DDCMode DMAForXv DPMS Dac6Bit DacSpeed
+Xf86confdeclopt DataBits Debug DebugLevel DefaultServerLayout DeltaX DeltaY Device DeviceName
+Xf86confdeclopt DisableModInDev DisableVidModeExtension Display Display1400 DontVTSwitch
+Xf86confdeclopt DontZap DontZoom DoubleScan DozeMode DozeScan DozeTime DragLockButtons
+Xf86confdeclopt DualCount DualRefresh EarlyRasPrecharge Emulate3Buttons Emulate3Timeout
+Xf86confdeclopt EmulateWheel EmulateWheelButton EmulateWheelInertia EnablePageFlip EnterCount
+Xf86confdeclopt EstimateSizesAggressively ExternDisp FPClock16 FPClock24 FPClock32
+Xf86confdeclopt FPClock8 FPDither FastDram FifoAggresive FifoConservative FifoModerate
+Xf86confdeclopt FireGL3000 FixPanelSize FlatPanel FlipXY FlowControl ForceCRT1 ForceCRT2Type
+Xf86confdeclopt ForceLegacyCRT ForcePCIMode FpmVRAM FrameBufferWC FullMMIO GammaBrightness
+Xf86confdeclopt HWClocks HWCursor HandleSpecialKeys HistorySize Interlace Interlaced InternDisp
+Xf86confdeclopt InvX InvY InvertX InvertY KeepShape LCDClock LateRasPrecharge LcdCenter
+Xf86confdeclopt LeftAlt Linear MGASDRAM MMIO MMIOCache MTTR MaxX MaxY MaximumXPosition
+Xf86confdeclopt MaximumYPosition MinX MinY MinimumXPosition MinimumYPosition NoAccel
+Xf86confdeclopt NoAllowMouseOpenFail NoAllowNonLocalModInDev NoAllowNonLocalXvidtune
+Xf86confdeclopt NoBlockWrite NoCompositeSync NoCompression NoCrtScreen NoCyberShadow NoDCC
+Xf86confdeclopt NoDDC NoDac6Bit NoDebug NoDisableModInDev NoDisableVidModeExtension NoDontZap
+Xf86confdeclopt NoDontZoom NoFireGL3000 NoFixPanelSize NoFpmVRAM NoFrameBufferWC NoHWClocks
+Xf86confdeclopt NoHWCursor NoHal NoLcdCenter NoLinear NoMGASDRAM NoMMIO NoMMIOCache NoMTTR
+Xf86confdeclopt NoOverClockMem NoOverlay NoPC98 NoPM NoPciBurst NoPciRetry NoProbeClock
+Xf86confdeclopt NoSTN NoSWCursor NoShadowFb NoShowCache NoSlowEDODRAM NoStretch NoSuspendHack
+Xf86confdeclopt NoTexturedVideo NoTrapSignals NoUseFBDev NoUseModeline NoUseVclk1 NoVTSysReq
+Xf86confdeclopt NoXVideo NvAGP OSMImageBuffers OffTime Origin OverClockMem Overlay
+Xf86confdeclopt PC98 PCIBurst PM PWMActive PWMSleep PanelDelayCompensation PanelHeight
+Xf86confdeclopt PanelOff PanelWidth Parity PciBurst PciRetry Pixmap Port PressDur PressPitch
+Xf86confdeclopt PressVol ProbeClocks ProgramFPRegs Protocol RGBBits ReleaseDur ReleasePitch
+Xf86confdeclopt ReportingMode Resolution RightAlt RightCtl Rotate STN SWCursor SampleRate
+Xf86confdeclopt ScreenNumber ScrollLock SendCoreEvents SendDragEvents Serial ServerNumLock
+Xf86confdeclopt SetLcdClk SetMClk SetRefClk ShadowFb ShadowStatus ShowCache SleepMode
+Xf86confdeclopt SleepScan SleepTime SlowDram SlowEDODRAM StandbyTime StopBits Stretch
+Xf86confdeclopt SuspendHack SuspendTime SwapXY SyncOnGreen TV TVOutput TVOverscan TVStandard
+Xf86confdeclopt TVXPosOffset TVYPosOffset TexturedVideo Threshold Tilt TopX TopY TouchTime
+Xf86confdeclopt TrapSignals Type USB UseBIOS UseFB UseFBDev UseFlatPanel UseModeline
+Xf86confdeclopt UseROMData UseVclk1 VTInit VTSysReq VTime VideoKey Vmin XAxisMapping
+Xf86confdeclopt XLeds XVideo XaaNoCPUToScreenColorExpandFill XaaNoColor8x8PatternFillRect
+Xf86confdeclopt XaaNoColor8x8PatternFillTrap XaaNoDashedBresenhamLine XaaNoDashedTwoPointLine
+Xf86confdeclopt XaaNoImageWriteRect XaaNoMono8x8PatternFillRect XaaNoMono8x8PatternFillTrap
+Xf86confdeclopt XaaNoOffscreenPixmaps XaaNoPixmapCache XaaNoScanlineCPUToScreenColorExpandFill
+Xf86confdeclopt XaaNoScanlineImageWriteRect XaaNoScreenToScreenColorExpandFill
+Xf86confdeclopt XaaNoScreenToScreenCopy XaaNoSolidBresenhamLine XaaNoSolidFillRect
+Xf86confdeclopt XaaNoSolidFillTrap XaaNoSolidHorVertLine XaaNoSolidTwoPointLine Xinerama
+Xf86confdeclopt XkbCompat XkbDisable XkbGeometry XkbKeycodes XkbKeymap XkbLayout XkbModel
+Xf86confdeclopt XkbOptions XkbRules XkbSymbols XkbTypes XkbVariant XvBskew XvHsync XvOnCRT2
+Xf86confdeclopt XvRskew XvVsync YAxisMapping ZAxisMapping ZoomOnLCD
+
+delcommand Xf86confdeclopt
+
+" Keywords
+syn keyword xf86confKeyword Device Driver FontPath Group Identifier Load ModelName ModulePath Monitor RGBPath VendorName VideoAdaptor Visual nextgroup=xf86confComment,xf86confString skipwhite
+syn keyword xf86confKeyword BiosBase Black BoardName BusID ChipID ChipRev Chipset nextgroup=xf86confComment,xf86confValue
+syn keyword xf86confKeyword ClockChip Clocks DacSpeed DefaultDepth DefaultFbBpp nextgroup=xf86confComment,xf86confValue
+syn keyword xf86confKeyword DefaultColorDepth nextgroup=xf86confComment,xf86confValue
+syn keyword xf86confKeyword Depth DisplaySize DotClock FbBpp Flags Gamma HorizSync nextgroup=xf86confComment,xf86confValue
+syn keyword xf86confKeyword Hskew HTimings InputDevice IOBase MemBase Mode nextgroup=xf86confComment,xf86confValue
+syn keyword xf86confKeyword Modes Ramdac Screen TextClockFreq UseModes VendorName nextgroup=xf86confComment,xf86confValue
+syn keyword xf86confKeyword VertRefresh VideoRam ViewPort Virtual VScan VTimings nextgroup=xf86confComment,xf86confValue
+syn keyword xf86confKeyword Weight White nextgroup=xf86confComment,xf86confValue
+syn keyword xf86confModeLine ModeLine nextgroup=xf86confComment,xf86confModeLineValue skipwhite skipnl
+
+" Constants
+if b:xf86conf_xfree86_version >= 4
+ syn keyword xf86confConstant true false on off yes no omit contained
+else
+ syn keyword xf86confConstant Meta Compose Control
+endif
+syn keyword xf86confConstant StaticGray GrayScale StaticColor PseudoColor TrueColor DirectColor contained
+syn keyword xf86confConstant Absolute RightOf LeftOf Above Below Relative StaticGray GrayScale StaticColor PseudoColor TrueColor DirectColor contained
+syn match xf86confSync "\(\s\+[+-][CHV]_*Sync\)\+" contained
+
+" Synchronization
+if b:xf86conf_xfree86_version >= 4
+ syn sync match xf86confSyncSection grouphere xf86confSection "^\s*Section\s\+\"\(Files\|Server[_ ]*Flags\|Input[_ ]*Device\|Device\|Video[_ ]*Adaptor\|Server[_ ]*Layout\|DRI\|Extensions\|Vendor\|Keyboard\|Pointer\|InputClass\)\""
+ syn sync match xf86confSyncSectionModule grouphere xf86confSectionModule "^\s*Section\s\+\"Module\""
+ syn sync match xf86confSyncSectionModes groupthere xf86confSectionModes "^\s*Section\s\+\"Modes\""
+else
+ syn sync match xf86confSyncSection grouphere xf86confSection "^\s*Section\s\+\"\(Files\|Server[_ ]*Flags\|Device\|Keyboard\|Pointer\)\""
+ syn sync match xf86confSyncSectionMX grouphere xf86confSectionMX "^\s*Section\s\+\"\(Module\|Xinput\)\""
+endif
+syn sync match xf86confSyncSectionMonitor groupthere xf86confSectionMonitor "^\s*Section\s\+\"Monitor\""
+syn sync match xf86confSyncSectionScreen groupthere xf86confSectionScreen "^\s*Section\s\+\"Screen\""
+syn sync match xf86confSyncEndSection groupthere NONE "^\s*End_*Section\s*$"
+
+" Define the default highlighting
+hi def link xf86confComment Comment
+hi def link xf86confTodo Todo
+hi def link xf86confSectionDelim Statement
+hi def link xf86confOptionName Identifier
+
+hi def link xf86confSectionError xf86confError
+hi def link xf86confSubSectionError xf86confError
+hi def link xf86confModeSubSectionError xf86confError
+hi def link xf86confOctalNumberError xf86confError
+hi def link xf86confError Error
+
+hi def link xf86confOption xf86confKeyword
+hi def link xf86confModeLine xf86confKeyword
+hi def link xf86confKeyword Type
+
+hi def link xf86confDecimalNumber xf86confNumber
+hi def link xf86confOctalNumber xf86confNumber
+hi def link xf86confHexadecimalNumber xf86confNumber
+hi def link xf86confFrequency xf86confNumber
+hi def link xf86confModeLineValue Constant
+hi def link xf86confNumber Constant
+
+hi def link xf86confSync xf86confConstant
+hi def link xf86confConstant Special
+hi def link xf86confSpecialChar Special
+hi def link xf86confString String
+
+hi def link xf86confValue Constant
+
+let b:current_syntax = "xf86conf"
+
+endif
diff --git a/tests/extensions.vim b/tests/extensions.vim
index 77ff620b..de074e5d 100644
--- a/tests/extensions.vim
+++ b/tests/extensions.vim
@@ -1,3 +1,5 @@
+filetype on
+
function! TestExtension(filetype, filename, content)
call Log('Detecting ' . a:filetype . ' filetype (' . a:filename . ')...')
@@ -388,3 +390,5 @@ call TestExtension("conf", "auto.master", "")
" https://github.com/sheerun/vim-polyglot/issues/579
call TestExtension("dart", "reminders.dart", "")
+
+filetype off
diff --git a/tests/filetypes.vim b/tests/filetypes.vim
index 1c2daaeb..51fdb3dc 100644
--- a/tests/filetypes.vim
+++ b/tests/filetypes.vim
@@ -1,22 +1,23 @@
-function! TestFiletype(filetype)
+filetype plugin indent on
+
+func! TestFiletype(filetype)
call Log('Loading ' . a:filetype . ' filetype...')
try
enew
exec 'set ft=' . a:filetype
+ exec ":bw!"
catch
echo 'Failed to load ' . a:filetype . ' filetype...'
- echo v:exception
+ throw v:exception
+ cq!
endtry
-endfunction
+endfunc
" DO NOT EDIT CODE BELOW, IT IS GENERATED WITH MAKEFILE
call TestFiletype('8th')
call TestFiletype('cfg')
-call TestFiletype('master')
-call TestFiletype('conf')
-call TestFiletype('haproxy')
call TestFiletype('a2ps')
call TestFiletype('a65')
call TestFiletype('aap')
@@ -29,6 +30,8 @@ call TestFiletype('asl')
call TestFiletype('ada')
call TestFiletype('ahdl')
call TestFiletype('aidl')
+call TestFiletype('master')
+call TestFiletype('conf')
call TestFiletype('alsaconf')
call TestFiletype('aml')
call TestFiletype('ampl')
@@ -46,6 +49,7 @@ call TestFiletype('arduino')
call TestFiletype('art')
call TestFiletype('asciidoc')
call TestFiletype('autohotkey')
+call TestFiletype('make')
call TestFiletype('elf')
call TestFiletype('automake')
call TestFiletype('asn')
@@ -59,6 +63,7 @@ call TestFiletype('caddyfile')
call TestFiletype('carp')
call TestFiletype('clojure')
call TestFiletype('cmake')
+call TestFiletype('markdown')
call TestFiletype('coffee')
call TestFiletype('litcoffee')
call TestFiletype('cryptol')
@@ -73,8 +78,9 @@ call TestFiletype('dcov')
call TestFiletype('dd')
call TestFiletype('ddoc')
call TestFiletype('dsdl')
+call TestFiletype('sed')
+call TestFiletype('mysql')
call TestFiletype('yaml')
-call TestFiletype('Dockerfile')
call TestFiletype('yaml.docker-compose')
call TestFiletype('elixir')
call TestFiletype('eelixir')
@@ -108,6 +114,7 @@ call TestFiletype('grub')
call TestFiletype('haml')
call TestFiletype('html.mustache')
call TestFiletype('html.handlebars')
+call TestFiletype('haproxy')
call TestFiletype('haskell')
call TestFiletype('haxe')
call TestFiletype('hcl')
@@ -138,7 +145,6 @@ call TestFiletype('lua')
call TestFiletype('m4')
call TestFiletype('mako')
call TestFiletype('mma')
-call TestFiletype('markdown')
call TestFiletype('markdown.mdx')
call TestFiletype('meson')
call TestFiletype('dosini')
@@ -198,7 +204,6 @@ call TestFiletype('ruby')
call TestFiletype('brewfile')
call TestFiletype('rust')
call TestFiletype('scala')
-call TestFiletype('sbt.scala')
call TestFiletype('scss')
call TestFiletype('sh')
call TestFiletype('zsh')
@@ -359,6 +364,7 @@ call TestFiletype('hastepreproc')
call TestFiletype('hercules')
call TestFiletype('hex')
call TestFiletype('hollywood')
+call TestFiletype('html')
call TestFiletype('tilde')
call TestFiletype('htmlm4')
call TestFiletype('template')
@@ -445,7 +451,6 @@ call TestFiletype('mplayerconf')
call TestFiletype('srec')
call TestFiletype('mrxvtrc')
call TestFiletype('msql')
-call TestFiletype('mysql')
call TestFiletype('muttrc')
call TestFiletype('mupad')
call TestFiletype('mush')
@@ -520,10 +525,10 @@ call TestFiletype('samba')
call TestFiletype('sas')
call TestFiletype('sass')
call TestFiletype('sather')
+call TestFiletype('sbt')
call TestFiletype('scilab')
call TestFiletype('sd')
call TestFiletype('sdl')
-call TestFiletype('sed')
call TestFiletype('sieve')
call TestFiletype('sm')
call TestFiletype('services')
@@ -631,6 +636,9 @@ call TestFiletype('logcheck')
call TestFiletype('svn')
call TestFiletype('text')
call TestFiletype('pullrequest')
-call TestFiletype('html')
+call TestFiletype('xf86conf')
" DO NOT EDIT CODE ABOVE, IT IS GENERATED WITH MAKEFILE
+
+filetype plugin indent off
+filetype off
diff --git a/tests/native.vim b/tests/native.vim
new file mode 100644
index 00000000..ff7b3025
--- /dev/null
+++ b/tests/native.vim
@@ -0,0 +1,703 @@
+func Test_detection()
+ filetype on
+ augroup filetypedetect
+ au BufNewFile,BufRead * call assert_equal(1, did_filetype())
+ augroup END
+ new something.vim
+ call assert_equal('vim', &filetype)
+
+ bwipe!
+ filetype off
+endfunc
+
+func Test_conf_type()
+ filetype on
+ call writefile(['# some comment', 'must be conf'], 'Xfile')
+ augroup filetypedetect
+ au BufNewFile,BufRead * call assert_equal(0, did_filetype())
+ augroup END
+ split Xfile
+ call assert_equal('conf', &filetype)
+
+ bwipe!
+ call delete('Xfile')
+ filetype off
+endfunc
+
+func Test_other_type()
+ filetype on
+ augroup filetypedetect
+ au BufNewFile,BufRead * call assert_equal(0, did_filetype())
+ au BufNewFile,BufRead Xfile setf testfile
+ au BufNewFile,BufRead * call assert_equal(1, did_filetype())
+ augroup END
+ call writefile(['# some comment', 'must be conf'], 'Xfile')
+ split Xfile
+ call assert_equal('testfile', &filetype)
+
+ bwipe!
+ call delete('Xfile')
+ filetype off
+endfunc
+
+" Filetypes detected just from matching the file name.
+let s:filename_checks = {
+ \ '8th': ['file.8th'],
+ \ 'a2ps': ['/etc/a2ps.cfg', '/etc/a2ps/file.cfg', 'a2psrc', '.a2psrc', 'any/etc/a2ps.cfg', 'any/etc/a2ps/file.cfg'],
+ \ 'a65': ['file.a65'],
+ \ 'aap': ['file.aap'],
+ \ 'abap': ['file.abap'],
+ \ 'abc': ['file.abc'],
+ \ 'abel': ['file.abl'],
+ \ 'acedb': ['file.wrm'],
+ \ 'ada': ['file.adb', 'file.ads', 'file.ada', 'file.gpr'],
+ \ 'ahdl': ['file.tdf'],
+ \ 'aidl': ['file.aidl'],
+ \ 'alsaconf': ['.asoundrc', '/usr/share/alsa/alsa.conf', '/etc/asound.conf', 'any/etc/asound.conf', 'any/usr/share/alsa/alsa.conf'],
+ \ 'aml': ['file.aml'],
+ \ 'ampl': ['file.run'],
+ \ 'ant': ['build.xml'],
+ \ 'apache': ['.htaccess', '/etc/httpd/file.conf', '/etc/apache2/sites-2/file.com', '/etc/apache2/some.config', '/etc/apache2/conf.file/conf', '/etc/apache2/mods-some/file', '/etc/apache2/sites-some/file', '/etc/httpd/conf.d/file.config', '/etc/apache2/conf.file/file', '/etc/apache2/file.conf', '/etc/apache2/file.conf-file', '/etc/apache2/mods-file/file', '/etc/apache2/sites-file/file', '/etc/apache2/sites-file/file.com', '/etc/httpd/conf.d/file.conf', '/etc/httpd/conf.d/file.conf-file', 'access.conf', 'access.conf-file', 'any/etc/apache2/conf.file/file', 'any/etc/apache2/file.conf', 'any/etc/apache2/file.conf-file', 'any/etc/apache2/mods-file/file', 'any/etc/apache2/sites-file/file', 'any/etc/apache2/sites-file/file.com', 'any/etc/httpd/conf.d/file.conf', 'any/etc/httpd/conf.d/file.conf-file', 'any/etc/httpd/file.conf', 'apache.conf', 'apache.conf-file', 'apache2.conf', 'apache2.conf-file', 'httpd.conf', 'httpd.conf-file', 'srm.conf', 'srm.conf-file'],
+ \ 'apachestyle': ['/etc/proftpd/file.config,/etc/proftpd/conf.file/file', '/etc/proftpd/conf.file/file', '/etc/proftpd/file.conf', '/etc/proftpd/file.conf-file', 'any/etc/proftpd/conf.file/file', 'any/etc/proftpd/file.conf', 'any/etc/proftpd/file.conf-file', 'proftpd.conf', 'proftpd.conf-file'],
+ \ 'applescript': ['file.scpt'],
+ \ 'aptconf': ['apt.conf', '/.aptitude/config', 'any/.aptitude/config'],
+ \ 'arch': ['.arch-inventory', '=tagging-method'],
+ \ 'arduino': ['file.ino', 'file.pde'],
+ \ 'art': ['file.art'],
+ \ 'asciidoc': ['file.asciidoc', 'file.adoc'],
+ \ 'asn': ['file.asn', 'file.asn1'],
+ \ 'asterisk': ['asterisk/file.conf', 'asterisk/file.conf-file', 'some-asterisk/file.conf', 'some-asterisk/file.conf-file'],
+ \ 'atlas': ['file.atl', 'file.as'],
+ \ 'autohotkey': ['file.ahk'],
+ \ 'autoit': ['file.au3'],
+ \ 'automake': ['GNUmakefile.am', 'makefile.am', 'Makefile.am'],
+ \ 'ave': ['file.ave'],
+ \ 'awk': ['file.awk', 'file.gawk'],
+ \ 'b': ['file.mch', 'file.ref', 'file.imp'],
+ \ 'bzl': ['file.bazel', 'file.bzl', 'WORKSPACE'],
+ \ 'bc': ['file.bc'],
+ \ 'bdf': ['file.bdf'],
+ \ 'bib': ['file.bib'],
+ \ 'bindzone': ['named.root', '/bind/db.file', '/named/db.file', 'any/bind/db.file', 'any/named/db.file'],
+ \ 'blank': ['file.bl'],
+ \ 'bsdl': ['file.bsd', 'file.bsdl', 'bsd', 'some-bsd'],
+ \ 'bst': ['file.bst'],
+ \ 'bzr': ['bzr_log.any', 'bzr_log.file'],
+ \ 'c': ['enlightenment/file.cfg', 'file.qc', 'file.c', 'some-enlightenment/file.cfg'],
+ \ 'cabal': ['file.cabal'],
+ \ 'calendar': ['calendar', '/.calendar/file', '/share/calendar/any/calendar.file', '/share/calendar/calendar.file', 'any/.calendar/file', 'any/share/calendar/any/calendar.file', 'any/share/calendar/calendar.file'],
+ \ 'catalog': ['catalog', 'sgml.catalogfile', 'sgml.catalog', 'sgml.catalog-file'],
+ \ 'cdl': ['file.cdl'],
+ \ 'cdrdaoconf': ['/etc/cdrdao.conf', '/etc/defaults/cdrdao', '/etc/default/cdrdao', '.cdrdao', 'any/etc/cdrdao.conf', 'any/etc/default/cdrdao', 'any/etc/defaults/cdrdao'],
+ \ 'cdrtoc': ['file.toc'],
+ \ 'cf': ['file.cfm', 'file.cfi', 'file.cfc'],
+ \ 'cfengine': ['cfengine.conf'],
+ \ 'cfg': ['file.cfg', 'file.hgrc', 'filehgrc', 'hgrc', 'some-hgrc'],
+ \ 'ch': ['file.chf'],
+ \ 'chaiscript': ['file.chai'],
+ \ 'chaskell': ['file.chs'],
+ \ 'chill': ['file..ch'],
+ \ 'chordpro': ['file.chopro', 'file.crd', 'file.cho', 'file.crdpro', 'file.chordpro'],
+ \ 'cl': ['file.eni'],
+ \ 'clean': ['file.dcl', 'file.icl'],
+ \ 'clojure': ['file.clj', 'file.cljs', 'file.cljx', 'file.cljc'],
+ \ 'cmake': ['CMakeLists.txt', 'file.cmake', 'file.cmake.in'],
+ \ 'cmusrc': ['any/.cmus/autosave', 'any/.cmus/rc', 'any/.cmus/command-history', 'any/.cmus/file.theme', 'any/cmus/rc', 'any/cmus/file.theme', '/.cmus/autosave', '/.cmus/command-history', '/.cmus/file.theme', '/.cmus/rc', '/cmus/file.theme', '/cmus/rc'],
+ \ 'cobol': ['file.cbl', 'file.cob', 'file.lib'],
+ \ 'coco': ['file.atg'],
+ \ 'conaryrecipe': ['file.recipe'],
+ \ 'conf': ['auto.master'],
+ \ 'config': ['configure.in', 'configure.ac', 'Pipfile', '/etc/hostname.file'],
+ \ 'context': ['tex/context/any/file.tex', 'file.mkii', 'file.mkiv', 'file.mkvi'],
+ \ 'cpp': ['file.cxx', 'file.c++', 'file.hh', 'file.hxx', 'file.hpp', 'file.ipp', 'file.moc', 'file.tcc', 'file.inl', 'file.tlh'],
+ \ 'crm': ['file.crm'],
+ \ 'crontab': ['crontab', 'crontab.file', '/etc/cron.d/file', 'any/etc/cron.d/file'],
+ \ 'cs': ['file.cs'],
+ \ 'csc': ['file.csc'],
+ \ 'csdl': ['file.csdl'],
+ \ 'csp': ['file.csp', 'file.fdr'],
+ \ 'css': ['file.css'],
+ \ 'cterm': ['file.con'],
+ \ 'cucumber': ['file.feature'],
+ \ 'cuda': ['file.cu', 'file.cuh'],
+ \ 'cupl': ['file.pld'],
+ \ 'cuplsim': ['file.si'],
+ \ 'cvs': ['cvs123'],
+ \ 'cvsrc': ['.cvsrc'],
+ \ 'cynpp': ['file.cyn'],
+ \ 'dart': ['file.dart', 'file.drt'],
+ \ 'datascript': ['file.ds'],
+ \ 'dcd': ['file.dcd'],
+ \ 'debchangelog': ['changelog.Debian', 'changelog.dch', 'NEWS.Debian', 'NEWS.dch', '/debian/changelog'],
+ \ 'debcontrol': ['/debian/control', 'any/debian/control'],
+ \ 'debcopyright': ['/debian/copyright', 'any/debian/copyright'],
+ \ 'debsources': ['/etc/apt/sources.list', '/etc/apt/sources.list.d/file.list', 'any/etc/apt/sources.list', 'any/etc/apt/sources.list.d/file.list'],
+ \ 'def': ['file.def'],
+ \ 'denyhosts': ['denyhosts.conf'],
+ \ 'desc': ['file.desc'],
+ \ 'desktop': ['file.desktop', '.directory', 'file.directory'],
+ \ 'dictconf': ['dict.conf', '.dictrc'],
+ \ 'dictdconf': ['dictd.conf'],
+ \ 'diff': ['file.diff', 'file.rej'],
+ \ 'dircolors': ['.dir_colors', '.dircolors', '/etc/DIR_COLORS', 'any/etc/DIR_COLORS'],
+ \ 'dnsmasq': ['/etc/dnsmasq.conf', '/etc/dnsmasq.d/file', 'any/etc/dnsmasq.conf', 'any/etc/dnsmasq.d/file'],
+ \ 'dockerfile': ['Containerfile', 'Dockerfile', 'file.Dockerfile'],
+ \ 'dosbatch': ['file.bat', 'file.sys'],
+ \ 'dosini': ['.editorconfig', '/etc/pacman.conf', '/etc/yum.conf', 'file.ini', 'npmrc', '.npmrc', 'php.ini', 'php.ini-5', 'php.ini-file', '/etc/yum.repos.d/file', 'any/etc/pacman.conf', 'any/etc/yum.conf', 'any/etc/yum.repos.d/file'],
+ \ 'dot': ['file.dot', 'file.gv'],
+ \ 'dracula': ['file.drac', 'file.drc', 'filelvs', 'filelpe', 'drac.file', 'lpe', 'lvs', 'some-lpe', 'some-lvs'],
+ \ 'dsl': ['file.dsl'],
+ \ 'dtd': ['file.dtd'],
+ \ 'dts': ['file.dts', 'file.dtsi'],
+ \ 'dylan': ['file.dylan'],
+ \ 'dylanintr': ['file.intr'],
+ \ 'dylanlid': ['file.lid'],
+ \ 'ecd': ['file.ecd'],
+ \ 'edif': ['file.edf', 'file.edif', 'file.edo'],
+ \ 'elinks': ['elinks.conf'],
+ \ 'elm': ['file.elm'],
+ \ 'elmfilt': ['filter-rules'],
+ \ 'erlang': ['file.erl', 'file.hrl', 'file.yaws'],
+ \ 'eruby': ['file.erb', 'file.rhtml'],
+ \ 'esmtprc': ['anyesmtprc', 'esmtprc', 'some-esmtprc'],
+ \ 'esqlc': ['file.ec', 'file.EC'],
+ \ 'esterel': ['file.strl'],
+ \ 'eterm': ['anyEterm/file.cfg', 'Eterm/file.cfg', 'some-Eterm/file.cfg'],
+ \ 'exim': ['exim.conf'],
+ \ 'expect': ['file.exp'],
+ \ 'exports': ['exports'],
+ \ 'factor': ['file.factor'],
+ \ 'falcon': ['file.fal'],
+ \ 'fan': ['file.fan', 'file.fwt'],
+ \ 'fetchmail': ['.fetchmailrc'],
+ \ 'fgl': ['file.4gl', 'file.4gh', 'file.m4gl'],
+ \ 'focexec': ['file.fex', 'file.focexec'],
+ \ 'forth': ['file.fs', 'file.ft', 'file.fth'],
+ \ 'fortran': ['file.f', 'file.for', 'file.fortran', 'file.fpp', 'file.ftn', 'file.f77', 'file.f90', 'file.f95', 'file.f03', 'file.f08'],
+ \ 'framescript': ['file.fsl'],
+ \ 'freebasic': ['file.fb', 'file.bi'],
+ \ 'fstab': ['fstab', 'mtab'],
+ \ 'fvwm': ['/.fvwm/file', 'any/.fvwm/file'],
+ \ 'gdb': ['.gdbinit'],
+ \ 'gdmo': ['file.mo', 'file.gdmo'],
+ \ 'gedcom': ['file.ged', 'lltxxxxx.txt', '/tmp/lltmp', '/tmp/lltmp-file', 'any/tmp/lltmp', 'any/tmp/lltmp-file'],
+ \ 'gitcommit': ['COMMIT_EDITMSG', 'MERGE_MSG', 'TAG_EDITMSG'],
+ \ 'gitconfig': ['file.git/config', '.gitconfig', '.gitmodules', 'file.git/modules//config', '/.config/git/config', '/etc/gitconfig', '/etc/gitconfig.d/file', '/.gitconfig.d/file', 'any/.config/git/config', 'any/.gitconfig.d/file', 'some.git/config', 'some.git/modules/any/config'],
+ \ 'gitolite': ['gitolite.conf', '/gitolite-admin/conf/file', 'any/gitolite-admin/conf/file'],
+ \ 'gitrebase': ['git-rebase-todo'],
+ \ 'gitsendemail': ['.gitsendemail.msg.xxxxxx'],
+ \ 'gkrellmrc': ['gkrellmrc', 'gkrellmrc_x'],
+ \ 'gnash': ['gnashrc', '.gnashrc', 'gnashpluginrc', '.gnashpluginrc'],
+ \ 'gnuplot': ['file.gpi'],
+ \ 'go': ['file.go'],
+ \ 'gp': ['file.gp', '.gprc'],
+ \ 'gpg': ['/.gnupg/options', '/.gnupg/gpg.conf', '/usr/any/gnupg/options.skel', 'any/.gnupg/gpg.conf', 'any/.gnupg/options', 'any/usr/any/gnupg/options.skel'],
+ \ 'grads': ['file.gs'],
+ \ 'gretl': ['file.gretl'],
+ \ 'groovy': ['file.gradle', 'file.groovy'],
+ \ 'group': ['any/etc/group', 'any/etc/group-', 'any/etc/group.edit', 'any/etc/gshadow', 'any/etc/gshadow-', 'any/etc/gshadow.edit', 'any/var/backups/group.bak', 'any/var/backups/gshadow.bak', '/etc/group', '/etc/group-', '/etc/group.edit', '/etc/gshadow', '/etc/gshadow-', '/etc/gshadow.edit', '/var/backups/group.bak', '/var/backups/gshadow.bak'],
+ \ 'grub': ['/boot/grub/menu.lst', '/boot/grub/grub.conf', '/etc/grub.conf', 'any/boot/grub/grub.conf', 'any/boot/grub/menu.lst', 'any/etc/grub.conf'],
+ \ 'gsp': ['file.gsp'],
+ \ 'gtkrc': ['.gtkrc', 'gtkrc', '.gtkrc-file', 'gtkrc-file'],
+ \ 'haml': ['file.haml'],
+ \ 'hamster': ['file.hsc', 'file.hsm'],
+ \ 'haskell': ['file.hs', 'file.hs-boot'],
+ \ 'haste': ['file.ht'],
+ \ 'hastepreproc': ['file.htpp'],
+ \ 'hb': ['file.hb'],
+ \ 'hercules': ['file.vc', 'file.ev', 'file.sum', 'file.errsum'],
+ \ 'hex': ['file.hex', 'file.h32'],
+ \ 'hgcommit': ['hg-editor-file.txt'],
+ \ 'hog': ['file.hog', 'snort.conf', 'vision.conf'],
+ \ 'hollywood': ['file.hws'],
+ \ 'hostconf': ['/etc/host.conf', 'any/etc/host.conf'],
+ \ 'hostsaccess': ['/etc/hosts.allow', '/etc/hosts.deny', 'any/etc/hosts.allow', 'any/etc/hosts.deny'],
+ \ 'logcheck': ['/etc/logcheck/file.d-some/file', '/etc/logcheck/file.d/file', 'any/etc/logcheck/file.d-some/file', 'any/etc/logcheck/file.d/file'],
+ \ 'modula3': ['file.m3', 'file.mg', 'file.i3', 'file.ig'],
+ \ 'natural': ['file.NSA', 'file.NSC', 'file.NSG', 'file.NSL', 'file.NSM', 'file.NSN', 'file.NSP', 'file.NSS'],
+ \ 'neomuttrc': ['Neomuttrc', '.neomuttrc', '.neomuttrc-file', '/.neomutt/neomuttrc', '/.neomutt/neomuttrc-file', 'Neomuttrc', 'Neomuttrc-file', 'any/.neomutt/neomuttrc', 'any/.neomutt/neomuttrc-file', 'neomuttrc', 'neomuttrc-file'],
+ \ 'opl': ['file.OPL', 'file.OPl', 'file.OpL', 'file.Opl', 'file.oPL', 'file.oPl', 'file.opL', 'file.opl'],
+ \ 'pcmk': ['file.pcmk'],
+ \ 'r': ['file.r'],
+ \ 'rhelp': ['file.rd'],
+ \ 'rmd': ['file.rmd', 'file.smd'],
+ \ 'rnoweb': ['file.rnw', 'file.snw'],
+ \ 'rrst': ['file.rrst', 'file.srst'],
+ \ 'template': ['file.tmpl'],
+ \ 'htmlm4': ['file.html.m4'],
+ \ 'httest': ['file.htt', 'file.htb'],
+ \ 'ibasic': ['file.iba', 'file.ibi'],
+ \ 'icemenu': ['/.icewm/menu', 'any/.icewm/menu'],
+ \ 'icon': ['file.icn'],
+ \ 'indent': ['.indent.pro', 'indentrc'],
+ \ 'inform': ['file.inf', 'file.INF'],
+ \ 'initng': ['/etc/initng/any/file.i', 'file.ii', 'any/etc/initng/any/file.i'],
+ \ 'inittab': ['inittab'],
+ \ 'ipfilter': ['ipf.conf', 'ipf6.conf', 'ipf.rules'],
+ \ 'iss': ['file.iss'],
+ \ 'ist': ['file.ist', 'file.mst'],
+ \ 'j': ['file.ijs'],
+ \ 'jal': ['file.jal', 'file.JAL'],
+ \ 'jam': ['file.jpl', 'file.jpr', 'JAM-file.file', 'JAM.file', 'Prl-file.file', 'Prl.file'],
+ \ 'java': ['file.java', 'file.jav'],
+ \ 'javacc': ['file.jj', 'file.jjt'],
+ \ 'javascript': ['file.js', 'file.javascript', 'file.es', 'file.mjs', 'file.cjs'],
+ \ 'javascriptreact': ['file.jsx'],
+ \ 'jess': ['file.clp'],
+ \ 'jgraph': ['file.jgr'],
+ \ 'jovial': ['file.jov', 'file.j73', 'file.jovial'],
+ \ 'jproperties': ['file.properties', 'file.properties_xx', 'file.properties_xx_xx', 'some.properties_xx_xx_file'],
+ \ 'json': ['file.json', 'file.jsonp', 'file.webmanifest', 'Pipfile.lock'],
+ \ 'jsp': ['file.jsp'],
+ \ 'kconfig': ['Kconfig', 'Kconfig.debug', 'Kconfig.file'],
+ \ 'kivy': ['file.kv'],
+ \ 'kix': ['file.kix'],
+ \ 'kotlin': ['file.kt', 'file.ktm', 'file.kts'],
+ \ 'kscript': ['file.ks'],
+ \ 'kwt': ['file.k'],
+ \ 'lace': ['file.ace', 'file.ACE'],
+ \ 'latte': ['file.latte', 'file.lte'],
+ \ 'ld': ['file.ld'],
+ \ 'ldif': ['file.ldif'],
+ \ 'less': ['file.less'],
+ \ 'lex': ['file.lex', 'file.l', 'file.lxx', 'file.l++'],
+ \ 'lftp': ['lftp.conf', '.lftprc', 'anylftp/rc', 'lftp/rc', 'some-lftp/rc'],
+ \ 'lhaskell': ['file.lhs'],
+ \ 'libao': ['/etc/libao.conf', '/.libao', 'any/.libao', 'any/etc/libao.conf'],
+ \ 'lifelines': ['file.ll'],
+ \ 'lilo': ['lilo.conf', 'lilo.conf-file'],
+ \ 'limits': ['/etc/limits', '/etc/anylimits.conf', '/etc/anylimits.d/file.conf', '/etc/limits.conf', '/etc/limits.d/file.conf', '/etc/some-limits.conf', '/etc/some-limits.d/file.conf', 'any/etc/limits', 'any/etc/limits.conf', 'any/etc/limits.d/file.conf', 'any/etc/some-limits.conf', 'any/etc/some-limits.d/file.conf'],
+ \ 'liquid': ['file.liquid'],
+ \ 'lisp': ['file.lsp', 'file.lisp', 'file.el', 'file.cl', '.emacs', '.sawfishrc', 'sbclrc', '.sbclrc'],
+ \ 'lite': ['file.lite', 'file.lt'],
+ \ 'litestep': ['/LiteStep/any/file.rc', 'any/LiteStep/any/file.rc'],
+ \ 'loginaccess': ['/etc/login.access', 'any/etc/login.access'],
+ \ 'logindefs': ['/etc/login.defs', 'any/etc/login.defs'],
+ \ 'logtalk': ['file.lgt'],
+ \ 'lotos': ['file.lot', 'file.lotos'],
+ \ 'lout': ['file.lou', 'file.lout'],
+ \ 'lprolog': ['file.sig'],
+ \ 'lsl': ['file.lsl'],
+ \ 'lss': ['file.lss'],
+ \ 'lua': ['file.lua', 'file.rockspec', 'file.nse'],
+ \ 'lynx': ['lynx.cfg'],
+ \ 'm4': ['file.at'],
+ \ 'mail': ['snd.123', '.letter', '.letter.123', '.followup', '.article', '.article.123', 'pico.123', 'mutt-xx-xxx', 'muttng-xx-xxx', 'ae123.txt', 'file.eml', 'reportbug-file'],
+ \ 'mailaliases': ['/etc/mail/aliases', '/etc/aliases', 'any/etc/aliases', 'any/etc/mail/aliases'],
+ \ 'mailcap': ['.mailcap', 'mailcap'],
+ \ 'make': ['file.mk', 'file.mak', 'file.dsp', 'makefile', 'Makefile', 'makefile-file', 'Makefile-file', 'some-makefile', 'some-Makefile'],
+ \ 'mallard': ['file.page'],
+ \ 'man': ['file.man'],
+ \ 'manconf': ['/etc/man.conf', 'man.config', 'any/etc/man.conf'],
+ \ 'map': ['file.map'],
+ \ 'maple': ['file.mv', 'file.mpl', 'file.mws'],
+ \ 'markdown': ['file.markdown', 'file.mdown', 'file.mkd', 'file.mkdn', 'file.mdwn', 'file.md'],
+ \ 'mason': ['file.mason', 'file.mhtml', 'file.comp'],
+ \ 'master': ['file.mas', 'file.master'],
+ \ 'mel': ['file.mel'],
+ \ 'meson': ['meson.build', 'meson_options.txt'],
+ \ 'messages': ['/log/auth', '/log/cron', '/log/daemon', '/log/debug', '/log/kern', '/log/lpr', '/log/mail', '/log/messages', '/log/news/news', '/log/syslog', '/log/user',
+ \ '/log/auth.log', '/log/cron.log', '/log/daemon.log', '/log/debug.log', '/log/kern.log', '/log/lpr.log', '/log/mail.log', '/log/messages.log', '/log/news/news.log', '/log/syslog.log', '/log/user.log',
+ \ '/log/auth.err', '/log/cron.err', '/log/daemon.err', '/log/debug.err', '/log/kern.err', '/log/lpr.err', '/log/mail.err', '/log/messages.err', '/log/news/news.err', '/log/syslog.err', '/log/user.err',
+ \ '/log/auth.info', '/log/cron.info', '/log/daemon.info', '/log/debug.info', '/log/kern.info', '/log/lpr.info', '/log/mail.info', '/log/messages.info', '/log/news/news.info', '/log/syslog.info', '/log/user.info',
+ \ '/log/auth.warn', '/log/cron.warn', '/log/daemon.warn', '/log/debug.warn', '/log/kern.warn', '/log/lpr.warn', '/log/mail.warn', '/log/messages.warn', '/log/news/news.warn', '/log/syslog.warn', '/log/user.warn',
+ \ '/log/auth.crit', '/log/cron.crit', '/log/daemon.crit', '/log/debug.crit', '/log/kern.crit', '/log/lpr.crit', '/log/mail.crit', '/log/messages.crit', '/log/news/news.crit', '/log/syslog.crit', '/log/user.crit',
+ \ '/log/auth.notice', '/log/cron.notice', '/log/daemon.notice', '/log/debug.notice', '/log/kern.notice', '/log/lpr.notice', '/log/mail.notice', '/log/messages.notice', '/log/news/news.notice', '/log/syslog.notice', '/log/user.notice'],
+ \ 'mf': ['file.mf'],
+ \ 'mgl': ['file.mgl'],
+ \ 'mgp': ['file.mgp'],
+ \ 'mib': ['file.mib', 'file.my'],
+ \ 'mix': ['file.mix', 'file.mixal'],
+ \ 'mma': ['file.nb'],
+ \ 'mmp': ['file.mmp'],
+ \ 'modconf': ['/etc/modules.conf', '/etc/modules', '/etc/conf.modules', '/etc/modprobe.file', 'any/etc/conf.modules', 'any/etc/modprobe.file', 'any/etc/modules', 'any/etc/modules.conf'],
+ \ 'modula2': ['file.m2', 'file.mi'],
+ \ 'monk': ['file.isc', 'file.monk', 'file.ssc', 'file.tsc'],
+ \ 'moo': ['file.moo'],
+ \ 'mp': ['file.mp'],
+ \ 'mplayerconf': ['mplayer.conf', '/.mplayer/config', 'any/.mplayer/config'],
+ \ 'mrxvtrc': ['mrxvtrc', '.mrxvtrc'],
+ \ 'msidl': ['file.odl', 'file.mof'],
+ \ 'msql': ['file.msql'],
+ \ 'mupad': ['file.mu'],
+ \ 'mush': ['file.mush'],
+ \ 'muttrc': ['Muttngrc', 'Muttrc', '.muttngrc', '.muttngrc-file', '.muttrc', '.muttrc-file', '/.mutt/muttngrc', '/.mutt/muttngrc-file', '/.mutt/muttrc', '/.mutt/muttrc-file', '/.muttng/muttngrc', '/.muttng/muttngrc-file', '/.muttng/muttrc', '/.muttng/muttrc-file', '/etc/Muttrc.d/file', 'Muttngrc-file', 'Muttrc-file', 'any/.mutt/muttngrc', 'any/.mutt/muttngrc-file', 'any/.mutt/muttrc', 'any/.mutt/muttrc-file', 'any/.muttng/muttngrc', 'any/.muttng/muttngrc-file', 'any/.muttng/muttrc', 'any/.muttng/muttrc-file', 'any/etc/Muttrc.d/file', 'muttngrc', 'muttngrc-file', 'muttrc', 'muttrc-file'],
+ \ 'mysql': ['file.mysql'],
+ \ 'n1ql': ['file.n1ql', 'file.nql'],
+ \ 'named': ['namedfile.conf', 'rndcfile.conf', 'named-file.conf', 'named.conf', 'rndc-file.conf', 'rndc-file.key', 'rndc.conf', 'rndc.key'],
+ \ 'nanorc': ['/etc/nanorc', 'file.nanorc', 'any/etc/nanorc'],
+ \ 'ncf': ['file.ncf'],
+ \ 'netrc': ['.netrc'],
+ \ 'ninja': ['file.ninja'],
+ \ 'nqc': ['file.nqc'],
+ \ 'nroff': ['file.tr', 'file.nr', 'file.roff', 'file.tmac', 'file.mom', 'tmac.file'],
+ \ 'nsis': ['file.nsi', 'file.nsh'],
+ \ 'obj': ['file.obj'],
+ \ 'ocaml': ['file.ml', 'file.mli', 'file.mll', 'file.mly', '.ocamlinit'],
+ \ 'occam': ['file.occ'],
+ \ 'omnimark': ['file.xom', 'file.xin'],
+ \ 'openroad': ['file.or'],
+ \ 'ora': ['file.ora'],
+ \ 'pamconf': ['/etc/pam.conf', '/etc/pam.d/file', 'any/etc/pam.conf', 'any/etc/pam.d/file'],
+ \ 'pamenv': ['/etc/security/pam_env.conf', '/home/user/.pam_environment', '.pam_environment', 'pam_env.conf'],
+ \ 'papp': ['file.papp', 'file.pxml', 'file.pxsl'],
+ \ 'pascal': ['file.pas', 'file.pp', 'file.dpr', 'file.lpr'],
+ \ 'passwd': ['any/etc/passwd', 'any/etc/passwd-', 'any/etc/passwd.edit', 'any/etc/shadow', 'any/etc/shadow-', 'any/etc/shadow.edit', 'any/var/backups/passwd.bak', 'any/var/backups/shadow.bak', '/etc/passwd', '/etc/passwd-', '/etc/passwd.edit', '/etc/shadow', '/etc/shadow-', '/etc/shadow.edit', '/var/backups/passwd.bak', '/var/backups/shadow.bak'],
+ \ 'pccts': ['file.g'],
+ \ 'pdf': ['file.pdf'],
+ \ 'perl': ['file.plx', 'file.al', 'file.psgi', 'gitolite.rc', '.gitolite.rc', 'example.gitolite.rc'],
+ \ 'raku': ['file.p6', 'file.pm6', 'file.pl6', 'file.raku', 'file.rakumod', 'file.pod6'],
+ \ 'pf': ['pf.conf'],
+ \ 'pfmain': ['main.cf'],
+ \ 'php': ['file.php', 'file.php9', 'file.phtml', 'file.ctp'],
+ \ 'lpc': ['file.lpc', 'file.ulpc'],
+ \ 'pike': ['file.pike', 'file.pmod'],
+ \ 'cmod': ['file.cmod'],
+ \ 'pilrc': ['file.rcp'],
+ \ 'pine': ['.pinerc', 'pinerc', '.pinercex', 'pinercex'],
+ \ 'pinfo': ['/etc/pinforc', '/.pinforc', 'any/.pinforc', 'any/etc/pinforc'],
+ \ 'pli': ['file.pli', 'file.pl1'],
+ \ 'plm': ['file.plm', 'file.p36', 'file.pac'],
+ \ 'plp': ['file.plp'],
+ \ 'plsql': ['file.pls', 'file.plsql'],
+ \ 'po': ['file.po', 'file.pot'],
+ \ 'pod': ['file.pod'],
+ \ 'postscr': ['file.ps', 'file.pfa', 'file.afm', 'file.eps', 'file.epsf', 'file.epsi', 'file.ai'],
+ \ 'pov': ['file.pov'],
+ \ 'povini': ['.povrayrc'],
+ \ 'ppd': ['file.ppd'],
+ \ 'ppwiz': ['file.it', 'file.ih'],
+ \ 'privoxy': ['file.action'],
+ \ 'proc': ['file.pc'],
+ \ 'procmail': ['.procmail', '.procmailrc'],
+ \ 'prolog': ['file.pdb'],
+ \ 'promela': ['file.pml'],
+ \ 'proto': ['file.proto'],
+ \ 'protocols': ['/etc/protocols', 'any/etc/protocols'],
+ \ 'psf': ['file.psf'],
+ \ 'pyrex': ['file.pyx', 'file.pxd'],
+ \ 'python': ['file.py', 'file.pyw', '.pythonstartup', '.pythonrc', 'file.ptl', 'file.pyi', 'SConstruct'],
+ \ 'quake': ['anybaseq2/file.cfg', 'anyid1/file.cfg', 'quake3/file.cfg', 'baseq2/file.cfg', 'id1/file.cfg', 'quake1/file.cfg', 'some-baseq2/file.cfg', 'some-id1/file.cfg', 'some-quake1/file.cfg'],
+ \ 'radiance': ['file.rad', 'file.mat'],
+ \ 'ratpoison': ['.ratpoisonrc', 'ratpoisonrc'],
+ \ 'rc': ['file.rc', 'file.rch'],
+ \ 'rcs': ['file,v'],
+ \ 'readline': ['.inputrc', 'inputrc'],
+ \ 'remind': ['.reminders', 'file.remind', 'file.rem', '.reminders-file'],
+ \ 'rego': ['file.rego'],
+ \ 'resolv': ['resolv.conf'],
+ \ 'reva': ['file.frt'],
+ \ 'rexx': ['file.rex', 'file.orx', 'file.rxo', 'file.rxj', 'file.jrexx', 'file.rexxj', 'file.rexx', 'file.testGroup', 'file.testUnit'],
+ \ 'rib': ['file.rib'],
+ \ 'rnc': ['file.rnc'],
+ \ 'rng': ['file.rng'],
+ \ 'robots': ['robots.txt'],
+ \ 'rpcgen': ['file.x'],
+ \ 'rpl': ['file.rpl'],
+ \ 'rst': ['file.rst'],
+ \ 'rtf': ['file.rtf'],
+ \ 'ruby': ['.irbrc', 'irbrc', 'file.rb', 'file.rbw', 'file.gemspec', 'file.ru', 'Gemfile', 'file.builder', 'file.rxml', 'file.rjs', 'file.rant', 'file.rake', 'rakefile', 'Rakefile', 'rantfile', 'Rantfile', 'rakefile-file', 'Rakefile-file'],
+ \ 'rust': ['file.rs'],
+ \ 'samba': ['smb.conf'],
+ \ 'sas': ['file.sas'],
+ \ 'sass': ['file.sass'],
+ \ 'sather': ['file.sa'],
+ \ 'sbt': ['file.sbt'],
+ \ 'scala': ['file.scala'],
+ \ 'scheme': ['file.scm', 'file.ss', 'file.rkt'],
+ \ 'scilab': ['file.sci', 'file.sce'],
+ \ 'screen': ['.screenrc', 'screenrc'],
+ \ 'scss': ['file.scss'],
+ \ 'sd': ['file.sd'],
+ \ 'sdc': ['file.sdc'],
+ \ 'sdl': ['file.sdl', 'file.pr'],
+ \ 'sed': ['file.sed'],
+ \ 'sensors': ['/etc/sensors.conf', '/etc/sensors3.conf', 'any/etc/sensors.conf', 'any/etc/sensors3.conf'],
+ \ 'services': ['/etc/services', 'any/etc/services'],
+ \ 'setserial': ['/etc/serial.conf', 'any/etc/serial.conf'],
+ \ 'sh': ['/etc/udev/cdsymlinks.conf', 'any/etc/udev/cdsymlinks.conf'],
+ \ 'sieve': ['file.siv', 'file.sieve'],
+ \ 'simula': ['file.sim'],
+ \ 'sinda': ['file.sin', 'file.s85'],
+ \ 'sisu': ['file.sst', 'file.ssm', 'file.ssi', 'file.-sst', 'file._sst', 'file.sst.meta', 'file.-sst.meta', 'file._sst.meta'],
+ \ 'skill': ['file.il', 'file.ils', 'file.cdf'],
+ \ 'slang': ['file.sl'],
+ \ 'slice': ['file.ice'],
+ \ 'slpconf': ['/etc/slp.conf', 'any/etc/slp.conf'],
+ \ 'slpreg': ['/etc/slp.reg', 'any/etc/slp.reg'],
+ \ 'slpspi': ['/etc/slp.spi', 'any/etc/slp.spi'],
+ \ 'slrnrc': ['.slrnrc'],
+ \ 'slrnsc': ['file.score'],
+ \ 'sm': ['sendmail.cf'],
+ \ 'smarty': ['file.tpl'],
+ \ 'smcl': ['file.hlp', 'file.ihlp', 'file.smcl'],
+ \ 'smith': ['file.smt', 'file.smith'],
+ \ 'sml': ['file.sml'],
+ \ 'snobol4': ['file.sno', 'file.spt'],
+ \ 'spec': ['file.spec'],
+ \ 'spice': ['file.sp', 'file.spice'],
+ \ 'spup': ['file.speedup', 'file.spdata', 'file.spd'],
+ \ 'spyce': ['file.spy', 'file.spi'],
+ \ 'sql': ['file.tyb', 'file.typ', 'file.tyc', 'file.pkb', 'file.pks'],
+ \ 'sqlj': ['file.sqlj'],
+ \ 'sqr': ['file.sqr', 'file.sqi'],
+ \ 'squid': ['squid.conf'],
+ \ 'srec': ['file.s19', 'file.s28', 'file.s37', 'file.mot', 'file.srec'],
+ \ 'sshconfig': ['ssh_config', '/.ssh/config', '/etc/ssh/ssh_config.d/file.conf', 'any/etc/ssh/ssh_config.d/file.conf', 'any/.ssh/config'],
+ \ 'sshdconfig': ['sshd_config', '/etc/ssh/sshd_config.d/file.conf', 'any/etc/ssh/sshd_config.d/file.conf'],
+ \ 'st': ['file.st'],
+ \ 'stata': ['file.ado', 'file.do', 'file.imata', 'file.mata'],
+ \ 'stp': ['file.stp'],
+ \ 'sudoers': ['any/etc/sudoers', 'sudoers.tmp', '/etc/sudoers'],
+ \ 'svg': ['file.svg'],
+ \ 'svn': ['svn-commitfile.tmp', 'svn-commit-file.tmp', 'svn-commit.tmp'],
+ \ 'swift': ['file.swift'],
+ \ 'swiftgyb': ['file.swift.gyb'],
+ \ 'sil': ['file.sil'],
+ \ 'sysctl': ['/etc/sysctl.conf', '/etc/sysctl.d/file.conf', 'any/etc/sysctl.conf', 'any/etc/sysctl.d/file.conf'],
+ \ 'systemd': ['any/systemd/file.automount', 'any/systemd/file.dnssd', 'any/systemd/file.link', 'any/systemd/file.mount', 'any/systemd/file.netdev', 'any/systemd/file.network', 'any/systemd/file.nspawn', 'any/systemd/file.path', 'any/systemd/file.service', 'any/systemd/file.slice', 'any/systemd/file.socket', 'any/systemd/file.swap', 'any/systemd/file.target', 'any/systemd/file.timer', '/etc/systemd/some.conf.d/file.conf', '/etc/systemd/system/some.d/file.conf', '/etc/systemd/system/some.d/.#file', '/etc/systemd/system/.#otherfile', '/home/user/.config/systemd/user/some.d/mine.conf', '/home/user/.config/systemd/user/some.d/.#file', '/home/user/.config/systemd/user/.#otherfile', '/.config/systemd/user/.#', '/.config/systemd/user/.#-file', '/.config/systemd/user/file.d/.#', '/.config/systemd/user/file.d/.#-file', '/.config/systemd/user/file.d/file.conf', '/etc/systemd/file.conf.d/file.conf', '/etc/systemd/system/.#', '/etc/systemd/system/.#-file', '/etc/systemd/system/file.d/.#', '/etc/systemd/system/file.d/.#-file', '/etc/systemd/system/file.d/file.conf', '/systemd/file.automount', '/systemd/file.dnssd', '/systemd/file.link', '/systemd/file.mount', '/systemd/file.netdev', '/systemd/file.network', '/systemd/file.nspawn', '/systemd/file.path', '/systemd/file.service', '/systemd/file.slice', '/systemd/file.socket', '/systemd/file.swap', '/systemd/file.target', '/systemd/file.timer', 'any/.config/systemd/user/.#', 'any/.config/systemd/user/.#-file', 'any/.config/systemd/user/file.d/.#', 'any/.config/systemd/user/file.d/.#-file', 'any/.config/systemd/user/file.d/file.conf', 'any/etc/systemd/file.conf.d/file.conf', 'any/etc/systemd/system/.#', 'any/etc/systemd/system/.#-file', 'any/etc/systemd/system/file.d/.#', 'any/etc/systemd/system/file.d/.#-file', 'any/etc/systemd/system/file.d/file.conf'],
+ \ 'systemverilog': ['file.sv', 'file.svh'],
+ \ 'tags': ['tags'],
+ \ 'tak': ['file.tak'],
+ \ 'taskdata': ['pending.data', 'completed.data', 'undo.data'],
+ \ 'taskedit': ['file.task'],
+ \ 'tcl': ['file.tcl', 'file.tk', 'file.itcl', 'file.itk', 'file.jacl'],
+ \ 'teraterm': ['file.ttl'],
+ \ 'terminfo': ['file.ti'],
+ \ 'tex': ['file.latex', 'file.sty', 'file.dtx', 'file.ltx', 'file.bbl'],
+ \ 'texinfo': ['file.texinfo', 'file.texi', 'file.txi'],
+ \ 'texmf': ['texmf.cnf'],
+ \ 'text': ['file.text', 'README'],
+ \ 'tf': ['.tfrc', 'tfrc'],
+ \ 'tidy': ['.tidyrc', 'tidyrc', 'tidy.conf'],
+ \ 'tilde': ['file.t.html'],
+ \ 'tli': ['file.tli'],
+ \ 'tmux': ['tmuxfile.conf', '.tmuxfile.conf', '.tmux-file.conf', '.tmux.conf', 'tmux-file.conf', 'tmux.conf'],
+ \ 'tpp': ['file.tpp'],
+ \ 'treetop': ['file.treetop'],
+ \ 'trustees': ['trustees.conf'],
+ \ 'tsalt': ['file.slt'],
+ \ 'tsscl': ['file.tsscl'],
+ \ 'tssgm': ['file.tssgm'],
+ \ 'tssop': ['file.tssop'],
+ \ 'html.twig': ['file.twig'],
+ \ 'typescript': ['file.ts'],
+ \ 'typescriptreact': ['file.tsx'],
+ \ 'uc': ['file.uc'],
+ \ 'udevconf': ['/etc/udev/udev.conf', 'any/etc/udev/udev.conf'],
+ \ 'udevperm': ['/etc/udev/permissions.d/file.permissions', 'any/etc/udev/permissions.d/file.permissions'],
+ \ 'udevrules': ['/etc/udev/rules.d/file.rules', '/usr/lib/udev/rules.d/file.rules', '/lib/udev/rules.d/file.rules'],
+ \ 'uil': ['file.uit', 'file.uil'],
+ \ 'updatedb': ['/etc/updatedb.conf', 'any/etc/updatedb.conf'],
+ \ 'upstart': ['/usr/share/upstart/file.conf', '/usr/share/upstart/file.override', '/etc/init/file.conf', '/etc/init/file.override', '/.init/file.conf', '/.init/file.override', '/.config/upstart/file.conf', '/.config/upstart/file.override', 'any/.config/upstart/file.conf', 'any/.config/upstart/file.override', 'any/.init/file.conf', 'any/.init/file.override', 'any/etc/init/file.conf', 'any/etc/init/file.override', 'any/usr/share/upstart/file.conf', 'any/usr/share/upstart/file.override'],
+ \ 'upstreamdat': ['upstream.dat', 'UPSTREAM.DAT', 'upstream.file.dat', 'UPSTREAM.FILE.DAT', 'file.upstream.dat', 'FILE.UPSTREAM.DAT'],
+ \ 'upstreaminstalllog': ['upstreaminstall.log', 'UPSTREAMINSTALL.LOG', 'upstreaminstall.file.log', 'UPSTREAMINSTALL.FILE.LOG', 'file.upstreaminstall.log', 'FILE.UPSTREAMINSTALL.LOG'],
+ \ 'upstreamlog': ['fdrupstream.log', 'upstream.log', 'UPSTREAM.LOG', 'upstream.file.log', 'UPSTREAM.FILE.LOG', 'file.upstream.log', 'FILE.UPSTREAM.LOG', 'UPSTREAM-file.log', 'UPSTREAM-FILE.LOG'],
+ \ 'usserverlog': ['usserver.log', 'USSERVER.LOG', 'usserver.file.log', 'USSERVER.FILE.LOG', 'file.usserver.log', 'FILE.USSERVER.LOG'],
+ \ 'usw2kagtlog': ['usw2kagt.log', 'USW2KAGT.LOG', 'usw2kagt.file.log', 'USW2KAGT.FILE.LOG', 'file.usw2kagt.log', 'FILE.USW2KAGT.LOG'],
+ \ 'vb': ['file.sba', 'file.vbs', 'file.dsm', 'file.ctl'],
+ \ 'vera': ['file.vr', 'file.vri', 'file.vrh'],
+ \ 'verilog': ['file.v'],
+ \ 'verilogams': ['file.va', 'file.vams'],
+ \ 'vgrindefs': ['vgrindefs'],
+ \ 'vhdl': ['file.hdl', 'file.vhd', 'file.vhdl', 'file.vbe', 'file.vst', 'file.vhdl_123', 'file.vho', 'some.vhdl_1', 'some.vhdl_1-file'],
+ \ 'vim': ['file.vim', 'file.vba', '.exrc', '_exrc', 'some-vimrc', 'some-vimrc-file', 'vimrc', 'vimrc-file'],
+ \ 'viminfo': ['.viminfo', '_viminfo'],
+ \ 'vmasm': ['file.mar'],
+ \ 'voscm': ['file.cm'],
+ \ 'vrml': ['file.wrl'],
+ \ 'vroom': ['file.vroom'],
+ \ 'vue': ['file.vue'],
+ \ 'wast': ['file.wast', 'file.wat'],
+ \ 'webmacro': ['file.wm'],
+ \ 'wget': ['.wgetrc', 'wgetrc'],
+ \ 'winbatch': ['file.wbt'],
+ \ 'wml': ['file.wml'],
+ \ 'wsh': ['file.wsf', 'file.wsc'],
+ \ 'wsml': ['file.wsml'],
+ \ 'wvdial': ['wvdial.conf', '.wvdialrc'],
+ \ 'xdefaults': ['.Xdefaults', '.Xpdefaults', '.Xresources', 'xdm-config', 'file.ad', '/Xresources/file', '/app-defaults/file', 'Xresources', 'Xresources-file', 'any/Xresources/file', 'any/app-defaults/file'],
+ \ 'xhtml': ['file.xhtml', 'file.xht'],
+ \ 'xinetd': ['/etc/xinetd.conf', '/etc/xinetd.d/file', 'any/etc/xinetd.conf', 'any/etc/xinetd.d/file'],
+ \ 'xmath': ['file.msc', 'file.msf'],
+ \ 'xml': ['/etc/blkid.tab', '/etc/blkid.tab.old', 'file.xmi', 'file.csproj', 'file.csproj.user', 'file.ui', 'file.tpm', '/etc/xdg/menus/file.menu', 'fglrxrc', 'file.xlf', 'file.xliff', 'file.xul', 'file.wsdl', 'file.wpl', 'any/etc/blkid.tab', 'any/etc/blkid.tab.old', 'any/etc/xdg/menus/file.menu'],
+ \ 'xmodmap': ['anyXmodmap', 'Xmodmap', 'some-Xmodmap', 'some-xmodmap', 'some-xmodmap-file', 'xmodmap', 'xmodmap-file'],
+ \ 'xf86conf': ['xorg.conf', 'xorg.conf-4'],
+ \ 'xpm2': ['file.xpm2'],
+ \ 'xquery': ['file.xq', 'file.xql', 'file.xqm', 'file.xquery', 'file.xqy'],
+ \ 'xs': ['file.xs'],
+ \ 'xsd': ['file.xsd'],
+ \ 'xslt': ['file.xsl', 'file.xslt'],
+ \ 'yacc': ['file.yy', 'file.yxx', 'file.y++'],
+ \ 'yaml': ['file.yaml', 'file.yml'],
+ \ 'raml': ['file.raml'],
+ \ 'z8a': ['file.z8a'],
+ \ 'zimbu': ['file.zu'],
+ \ 'zimbutempl': ['file.zut'],
+ \ 'zsh': ['.zprofile', '/etc/zprofile', '.zfbfmarks', 'file.zsh', '.zcompdump', '.zlogin', '.zlogout', '.zshenv', '.zshrc', '.zcompdump-file', '.zlog', '.zlog-file', '.zsh', '.zsh-file', 'any/etc/zprofile', 'zlog', 'zlog-file', 'zsh', 'zsh-file'],
+ \
+ \ 'help': [$VIMRUNTIME . '/doc/help.txt'],
+ \ 'xpm': ['file.xpm'],
+ \ }
+
+let s:filename_case_checks = {
+ \ 'modula2': ['file.DEF', 'file.MOD'],
+ \ 'bzl': ['file.BUILD', 'BUILD'],
+ \ }
+
+func CheckItems(checks)
+ for [ft, names] in items(a:checks)
+ for i in range(0, len(names) - 1)
+ new
+ try
+ exe 'edit ' . fnameescape(names[i])
+ catch
+ call assert_report('cannot edit "' . names[i] . '": ' . v:exception)
+ endtry
+ if &filetype == '' && &readonly
+ " File exists but not able to edit it (permission denied)
+ else
+ call assert_equal(ft, &filetype, 'with file name: ' . names[i])
+ endif
+ bwipe!
+ endfor
+ endfor
+endfunc
+
+func NewTest_filetype_detection()
+ filetype on
+ call CheckItems(s:filename_checks)
+ if has('fname_case')
+ call CheckItems(s:filename_case_checks)
+ endif
+ filetype off
+endfunc
+
+" Filetypes detected from the file contents by scripts.vim
+let s:script_checks = {
+ \ 'virata': [['% Virata'],
+ \ ['', '% Virata'],
+ \ ['', '', '% Virata'],
+ \ ['', '', '', '% Virata'],
+ \ ['', '', '', '', '% Virata']],
+ \ 'strace': [['execve("/usr/bin/pstree", ["pstree"], 0x7ff0 /* 63 vars */) = 0'],
+ \ ['15:17:47 execve("/usr/bin/pstree", ["pstree"], ... "_=/usr/bin/strace"]) = 0'],
+ \ ['__libc_start_main and something']],
+ \ 'clojure': [['#!/path/clojure']],
+ \ 'scala': [['#!/path/scala']],
+ \ 'tcsh': [['#!/path/tcsh']],
+ \ 'zsh': [['#!/path/zsh']],
+ \ 'tcl': [['#!/path/tclsh'],
+ \ ['#!/path/wish'],
+ \ ['#!/path/expectk'],
+ \ ['#!/path/itclsh'],
+ \ ['#!/path/itkwish']],
+ \ 'expect': [['#!/path/expect']],
+ \ 'gnuplot': [['#!/path/gnuplot']],
+ \ 'make': [['#!/path/make']],
+ \ 'pike': [['#!/path/pike'],
+ \ ['#!/path/pike0'],
+ \ ['#!/path/pike9']],
+ \ 'lua': [['#!/path/lua']],
+ \ 'raku': [['#!/path/perl6']],
+ \ 'perl': [['#!/path/perl']],
+ \ 'php': [['#!/path/php']],
+ \ 'python': [['#!/path/python'],
+ \ ['#!/path/python2'],
+ \ ['#!/path/python3']],
+ \ 'groovy': [['#!/path/groovy']],
+ \ 'ruby': [['#!/path/ruby']],
+ \ 'javascript': [['#!/path/node'],
+ \ ['#!/path/js'],
+ \ ['#!/path/nodejs'],
+ \ ['#!/path/rhino']],
+ \ 'bc': [['#!/path/bc']],
+ \ 'sed': [['#!/path/sed']],
+ \ 'ocaml': [['#!/path/ocaml']],
+ \ 'awk': [['#!/path/awk'],
+ \ ['#!/path/gawk']],
+ \ 'wml': [['#!/path/wml']],
+ \ 'scheme': [['#!/path/scheme']],
+ \ 'cfengine': [['#!/path/cfengine']],
+ \ 'erlang': [['#!/path/escript']],
+ \ 'haskell': [['#!/path/haskell']],
+ \ 'cpp': [['// Standard iostream objects -*- C++ -*-'],
+ \ ['// -*- C++ -*-']],
+ \ 'yaml': [['%YAML 1.2']],
+ \ }
+
+" Various forms of "env" optional arguments.
+let s:script_env_checks = {
+ \ 'perl': [['#!/usr/bin/env VAR=val perl']],
+ \ 'scala': [['#!/usr/bin/env VAR=val VVAR=vval scala']],
+ \ 'awk': [['#!/usr/bin/env VAR=val -i awk']],
+ \ 'scheme': [['#!/usr/bin/env VAR=val --ignore-environment scheme']],
+ \ 'python': [['#!/usr/bin/env VAR=val -S python -w -T']],
+ \ 'wml': [['#!/usr/bin/env VAR=val --split-string wml']],
+ \ }
+
+func Run_script_detection(test_dict)
+ filetype on
+ for [ft, files] in items(a:test_dict)
+ for file in files
+ enew
+ silent put =file
+ 1delete _
+ filetype detect
+ call assert_equal(ft, &filetype, 'for text: ' . string(file))
+ bwipe!
+ endfor
+ endfor
+ filetype off
+endfunc
+
+func Test_script_detection()
+ call Run_script_detection(s:script_checks)
+ call Run_script_detection(s:script_env_checks)
+endfunc
+
+func Test_setfiletype_completion()
+ call feedkeys(":setfiletype java\<C-A>\<C-B>\"\<CR>", 'tx')
+ call assert_equal('"setfiletype java javacc javascript javascriptreact', @:)
+endfunc
+
+" Test for ':filetype detect' command for a buffer without a file
+func Test_emptybuf_ftdetect()
+ new
+ call setline(1, '#!/bin/sh')
+ call assert_equal('', &filetype)
+ filetype detect
+ call assert_equal('sh', &filetype)
+ close!
+endfunc
+
+" Test for ':filetype indent on' and ':filetype indent off' commands
+func Test_filetype_indent_off()
+ new Xtest.vim
+ filetype indent on
+ call assert_equal(1, g:did_indent_on)
+ call assert_equal(['filetype detection:ON plugin:OFF indent:ON'],
+ \ execute('filetype')->split("\n"))
+ filetype indent off
+ call assert_equal(0, exists('g:did_indent_on'))
+ call assert_equal(['filetype detection:ON plugin:OFF indent:OFF'],
+ \ execute('filetype')->split("\n"))
+ close
+endfunc
+
+func Test_hook_file()
+ filetype on
+
+ call writefile(['[Trigger]', 'this is pacman config'], 'Xfile.hook')
+ split Xfile.hook
+ call assert_equal('dosini', &filetype)
+ bwipe!
+
+ call writefile(['not pacman'], 'Xfile.hook')
+ split Xfile.hook
+ call assert_notequal('dosini', &filetype)
+ bwipe!
+
+ call delete('Xfile.hook')
+ filetype off
+endfunc