diff options
| author | Adam Stankiewicz <sheerun@sher.pl> | 2020-09-03 05:36:55 +0200 | 
|---|---|---|
| committer | Adam Stankiewicz <sheerun@sher.pl> | 2020-09-03 05:36:55 +0200 | 
| commit | 7123e974980a76e4db9bf7fff1510cab03b072ae (patch) | |
| tree | 63704e8e63560942ad2b83f29b67167cd2558352 /scripts | |
| parent | 63119f09d1390b61155cc0dc3ff497356d2fc7e5 (diff) | |
| download | vim-polyglot-7123e974980a76e4db9bf7fff1510cab03b072ae.tar.gz vim-polyglot-7123e974980a76e4db9bf7fff1510cab03b072ae.zip | |
Disable native autocommands when appropriate, fixes #533v4.8.1
Diffstat (limited to '')
| -rwxr-xr-x | scripts/build | 51 | 
1 files changed, 38 insertions, 13 deletions
| diff --git a/scripts/build b/scripts/build index 2fcbe235..f8efb850 100755 --- a/scripts/build +++ b/scripts/build @@ -59,17 +59,20 @@ def load_data()          linguist = languages.fetch(filetype["linguist"]) -        filetype["extensions"] = (linguist["extensions"] || []).map { |e| e[1..-1] } | -          filetype.fetch("extra_extensions", []) - -          filetype.fetch("ignored_extensions", []).uniq - -        filetype["filenames"] = (linguist["filenames"] || []) | -          filetype.fetch("extra_filenames", []) - -          filetype.fetch("ignored_filenames", []).uniq +        filetype["extensions"] = (( +          (linguist["extensions"] || []).map { |e| e[1..-1] } | +          filetype.fetch("extra_extensions", []) +        ) - filetype.fetch("ignored_extensions", [])).uniq + +        filetype["filenames"] = (( +          (linguist["filenames"] || []) | +          filetype.fetch("extra_filenames", []) +        ) - filetype.fetch("ignored_filenames", [])).uniq -        filetype["interpreters"] = (linguist["interpreters"] || []) | -          filetype.fetch("extra_interpreters", []) - -          filetype.fetch("ignored_interpreters", []).uniq +        filetype["interpreters"] = (( +          (linguist["interpreters"] || []) | +          filetype.fetch("extra_interpreters", []) +        ) - filetype.fetch("ignored_interpreters", []).uniq)        else          filetype["extensions"] ||= []          filetype["filenames"] ||= [] @@ -445,7 +448,29 @@ def generate_ftdetect(packages, heuristics)    ambiguous_extensions = extensions      .select { |a, b| b.uniq.size > 1 }.keys.sort -  expected_filetypes = detect_filetypes +  expected_filetypes = detect_filetypes('tmp/**/ftdetect/*.vim') +  native_filetypes = detect_filetypes('tmp/vim/vim/runtime/filetype.vim') +  native_extensions = native_filetypes.flat_map { |k, v| v["extensions"] } +   +  for package in packages +    name = package.fetch("name") + +    to_disable = [] + +    for filetype in package["filetypes"] +      for extension in filetype["extensions"] +        if native_filetypes.has_key?(extension) +          to_disable << "*." + extension +        end +      end +    end + +    if to_disable.size > 0 +      output << "if !has_key(s:disabled_packages, '#{name}')\n" +      output << "  au! BufRead,BufNewFile #{to_disable.join(",")}\n" +      output << "endif\n\n" +    end +  end    for package in packages      name = package.fetch("name") @@ -690,8 +715,8 @@ def expand_all(pattern)    end  end -def detect_filetypes -  filetypes = Dir['tmp/**/ftdetect/*.vim'].flat_map do |file| +def detect_filetypes(glob) +  filetypes = Dir[glob].flat_map do |file|      contents = File.read(file).gsub(/^\s*au(tocmd)?!?\s*$/, '')      results = contents.scan(/^\s*(?:au!|au|au[^g][^ ]*) +(?:\S+)\s+(\S+)[\s\\]+([^\n]+)/)      results = results.map do |a, b| | 
