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