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-4.8.1.tar.gz vim-polyglot-4.8.1.zip |
Disable native autocommands when appropriate, fixes #533v4.8.1
Diffstat (limited to 'scripts')
-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| |