summaryrefslogtreecommitdiffstats
path: root/scripts/build
diff options
context:
space:
mode:
authorAdam Stankiewicz <sheerun@sher.pl>2020-09-28 19:35:09 +0200
committerAdam Stankiewicz <sheerun@sher.pl>2020-09-28 19:35:09 +0200
commit63f43f3b01a910444176eeb972c88964ebb87e45 (patch)
tree2490cc79f74cc9ae8d50446a079993d572a27fbc /scripts/build
parent046a052f18b5941a511a5cddf978606e17930fb6 (diff)
downloadvim-polyglot-63f43f3b01a910444176eeb972c88964ebb87e45.tar.gz
vim-polyglot-63f43f3b01a910444176eeb972c88964ebb87e45.zip
Make ftdetect even shorter
Diffstat (limited to 'scripts/build')
-rwxr-xr-xscripts/build27
1 files changed, 11 insertions, 16 deletions
diff --git a/scripts/build b/scripts/build
index 45713994..f4fc866f 100755
--- a/scripts/build
+++ b/scripts/build
@@ -433,9 +433,6 @@ def generate_ftdetect(packages, heuristics)
end
end
- ambiguous_extensions = extensions
- .select { |a, b| b.uniq.size > 1 }.keys.sort
-
all_filetypes = packages.flat_map { |f| f["filetypes"] || [] }
filetype_names = Set.new(all_filetypes.map { |f| f["name"] })
@@ -478,7 +475,7 @@ def generate_ftdetect(packages, heuristics)
package_heuristics = []
- autocommands = ""
+ autocommands = []
for filetype in filetypes
name = filetype.fetch("name")
syntax = filetype["syntax"] ? " | set syntax=#{filetype["syntax"]}" : ""
@@ -496,7 +493,8 @@ def generate_ftdetect(packages, heuristics)
extensions = filetype["extensions"]
filenames = filetype["filenames"]
- set_extensions = []
+ set_globs = []
+
for extension in extensions.sort
outer_filetype = filetype["outer_filetype"]
if outer_filetype
@@ -508,18 +506,10 @@ def generate_ftdetect(packages, heuristics)
if heuristic
package_heuristics << heuristic
else
- # if ambiguous_extensions.include?(extension)
- # puts "Ambiguous extension without heuristic: #{extension} => #{filetype["name"]}"
- # end
- #
- set_extensions << "*." + extension
+ set_globs << "*." + extension
end
end
- if set_extensions.size > 0
- autocommands << " au BufNewFile,BufRead #{set_extensions.join(",")} #{set_command}\n"
- end
-
for filename in filenames.sort
if filename[0] == "."
filename = "{.,}" + filename[1..-1]
@@ -527,11 +517,16 @@ def generate_ftdetect(packages, heuristics)
if filename[-1] == "*"
autocommands << " au BufNewFile,BufRead #{filename} call s:StarSetf('#{name}')\n"
else
- autocommands << " au BufNewFile,BufRead #{filename} #{set_command}\n"
+ set_globs << filename
end
end
+
+ if set_globs.size > 0
+ autocommands << " au BufNewFile,BufRead #{set_globs.join(",")} #{set_command}\n"
+ end
end
+
for heuristic in package_heuristics.uniq
extensions = heuristic["extensions"].map { |e| "*.#{e}" }
autocommands << " au! BufNewFile,BufRead #{extensions.join(",")} call polyglot#Detect#{camelize(heuristic["extensions"].first)}Filetype()\n"
@@ -539,7 +534,7 @@ def generate_ftdetect(packages, heuristics)
if autocommands != ""
output << "if !has_key(s:disabled_packages, '#{package["name"]}')\n"
- output << autocommands
+ output << autocommands.reverse.join("")
output << "endif\n\n"
end
end