mirror of
https://github.com/sheerun/vim-polyglot.git
synced 2025-11-08 11:33:52 -05:00
Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
17c2b630e1 |
@@ -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-->196<!--/Package Count--> packages it consists of.
|
||||
- It **installs and updates 120+ times faster** than the <!--Package Count-->199<!--/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).
|
||||
@@ -81,6 +81,7 @@ If you need full functionality of any plugin, please use it directly with your p
|
||||
- [basic](https://github.com/vim/vim/tree/master/runtime)
|
||||
- [blade](https://github.com/jwalton512/vim-blade)
|
||||
- [brewfile](https://github.com/bfontaine/Brewfile.vim)
|
||||
- [bzl](https://github.com/vim/vim/tree/master/runtime)
|
||||
- [c/c++](https://github.com/vim-jp/vim-cpp)
|
||||
- [caddyfile](https://github.com/isobit/vim-caddyfile)
|
||||
- [carp](https://github.com/hellerve/carp-vim)
|
||||
@@ -177,6 +178,7 @@ If you need full functionality of any plugin, please use it directly with your p
|
||||
- [plantuml](https://github.com/aklt/plantuml-syntax)
|
||||
- [pony](https://github.com/jakwings/vim-pony)
|
||||
- [powershell](https://github.com/PProvost/vim-ps1)
|
||||
- [prolog](https://github.com/vim/vim/tree/master/runtime)
|
||||
- [protobuf](https://github.com/uarun/vim-protobuf)
|
||||
- [pug](https://github.com/digitaltoad/vim-pug)
|
||||
- [puppet](https://github.com/rodjek/vim-puppet)
|
||||
@@ -213,6 +215,7 @@ If you need full functionality of any plugin, please use it directly with your p
|
||||
- [swift](https://github.com/keith/swift.vim)
|
||||
- [sxhkd](https://github.com/baskerville/vim-sxhkdrc)
|
||||
- [systemd](https://github.com/wgwoods/vim-systemd-syntax)
|
||||
- [tads](https://github.com/vim/vim/tree/master/runtime)
|
||||
- [terraform](https://github.com/hashivim/vim-terraform)
|
||||
- [textile](https://github.com/timcharper/textile.vim)
|
||||
- [thrift](https://github.com/solarnz/thrift.vim)
|
||||
|
||||
@@ -10,11 +10,11 @@ func! s:Setf(ft)
|
||||
endif
|
||||
endfunc
|
||||
|
||||
func! polyglot#Heuristics()
|
||||
func! polyglot#Shebang()
|
||||
" Try to detect filetype from shebang
|
||||
let l:filetype = polyglot#Shebang()
|
||||
if l:filetype != ""
|
||||
exec "setf " . l:filetype
|
||||
let ft = polyglot#ShebangFiletype()
|
||||
if ft != ""
|
||||
call s:Setf(ft)
|
||||
return 1
|
||||
endif
|
||||
|
||||
@@ -52,6 +52,8 @@ let s:interpreters = {
|
||||
\ 'cperl': 'perl',
|
||||
\ 'perl': 'perl',
|
||||
\ 'php': 'php',
|
||||
\ 'swipl': 'prolog',
|
||||
\ 'yap': 'prolog',
|
||||
\ 'pwsh': 'ps1',
|
||||
\ 'python': 'python',
|
||||
\ 'python2': 'python',
|
||||
@@ -95,7 +97,7 @@ let s:r_hashbang = '^#!\s*\(\S\+\)\s*\(.*\)\s*'
|
||||
let s:r_envflag = '%(\S\+=\S\+\|-[iS]\|--ignore-environment\|--split-string\)'
|
||||
let s:r_env = '^\%(\' . s:r_envflag . '\s\+\)*\(\S\+\)'
|
||||
|
||||
func! polyglot#Shebang()
|
||||
func! polyglot#ShebangFiletype()
|
||||
let l:line1 = getline(1)
|
||||
|
||||
if l:line1 !~# "^#!"
|
||||
@@ -133,7 +135,7 @@ func! polyglot#Shebang()
|
||||
endfunc
|
||||
|
||||
func! polyglot#DetectInpFiletype()
|
||||
let line = getline(1)
|
||||
let line = getline(nextnonblank(1))
|
||||
if line =~# '^\*'
|
||||
call s:Setf('abaqus') | return
|
||||
endif
|
||||
@@ -269,10 +271,10 @@ func! polyglot#DetectIdrFiletype()
|
||||
if line =~# '^%access .*'
|
||||
call s:Setf('idris') | return
|
||||
endif
|
||||
if exists("g:filetype_idr")
|
||||
call s:Setf(g:filetype_idr) | return
|
||||
endif
|
||||
endfor
|
||||
if exists("g:filetype_idr")
|
||||
call s:Setf(g:filetype_idr) | return
|
||||
endif
|
||||
call s:Setf('idris2') | return
|
||||
endfunc
|
||||
|
||||
@@ -296,6 +298,89 @@ func! polyglot#DetectBasFiletype()
|
||||
call s:Setf('basic') | return
|
||||
endfunc
|
||||
|
||||
func! polyglot#DetectPmFiletype()
|
||||
let line = getline(nextnonblank(1))
|
||||
if line =~# 'XPM2'
|
||||
call s:Setf('xpm2') | return
|
||||
endif
|
||||
if line =~# 'XPM'
|
||||
call s:Setf('xpm') | return
|
||||
endif
|
||||
for lnum in range(1, min([line("$"), 50]))
|
||||
let line = getline(lnum)
|
||||
if line =~# '^\s*\%(use\s\+v6\(\<\|\>\)\|\(\<\|\>\)module\(\<\|\>\)\|\(\<\|\>\)\%(my\s\+\)\=class\(\<\|\>\)\)'
|
||||
call s:Setf('raku') | return
|
||||
endif
|
||||
if line =~# '\(\<\|\>\)use\s\+\%(strict\(\<\|\>\)\|v\=5\.\)'
|
||||
call s:Setf('perl') | return
|
||||
endif
|
||||
endfor
|
||||
if exists("g:filetype_pm")
|
||||
call s:Setf(g:filetype_pm) | return
|
||||
endif
|
||||
call s:Setf('perl') | return
|
||||
endfunc
|
||||
|
||||
func! polyglot#DetectPlFiletype()
|
||||
let line = getline(nextnonblank(1))
|
||||
if line =~# '^[^#]*:-' || line =~# '^\s*\%(%\|/\*\)' || line =~# '\.\s*$'
|
||||
call s:Setf('prolog') | return
|
||||
endif
|
||||
for lnum in range(1, min([line("$"), 50]))
|
||||
let line = getline(lnum)
|
||||
if line =~# '^\s*\%(use\s\+v6\(\<\|\>\)\|\(\<\|\>\)module\(\<\|\>\)\|\(\<\|\>\)\%(my\s\+\)\=class\(\<\|\>\)\)'
|
||||
call s:Setf('raku') | return
|
||||
endif
|
||||
if line =~# '\(\<\|\>\)use\s\+\%(strict\(\<\|\>\)\|v\=5\.\)'
|
||||
call s:Setf('perl') | return
|
||||
endif
|
||||
endfor
|
||||
if exists("g:filetype_pl")
|
||||
call s:Setf(g:filetype_pl) | return
|
||||
endif
|
||||
call s:Setf('perl') | return
|
||||
endfunc
|
||||
|
||||
func! polyglot#DetectTFiletype()
|
||||
for lnum in range(1, min([line("$"), 5]))
|
||||
let line = getline(lnum)
|
||||
if line =~# '^\.'
|
||||
call s:Setf('nroff') | return
|
||||
endif
|
||||
endfor
|
||||
for lnum in range(1, min([line("$"), 50]))
|
||||
let line = getline(lnum)
|
||||
if line =~# '^\s*\%(use\s\+v6\(\<\|\>\)\|\(\<\|\>\)module\(\<\|\>\)\|\(\<\|\>\)\%(my\s\+\)\=class\(\<\|\>\)\)'
|
||||
call s:Setf('raku') | return
|
||||
endif
|
||||
if line =~# '\(\<\|\>\)use\s\+\%(strict\(\<\|\>\)\|v\=5\.\)'
|
||||
call s:Setf('perl') | return
|
||||
endif
|
||||
endfor
|
||||
if exists("g:filetype_t")
|
||||
call s:Setf(g:filetype_t) | return
|
||||
endif
|
||||
call s:Setf('perl') | return
|
||||
endfunc
|
||||
|
||||
func! polyglot#DetectTt2Filetype()
|
||||
for lnum in range(1, min([line("$"), 3]))
|
||||
let line = getline(lnum)
|
||||
if line =~? '<\%(!DOCTYPE HTML\|[%?]\|html\)'
|
||||
call s:Setf('tt2html') | return
|
||||
endif
|
||||
endfor
|
||||
call s:Setf('tt2') | return
|
||||
endfunc
|
||||
|
||||
func! polyglot#DetectHtmlFiletype()
|
||||
let line = getline(nextnonblank(1))
|
||||
if line =~# '^\(%\|<[%&].*>\)'
|
||||
call s:Setf('mason') | return
|
||||
endif
|
||||
call s:Setf('html') | return
|
||||
endfunc
|
||||
|
||||
" Restore 'cpoptions'
|
||||
let &cpo = s:cpo_save
|
||||
unlet s:cpo_save
|
||||
|
||||
@@ -38,6 +38,7 @@ let s:globs = {
|
||||
\ 'basic': '*.basic',
|
||||
\ 'blade': '*.blade,*.blade.php',
|
||||
\ 'brewfile': 'Brewfile',
|
||||
\ 'bzl': '*.bzl,BUCK,BUILD,BUILD.bazel,Tiltfile,WORKSPACE',
|
||||
\ 'c': '*.c,*.cats,*.h,*.idc,*.qc',
|
||||
\ 'caddyfile': 'Caddyfile',
|
||||
\ 'carp': '*.carp',
|
||||
@@ -129,6 +130,7 @@ let s:globs = {
|
||||
\ 'mako': '*.mako,*.mao',
|
||||
\ 'markdown': '*.md,*.markdown,*.mdown,*.mdwn,*.mkd,*.mkdn,*.mkdown,*.ronn,*.workbook,contents.lr',
|
||||
\ 'markdown.mdx': '*.mdx',
|
||||
\ 'mason': '*.mason,*.mhtml,*.comp',
|
||||
\ 'meson': 'meson.build,meson_options.txt',
|
||||
\ 'mma': '*.mathematica,*.cdf,*.m,*.ma,*.mt,*.nb,*.nbp,*.wl,*.wlt,*.wls,*.mma',
|
||||
\ 'moon': '*.moon',
|
||||
@@ -151,7 +153,9 @@ let s:globs = {
|
||||
\ 'perl': '*.pl,*.al,*.cgi,*.fcgi,*.perl,*.ph,*.plx,*.pm,*.psgi,*.t,Makefile.PL,Rexfile,ack,cpanfile',
|
||||
\ 'php': '*.php,*.aw,*.ctp,*.fcgi,*.inc,*.php3,*.php4,*.php5,*.phps,*.phpt,Phakefile',
|
||||
\ 'plantuml': '*.puml,*.iuml,*.plantuml,*.uml,*.pu',
|
||||
\ 'pod': '*.pod',
|
||||
\ 'pony': '*.pony',
|
||||
\ 'prolog': '*.pl,*.pro,*.prolog,*.yap',
|
||||
\ 'proto': '*.proto',
|
||||
\ 'ps1': '*.ps1,*.psd1,*.psm1,*.pssc',
|
||||
\ 'ps1xml': '*.ps1xml',
|
||||
@@ -190,6 +194,7 @@ let s:globs = {
|
||||
\ 'sxhkdrc': '*.sxhkdrc,sxhkdrc',
|
||||
\ 'systemd': '*.automount,*.mount,*.path,*.service,*.socket,*.swap,*.target,*.timer',
|
||||
\ 'tablegen': '*.td',
|
||||
\ 'tads': '*.t',
|
||||
\ 'terraform': '*.hcl,*.nomad,*.tf,*.tfvars,*.workflow',
|
||||
\ 'textile': '*.textile',
|
||||
\ 'thrift': '*.thrift',
|
||||
@@ -197,6 +202,8 @@ let s:globs = {
|
||||
\ 'toml': '*.toml,Cargo.lock,Gopkg.lock,poetry.lock,Pipfile',
|
||||
\ 'tptp': '*.p,*.tptp,*.ax',
|
||||
\ 'trasys': '*.inp',
|
||||
\ 'tt2': '*.tt2',
|
||||
\ 'tt2html': '*.tt2',
|
||||
\ 'typescript': '*.ts',
|
||||
\ 'typescriptreact': '*.tsx',
|
||||
\ 'unison': '*.u,*.uu',
|
||||
@@ -211,6 +218,7 @@ let s:globs = {
|
||||
\ 'xdc': '*.xdc',
|
||||
\ 'xml': '*.xml,*.adml,*.admx,*.ant,*.axml,*.builds,*.ccproj,*.ccxml,*.clixml,*.cproject,*.cscfg,*.csdef,*.csl,*.csproj,*.ct,*.depproj,*.dita,*.ditamap,*.ditaval,*.dll.config,*.dotsettings,*.filters,*.fsproj,*.fxml,*.glade,*.gml,*.gmx,*.grxml,*.gst,*.iml,*.ivy,*.jelly,*.jsproj,*.kml,*.launch,*.mdpolicy,*.mjml,*.mm,*.mod,*.mxml,*.natvis,*.ncl,*.ndproj,*.nproj,*.nuspec,*.odd,*.osm,*.pkgproj,*.pluginspec,*.proj,*.props,*.ps1xml,*.psc1,*.pt,*.rdf,*.resx,*.rss,*.sch,*.scxml,*.sfproj,*.shproj,*.srdf,*.storyboard,*.sublime-snippet,*.targets,*.tml,*.ui,*.urdf,*.ux,*.vbproj,*.vcxproj,*.vsixmanifest,*.vssettings,*.vstemplate,*.vxml,*.wixproj,*.workflow,*.wsdl,*.wsf,*.wxi,*.wxl,*.wxs,*.x3d,*.xacro,*.xaml,*.xib,*.xlf,*.xliff,*.xmi,*.xml.dist,*.xproj,*.xsd,*.xspec,*.xul,*.zcml,*.cdxml,App.config,NuGet.config,Settings.StyleCop,Web.Debug.config,Web.Release.config,Web.config,packages.config',
|
||||
\ 'xml.twig': '*.xml.twig',
|
||||
\ 'xs': '*.xs',
|
||||
\ 'xsl': '*.xslt,*.xsl',
|
||||
\ 'yaml': '*.yml,*.mir,*.reek,*.rviz,*.sublime-syntax,*.syntax,*.yaml,*.yaml-tmlanguage,*.yaml.sed,*.yml.mysql,glide.lock,yarn.lock,fish_history,fish_read_history',
|
||||
\ 'yaml.ansible': 'playbook.y{a,}ml,site.y{a,}ml,main.y{a,}ml,local.y{a,}ml,requirements.y{a,}ml,tasks.*.y{a,}ml,roles.*.y{a,}ml,handlers.*.y{a,}ml',
|
||||
|
||||
@@ -75,13 +75,15 @@ endfunc
|
||||
" When using this, the entry should probably be further down below with the
|
||||
" other StarSetf() calls.
|
||||
func! s:StarSetf(ft)
|
||||
if expand("<amatch>") !~ g:ft_ignore_pat
|
||||
exe 'setf ' . a:ft
|
||||
if expand("<amatch>") !~ g:ft_ignore_pat && &filetype !~# '\<'.a:ft.'\>'
|
||||
let &filetype = a:ft
|
||||
endif
|
||||
endfunc
|
||||
|
||||
augroup filetypedetect
|
||||
|
||||
au! filetypedetect BufRead,BufNewFile,StdinReadPost *
|
||||
|
||||
" filetypes
|
||||
|
||||
if !has_key(s:disabled_packages, '8th')
|
||||
@@ -92,6 +94,10 @@ if !has_key(s:disabled_packages, 'haproxy')
|
||||
au! BufRead,BufNewFile *.cfg
|
||||
endif
|
||||
|
||||
if !has_key(s:disabled_packages, 'a2ps')
|
||||
au! BufRead,BufNewFile */etc/a2ps.cfg,*/etc/a2ps/*.cfg,a2psrc,.a2psrc
|
||||
endif
|
||||
|
||||
if !has_key(s:disabled_packages, 'a65')
|
||||
au! BufRead,BufNewFile *.a65
|
||||
endif
|
||||
@@ -132,6 +138,10 @@ if !has_key(s:disabled_packages, 'aidl')
|
||||
au! BufRead,BufNewFile *.aidl
|
||||
endif
|
||||
|
||||
if !has_key(s:disabled_packages, 'alsaconf')
|
||||
au! BufRead,BufNewFile .asoundrc,*/usr/share/alsa/alsa.conf,*/etc/asound.conf
|
||||
endif
|
||||
|
||||
if !has_key(s:disabled_packages, 'aml')
|
||||
au! BufRead,BufNewFile *.aml
|
||||
endif
|
||||
@@ -144,12 +154,28 @@ if !has_key(s:disabled_packages, 'xml')
|
||||
au! BufRead,BufNewFile *.csproj,*.ui,*.wsdl,*.wsf,*.xlf,*.xliff,*.xmi,*.xsd,*.xul
|
||||
endif
|
||||
|
||||
if !has_key(s:disabled_packages, 'ant')
|
||||
au! BufRead,BufNewFile build.xml
|
||||
endif
|
||||
|
||||
if !has_key(s:disabled_packages, 'apache')
|
||||
au! BufRead,BufNewFile .htaccess,*/etc/httpd/*.conf,*/etc/apache2/sites-*/*.com,access.conf*,apache.conf*,apache2.conf*,httpd.conf*,srm.conf*,*/etc/apache2/*.conf*,*/etc/apache2/conf.*/*,*/etc/apache2/mods-*/*,*/etc/apache2/sites-*/*,*/etc/httpd/conf.d/*.conf*
|
||||
endif
|
||||
|
||||
if !has_key(s:disabled_packages, 'applescript')
|
||||
au! BufRead,BufNewFile *.scpt
|
||||
endif
|
||||
|
||||
if !has_key(s:disabled_packages, 'aptconf')
|
||||
au! BufRead,BufNewFile apt.conf,*/.aptitude/config
|
||||
endif
|
||||
|
||||
if !has_key(s:disabled_packages, 'arch')
|
||||
au! BufRead,BufNewFile .arch-inventory,=tagging-method
|
||||
endif
|
||||
|
||||
if !has_key(s:disabled_packages, 'c/c++')
|
||||
au! BufRead,BufNewFile *.cpp,*.c++,*.cc,*.cxx,*.hh,*.hpp,*.hxx,*.inl,*.ipp,*.tcc,*.tpp,*.moc,*.tlh,*.qc
|
||||
au! BufRead,BufNewFile *.cpp,*.c++,*.cc,*.cxx,*.hh,*.hpp,*.hxx,*.inl,*.ipp,*.tcc,*.tpp,*.moc,*.tlh,*.qc,*enlightenment/*.cfg
|
||||
endif
|
||||
|
||||
if !has_key(s:disabled_packages, 'arduino')
|
||||
@@ -172,6 +198,10 @@ if !has_key(s:disabled_packages, 'elf')
|
||||
au! BufRead,BufNewFile *.am
|
||||
endif
|
||||
|
||||
if !has_key(s:disabled_packages, 'automake')
|
||||
au! BufRead,BufNewFile GNUmakefile.am
|
||||
endif
|
||||
|
||||
if !has_key(s:disabled_packages, 'asn')
|
||||
au! BufRead,BufNewFile *.asn,*.asn1
|
||||
endif
|
||||
@@ -197,7 +227,7 @@ if !has_key(s:disabled_packages, 'clojure')
|
||||
endif
|
||||
|
||||
if !has_key(s:disabled_packages, 'cmake')
|
||||
au! BufRead,BufNewFile *.cmake,*.cmake.in
|
||||
au! BufRead,BufNewFile *.cmake,*.cmake.in,CMakeLists.txt
|
||||
endif
|
||||
|
||||
if !has_key(s:disabled_packages, 'cucumber')
|
||||
@@ -213,7 +243,7 @@ if !has_key(s:disabled_packages, 'dlang')
|
||||
endif
|
||||
|
||||
if !has_key(s:disabled_packages, 'dockerfile')
|
||||
au! BufRead,BufNewFile *.Dockerfile
|
||||
au! BufRead,BufNewFile *.Dockerfile,Dockerfile
|
||||
endif
|
||||
|
||||
if !has_key(s:disabled_packages, 'elm')
|
||||
@@ -236,6 +266,10 @@ if !has_key(s:disabled_packages, 'fsharp')
|
||||
au! BufRead,BufNewFile *.fs
|
||||
endif
|
||||
|
||||
if !has_key(s:disabled_packages, 'git')
|
||||
au! BufRead,BufNewFile .gitconfig,.gitmodules,*.git/config,*/.config/git/config,*.git/modules/*/config,git-rebase-todo
|
||||
endif
|
||||
|
||||
if !has_key(s:disabled_packages, 'gnuplot')
|
||||
au! BufRead,BufNewFile *.gp,*.gpi
|
||||
endif
|
||||
@@ -256,6 +290,10 @@ if !has_key(s:disabled_packages, 'groovy')
|
||||
au! BufRead,BufNewFile *.groovy,*.gradle
|
||||
endif
|
||||
|
||||
if !has_key(s:disabled_packages, 'grub')
|
||||
au! BufRead,BufNewFile */boot/grub/menu.lst,*/boot/grub/grub.conf,*/etc/grub.conf
|
||||
endif
|
||||
|
||||
if !has_key(s:disabled_packages, 'haml')
|
||||
au! BufRead,BufNewFile *.haml
|
||||
endif
|
||||
@@ -273,7 +311,7 @@ if !has_key(s:disabled_packages, 'html5')
|
||||
endif
|
||||
|
||||
if !has_key(s:disabled_packages, 'json')
|
||||
au! BufRead,BufNewFile *.json,*.ice,*.webmanifest,*.yy,*.jsonp
|
||||
au! BufRead,BufNewFile *.json,*.ice,*.webmanifest,*.yy,*.jsonp,Pipfile.lock
|
||||
endif
|
||||
|
||||
if !has_key(s:disabled_packages, 'kotlin')
|
||||
@@ -304,8 +342,12 @@ if !has_key(s:disabled_packages, 'markdown')
|
||||
au! BufRead,BufNewFile *.md,*.markdown,*.mdown,*.mdwn,*.mkd,*.mkdn
|
||||
endif
|
||||
|
||||
if !has_key(s:disabled_packages, 'meson')
|
||||
au! BufRead,BufNewFile meson.build,meson_options.txt
|
||||
endif
|
||||
|
||||
if !has_key(s:disabled_packages, 'ocaml')
|
||||
au! BufRead,BufNewFile *.ml,*.mli,*.mll,*.mly
|
||||
au! BufRead,BufNewFile *.ml,*.mli,*.mll,*.mly,.ocamlinit
|
||||
endif
|
||||
|
||||
if !has_key(s:disabled_packages, 'opencl')
|
||||
@@ -313,7 +355,7 @@ if !has_key(s:disabled_packages, 'opencl')
|
||||
endif
|
||||
|
||||
if !has_key(s:disabled_packages, 'perl')
|
||||
au! BufRead,BufNewFile *.al,*.plx,*.psgi,*.t
|
||||
au! BufRead,BufNewFile *.al,*.plx,*.psgi,*.t,*.pod,*.mason,*.mhtml,*.comp,*.xs
|
||||
endif
|
||||
|
||||
if !has_key(s:disabled_packages, 'php')
|
||||
@@ -325,7 +367,7 @@ if !has_key(s:disabled_packages, 'protobuf')
|
||||
endif
|
||||
|
||||
if !has_key(s:disabled_packages, 'python')
|
||||
au! BufRead,BufNewFile *.py,*.pyi,*.pyw,*.spec
|
||||
au! BufRead,BufNewFile *.py,*.pyi,*.pyw,*.spec,SConstruct
|
||||
endif
|
||||
|
||||
if !has_key(s:disabled_packages, 'r-lang')
|
||||
@@ -349,7 +391,7 @@ if !has_key(s:disabled_packages, 'rst')
|
||||
endif
|
||||
|
||||
if !has_key(s:disabled_packages, 'ruby')
|
||||
au! BufRead,BufNewFile *.rb,*.builder,*.gemspec,*.rake,*.rbw,*.ru,*.spec,*.rxml,*.rjs,*.rant,*.erb,*.rhtml
|
||||
au! BufRead,BufNewFile *.rb,*.builder,*.gemspec,*.rake,*.rbw,*.ru,*.spec,*.rxml,*.rjs,*.rant,.irbrc,Gemfile,Rakefile,Rantfile,*.erb,*.rhtml
|
||||
endif
|
||||
|
||||
if !has_key(s:disabled_packages, 'rust')
|
||||
@@ -369,7 +411,7 @@ if !has_key(s:disabled_packages, 'scss')
|
||||
endif
|
||||
|
||||
if !has_key(s:disabled_packages, 'sh')
|
||||
au! BufRead,BufNewFile *.zsh
|
||||
au! BufRead,BufNewFile *.zsh,.zshrc,.zshenv,.zlogin,.zprofile,.zlogout
|
||||
endif
|
||||
|
||||
if !has_key(s:disabled_packages, 'smt2')
|
||||
@@ -388,6 +430,10 @@ if !has_key(s:disabled_packages, 'terraform')
|
||||
au! BufRead,BufNewFile *.tf
|
||||
endif
|
||||
|
||||
if !has_key(s:disabled_packages, 'toml')
|
||||
au! BufRead,BufNewFile Pipfile
|
||||
endif
|
||||
|
||||
if !has_key(s:disabled_packages, 'twig')
|
||||
au! BufRead,BufNewFile *.twig
|
||||
endif
|
||||
@@ -420,12 +466,24 @@ if !has_key(s:disabled_packages, 'yaml')
|
||||
au! BufRead,BufNewFile *.yml,*.yaml
|
||||
endif
|
||||
|
||||
if !has_key(s:disabled_packages, 'help')
|
||||
au! BufRead,BufNewFile $VIMRUNTIME/doc/*.txt
|
||||
endif
|
||||
|
||||
if !has_key(s:disabled_packages, 'visual-basic')
|
||||
au! BufRead,BufNewFile *.vba,*.vbs,*.dsm,*.ctl,*.sba
|
||||
endif
|
||||
|
||||
if !has_key(s:disabled_packages, 'dosini')
|
||||
au! BufRead,BufNewFile *.ini,*.properties
|
||||
au! BufRead,BufNewFile *.ini,*.properties,.editorconfig,.npmrc,*/etc/pacman.conf,php.ini-*,*/etc/yum.conf,*/etc/yum.repos.d/*
|
||||
endif
|
||||
|
||||
if !has_key(s:disabled_packages, 'bzl')
|
||||
au! BufRead,BufNewFile *.bzl,BUILD,WORKSPACE
|
||||
endif
|
||||
|
||||
if !has_key(s:disabled_packages, 'tads')
|
||||
au! BufRead,BufNewFile *.t
|
||||
endif
|
||||
|
||||
if !has_key(s:disabled_packages, '8th')
|
||||
@@ -1071,12 +1129,12 @@ endif
|
||||
|
||||
if !has_key(s:disabled_packages, 'html5')
|
||||
au BufNewFile,BufRead *.htm call s:Setf('html')
|
||||
au BufNewFile,BufRead *.html call s:Setf('html')
|
||||
au BufNewFile,BufRead *.html.hl call s:Setf('html')
|
||||
au BufNewFile,BufRead *.inc call s:Setf('html')
|
||||
au BufNewFile,BufRead *.st call s:Setf('html')
|
||||
au BufNewFile,BufRead *.xht call s:Setf('html')
|
||||
au BufNewFile,BufRead *.xhtml call s:Setf('html')
|
||||
au! BufNewFile,BufRead *.html call polyglot#DetectHtmlFiletype()
|
||||
endif
|
||||
|
||||
if !has_key(s:disabled_packages, 'i3')
|
||||
@@ -1365,15 +1423,21 @@ if !has_key(s:disabled_packages, 'perl')
|
||||
au BufNewFile,BufRead *.fcgi call s:Setf('perl')
|
||||
au BufNewFile,BufRead *.perl call s:Setf('perl')
|
||||
au BufNewFile,BufRead *.ph call s:Setf('perl')
|
||||
au BufNewFile,BufRead *.pl call s:Setf('perl')
|
||||
au BufNewFile,BufRead *.plx call s:Setf('perl')
|
||||
au BufNewFile,BufRead *.pm call s:Setf('perl')
|
||||
au BufNewFile,BufRead *.psgi call s:Setf('perl')
|
||||
au BufNewFile,BufRead *.t call s:Setf('perl')
|
||||
au BufNewFile,BufRead Makefile.PL call s:Setf('perl')
|
||||
au BufNewFile,BufRead Rexfile call s:Setf('perl')
|
||||
au BufNewFile,BufRead ack call s:Setf('perl')
|
||||
au BufNewFile,BufRead cpanfile call s:Setf('perl')
|
||||
au BufNewFile,BufRead *.pod call s:Setf('pod')
|
||||
au BufNewFile,BufRead *.comp call s:Setf('mason')
|
||||
au BufNewFile,BufRead *.mason call s:Setf('mason')
|
||||
au BufNewFile,BufRead *.mhtml call s:Setf('mason')
|
||||
au BufNewFile,BufRead *.xs call s:Setf('xs')
|
||||
au! BufNewFile,BufRead *.pl call polyglot#DetectPlFiletype()
|
||||
au! BufNewFile,BufRead *.pm call polyglot#DetectPmFiletype()
|
||||
au! BufNewFile,BufRead *.t call polyglot#DetectTFiletype()
|
||||
au! BufNewFile,BufRead *.tt2 call polyglot#DetectTt2Filetype()
|
||||
endif
|
||||
|
||||
if !has_key(s:disabled_packages, 'pgsql')
|
||||
@@ -1517,17 +1581,17 @@ if !has_key(s:disabled_packages, 'raku')
|
||||
au BufNewFile,BufRead *.p6 call s:Setf('raku')
|
||||
au BufNewFile,BufRead *.p6l call s:Setf('raku')
|
||||
au BufNewFile,BufRead *.p6m call s:Setf('raku')
|
||||
au BufNewFile,BufRead *.pl call s:Setf('raku')
|
||||
au BufNewFile,BufRead *.pl6 call s:Setf('raku')
|
||||
au BufNewFile,BufRead *.pm call s:Setf('raku')
|
||||
au BufNewFile,BufRead *.pm6 call s:Setf('raku')
|
||||
au BufNewFile,BufRead *.pod6 call s:Setf('raku')
|
||||
au BufNewFile,BufRead *.raku call s:Setf('raku')
|
||||
au BufNewFile,BufRead *.rakudoc call s:Setf('raku')
|
||||
au BufNewFile,BufRead *.rakumod call s:Setf('raku')
|
||||
au BufNewFile,BufRead *.rakutest call s:Setf('raku')
|
||||
au BufNewFile,BufRead *.t call s:Setf('raku')
|
||||
au BufNewFile,BufRead *.t6 call s:Setf('raku')
|
||||
au! BufNewFile,BufRead *.pl call polyglot#DetectPlFiletype()
|
||||
au! BufNewFile,BufRead *.pm call polyglot#DetectPmFiletype()
|
||||
au! BufNewFile,BufRead *.t call polyglot#DetectTFiletype()
|
||||
endif
|
||||
|
||||
if !has_key(s:disabled_packages, 'raml')
|
||||
@@ -1616,7 +1680,7 @@ if !has_key(s:disabled_packages, 'ruby')
|
||||
endif
|
||||
|
||||
if !has_key(s:disabled_packages, 'rspec')
|
||||
au BufNewFile,BufRead *_spec.rb if !did_filetype() | set ft=ruby syntax=rspec | endif
|
||||
au BufNewFile,BufRead *_spec.rb set ft=ruby syntax=rspec
|
||||
endif
|
||||
|
||||
if !has_key(s:disabled_packages, 'brewfile')
|
||||
@@ -1918,12 +1982,41 @@ if !has_key(s:disabled_packages, 'odin')
|
||||
au BufNewFile,BufRead *.odin call s:Setf('odin')
|
||||
endif
|
||||
|
||||
if !has_key(s:disabled_packages, 'bzl')
|
||||
au BufNewFile,BufRead *.bzl call s:Setf('bzl')
|
||||
au BufNewFile,BufRead BUCK call s:Setf('bzl')
|
||||
au BufNewFile,BufRead BUILD call s:Setf('bzl')
|
||||
au BufNewFile,BufRead BUILD.bazel call s:Setf('bzl')
|
||||
au BufNewFile,BufRead Tiltfile call s:Setf('bzl')
|
||||
au BufNewFile,BufRead WORKSPACE call s:Setf('bzl')
|
||||
endif
|
||||
|
||||
if !has_key(s:disabled_packages, 'prolog')
|
||||
au BufNewFile,BufRead *.pro call s:Setf('prolog')
|
||||
au BufNewFile,BufRead *.prolog call s:Setf('prolog')
|
||||
au BufNewFile,BufRead *.yap call s:Setf('prolog')
|
||||
au! BufNewFile,BufRead *.pl call polyglot#DetectPlFiletype()
|
||||
endif
|
||||
|
||||
if !has_key(s:disabled_packages, 'tads')
|
||||
au! BufNewFile,BufRead *.t call polyglot#DetectTFiletype()
|
||||
endif
|
||||
|
||||
|
||||
" end filetypes
|
||||
|
||||
au BufNewFile,BufRead,StdinReadPost *
|
||||
\ if !did_filetype() && expand("<afile>") !~ g:ft_ignore_pat
|
||||
\ | call polyglot#Heuristics() | endif
|
||||
func! s:PolyglotFallback()
|
||||
if expand("<afile>") !~ g:ft_ignore_pat
|
||||
if getline(1) =~# "^#!"
|
||||
call polyglot#Shebang()
|
||||
endif
|
||||
if &filetype == ''
|
||||
runtime! scripts.vim
|
||||
endif
|
||||
endif
|
||||
endfunc
|
||||
|
||||
au BufNewFile,BufRead,StdinReadPost * call s:PolyglotFallback()
|
||||
|
||||
augroup END
|
||||
|
||||
@@ -2123,7 +2216,7 @@ au VimEnter * call s:verify()
|
||||
func! s:observe_filetype()
|
||||
augroup polyglot-observer
|
||||
au! CursorHold,CursorHoldI <buffer>
|
||||
\ if polyglot#Heuristics() | au! polyglot-observer CursorHold,CursorHoldI | endif
|
||||
\ if polyglot#Shebang() | au! polyglot-observer CursorHold,CursorHoldI | endif
|
||||
augroup END
|
||||
endfunc
|
||||
|
||||
|
||||
98
ftplugin/bzl.vim
Normal file
98
ftplugin/bzl.vim
Normal file
@@ -0,0 +1,98 @@
|
||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'bzl') == -1
|
||||
|
||||
" Vim filetype plugin file
|
||||
" Language: Bazel (http://bazel.io)
|
||||
" Maintainer: David Barnett (https://github.com/google/vim-ft-bzl)
|
||||
" Last Change: 2015 Aug 11
|
||||
|
||||
""
|
||||
" @section Introduction, intro
|
||||
" Core settings for the bzl filetype, used for BUILD and *.bzl files for the
|
||||
" Bazel build system (http://bazel.io/).
|
||||
|
||||
if exists('b:did_ftplugin')
|
||||
finish
|
||||
endif
|
||||
|
||||
|
||||
" Vim 7.4.051 has opinionated settings in ftplugin/python.vim that try to force
|
||||
" PEP8 conventions on every python file, but these conflict with Google's
|
||||
" indentation guidelines. As a workaround, we explicitly source the system
|
||||
" ftplugin, but save indentation settings beforehand and restore them after.
|
||||
let s:save_expandtab = &l:expandtab
|
||||
let s:save_shiftwidth = &l:shiftwidth
|
||||
let s:save_softtabstop = &l:softtabstop
|
||||
let s:save_tabstop = &l:tabstop
|
||||
|
||||
" NOTE: Vim versions before 7.3.511 had a ftplugin/python.vim that was broken
|
||||
" for compatible mode.
|
||||
let s:save_cpo = &cpo
|
||||
set cpo&vim
|
||||
|
||||
" Load base python ftplugin (also defines b:did_ftplugin).
|
||||
source $VIMRUNTIME/ftplugin/python.vim
|
||||
|
||||
" NOTE: Vim versions before 7.4.104 and later set this in ftplugin/python.vim.
|
||||
setlocal comments=b:#,fb:-
|
||||
|
||||
" Restore pre-existing indentation settings.
|
||||
let &l:expandtab = s:save_expandtab
|
||||
let &l:shiftwidth = s:save_shiftwidth
|
||||
let &l:softtabstop = s:save_softtabstop
|
||||
let &l:tabstop = s:save_tabstop
|
||||
|
||||
setlocal formatoptions-=t
|
||||
|
||||
" Make gf work with imports in BUILD files.
|
||||
setlocal includeexpr=substitute(v:fname,'//','','')
|
||||
|
||||
" Enable syntax-based folding, if specified.
|
||||
if get(g:, 'ft_bzl_fold', 0)
|
||||
setlocal foldmethod=syntax
|
||||
setlocal foldtext=BzlFoldText()
|
||||
endif
|
||||
|
||||
if exists('*BzlFoldText')
|
||||
finish
|
||||
endif
|
||||
|
||||
function BzlFoldText() abort
|
||||
let l:start_num = nextnonblank(v:foldstart)
|
||||
let l:end_num = prevnonblank(v:foldend)
|
||||
|
||||
if l:end_num <= l:start_num + 1
|
||||
" If the fold is empty, don't print anything for the contents.
|
||||
let l:content = ''
|
||||
else
|
||||
" Otherwise look for something matching the content regex.
|
||||
" And if nothing matches, print an ellipsis.
|
||||
let l:content = '...'
|
||||
for l:line in getline(l:start_num + 1, l:end_num - 1)
|
||||
let l:content_match = matchstr(l:line, '\m\C^\s*name = \zs.*\ze,$')
|
||||
if !empty(l:content_match)
|
||||
let l:content = l:content_match
|
||||
break
|
||||
endif
|
||||
endfor
|
||||
endif
|
||||
|
||||
" Enclose content with start and end
|
||||
let l:start_text = getline(l:start_num)
|
||||
let l:end_text = substitute(getline(l:end_num), '^\s*', '', '')
|
||||
let l:text = l:start_text . ' ' . l:content . ' ' . l:end_text
|
||||
|
||||
" Compute the available width for the displayed text.
|
||||
let l:width = winwidth(0) - &foldcolumn - (&number ? &numberwidth : 0)
|
||||
let l:lines_folded = ' ' . string(1 + v:foldend - v:foldstart) . ' lines'
|
||||
|
||||
" Expand tabs, truncate, pad, and concatenate
|
||||
let l:text = substitute(l:text, '\t', repeat(' ', &tabstop), 'g')
|
||||
let l:text = strpart(l:text, 0, l:width - len(l:lines_folded))
|
||||
let l:padding = repeat(' ', l:width - len(l:lines_folded) - len(l:text))
|
||||
return l:text . l:padding . l:lines_folded
|
||||
endfunction
|
||||
|
||||
let &cpo = s:save_cpo
|
||||
unlet s:save_cpo
|
||||
|
||||
endif
|
||||
24
ftplugin/prolog.vim
Normal file
24
ftplugin/prolog.vim
Normal file
@@ -0,0 +1,24 @@
|
||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'prolog') == -1
|
||||
|
||||
" Vim filetype plugin file
|
||||
" Language: Prolog
|
||||
" 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=s1:/*,mb:*,ex:*/,:% commentstring=%\ %s
|
||||
setlocal formatoptions-=t formatoptions+=croql
|
||||
|
||||
let &cpo = s:cpo_save
|
||||
unlet s:cpo_save
|
||||
|
||||
endif
|
||||
@@ -98,7 +98,7 @@ rules:
|
||||
filetype: idris2
|
||||
- pattern: '^%access .*'
|
||||
filetype: idris
|
||||
- override: 'g:filetype_idr'
|
||||
- override: 'g:filetype_idr'
|
||||
- filetype: idris2
|
||||
---
|
||||
extensions: [lidr]
|
||||
@@ -115,3 +115,70 @@ rules:
|
||||
filetype: vb
|
||||
ignore_case: true
|
||||
- filetype: basic
|
||||
---
|
||||
extensions: [pm]
|
||||
rules:
|
||||
- lines: 1
|
||||
rules:
|
||||
- pattern: 'XPM2'
|
||||
filetype: xpm2
|
||||
- pattern: 'XPM'
|
||||
filetype: xpm
|
||||
- lines: 50
|
||||
rules:
|
||||
- pattern: '^\s*(?:use\s+v6\b|\bmodule\b|\b(?:my\s+)?class\b)'
|
||||
filetype: raku
|
||||
- pattern: '\buse\s+(?:strict\b|v?5\.)'
|
||||
filetype: perl
|
||||
- override: 'g:filetype_pm'
|
||||
- filetype: perl
|
||||
---
|
||||
extensions: [pl]
|
||||
rules:
|
||||
- lines: 1
|
||||
or:
|
||||
- pattern: '^[^#]*:-'
|
||||
- pattern: '^\s*(?:%|/\*)'
|
||||
- pattern: '\.\s*$'
|
||||
filetype: prolog
|
||||
- lines: 50
|
||||
rules:
|
||||
- pattern: '^\s*(?:use\s+v6\b|\bmodule\b|\b(?:my\s+)?class\b)'
|
||||
filetype: raku
|
||||
- pattern: '\buse\s+(?:strict\b|v?5\.)'
|
||||
filetype: perl
|
||||
- override: 'g:filetype_pl'
|
||||
- filetype: perl
|
||||
---
|
||||
extensions: [t]
|
||||
rules:
|
||||
- lines: 5
|
||||
pattern: '^\.'
|
||||
filetype: nroff
|
||||
- lines: 50
|
||||
rules:
|
||||
- pattern: '^\s*(?:use\s+v6\b|\bmodule\b|\b(?:my\s+)?class\b)'
|
||||
filetype: raku
|
||||
- pattern: '\buse\s+(?:strict\b|v?5\.)'
|
||||
filetype: perl
|
||||
## I haven't found turing syntax for vim...
|
||||
# - pattern: '^\s*%[ \t]+|^\s*var\s+\w+(\s*:\s*\w+)?\s*:=\s*\w+'
|
||||
# filetype: turing
|
||||
- override: 'g:filetype_t'
|
||||
- filetype: perl
|
||||
---
|
||||
extensions: [tt2]
|
||||
rules:
|
||||
- lines: 3
|
||||
pattern: '<(?:!DOCTYPE HTML|[%?]|html)'
|
||||
ignore_case: true
|
||||
filetype: tt2html
|
||||
- filetype: tt2
|
||||
---
|
||||
extensions: [html]
|
||||
rules:
|
||||
- lines: 1
|
||||
pattern: '^(%|<[%&].*>)'
|
||||
filetype: mason
|
||||
- filetype: html
|
||||
|
||||
|
||||
98
indent/bzl.vim
Normal file
98
indent/bzl.vim
Normal file
@@ -0,0 +1,98 @@
|
||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'bzl') == -1
|
||||
|
||||
" Vim indent file
|
||||
" Language: Bazel (http://bazel.io)
|
||||
" Maintainer: David Barnett (https://github.com/google/vim-ft-bzl)
|
||||
" Last Change: 2017 Jun 13
|
||||
|
||||
if exists('b:did_indent')
|
||||
finish
|
||||
endif
|
||||
|
||||
" Load base python indent.
|
||||
if !exists('*GetPythonIndent')
|
||||
runtime! indent/python.vim
|
||||
endif
|
||||
|
||||
let b:did_indent = 1
|
||||
|
||||
" Only enable bzl google indent if python google indent is enabled.
|
||||
if !get(g:, 'no_google_python_indent')
|
||||
setlocal indentexpr=GetBzlIndent(v:lnum)
|
||||
endif
|
||||
|
||||
if exists('*GetBzlIndent')
|
||||
finish
|
||||
endif
|
||||
|
||||
let s:save_cpo = &cpo
|
||||
set cpo-=C
|
||||
|
||||
" Maximum number of lines to look backwards.
|
||||
let s:maxoff = 50
|
||||
|
||||
""
|
||||
" Determine the correct indent level given an {lnum} in the current buffer.
|
||||
function GetBzlIndent(lnum) abort
|
||||
let l:use_recursive_indent = !get(g:, 'no_google_python_recursive_indent')
|
||||
if l:use_recursive_indent
|
||||
" Backup and override indent setting variables.
|
||||
if exists('g:pyindent_nested_paren')
|
||||
let l:pyindent_nested_paren = g:pyindent_nested_paren
|
||||
endif
|
||||
if exists('g:pyindent_open_paren')
|
||||
let l:pyindent_open_paren = g:pyindent_open_paren
|
||||
endif
|
||||
let g:pyindent_nested_paren = 'shiftwidth() * 2'
|
||||
let g:pyindent_open_paren = 'shiftwidth() * 2'
|
||||
endif
|
||||
|
||||
let l:indent = -1
|
||||
|
||||
" Indent inside parens.
|
||||
" Align with the open paren unless it is at the end of the line.
|
||||
" E.g.
|
||||
" open_paren_not_at_EOL(100,
|
||||
" (200,
|
||||
" 300),
|
||||
" 400)
|
||||
" open_paren_at_EOL(
|
||||
" 100, 200, 300, 400)
|
||||
call cursor(a:lnum, 1)
|
||||
let [l:par_line, l:par_col] = searchpairpos('(\|{\|\[', '', ')\|}\|\]', 'bW',
|
||||
\ "line('.') < " . (a:lnum - s:maxoff) . " ? dummy :" .
|
||||
\ " synIDattr(synID(line('.'), col('.'), 1), 'name')" .
|
||||
\ " =~ '\\(Comment\\|String\\)$'")
|
||||
if l:par_line > 0
|
||||
call cursor(l:par_line, 1)
|
||||
if l:par_col != col('$') - 1
|
||||
let l:indent = l:par_col
|
||||
endif
|
||||
endif
|
||||
|
||||
" Delegate the rest to the original function.
|
||||
if l:indent == -1
|
||||
let l:indent = GetPythonIndent(a:lnum)
|
||||
endif
|
||||
|
||||
if l:use_recursive_indent
|
||||
" Restore global variables.
|
||||
if exists('l:pyindent_nested_paren')
|
||||
let g:pyindent_nested_paren = l:pyindent_nested_paren
|
||||
else
|
||||
unlet g:pyindent_nested_paren
|
||||
endif
|
||||
if exists('l:pyindent_open_paren')
|
||||
let g:pyindent_open_paren = l:pyindent_open_paren
|
||||
else
|
||||
unlet g:pyindent_open_paren
|
||||
endif
|
||||
endif
|
||||
|
||||
return l:indent
|
||||
endfunction
|
||||
|
||||
let &cpo = s:save_cpo
|
||||
unlet s:save_cpo
|
||||
|
||||
endif
|
||||
71
indent/prolog.vim
Normal file
71
indent/prolog.vim
Normal file
@@ -0,0 +1,71 @@
|
||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'prolog') == -1
|
||||
|
||||
" vim: set sw=4 sts=4:
|
||||
" Maintainer : Gergely Kontra <kgergely@mcl.hu>
|
||||
" Revised on : 2002.02.18. 23:34:05
|
||||
" Language : Prolog
|
||||
" Last change by: Takuya Fujiwara, 2018 Sep 23
|
||||
|
||||
" TODO:
|
||||
" checking with respect to syntax highlighting
|
||||
" ignoring multiline comments
|
||||
" detecting multiline strings
|
||||
|
||||
" Only load this indent file when no other was loaded.
|
||||
if exists("b:did_indent")
|
||||
finish
|
||||
endif
|
||||
|
||||
let b:did_indent = 1
|
||||
|
||||
setlocal indentexpr=GetPrologIndent()
|
||||
setlocal indentkeys-=:,0#
|
||||
setlocal indentkeys+=0%,-,0;,>,0)
|
||||
|
||||
" Only define the function once.
|
||||
"if exists("*GetPrologIndent")
|
||||
" finish
|
||||
"endif
|
||||
|
||||
function! GetPrologIndent()
|
||||
" Find a non-blank line above the current line.
|
||||
let pnum = prevnonblank(v:lnum - 1)
|
||||
" Hit the start of the file, use zero indent.
|
||||
if pnum == 0
|
||||
return 0
|
||||
endif
|
||||
let line = getline(v:lnum)
|
||||
let pline = getline(pnum)
|
||||
|
||||
let ind = indent(pnum)
|
||||
" Previous line was comment -> use previous line's indent
|
||||
if pline =~ '^\s*%'
|
||||
return ind
|
||||
endif
|
||||
" Previous line was the start of block comment -> +1 after '/*' comment
|
||||
if pline =~ '^\s*/\*'
|
||||
return ind + 1
|
||||
endif
|
||||
" Previous line was the end of block comment -> -1 after '*/' comment
|
||||
if pline =~ '^\s*\*/'
|
||||
return ind - 1
|
||||
endif
|
||||
" Check for clause head on previous line
|
||||
if pline =~ '\%(:-\|-->\)\s*\(%.*\)\?$'
|
||||
let ind = ind + shiftwidth()
|
||||
" Check for end of clause on previous line
|
||||
elseif pline =~ '\.\s*\(%.*\)\?$'
|
||||
let ind = ind - shiftwidth()
|
||||
endif
|
||||
" Check for opening conditional on previous line
|
||||
if pline =~ '^\s*\([(;]\|->\)'
|
||||
let ind = ind + shiftwidth()
|
||||
endif
|
||||
" Check for closing an unclosed paren, or middle ; or ->
|
||||
if line =~ '^\s*\([);]\|->\)'
|
||||
let ind = ind - shiftwidth()
|
||||
endif
|
||||
return ind
|
||||
endfunction
|
||||
|
||||
endif
|
||||
@@ -1175,6 +1175,23 @@ remote: vim-perl/vim-perl
|
||||
filetypes:
|
||||
- name: perl
|
||||
linguist: Perl
|
||||
- name: pod
|
||||
extensions:
|
||||
- pod
|
||||
- name: mason
|
||||
extensions:
|
||||
- mason
|
||||
- mhtml
|
||||
- comp
|
||||
- name: tt2
|
||||
extensions:
|
||||
- tt2
|
||||
- name: tt2html
|
||||
extensions:
|
||||
- tt2
|
||||
- name: xs
|
||||
extensions:
|
||||
- xs
|
||||
---
|
||||
name: pgsql
|
||||
remote: lifepillar/pgsql.vim
|
||||
@@ -1834,3 +1851,25 @@ remote: Tetralux/odin.vim
|
||||
filetypes:
|
||||
- name: odin
|
||||
linguist: Odin
|
||||
---
|
||||
name: bzl
|
||||
remote: vim/vim:runtime
|
||||
glob: '**/bzl.vim'
|
||||
filetypes:
|
||||
- name: bzl
|
||||
linguist: Starlark
|
||||
---
|
||||
name: prolog
|
||||
remote: vim/vim:runtime
|
||||
glob: '**/prolog.vim'
|
||||
filetypes:
|
||||
- name: prolog
|
||||
linguist: Prolog
|
||||
---
|
||||
name: tads
|
||||
remote: vim/vim:runtime
|
||||
glob: '**/tads.vim'
|
||||
filetypes:
|
||||
- name: tads
|
||||
extensions:
|
||||
- t
|
||||
|
||||
@@ -263,7 +263,7 @@ def rule_to_code(rule)
|
||||
if rule.has_key?("lines")
|
||||
if rule["lines"] == 1
|
||||
return <<~EOS
|
||||
let line = getline(1)
|
||||
let line = getline(nextnonblank(1))
|
||||
|
||||
#{indent(rule_to_code(except(rule, "lines")), 0)}
|
||||
EOS
|
||||
@@ -423,6 +423,7 @@ def generate_ftdetect(packages, heuristics)
|
||||
expected_filetypes = expected_filetypes.select { |e| filetype_names.include?(e["name"]) }
|
||||
|
||||
native_extensions = Set.new(native_filetypes.flat_map { |f| f["extensions"] || [] })
|
||||
native_filenames = Set.new(native_filetypes.flat_map { |f| f["filenames"] || [] })
|
||||
|
||||
for package in packages
|
||||
name = package.fetch("name")
|
||||
@@ -435,6 +436,12 @@ def generate_ftdetect(packages, heuristics)
|
||||
to_disable << "*." + extension
|
||||
end
|
||||
end
|
||||
|
||||
for filename in filetype["filenames"]
|
||||
if native_filenames.include?(filename)
|
||||
to_disable << filename
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if to_disable.size > 0
|
||||
@@ -457,7 +464,7 @@ def generate_ftdetect(packages, heuristics)
|
||||
set_command = "call s:Setf('#{name}')"
|
||||
|
||||
if filetype["syntax"]
|
||||
set_command = "if !did_filetype() | set ft=#{name} syntax=#{filetype["syntax"]} | endif"
|
||||
set_command = "set ft=#{name} syntax=#{filetype["syntax"]}"
|
||||
end
|
||||
|
||||
if filetype["custom_set"]
|
||||
@@ -544,11 +551,11 @@ def generate_ftdetect(packages, heuristics)
|
||||
endif
|
||||
endfunc
|
||||
|
||||
func! polyglot#Heuristics()
|
||||
func! polyglot#Shebang()
|
||||
" Try to detect filetype from shebang
|
||||
let l:filetype = polyglot#Shebang()
|
||||
if l:filetype != ""
|
||||
exec "setf " . l:filetype
|
||||
let ft = polyglot#ShebangFiletype()
|
||||
if ft != ""
|
||||
call s:Setf(ft)
|
||||
return 1
|
||||
endif
|
||||
|
||||
@@ -571,7 +578,7 @@ def generate_ftdetect(packages, heuristics)
|
||||
let s:r_envflag = '%(\\S\\+=\\S\\+\\|-[iS]\\|--ignore-environment\\|--split-string\\)'
|
||||
let s:r_env = '^\\%(\\' . s:r_envflag . '\\s\\+\\)*\\(\\S\\+\\)'
|
||||
|
||||
func! polyglot#Shebang()
|
||||
func! polyglot#ShebangFiletype()
|
||||
let l:line1 = getline(1)
|
||||
|
||||
if l:line1 !~# "^#!"
|
||||
|
||||
@@ -15,6 +15,12 @@ function! TestExtension(filetype, filename, content)
|
||||
endtry
|
||||
endfunction
|
||||
|
||||
" make sure native vim scripts.vim is respected
|
||||
call TestExtension("rib", "renderman", "##RenderMan")
|
||||
|
||||
" make sure case of file does matter when recognizing file
|
||||
call TestExtension("ruby", "scripts/build", "#!/usr/bin/env ruby")
|
||||
|
||||
call TestExtension("sh", "bash1", "#!/bin/bash")
|
||||
call TestExtension("sh", "bash2", "#! /bin/bash")
|
||||
call TestExtension("sh", "bash3", "#! /bin/bash2.3")
|
||||
@@ -279,3 +285,72 @@ call TestExtension("c", "foo.h", "")
|
||||
unlet g:c_syntax_for_h
|
||||
let g:ch_syntax_for_h = 1
|
||||
call TestExtension("ch", "foo.h", "")
|
||||
|
||||
" perl
|
||||
call TestExtension("perl", "empty.plx", "")
|
||||
call TestExtension("perl", "empty.al", "")
|
||||
call TestExtension("perl", "empty.psgi", "")
|
||||
call TestExtension("pod", "empty.pod", "")
|
||||
|
||||
" raku
|
||||
call TestExtension("raku", "empty.p6", "")
|
||||
call TestExtension("raku", "empty.pm6", "")
|
||||
call TestExtension("raku", "empty.pl6", "")
|
||||
call TestExtension("raku", "empty.raku", "")
|
||||
call TestExtension("raku", "empty.rakumod", "")
|
||||
call TestExtension("raku", "empty.pod6", "")
|
||||
call TestExtension("raku", "empty.rakudoc", "")
|
||||
call TestExtension("raku", "empty.rakutest", "")
|
||||
call TestExtension("raku", "empty.t6", "")
|
||||
|
||||
|
||||
" .pm extension
|
||||
call TestExtension("perl", "empty.pm", "")
|
||||
call TestExtension("perl", "strict.pm", " use strict hello;")
|
||||
call TestExtension("perl", "use5.pm", " use 5;")
|
||||
call TestExtension("perl", "usev5.pm", " use v5;")
|
||||
call TestExtension("raku", "script.pm", "#!/usr/bin/env perl6\nprint('Hello world')")
|
||||
call TestExtension("raku", "class.pm", " class Class {}")
|
||||
call TestExtension("raku", "module.pm", " module foobar")
|
||||
call TestExtension("xpm", "xpm.pm", "/* XPM */")
|
||||
call TestExtension("xpm2", "xpm2.pm", "/* XPM2 */")
|
||||
let g:filetype_pm = "fizfuz"
|
||||
call TestExtension("fizfuz", "fizfuz.pm", "")
|
||||
|
||||
" .pl extension
|
||||
call TestExtension("perl", "empty.pl", "")
|
||||
call TestExtension("prolog", "comment.pl", "% hello world")
|
||||
call TestExtension("prolog", "comment2.pl", "/* hello world */")
|
||||
call TestExtension("prolog", "statement.pl", "happy(vincent). ")
|
||||
call TestExtension("prolog", "statement2.pl", "nearbychk(X,Y) :- Y is X-1.")
|
||||
call TestExtension("perl", "strict.pl", " use strict hello;")
|
||||
call TestExtension("perl", "use5.pl", " use 5;")
|
||||
call TestExtension("perl", "usev5.pl", " use v5;")
|
||||
call TestExtension("raku", "script.pl", "#!/usr/bin/env perl6\nprint('Hello world')")
|
||||
call TestExtension("raku", "class.pl", " class Class {}")
|
||||
call TestExtension("raku", "module.pl", " module foobar")
|
||||
let g:filetype_pl = "fizfuz"
|
||||
call TestExtension("fizfuz", "fizfuz.pl", "")
|
||||
|
||||
" .t extension
|
||||
call TestExtension("perl", "empty.t", "")
|
||||
call TestExtension("perl", "strict.t", " use strict hello;")
|
||||
call TestExtension("perl", "use5.t", " use 5;")
|
||||
call TestExtension("perl", "usev5.t", " use v5;")
|
||||
call TestExtension("raku", "script.t", "#!/usr/bin/env perl6\nprint('Hello world')")
|
||||
call TestExtension("raku", "class.t", " class Class {}")
|
||||
call TestExtension("raku", "module.t", " module foobar")
|
||||
call TestExtension("nroff", "module.t", ".nf\n101 Main Street")
|
||||
let g:filetype_t = "fizfuz"
|
||||
call TestExtension("fizfuz", "fizfuz.t", "")
|
||||
|
||||
" .tt2 extension
|
||||
call TestExtension("tt2", "empty.tt2", "")
|
||||
call TestExtension("tt2html", "doctype.tt2", "<!DOCTYPE HTML>")
|
||||
call TestExtension("tt2html", "percent.tt2", "<%filter>")
|
||||
call TestExtension("tt2html", "html.tt2", "<html>")
|
||||
|
||||
" .html extension
|
||||
call TestExtension("html", "empty.html", "")
|
||||
call TestExtension("mason", "mason1.html", "% my $planet = 42;")
|
||||
call TestExtension("mason", "mason2.html", "<%filter></%filter>")
|
||||
|
||||
@@ -154,6 +154,11 @@ call TestFiletype('sexplib')
|
||||
call TestFiletype('octave')
|
||||
call TestFiletype('opencl')
|
||||
call TestFiletype('perl')
|
||||
call TestFiletype('pod')
|
||||
call TestFiletype('mason')
|
||||
call TestFiletype('tt2')
|
||||
call TestFiletype('tt2html')
|
||||
call TestFiletype('xs')
|
||||
call TestFiletype('sql')
|
||||
call TestFiletype('cql')
|
||||
call TestFiletype('php')
|
||||
@@ -232,3 +237,6 @@ call TestFiletype('basic')
|
||||
call TestFiletype('vb')
|
||||
call TestFiletype('dosini')
|
||||
call TestFiletype('odin')
|
||||
call TestFiletype('bzl')
|
||||
call TestFiletype('prolog')
|
||||
call TestFiletype('tads')
|
||||
|
||||
20
syntax/bzl.vim
Normal file
20
syntax/bzl.vim
Normal file
@@ -0,0 +1,20 @@
|
||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'bzl') == -1
|
||||
|
||||
" Vim syntax file
|
||||
" Language: Bazel (http://bazel.io)
|
||||
" Maintainer: David Barnett (https://github.com/google/vim-ft-bzl)
|
||||
" Last Change: 2015 Aug 11
|
||||
|
||||
if exists('b:current_syntax')
|
||||
finish
|
||||
endif
|
||||
|
||||
|
||||
runtime! syntax/python.vim
|
||||
|
||||
let b:current_syntax = 'bzl'
|
||||
|
||||
syn region bzlRule start='^\w\+($' end='^)\n*' transparent fold
|
||||
syn region bzlList start='\[' end='\]' transparent fold
|
||||
|
||||
endif
|
||||
122
syntax/prolog.vim
Normal file
122
syntax/prolog.vim
Normal file
@@ -0,0 +1,122 @@
|
||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'prolog') == -1
|
||||
|
||||
" Vim syntax file
|
||||
" Language: PROLOG
|
||||
" Maintainer: Anton Kochkov <anton.kochkov@gmail.com>
|
||||
" Last Change: 2019 Aug 29
|
||||
|
||||
" There are two sets of highlighting in here:
|
||||
" If the "prolog_highlighting_clean" variable exists, it is rather sparse.
|
||||
" Otherwise you get more highlighting.
|
||||
"
|
||||
" You can also set the "prolog_highlighting_no_keyword" variable. If set,
|
||||
" keywords will not be highlighted.
|
||||
|
||||
" quit when a syntax file was already loaded
|
||||
if exists("b:current_syntax")
|
||||
finish
|
||||
endif
|
||||
|
||||
" Prolog is case sensitive.
|
||||
syn case match
|
||||
|
||||
" Very simple highlighting for comments, clause heads and
|
||||
" character codes. It respects prolog strings and atoms.
|
||||
|
||||
syn region prologCComment start=+/\*+ end=+\*/+
|
||||
syn match prologComment +%.*+
|
||||
|
||||
if !exists("prolog_highlighting_no_keyword")
|
||||
syn keyword prologKeyword module meta_predicate multifile dynamic
|
||||
endif
|
||||
syn match prologCharCode +0'\\\=.+
|
||||
syn region prologString start=+"+ skip=+\\\\\|\\"+ end=+"+
|
||||
syn region prologAtom start=+'+ skip=+\\\\\|\\'+ end=+'+
|
||||
syn region prologClause matchgroup=prologClauseHead start=+^\s*[a-z]\w*+ matchgroup=Normal end=+\.\s\|\.$+ contains=ALLBUT,prologClause
|
||||
|
||||
if !exists("prolog_highlighting_clean")
|
||||
|
||||
" some keywords
|
||||
" some common predicates are also highlighted as keywords
|
||||
" is there a better solution?
|
||||
if !exists("prolog_highlighting_no_keyword")
|
||||
syn keyword prologKeyword abolish current_output peek_code
|
||||
syn keyword prologKeyword append current_predicate put_byte
|
||||
syn keyword prologKeyword arg current_prolog_flag put_char
|
||||
syn keyword prologKeyword asserta fail put_code
|
||||
syn keyword prologKeyword assertz findall read
|
||||
syn keyword prologKeyword at_end_of_stream float read_term
|
||||
syn keyword prologKeyword atom flush_output repeat
|
||||
syn keyword prologKeyword atom_chars functor retract
|
||||
syn keyword prologKeyword atom_codes get_byte set_input
|
||||
syn keyword prologKeyword atom_concat get_char set_output
|
||||
syn keyword prologKeyword atom_length get_code set_prolog_flag
|
||||
syn keyword prologKeyword atomic halt set_stream_position
|
||||
syn keyword prologKeyword bagof integer setof
|
||||
syn keyword prologKeyword call is stream_property
|
||||
syn keyword prologKeyword catch nl sub_atom
|
||||
syn keyword prologKeyword char_code nonvar throw
|
||||
syn keyword prologKeyword char_conversion number true
|
||||
syn keyword prologKeyword clause number_chars unify_with_occurs_check
|
||||
syn keyword prologKeyword close number_codes var
|
||||
syn keyword prologKeyword compound once write
|
||||
syn keyword prologKeyword copy_term op write_canonical
|
||||
syn keyword prologKeyword current_char_conversion open write_term
|
||||
syn keyword prologKeyword current_input peek_byte writeq
|
||||
syn keyword prologKeyword current_op peek_char
|
||||
endif
|
||||
|
||||
syn match prologOperator "=\\=\|=:=\|\\==\|=<\|==\|>=\|\\=\|\\+\|=\.\.\|<\|>\|="
|
||||
syn match prologAsIs "===\|\\===\|<=\|=>"
|
||||
|
||||
syn match prologNumber "\<\d*\>'\@!"
|
||||
syn match prologNumber "\<0[xX]\x*\>'\@!"
|
||||
syn match prologCommentError "\*/"
|
||||
syn match prologSpecialCharacter ";"
|
||||
syn match prologSpecialCharacter "!"
|
||||
syn match prologSpecialCharacter ":-"
|
||||
syn match prologSpecialCharacter "-->"
|
||||
syn match prologQuestion "?-.*\." contains=prologNumber
|
||||
|
||||
|
||||
endif
|
||||
|
||||
syn sync maxlines=50
|
||||
|
||||
|
||||
" Define the default highlighting.
|
||||
" Only when an item doesn't have highlighting yet
|
||||
|
||||
" The default highlighting.
|
||||
hi def link prologComment Comment
|
||||
hi def link prologCComment Comment
|
||||
hi def link prologCharCode Special
|
||||
|
||||
if exists ("prolog_highlighting_clean")
|
||||
|
||||
hi def link prologKeyword Statement
|
||||
hi def link prologClauseHead Statement
|
||||
hi def link prologClause Normal
|
||||
|
||||
else
|
||||
|
||||
hi def link prologKeyword Keyword
|
||||
hi def link prologClauseHead Constant
|
||||
hi def link prologClause Normal
|
||||
hi def link prologQuestion PreProc
|
||||
hi def link prologSpecialCharacter Special
|
||||
hi def link prologNumber Number
|
||||
hi def link prologAsIs Normal
|
||||
hi def link prologCommentError Error
|
||||
hi def link prologAtom String
|
||||
hi def link prologString String
|
||||
hi def link prologOperator Operator
|
||||
|
||||
endif
|
||||
|
||||
|
||||
let b:current_syntax = "prolog"
|
||||
|
||||
" vim: ts=8
|
||||
|
||||
endif
|
||||
175
syntax/tads.vim
Normal file
175
syntax/tads.vim
Normal file
@@ -0,0 +1,175 @@
|
||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'tads') == -1
|
||||
|
||||
" Vim syntax file
|
||||
" Language: TADS
|
||||
" Maintainer: Amir Karger <karger@post.harvard.edu>
|
||||
" $Date: 2004/06/13 19:28:45 $
|
||||
" $Revision: 1.1 $
|
||||
" Stolen from: Bram Moolenaar's C language file
|
||||
" Newest version at: http://www.hec.utah.edu/~karger/vim/syntax/tads.vim
|
||||
" History info at the bottom of the file
|
||||
|
||||
" TODO lots more keywords
|
||||
" global, self, etc. are special *objects*, not functions. They should
|
||||
" probably be a different color than the special functions
|
||||
" Actually, should cvtstr etc. be functions?! (change tadsFunction)
|
||||
" Make global etc. into Identifiers, since we don't have regular variables?
|
||||
|
||||
" quit when a syntax file was already loaded
|
||||
if exists("b:current_syntax")
|
||||
finish
|
||||
endif
|
||||
|
||||
" A bunch of useful keywords
|
||||
syn keyword tadsStatement goto break return continue pass
|
||||
syn keyword tadsLabel case default
|
||||
syn keyword tadsConditional if else switch
|
||||
syn keyword tadsRepeat while for do
|
||||
syn keyword tadsStorageClass local compoundWord formatstring specialWords
|
||||
syn keyword tadsBoolean nil true
|
||||
|
||||
" TADS keywords
|
||||
syn keyword tadsKeyword replace modify
|
||||
syn keyword tadsKeyword global self inherited
|
||||
" builtin functions
|
||||
syn keyword tadsKeyword cvtstr cvtnum caps lower upper substr
|
||||
syn keyword tadsKeyword say length
|
||||
syn keyword tadsKeyword setit setscore
|
||||
syn keyword tadsKeyword datatype proptype
|
||||
syn keyword tadsKeyword car cdr
|
||||
syn keyword tadsKeyword defined isclass
|
||||
syn keyword tadsKeyword find firstobj nextobj
|
||||
syn keyword tadsKeyword getarg argcount
|
||||
syn keyword tadsKeyword input yorn askfile
|
||||
syn keyword tadsKeyword rand randomize
|
||||
syn keyword tadsKeyword restart restore quit save undo
|
||||
syn keyword tadsException abort exit exitobj
|
||||
|
||||
syn keyword tadsTodo contained TODO FIXME XXX
|
||||
|
||||
" String and Character constants
|
||||
" Highlight special characters (those which have a backslash) differently
|
||||
syn match tadsSpecial contained "\\."
|
||||
syn region tadsDoubleString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=tadsSpecial,tadsEmbedded
|
||||
syn region tadsSingleString start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=tadsSpecial
|
||||
" Embedded expressions in strings
|
||||
syn region tadsEmbedded contained start="<<" end=">>" contains=tadsKeyword
|
||||
|
||||
" TADS doesn't have \xxx, right?
|
||||
"syn match cSpecial contained "\\[0-7][0-7][0-7]\=\|\\."
|
||||
"syn match cSpecialCharacter "'\\[0-7][0-7]'"
|
||||
"syn match cSpecialCharacter "'\\[0-7][0-7][0-7]'"
|
||||
|
||||
"catch errors caused by wrong parenthesis
|
||||
"syn region cParen transparent start='(' end=')' contains=ALLBUT,cParenError,cIncluded,cSpecial,cTodo,cUserCont,cUserLabel
|
||||
"syn match cParenError ")"
|
||||
"syn match cInParen contained "[{}]"
|
||||
syn region tadsBrace transparent start='{' end='}' contains=ALLBUT,tadsBraceError,tadsIncluded,tadsSpecial,tadsTodo
|
||||
syn match tadsBraceError "}"
|
||||
|
||||
"integer number (TADS has no floating point numbers)
|
||||
syn case ignore
|
||||
syn match tadsNumber "\<[0-9]\+\>"
|
||||
"hex number
|
||||
syn match tadsNumber "\<0x[0-9a-f]\+\>"
|
||||
syn match tadsIdentifier "\<[a-z][a-z0-9_$]*\>"
|
||||
syn case match
|
||||
" flag an octal number with wrong digits
|
||||
syn match tadsOctalError "\<0[0-7]*[89]"
|
||||
|
||||
" Removed complicated c_comment_strings
|
||||
syn region tadsComment start="/\*" end="\*/" contains=tadsTodo
|
||||
syn match tadsComment "//.*" contains=tadsTodo
|
||||
syntax match tadsCommentError "\*/"
|
||||
|
||||
syn region tadsPreCondit start="^\s*#\s*\(if\>\|ifdef\>\|ifndef\>\|elif\>\|else\>\|endif\>\)" skip="\\$" end="$" contains=tadsComment,tadsString,tadsNumber,tadsCommentError
|
||||
syn region tadsIncluded contained start=+"+ skip=+\\\\\|\\"+ end=+"+
|
||||
syn match tadsIncluded contained "<[^>]*>"
|
||||
syn match tadsInclude "^\s*#\s*include\>\s*["<]" contains=tadsIncluded
|
||||
syn region tadsDefine start="^\s*#\s*\(define\>\|undef\>\)" skip="\\$" end="$" contains=ALLBUT,tadsPreCondit,tadsIncluded,tadsInclude,tadsDefine,tadsInBrace,tadsIdentifier
|
||||
|
||||
syn region tadsPreProc start="^\s*#\s*\(pragma\>\|line\>\|warning\>\|warn\>\|error\>\)" skip="\\$" end="$" contains=ALLBUT,tadsPreCondit,tadsIncluded,tadsInclude,tadsDefine,tadsInParen,tadsIdentifier
|
||||
|
||||
" Highlight User Labels
|
||||
" TODO labels for gotos?
|
||||
"syn region cMulti transparent start='?' end=':' contains=ALLBUT,cIncluded,cSpecial,cTodo,cUserCont,cUserLabel,cBitField
|
||||
" Avoid matching foo::bar() in C++ by requiring that the next char is not ':'
|
||||
"syn match cUserCont "^\s*\I\i*\s*:$" contains=cUserLabel
|
||||
"syn match cUserCont ";\s*\I\i*\s*:$" contains=cUserLabel
|
||||
"syn match cUserCont "^\s*\I\i*\s*:[^:]" contains=cUserLabel
|
||||
"syn match cUserCont ";\s*\I\i*\s*:[^:]" contains=cUserLabel
|
||||
|
||||
"syn match cUserLabel "\I\i*" contained
|
||||
|
||||
" identifier: class-name [, class-name [...]] [property-list] ;
|
||||
" Don't highlight comment in class def
|
||||
syn match tadsClassDef "\<class\>[^/]*" contains=tadsObjectDef,tadsClass
|
||||
syn match tadsClass contained "\<class\>"
|
||||
syn match tadsObjectDef "\<[a-zA-Z][a-zA-Z0-9_$]*\s*:\s*[a-zA-Z0-9_$]\+\(\s*,\s*[a-zA-Z][a-zA-Z0-9_$]*\)*\(\s*;\)\="
|
||||
syn keyword tadsFunction contained function
|
||||
syn match tadsFunctionDef "\<[a-zA-Z][a-zA-Z0-9_$]*\s*:\s*function[^{]*" contains=tadsFunction
|
||||
"syn region tadsObject transparent start = '[a-zA-Z][\i$]\s*:\s*' end=";" contains=tadsBrace,tadsObjectDef
|
||||
|
||||
" How far back do we go to find matching groups
|
||||
if !exists("tads_minlines")
|
||||
let tads_minlines = 15
|
||||
endif
|
||||
exec "syn sync ccomment tadsComment minlines=" . tads_minlines
|
||||
if !exists("tads_sync_dist")
|
||||
let tads_sync_dist = 100
|
||||
endif
|
||||
execute "syn sync maxlines=" . tads_sync_dist
|
||||
|
||||
" Define the default highlighting.
|
||||
" Only when an item doesn't have highlighting yet
|
||||
|
||||
" The default methods for highlighting. Can be overridden later
|
||||
hi def link tadsFunctionDef Function
|
||||
hi def link tadsFunction Structure
|
||||
hi def link tadsClass Structure
|
||||
hi def link tadsClassDef Identifier
|
||||
hi def link tadsObjectDef Identifier
|
||||
" no highlight for tadsEmbedded, so it prints as normal text w/in the string
|
||||
|
||||
hi def link tadsOperator Operator
|
||||
hi def link tadsStructure Structure
|
||||
hi def link tadsTodo Todo
|
||||
hi def link tadsLabel Label
|
||||
hi def link tadsConditional Conditional
|
||||
hi def link tadsRepeat Repeat
|
||||
hi def link tadsException Exception
|
||||
hi def link tadsStatement Statement
|
||||
hi def link tadsStorageClass StorageClass
|
||||
hi def link tadsKeyWord Keyword
|
||||
hi def link tadsSpecial SpecialChar
|
||||
hi def link tadsNumber Number
|
||||
hi def link tadsBoolean Boolean
|
||||
hi def link tadsDoubleString tadsString
|
||||
hi def link tadsSingleString tadsString
|
||||
|
||||
hi def link tadsOctalError tadsError
|
||||
hi def link tadsCommentError tadsError
|
||||
hi def link tadsBraceError tadsError
|
||||
hi def link tadsInBrace tadsError
|
||||
hi def link tadsError Error
|
||||
|
||||
hi def link tadsInclude Include
|
||||
hi def link tadsPreProc PreProc
|
||||
hi def link tadsDefine Macro
|
||||
hi def link tadsIncluded tadsString
|
||||
hi def link tadsPreCondit PreCondit
|
||||
|
||||
hi def link tadsString String
|
||||
hi def link tadsComment Comment
|
||||
|
||||
|
||||
|
||||
let b:current_syntax = "tads"
|
||||
|
||||
" Changes:
|
||||
" 11/18/99 Added a bunch of TADS functions, tadsException
|
||||
" 10/22/99 Misspelled Moolenaar (sorry!), c_minlines to tads_minlines
|
||||
"
|
||||
" vim: ts=8
|
||||
|
||||
endif
|
||||
Reference in New Issue
Block a user