mirror of
https://github.com/sheerun/vim-polyglot.git
synced 2025-11-08 11:33:52 -05:00
Improve html heuristics
This commit is contained in:
@@ -372,9 +372,12 @@ func! polyglot#DetectHtmlFiletype()
|
||||
endif
|
||||
for lnum in range(1, min([line("$"), 50]))
|
||||
let line = getline(lnum)
|
||||
if line =~# '{{.*}}\|{%-\=\s*\(end.*\|extends\|block\|macro\|set\|if\|for\|include\|trans\)\(\<\|\>\)'
|
||||
if line =~# '{{.*}}\|{%-\=\s*\(end.*\|extends\|block\|macro\|set\|if\|for\|include\|trans\)\(\<\|\>\)\|{#\s\+'
|
||||
set ft=jinja.html | return
|
||||
endif
|
||||
if line =~# '\(\<\|\>\)DTD\s\+XHTML\s'
|
||||
set ft=xhtml | return
|
||||
endif
|
||||
endfor
|
||||
set ft=html | return
|
||||
endfunc
|
||||
|
||||
@@ -181,7 +181,10 @@ rules:
|
||||
pattern: '^(%|<[%&].*>)'
|
||||
filetype: mason
|
||||
- lines: 50
|
||||
pattern: '{{.*}}|{%-?\s*(end.*|extends|block|macro|set|if|for|include|trans)\b'
|
||||
rules:
|
||||
- pattern: '{{.*}}|{%-?\s*(end.*|extends|block|macro|set|if|for|include|trans)\b|{#\s+'
|
||||
filetype: jinja.html
|
||||
- pattern: '\bDTD\s+XHTML\s'
|
||||
filetype: xhtml
|
||||
- filetype: html
|
||||
|
||||
fallback: true
|
||||
|
||||
@@ -317,7 +317,7 @@ def rule_to_code(rule)
|
||||
EOS
|
||||
end
|
||||
|
||||
if (rule.keys - ["filetype", "override", "set", "extensions"]).size > 0
|
||||
if (rule.keys - ["filetype", "override", "set", "extensions", "fallback"]).size > 0
|
||||
raise "Unknown rule: #{JSON.generate(rule)}"
|
||||
end
|
||||
|
||||
@@ -335,7 +335,11 @@ def rule_to_code(rule)
|
||||
end
|
||||
|
||||
if rule.has_key?("filetype")
|
||||
if rule.has_key?("fallback")
|
||||
return "set ft=#{rule["filetype"]} | return"
|
||||
else
|
||||
return "setf FALLBACK #{rule["filetype"]} | return"
|
||||
end
|
||||
end
|
||||
|
||||
if rule.has_key?("extensions")
|
||||
|
||||
@@ -356,6 +356,8 @@ call TestExtension("tt2html", "html.tt2", "<html>")
|
||||
call TestExtension("html", "empty.html", "")
|
||||
call TestExtension("mason", "mason1.html", "% my $planet = 42;")
|
||||
call TestExtension("mason", "mason2.html", "<%filter></%filter>")
|
||||
call TestExtension("jinja.html", "jinja.html", "{{ item.href }}")
|
||||
call TestExtension("jinja.html", "jinja.html", "{% for item in navigation %}{% endfor %}")
|
||||
call TestExtension("jinja.html", "jinja.html", "{% block head %}")
|
||||
call TestExtension("jinja.html", "jinja1.html", "{{ item.href }}")
|
||||
call TestExtension("jinja.html", "jinja2.html", "{% for item in navigation %}{% endfor %}")
|
||||
call TestExtension("jinja.html", "jinja3.html", "{% block head %}")
|
||||
call TestExtension("jinja.html", "jinja4.html", "{# some comment #}")
|
||||
call TestExtension("xhtml", "xhtml.html", "<DTD XHTML ")
|
||||
|
||||
Reference in New Issue
Block a user