mirror of
https://github.com/sheerun/vim-polyglot.git
synced 2025-11-09 12:03:53 -05:00
Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f2ef4cedec |
@@ -202,6 +202,16 @@ func! polyglot#DetectFsFiletype()
|
|||||||
setf forth | return
|
setf forth | return
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
func! polyglot#DetectReFiletype()
|
||||||
|
for lnum in range(1, min([line("$"), 50]))
|
||||||
|
let line = getline(lnum)
|
||||||
|
if line =~# '^\s*#\%(\%(if\|ifdef\|define\|pragma\)\s\+\w\|\s*include\s\+[<"]\|template\s*<\)'
|
||||||
|
setf cpp | return
|
||||||
|
endif
|
||||||
|
setf reason | return
|
||||||
|
endfor
|
||||||
|
endfunc
|
||||||
|
|
||||||
" Restore 'cpoptions'
|
" Restore 'cpoptions'
|
||||||
let &cpo = s:cpo_save
|
let &cpo = s:cpo_save
|
||||||
unlet s:cpo_save
|
unlet s:cpo_save
|
||||||
|
|||||||
@@ -218,6 +218,11 @@ if !has_key(s:disabled_packages, 'awk')
|
|||||||
au BufNewFile,BufRead *.awk setf awk
|
au BufNewFile,BufRead *.awk setf awk
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
if !has_key(s:disabled_packages, 'reason')
|
||||||
|
au BufNewFile,BufRead *.rei setf reason
|
||||||
|
au! BufNewFile,BufRead *.re call polyglot#DetectReFiletype()
|
||||||
|
endif
|
||||||
|
|
||||||
if !has_key(s:disabled_packages, 'c/c++')
|
if !has_key(s:disabled_packages, 'c/c++')
|
||||||
au BufNewFile,BufRead *.c setf c
|
au BufNewFile,BufRead *.c setf c
|
||||||
au BufNewFile,BufRead *.cats setf c
|
au BufNewFile,BufRead *.cats setf c
|
||||||
@@ -237,9 +242,9 @@ if !has_key(s:disabled_packages, 'c/c++')
|
|||||||
au BufNewFile,BufRead *.inl setf cpp
|
au BufNewFile,BufRead *.inl setf cpp
|
||||||
au BufNewFile,BufRead *.ino setf cpp
|
au BufNewFile,BufRead *.ino setf cpp
|
||||||
au BufNewFile,BufRead *.ipp setf cpp
|
au BufNewFile,BufRead *.ipp setf cpp
|
||||||
au BufNewFile,BufRead *.re setf cpp
|
|
||||||
au BufNewFile,BufRead *.tcc setf cpp
|
au BufNewFile,BufRead *.tcc setf cpp
|
||||||
au BufNewFile,BufRead *.tpp setf cpp
|
au BufNewFile,BufRead *.tpp setf cpp
|
||||||
|
au! BufNewFile,BufRead *.re call polyglot#DetectReFiletype()
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if !has_key(s:disabled_packages, 'caddyfile')
|
if !has_key(s:disabled_packages, 'caddyfile')
|
||||||
@@ -1045,11 +1050,6 @@ if !has_key(s:disabled_packages, 'razor')
|
|||||||
au BufNewFile,BufRead *.razor setf razor
|
au BufNewFile,BufRead *.razor setf razor
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if !has_key(s:disabled_packages, 'reason')
|
|
||||||
au BufNewFile,BufRead *.re setf reason
|
|
||||||
au BufNewFile,BufRead *.rei setf reason
|
|
||||||
endif
|
|
||||||
|
|
||||||
if !has_key(s:disabled_packages, 'rst')
|
if !has_key(s:disabled_packages, 'rst')
|
||||||
au BufNewFile,BufRead *.rest setf rst
|
au BufNewFile,BufRead *.rest setf rst
|
||||||
au BufNewFile,BufRead *.rest.txt setf rst
|
au BufNewFile,BufRead *.rest.txt setf rst
|
||||||
|
|||||||
@@ -55,3 +55,11 @@ rules:
|
|||||||
filetype: glsl
|
filetype: glsl
|
||||||
- override: "g:filetype_fs"
|
- override: "g:filetype_fs"
|
||||||
- filetype: forth
|
- filetype: forth
|
||||||
|
---
|
||||||
|
extensions: [re]
|
||||||
|
rules:
|
||||||
|
- lines: 50
|
||||||
|
rules:
|
||||||
|
- pattern: '^\s*#(?:(?:if|ifdef|define|pragma)\s+\w|\s*include\s+[<"]|template\s*<)'
|
||||||
|
filetype: cpp
|
||||||
|
- filetype: reason
|
||||||
|
|||||||
@@ -1276,6 +1276,7 @@ filetypes:
|
|||||||
---
|
---
|
||||||
name: reason
|
name: reason
|
||||||
remote: reasonml-editor/vim-reason-plus
|
remote: reasonml-editor/vim-reason-plus
|
||||||
|
after: c/c++
|
||||||
filetypes:
|
filetypes:
|
||||||
- name: reason
|
- name: reason
|
||||||
linguist: Reason
|
linguist: Reason
|
||||||
|
|||||||
@@ -202,9 +202,17 @@ def indent(str, amount)
|
|||||||
end
|
end
|
||||||
|
|
||||||
def pattern_to_condition(rule)
|
def pattern_to_condition(rule)
|
||||||
|
if rule.has_key?("or")
|
||||||
|
return rule["or"].map { |p| pattern_to_condition(p) }.join(" || ")
|
||||||
|
end
|
||||||
|
|
||||||
|
if rule.has_key?("or")
|
||||||
|
return rule["and"].map { |p| pattern_to_condition(p) }.join(" && ")
|
||||||
|
end
|
||||||
|
|
||||||
operator = (rule["negative"] ? "!" : "=") + "~" + (rule["ignore_case"] ? "?" : "#")
|
operator = (rule["negative"] ? "!" : "=") + "~" + (rule["ignore_case"] ? "?" : "#")
|
||||||
|
|
||||||
"line #{operator} '#{rule["pattern"]}'"
|
return "line #{operator} '#{rule["pattern"]}'"
|
||||||
end
|
end
|
||||||
|
|
||||||
def rules_to_code(rules)
|
def rules_to_code(rules)
|
||||||
@@ -250,10 +258,10 @@ def rule_to_code(rule)
|
|||||||
return rule["rules"].map { |r| indent(rule_to_code(r), 0) }.join("\n")
|
return rule["rules"].map { |r| indent(rule_to_code(r), 0) }.join("\n")
|
||||||
end
|
end
|
||||||
|
|
||||||
if rule.has_key?("pattern")
|
if rule.has_key?("pattern") || rule.has_key?("or") || rule.has_key?("and")
|
||||||
return <<~EOS
|
return <<~EOS
|
||||||
if #{pattern_to_condition(rule)}
|
if #{pattern_to_condition(rule)}
|
||||||
#{indent(rule_to_code(except(rule, "pattern", "ignore_case", "negative")), 2)}
|
#{indent(rule_to_code(except(rule, "pattern", "or", "and", "ignore_case", "negative")), 2)}
|
||||||
endif
|
endif
|
||||||
EOS
|
EOS
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -207,3 +207,10 @@ call TestExtension('fsharp', 'fsharp.fs', "let myInt = 5")
|
|||||||
call TestExtension('glsl', 'glsl.fs', "//#version 120\nvoid main() {}")
|
call TestExtension('glsl', 'glsl.fs', "//#version 120\nvoid main() {}")
|
||||||
let g:filetype_fs = 'fizfuz'
|
let g:filetype_fs = 'fizfuz'
|
||||||
call TestExtension('fizfuz', 'fizfuz.fs', '')
|
call TestExtension('fizfuz', 'fizfuz.fs', '')
|
||||||
|
|
||||||
|
" .re extension
|
||||||
|
call TestExtension('reason', 'empty.re', '')
|
||||||
|
call TestExtension('cpp', 'cpp.re', '#include "config.h"')
|
||||||
|
call TestExtension('cpp', 'cpp2.re', '#ifdef HAVE_CONFIG_H')
|
||||||
|
call TestExtension('cpp', 'cpp3.re', '#define YYCTYPE unsigned char')
|
||||||
|
call TestExtension('reason', 'react.re', 'ReasonReact.Router.push("");')
|
||||||
|
|||||||
@@ -44,6 +44,7 @@ call TestFiletype('atlas')
|
|||||||
call TestFiletype('autoit')
|
call TestFiletype('autoit')
|
||||||
call TestFiletype('ave')
|
call TestFiletype('ave')
|
||||||
call TestFiletype('awk')
|
call TestFiletype('awk')
|
||||||
|
call TestFiletype('reason')
|
||||||
call TestFiletype('c')
|
call TestFiletype('c')
|
||||||
call TestFiletype('cpp')
|
call TestFiletype('cpp')
|
||||||
call TestFiletype('caddyfile')
|
call TestFiletype('caddyfile')
|
||||||
@@ -175,7 +176,6 @@ call TestFiletype('ragel')
|
|||||||
call TestFiletype('raku')
|
call TestFiletype('raku')
|
||||||
call TestFiletype('raml')
|
call TestFiletype('raml')
|
||||||
call TestFiletype('razor')
|
call TestFiletype('razor')
|
||||||
call TestFiletype('reason')
|
|
||||||
call TestFiletype('rst')
|
call TestFiletype('rst')
|
||||||
call TestFiletype('ruby')
|
call TestFiletype('ruby')
|
||||||
call TestFiletype('eruby')
|
call TestFiletype('eruby')
|
||||||
|
|||||||
Reference in New Issue
Block a user