summaryrefslogtreecommitdiffstats
path: root/scripts/build
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/build')
-rwxr-xr-xscripts/build21
1 files changed, 14 insertions, 7 deletions
diff --git a/scripts/build b/scripts/build
index 07bc301b..c44e8cc8 100755
--- a/scripts/build
+++ b/scripts/build
@@ -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 !~# "^#!"