mirror of
https://github.com/sheerun/vim-polyglot.git
synced 2025-11-10 12:33:51 -05:00
Improve django filetype detection, closes #560
This commit is contained in:
@@ -4,13 +4,6 @@
|
||||
let s:cpo_save = &cpo
|
||||
set cpo&vim
|
||||
|
||||
func! polyglot#ObserveShebang()
|
||||
augroup polyglot-observer
|
||||
au! CursorHold,CursorHoldI,BufWritePost <buffer>
|
||||
\ if polyglot#Shebang() | au! polyglot-observer CursorHold,CursorHoldI,BufWritePost | endif
|
||||
augroup END
|
||||
endfunc
|
||||
|
||||
func! polyglot#Shebang()
|
||||
if getline(1) =~# "^#!"
|
||||
let ft = polyglot#ShebangFiletype()
|
||||
@@ -392,7 +385,8 @@ func! polyglot#DetectHtmlFiletype()
|
||||
set ft=xhtml | return
|
||||
endif
|
||||
endfor
|
||||
set ft=html | return
|
||||
set ft=html | au! BufWritePost <buffer> ++once call polyglot#DetectHtmlFiletype()
|
||||
return
|
||||
endfunc
|
||||
|
||||
|
||||
@@ -411,6 +405,14 @@ if exists('g:polyglot_test')
|
||||
autocmd!
|
||||
endif
|
||||
|
||||
func! polyglot#Observe(fn)
|
||||
let b:polyglot_observe = a:fn
|
||||
augroup polyglot-observer
|
||||
au! CursorHold,CursorHoldI,BufWritePost <buffer>
|
||||
\ execute('if polyglot#' . b:polyglot_observe . '() | au! polyglot-observer | endif')
|
||||
augroup END
|
||||
endfunc
|
||||
|
||||
let s:disabled_packages = {}
|
||||
let s:new_polyglot_disabled = []
|
||||
|
||||
@@ -497,7 +499,7 @@ au! BufNewFile,BufRead,StdinReadPost * if expand("<afile>") !~ g:ft_ignore_pat |
|
||||
\ call polyglot#Shebang() | endif
|
||||
|
||||
au BufEnter * if &ft == "" && expand("<afile>") !~ g:ft_ignore_pat |
|
||||
\ call polyglot#ObserveShebang() | endif
|
||||
\ call polyglot#Observe('Shebang') | endif
|
||||
|
||||
augroup END
|
||||
|
||||
|
||||
@@ -9,6 +9,14 @@ if exists('g:polyglot_test')
|
||||
autocmd!
|
||||
endif
|
||||
|
||||
func! polyglot#Observe(fn)
|
||||
let b:polyglot_observe = a:fn
|
||||
augroup polyglot-observer
|
||||
au! CursorHold,CursorHoldI,BufWritePost <buffer>
|
||||
\ execute('if polyglot#' . b:polyglot_observe . '() | au! polyglot-observer | endif')
|
||||
augroup END
|
||||
endfunc
|
||||
|
||||
let s:disabled_packages = {}
|
||||
let s:new_polyglot_disabled = []
|
||||
|
||||
@@ -2021,7 +2029,7 @@ au! BufNewFile,BufRead,StdinReadPost * if expand("<afile>") !~ g:ft_ignore_pat |
|
||||
\ call polyglot#Shebang() | endif
|
||||
|
||||
au BufEnter * if &ft == "" && expand("<afile>") !~ g:ft_ignore_pat |
|
||||
\ call polyglot#ObserveShebang() | endif
|
||||
\ call polyglot#Observe('Shebang') | endif
|
||||
|
||||
augroup END
|
||||
|
||||
|
||||
@@ -69,7 +69,6 @@ rules:
|
||||
filetype: glsl
|
||||
- override: true
|
||||
- filetype: forth
|
||||
fallback: true
|
||||
---
|
||||
extensions: [re]
|
||||
rules:
|
||||
|
||||
17
polyglot.vim
17
polyglot.vim
@@ -4,13 +4,6 @@
|
||||
let s:cpo_save = &cpo
|
||||
set cpo&vim
|
||||
|
||||
func! polyglot#ObserveShebang()
|
||||
augroup polyglot-observer
|
||||
au! CursorHold,CursorHoldI,BufWritePost <buffer>
|
||||
\ if polyglot#Shebang() | au! polyglot-observer CursorHold,CursorHoldI,BufWritePost | endif
|
||||
augroup END
|
||||
endfunc
|
||||
|
||||
func! polyglot#Shebang()
|
||||
if getline(1) =~# "^#!"
|
||||
let ft = polyglot#ShebangFiletype()
|
||||
@@ -84,6 +77,14 @@ if exists('g:polyglot_test')
|
||||
autocmd!
|
||||
endif
|
||||
|
||||
func! polyglot#Observe(fn)
|
||||
let b:polyglot_observe = a:fn
|
||||
augroup polyglot-observer
|
||||
au! CursorHold,CursorHoldI,BufWritePost <buffer>
|
||||
\ execute('if polyglot#' . b:polyglot_observe . '() | au! polyglot-observer | endif')
|
||||
augroup END
|
||||
endfunc
|
||||
|
||||
let s:disabled_packages = {}
|
||||
let s:new_polyglot_disabled = []
|
||||
|
||||
@@ -170,7 +171,7 @@ au! BufNewFile,BufRead,StdinReadPost * if expand("<afile>") !~ g:ft_ignore_pat |
|
||||
\ call polyglot#Shebang() | endif
|
||||
|
||||
au BufEnter * if &ft == "" && expand("<afile>") !~ g:ft_ignore_pat |
|
||||
\ call polyglot#ObserveShebang() | endif
|
||||
\ call polyglot#Observe('Shebang') | endif
|
||||
|
||||
augroup END
|
||||
|
||||
|
||||
@@ -126,10 +126,6 @@ def transform_patterns(heuristics)
|
||||
patterns_mapping = Hash[patterns.zip(patterns_to_vim_patterns(patterns))]
|
||||
each_hash(heuristics) do |h|
|
||||
if h.has_key?("pattern")
|
||||
if h["pattern"].include?("#import")
|
||||
puts h["pattern"]
|
||||
puts patterns_mapping.fetch(h["pattern"])
|
||||
end
|
||||
h["pattern"] = patterns_mapping.fetch(h["pattern"])
|
||||
end
|
||||
end
|
||||
@@ -326,10 +322,20 @@ def rule_to_code(rule)
|
||||
EOS
|
||||
end
|
||||
|
||||
if (rule.keys - ["filetype", "override", "set", "extensions", "fallback"]).size > 0
|
||||
raise "Unknown rule: #{JSON.generate(rule)}"
|
||||
if rule.has_key?("filetype")
|
||||
if rule.has_key?("fallback")
|
||||
return <<~EOS
|
||||
set ft=#{rule["filetype"]} | au! BufWritePost <buffer> ++once call polyglot#Detect#{camelize(rule["extensions"].first)}Filetype()
|
||||
return
|
||||
EOS
|
||||
end
|
||||
|
||||
return <<~EOS
|
||||
set ft=#{rule["filetype"]} | return
|
||||
#{indent(rule_to_code(except(rule, "filetype")), 0)}
|
||||
EOS
|
||||
end
|
||||
|
||||
|
||||
if rule.has_key?("override")
|
||||
variable = "g:filetype_#{rule["extensions"].first}"
|
||||
return <<~EOS
|
||||
@@ -339,22 +345,10 @@ def rule_to_code(rule)
|
||||
EOS
|
||||
end
|
||||
|
||||
if rule.has_key?("filetype")
|
||||
return "set ft=#{rule["filetype"]} | return"
|
||||
if (rule.keys - ["extensions"]).size > 0
|
||||
raise "Unknown rule: #{JSON.generate(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")
|
||||
return ""
|
||||
end
|
||||
|
||||
|
||||
return ""
|
||||
end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user