summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdam Stankiewicz <sheerun@sher.pl>2020-09-10 14:07:02 +0200
committerAdam Stankiewicz <sheerun@sher.pl>2020-09-10 14:07:02 +0200
commit1eed30b2af57538496943da09e298a6facc33002 (patch)
tree49e29b23caf76fdc888dd6628321a7125c1d8514
parentbe092d6f430ca802d7200e68a5c987195bccd0e9 (diff)
downloadvim-polyglot-4.9.9.tar.gz
vim-polyglot-4.9.9.zip
Fix filetype detection and docini filetypesv4.9.9
-rw-r--r--README.md3
-rw-r--r--autoload/sleuth.vim6
-rw-r--r--ftdetect/polyglot.vim197
-rw-r--r--ftplugin/dosini.vim23
-rw-r--r--packages.yaml19
-rwxr-xr-xscripts/build66
-rw-r--r--scripts/test_filetypes.vim1
-rw-r--r--syntax/dosini.vim44
8 files changed, 292 insertions, 67 deletions
diff --git a/README.md b/README.md
index 1c98ba15..3473f253 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-->194<!--/Package Count--> packages it consists of.
+- It **installs and updates 120+ times faster** than the <!--Package Count-->195<!--/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).
@@ -98,6 +98,7 @@ If you need full functionality of any plugin, please use it directly with your p
- [dhall](https://github.com/vmchale/dhall-vim)
- [dlang](https://github.com/JesseKPhillips/d.vim)
- [dockerfile](https://github.com/ekalinin/Dockerfile.vim)
+- [dosini](https://github.com/vim/vim/tree/master/runtime)
- [elf](https://github.com/vim/vim/tree/master/runtime)
- [elixir](https://github.com/elixir-lang/vim-elixir)
- [elm](https://github.com/andys8/vim-elm-syntax)
diff --git a/autoload/sleuth.vim b/autoload/sleuth.vim
index 6cf267fa..81974413 100644
--- a/autoload/sleuth.vim
+++ b/autoload/sleuth.vim
@@ -57,7 +57,7 @@ let s:globs = {
\ 'dd': '*.dd',
\ 'ddoc': '*.ddoc',
\ 'dhall': '*.dhall',
- \ 'dosini': '*.wrap',
+ \ 'dosini': '*.wrap,*.ini,*.cfg,*.dof,*.lektorproject,*.prefs,*.pro,*.properties,buildozer.spec,php.ini-*',
\ 'dsdl': '*.sdl',
\ 'dune': 'jbuild,dune,dune-project,dune-workspace',
\ 'ecrystal': '*.ecr',
@@ -110,7 +110,7 @@ let s:globs = {
\ 'javascriptreact': '*.jsx',
\ 'jinja.html': '*.jinja,*.j2,*.jinja2',
\ 'jq': '*.jq',
- \ 'json': '*.json,*.avsc,*.geojson,*.gltf,*.har,*.ice,*.JSON-tmLanguage,*.jsonl,*.mcmeta,*.tfstate,*.tfstate.backup,*.topojson,*.webapp,*.webmanifest,*.yy,*.yyp,*.jsonp,*.template,composer.lock,mcmod.info',
+ \ 'json': '*.json,*.avsc,*.geojson,*.gltf,*.har,*.ice,*.JSON-tmLanguage,*.jsonl,*.mcmeta,*.tfstate,*.tfstate.backup,*.topojson,*.webapp,*.webmanifest,*.yy,*.yyp,*.jsonp,*.template,composer.lock,mcmod.info,Pipfile.lock',
\ 'json5': '*.json5',
\ 'jsonnet': '*.jsonnet,*.libsonnet',
\ 'jst': '*.ejs,*.ect,*.jst',
@@ -130,7 +130,7 @@ let s:globs = {
\ 'markdown': '*.md,*.markdown,*.mdown,*.mdwn,*.mkd,*.mkdn,*.mkdown,*.ronn,*.workbook,contents.lr',
\ 'markdown.mdx': '*.mdx',
\ 'meson': 'meson.build,meson_options.txt',
- \ 'mma': '*.mathematica,*.cdf,*.m,*.ma,*.mt,*.nb,*.nbp,*.wl,*.wlt,*.wls',
+ \ 'mma': '*.mathematica,*.cdf,*.m,*.ma,*.mt,*.nb,*.nbp,*.wl,*.wlt,*.wls,*.mma',
\ 'moon': '*.moon',
\ 'murphi': '*.m',
\ 'mustache': '*.handlebars,*.hbs,*.hulk,*.hjs,*.mustache,*.njk,*.hogan,*.hdbs,*.hb',
diff --git a/ftdetect/polyglot.vim b/ftdetect/polyglot.vim
index e49a966d..5a95caa1 100644
--- a/ftdetect/polyglot.vim
+++ b/ftdetect/polyglot.vim
@@ -73,6 +73,8 @@ func! s:StarSetf(ft)
endif
endfunc
+augroup filetypedetect
+
" filetypes
if !has_key(s:disabled_packages, '8th')
@@ -95,12 +97,24 @@ if !has_key(s:disabled_packages, 'abc')
au! BufRead,BufNewFile *.abc
endif
+if !has_key(s:disabled_packages, 'abel')
+ au! BufRead,BufNewFile *.abl
+endif
+
+if !has_key(s:disabled_packages, 'acedb')
+ au! BufRead,BufNewFile *.wrm
+endif
+
if !has_key(s:disabled_packages, 'acpiasl')
au! BufRead,BufNewFile *.dsl
endif
if !has_key(s:disabled_packages, 'ada')
- au! BufRead,BufNewFile *.ada
+ au! BufRead,BufNewFile *.adb,*.ads,*.ada,*.adc,*.gpr,*.ada_m
+endif
+
+if !has_key(s:disabled_packages, 'ahdl')
+ au! BufRead,BufNewFile *.tdf
endif
if !has_key(s:disabled_packages, 'aidl')
@@ -111,8 +125,16 @@ if !has_key(s:disabled_packages, 'aml')
au! BufRead,BufNewFile *.aml
endif
+if !has_key(s:disabled_packages, 'ampl')
+ au! BufRead,BufNewFile *.run
+endif
+
if !has_key(s:disabled_packages, 'applescript')
- au! BufRead,BufNewFile *.applescript
+ au! BufRead,BufNewFile *.scpt
+endif
+
+if !has_key(s:disabled_packages, 'arduino')
+ au! BufRead,BufNewFile *.pde,*.ino
endif
if !has_key(s:disabled_packages, 'art')
@@ -120,11 +142,23 @@ if !has_key(s:disabled_packages, 'art')
endif
if !has_key(s:disabled_packages, 'asciidoc')
- au! BufRead,BufNewFile *.asciidoc
+ au! BufRead,BufNewFile *.asciidoc,*.adoc
+endif
+
+if !has_key(s:disabled_packages, 'autohotkey')
+ au! BufRead,BufNewFile *.ahk
endif
if !has_key(s:disabled_packages, 'asn')
- au! BufRead,BufNewFile *.asn
+ au! BufRead,BufNewFile *.asn,*.asn1
+endif
+
+if !has_key(s:disabled_packages, 'atlas')
+ au! BufRead,BufNewFile *.atl,*.as
+endif
+
+if !has_key(s:disabled_packages, 'autoit')
+ au! BufRead,BufNewFile *.au3
endif
if !has_key(s:disabled_packages, 'ave')
@@ -132,19 +166,27 @@ if !has_key(s:disabled_packages, 'ave')
endif
if !has_key(s:disabled_packages, 'awk')
- au! BufRead,BufNewFile *.awk
+ au! BufRead,BufNewFile *.awk,*.gawk
endif
if !has_key(s:disabled_packages, 'c/c++')
- au! BufRead,BufNewFile *.cpp,*.tpp,*.c
+ au! BufRead,BufNewFile *.cpp,*.c++,*.cc,*.cxx,*.hh,*.hpp,*.hxx,*.inl,*.ipp,*.tcc,*.tpp,*.moc,*.tlh,*.qc
+endif
+
+if !has_key(s:disabled_packages, 'clojure')
+ au! BufRead,BufNewFile *.clj,*.cljc,*.cljs,*.cljx
endif
if !has_key(s:disabled_packages, 'cmake')
- au! BufRead,BufNewFile *.cmake
+ au! BufRead,BufNewFile *.cmake,*.cmake.in
+endif
+
+if !has_key(s:disabled_packages, 'cucumber')
+ au! BufRead,BufNewFile *.feature
endif
if !has_key(s:disabled_packages, 'dart')
- au! BufRead,BufNewFile *.dart
+ au! BufRead,BufNewFile *.dart,*.drt
endif
if !has_key(s:disabled_packages, 'dlang')
@@ -152,27 +194,43 @@ if !has_key(s:disabled_packages, 'dlang')
endif
if !has_key(s:disabled_packages, 'dockerfile')
- au! BufRead,BufNewFile *.dockerfile
+ au! BufRead,BufNewFile *.Dockerfile
+endif
+
+if !has_key(s:disabled_packages, 'elf')
+ au! BufRead,BufNewFile *.am
endif
if !has_key(s:disabled_packages, 'elm')
au! BufRead,BufNewFile *.elm
endif
-if !has_key(s:disabled_packages, 'git')
- au! BufRead,BufNewFile *.gitconfig
+if !has_key(s:disabled_packages, 'erlang')
+ au! BufRead,BufNewFile *.erl,*.es,*.hrl,*.yaws
+endif
+
+if !has_key(s:disabled_packages, 'forth')
+ au! BufRead,BufNewFile *.fs,*.ft,*.fth
+endif
+
+if !has_key(s:disabled_packages, 'fsharp')
+ au! BufRead,BufNewFile *.fs
+endif
+
+if !has_key(s:disabled_packages, 'glsl')
+ au! BufRead,BufNewFile *.fs,*.gs,*.comp
endif
if !has_key(s:disabled_packages, 'gnuplot')
- au! BufRead,BufNewFile *.gp,*.gnuplot
+ au! BufRead,BufNewFile *.gp,*.gpi
endif
if !has_key(s:disabled_packages, 'go')
- au! BufRead,BufNewFile *.go
+ au! BufRead,BufNewFile *.go,*.tmpl
endif
if !has_key(s:disabled_packages, 'groovy')
- au! BufRead,BufNewFile *.groovy
+ au! BufRead,BufNewFile *.groovy,*.gradle
endif
if !has_key(s:disabled_packages, 'haml')
@@ -187,28 +245,56 @@ if !has_key(s:disabled_packages, 'haproxy')
au! BufRead,BufNewFile *.cfg
endif
+if !has_key(s:disabled_packages, 'haskell')
+ au! BufRead,BufNewFile *.hs,*.hs-boot,*.hsc
+endif
+
if !has_key(s:disabled_packages, 'html5')
- au! BufRead,BufNewFile *.st,*.xhtml
+ au! BufRead,BufNewFile *.st,*.xht,*.xhtml
+endif
+
+if !has_key(s:disabled_packages, 'jsx')
+ au! BufRead,BufNewFile *.jsx
+endif
+
+if !has_key(s:disabled_packages, 'javascript')
+ au! BufRead,BufNewFile *.js,*.cjs,*.es,*.gs,*.mjs,*.pac
endif
if !has_key(s:disabled_packages, 'json')
- au! BufRead,BufNewFile *.json,*.template
+ au! BufRead,BufNewFile *.json,*.ice,*.webmanifest,*.yy,*.jsonp
+endif
+
+if !has_key(s:disabled_packages, 'kotlin')
+ au! BufRead,BufNewFile *.kt,*.ktm,*.kts
endif
if !has_key(s:disabled_packages, 'less')
au! BufRead,BufNewFile *.less
endif
+if !has_key(s:disabled_packages, 'llvm')
+ au! BufRead,BufNewFile *.ll
+endif
+
if !has_key(s:disabled_packages, 'lua')
- au! BufRead,BufNewFile *.lua
+ au! BufRead,BufNewFile *.lua,*.nse,*.rockspec
endif
if !has_key(s:disabled_packages, 'm4')
- au! BufRead,BufNewFile *.m4
+ au! BufRead,BufNewFile *.m4,*.at
+endif
+
+if !has_key(s:disabled_packages, 'mathematica')
+ au! BufRead,BufNewFile *.cdf,*.nb
endif
if !has_key(s:disabled_packages, 'markdown')
- au! BufRead,BufNewFile *.markdown
+ au! BufRead,BufNewFile *.md,*.markdown,*.mdown,*.mdwn,*.mkd,*.mkdn
+endif
+
+if !has_key(s:disabled_packages, 'ocaml')
+ au! BufRead,BufNewFile *.ml,*.mli,*.mll,*.mly
endif
if !has_key(s:disabled_packages, 'opencl')
@@ -216,11 +302,11 @@ if !has_key(s:disabled_packages, 'opencl')
endif
if !has_key(s:disabled_packages, 'perl')
- au! BufRead,BufNewFile *.perl
+ au! BufRead,BufNewFile *.al,*.plx,*.psgi,*.t
endif
if !has_key(s:disabled_packages, 'php')
- au! BufRead,BufNewFile *.php
+ au! BufRead,BufNewFile *.php,*.ctp
endif
if !has_key(s:disabled_packages, 'protobuf')
@@ -228,15 +314,19 @@ if !has_key(s:disabled_packages, 'protobuf')
endif
if !has_key(s:disabled_packages, 'python')
- au! BufRead,BufNewFile *.spec
+ au! BufRead,BufNewFile *.py,*.pyi,*.pyw,*.spec
endif
if !has_key(s:disabled_packages, 'r-lang')
- au! BufRead,BufNewFile *.r
+ au! BufRead,BufNewFile *.s,*.S,*.rd
+endif
+
+if !has_key(s:disabled_packages, 'racket')
+ au! BufRead,BufNewFile *.rkt
endif
if !has_key(s:disabled_packages, 'raku')
- au! BufRead,BufNewFile *.pod6
+ au! BufRead,BufNewFile *.p6,*.pl6,*.pm6,*.t,*.raku,*.rakumod,*.pod6
endif
if !has_key(s:disabled_packages, 'raml')
@@ -248,7 +338,11 @@ if !has_key(s:disabled_packages, 'rst')
endif
if !has_key(s:disabled_packages, 'ruby')
- au! BufRead,BufNewFile *.ruby,*.spec
+ au! BufRead,BufNewFile *.rb,*.builder,*.gemspec,*.rake,*.rbw,*.ru,*.spec,*.rxml,*.rjs,*.rant,*.erb,*.rhtml
+endif
+
+if !has_key(s:disabled_packages, 'rust')
+ au! BufRead,BufNewFile *.rs
endif
if !has_key(s:disabled_packages, 'scala')
@@ -264,7 +358,11 @@ if !has_key(s:disabled_packages, 'scss')
endif
if !has_key(s:disabled_packages, 'sh')
- au! BufRead,BufNewFile *.sh,*.tmux,*.zsh
+ au! BufRead,BufNewFile *.zsh
+endif
+
+if !has_key(s:disabled_packages, 'smt2')
+ au! BufRead,BufNewFile *.smt
endif
if !has_key(s:disabled_packages, 'svg')
@@ -283,24 +381,44 @@ if !has_key(s:disabled_packages, 'twig')
au! BufRead,BufNewFile *.twig
endif
+if !has_key(s:disabled_packages, 'typescript')
+ au! BufRead,BufNewFile *.ts,*.tsx
+endif
+
+if !has_key(s:disabled_packages, 'v')
+ au! BufRead,BufNewFile *.v
+endif
+
if !has_key(s:disabled_packages, 'vbnet')
au! BufRead,BufNewFile *.vb
endif
+if !has_key(s:disabled_packages, 'vmasm')
+ au! BufRead,BufNewFile *.mar
+endif
+
if !has_key(s:disabled_packages, 'vue')
au! BufRead,BufNewFile *.vue
endif
if !has_key(s:disabled_packages, 'xml')
- au! BufRead,BufNewFile *.xml,*.ant,*.xsd
+ au! BufRead,BufNewFile *.csproj,*.ui,*.wsdl,*.wsf,*.xlf,*.xliff,*.xmi,*.xsd,*.xul
endif
if !has_key(s:disabled_packages, 'xsl')
- au! BufRead,BufNewFile *.xslt
+ au! BufRead,BufNewFile *.xslt,*.xsl
endif
if !has_key(s:disabled_packages, 'yaml')
- au! BufRead,BufNewFile *.yaml
+ au! BufRead,BufNewFile *.yml,*.yaml
+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,*.cfg,*.properties
endif
if !has_key(s:disabled_packages, '8th')
@@ -928,6 +1046,7 @@ if !has_key(s:disabled_packages, 'json')
au BufNewFile,BufRead {.,}tern-config setf json
au BufNewFile,BufRead {.,}tern-project setf json
au BufNewFile,BufRead {.,}watchmanconfig setf json
+ au BufNewFile,BufRead Pipfile.lock setf json
au BufNewFile,BufRead composer.lock setf json
au BufNewFile,BufRead mcmod.info setf json
endif
@@ -1021,6 +1140,7 @@ if !has_key(s:disabled_packages, 'mathematica')
au BufNewFile,BufRead *.cdf setf mma
au BufNewFile,BufRead *.ma setf mma
au BufNewFile,BufRead *.mathematica setf mma
+ au BufNewFile,BufRead *.mma setf mma
au BufNewFile,BufRead *.mt setf mma
au BufNewFile,BufRead *.nb setf mma
au BufNewFile,BufRead *.nbp setf mma
@@ -1771,9 +1891,28 @@ if !has_key(s:disabled_packages, 'visual-basic')
au! BufNewFile,BufRead *.bas call polyglot#DetectBasFiletype()
endif
+if !has_key(s:disabled_packages, 'dosini')
+ au BufNewFile,BufRead *.cfg setf dosini
+ au BufNewFile,BufRead *.dof setf dosini
+ au BufNewFile,BufRead *.ini setf dosini
+ au BufNewFile,BufRead *.lektorproject setf dosini
+ au BufNewFile,BufRead *.prefs setf dosini
+ au BufNewFile,BufRead *.pro setf dosini
+ au BufNewFile,BufRead *.properties setf dosini
+ au BufNewFile,BufRead */etc/pacman.conf setf dosini
+ au BufNewFile,BufRead */etc/yum.conf setf dosini
+ au BufNewFile,BufRead */etc/yum.repos.d/* call s:StarSetf('dosini')
+ au BufNewFile,BufRead {.,}editorconfig setf dosini
+ au BufNewFile,BufRead {.,}npmrc setf dosini
+ au BufNewFile,BufRead buildozer.spec setf dosini
+ au BufNewFile,BufRead php.ini-* call s:StarSetf('dosini')
+endif
+
" end filetypes
+augroup END
+
au BufNewFile,BufRead,StdinReadPost *
\ if !did_filetype() && expand("<afile>") !~ g:ft_ignore_pat
\ | call polyglot#Heuristics() | endif
diff --git a/ftplugin/dosini.vim b/ftplugin/dosini.vim
new file mode 100644
index 00000000..e0a2ba3d
--- /dev/null
+++ b/ftplugin/dosini.vim
@@ -0,0 +1,23 @@
+if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'dosini') == -1
+
+" Vim filetype plugin file
+" Language: Configuration File (ini file) for MSDOS/MS Windows
+" 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/packages.yaml b/packages.yaml
index 48367254..4d302f11 100644
--- a/packages.yaml
+++ b/packages.yaml
@@ -904,6 +904,8 @@ filetypes:
extra_extensions:
- jsonp
- template
+ extra_filenames:
+ - Pipfile.lock
---
name: jsonnet
remote: google/vim-jsonnet
@@ -1025,6 +1027,7 @@ filetypes:
linguist: Mathematica
extra_extensions:
- wls
+ - mma
---
name: markdown
remote: plasticboy/vim-markdown
@@ -1808,3 +1811,19 @@ filetypes:
- sba
ignored_warnings:
- vb
+---
+name: dosini
+remote: vim/vim:runtime
+glob: '**/dosini.vim'
+filetypes:
+- name: dosini
+ linguist: INI
+ extra_filenames:
+ - .editorconfig
+ - .npmrc
+ - '*/etc/pacman.conf'
+ - 'php.ini-*'
+ - '*/etc/yum.conf'
+ - '*/etc/yum.repos.d/*'
+ ignored_warnings:
+ - php.ini
diff --git a/scripts/build b/scripts/build
index 7503ebff..03c005c4 100755
--- a/scripts/build
+++ b/scripts/build
@@ -36,7 +36,6 @@ def load_data()
end
end
- puts deps["javascript"]
each_node = lambda {|&b| packages.keys.each(&b) }
each_child = lambda {|n, &b| deps[n].each(&b) }
@@ -433,21 +432,15 @@ def generate_ftdetect(packages, heuristics)
ambiguous_extensions = extensions
.select { |a, b| b.uniq.size > 1 }.keys.sort
- expected_filetypes = detect_filetypes('tmp/**/ftdetect/*.vim')
+ all_filetypes = packages.flat_map { |f| f["filetypes"] || [] }
+ filetype_names = Set.new(all_filetypes.map { |f| f["name"] })
+
native_filetypes = detect_filetypes('tmp/vim/vim/runtime/filetype.vim')
- native_extensions = native_filetypes.flat_map { |k, v| v["extensions"] }
+ expected_filetypes = detect_filetypes('tmp/**/ftdetect/*.vim') + native_filetypes
- all_filetypes = Hash.new { |h, k| h[k] = { extensions: [], filenames: [] } }
+ expected_filetypes = expected_filetypes.select { |e| filetype_names.include?(e["name"]) }
- for k, v in expected_filetypes
- all_filetypes[k][:extensions].concat(v[:extensions])
- all_filetypes[k][:filenames].concat(v[:filenames])
- end
-
- for k, v in native_filetypes
- all_filetypes[k][:extensions].concat(v[:extensions])
- all_filetypes[k][:filenames].concat(v[:filenames])
- end
+ native_extensions = Set.new(native_filetypes.flat_map { |f| f["extensions"] || [] })
for package in packages
name = package.fetch("name")
@@ -456,7 +449,7 @@ def generate_ftdetect(packages, heuristics)
for filetype in package["filetypes"]
for extension in filetype["extensions"]
- if native_filetypes.has_key?(extension)
+ if native_extensions.include?(extension)
to_disable << "*." + extension
end
end
@@ -492,20 +485,6 @@ def generate_ftdetect(packages, heuristics)
extensions = filetype["extensions"]
filenames = filetype["filenames"]
- expected_extensions = (all_filetypes.has_key?(name) ? all_filetypes.fetch(name)[:extensions] : [])
- ignored_extensions = expand_all(filetype.fetch("ignored_extensions", []))
- ignored_warnings = expand_all(filetype.fetch("ignored_warnings", []))
-
- if all_filetypes[name] && !filetype["syntax"]
- for e in expected_extensions - extensions - ignored_extensions - ignored_warnings
- puts "Probable missing extension for #{name}: #{e}"
- end
-
- for e in all_filetypes.fetch(name)[:filenames] - expand_all(filenames).flat_map { |e| [e, e.gsub(/^\./, '')] } - expand_all(filetype.fetch("ignored_warnings", [])) - ['*']
- puts "Probable missing filename for #{name}: #{e}"
- end
- end
-
for extension in extensions.sort
outer_filetype = filetype["outer_filetype"]
if outer_filetype
@@ -549,6 +528,24 @@ def generate_ftdetect(packages, heuristics)
end
end
+ defined_extensions = all_filetypes.flat_map { |f| expand_all(f["extensions"] || []).map { |e| [f["name"], e] } }
+ expected_extensions = expected_filetypes.flat_map { |f| expand_all(f["extensions"] || []).map { |e| [f["name"], e] } }
+ ignored_extensions = all_filetypes.flat_map { |f| expand_all(f.fetch("ignored_extensions", [])).map { |e| [f["name"], e] } }
+
+ defined_filenames = all_filetypes.flat_map { |f| expand_all(f["filenames"] || []).map { |e| [f["name"], e] } }
+ expected_filenames = expected_filetypes.flat_map { |f| expand_all(f["filenames"] || []).map { |e| [f["name"], e] } }
+ ignored_filenames = all_filetypes.flat_map { |f| expand_all(f.fetch("ignored_filenames", [])).map { |e| [f["name"], e] } }
+
+ ignored_warnings = all_filetypes.flat_map { |f| expand_all(f.fetch("ignored_warnings", [])).map { |e| [f["name"], e] } + [f, "*"] }
+
+ for name, e in expected_extensions - defined_extensions - ignored_extensions - ignored_warnings
+ puts "Missing extension for #{name}: #{e}"
+ end
+
+ for name, e in expected_filenames - defined_filenames - ignored_filenames - ignored_warnings
+ puts "Missing filename for #{name}: #{e}"
+ end
+
ftdetect = File.read('ftdetect/polyglot.vim')
File.write('ftdetect/polyglot.vim', ftdetect.gsub(/(?<=" filetypes\n).*(?=\n" end filetypes)/m, output))
@@ -728,14 +725,15 @@ def detect_filetypes(glob)
results
end
- Hash[filetypes.flat_map do |ext, filetype|
+ filetypes.flat_map do |ext, filetype|
expand_all(ext).map { |e| [filetype, e] }
end.group_by { |a, b| a }.map { |a, b| [a, b.map { |c, d| d }] }.map { |a, b|
- [a, {
- extensions: b.select { |x| x.match(/^\*\.[^\/]+$/) }.map { |a| a.strip[2..] },
- filenames: expand_all(b.select { |x| !x.match(/^\*\.[^\/]+$/) })
- }]
- }]
+ {
+ "name" => a,
+ "extensions" => b.select { |x| x.match(/^\*\.[^\/]+$/) }.map { |a| a.strip[2..] },
+ "filenames" => expand_all(b.select { |x| !x.match(/^\*\.[^\/]+$/) })
+ }
+ }
end
def generate_plugins(packages)
diff --git a/scripts/test_filetypes.vim b/scripts/test_filetypes.vim
index e7ae6511..74eeb4d0 100644
--- a/scripts/test_filetypes.vim
+++ b/scripts/test_filetypes.vim
@@ -230,3 +230,4 @@ call TestFiletype('zig')
call TestFiletype('trasys')
call TestFiletype('basic')
call TestFiletype('vb')
+call TestFiletype('dosini')
diff --git a/syntax/dosini.vim b/syntax/dosini.vim
new file mode 100644
index 00000000..e84448b4
--- /dev/null
+++ b/syntax/dosini.vim
@@ -0,0 +1,44 @@
+if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'dosini') == -1
+
+" Vim syntax file
+" Language: Configuration File (ini file) for MSDOS/MS Windows
+" Version: 2.2
+" Original Author: Sean M. McKee <mckee@misslink.net>
+" Previous Maintainer: Nima Talebi <nima@it.net.au>
+" Current Maintainer: Hong Xu <hong@topbug.net>
+" Homepage: http://www.vim.org/scripts/script.php?script_id=3747
+" Repository: https://github.com/xuhdev/syntax-dosini.vim
+" Last Change: 2018 Sep 11
+
+
+" quit when a syntax file was already loaded
+if exists("b:current_syntax")
+ finish
+endif
+
+" shut case off
+syn case ignore
+
+syn match dosiniLabel "^.\{-}\ze\s*=" nextgroup=dosiniNumber,dosiniValue
+syn match dosiniValue "=\zs.*"
+syn match dosiniNumber "=\zs\s*\d\+\s*$"
+syn match dosiniNumber "=\zs\s*\d*\.\d\+\s*$"
+syn match dosiniNumber "=\zs\s*\d\+e[+-]\=\d\+\s*$"
+syn region dosiniHeader start="^\s*\[" end="\]"
+syn match dosiniComment "^[#;].*$"
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+
+hi def link dosiniNumber Number
+hi def link dosiniHeader Special
+hi def link dosiniComment Comment
+hi def link dosiniLabel Type
+hi def link dosiniValue String
+
+
+let b:current_syntax = "dosini"
+
+" vim: sts=2 sw=2 et
+
+endif