mirror of
https://github.com/sheerun/vim-polyglot.git
synced 2025-11-09 03:53:52 -05:00
Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f2ef4cedec |
@@ -202,6 +202,16 @@ func! polyglot#DetectFsFiletype()
|
||||
setf forth | return
|
||||
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'
|
||||
let &cpo = s:cpo_save
|
||||
unlet s:cpo_save
|
||||
|
||||
@@ -218,6 +218,11 @@ if !has_key(s:disabled_packages, 'awk')
|
||||
au BufNewFile,BufRead *.awk setf awk
|
||||
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++')
|
||||
au BufNewFile,BufRead *.c 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 *.ino setf cpp
|
||||
au BufNewFile,BufRead *.ipp setf cpp
|
||||
au BufNewFile,BufRead *.re setf cpp
|
||||
au BufNewFile,BufRead *.tcc setf cpp
|
||||
au BufNewFile,BufRead *.tpp setf cpp
|
||||
au! BufNewFile,BufRead *.re call polyglot#DetectReFiletype()
|
||||
endif
|
||||
|
||||
if !has_key(s:disabled_packages, 'caddyfile')
|
||||
@@ -1045,11 +1050,6 @@ if !has_key(s:disabled_packages, 'razor')
|
||||
au BufNewFile,BufRead *.razor setf razor
|
||||
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')
|
||||
au BufNewFile,BufRead *.rest setf rst
|
||||
au BufNewFile,BufRead *.rest.txt setf rst
|
||||
|
||||
@@ -55,3 +55,11 @@ rules:
|
||||
filetype: glsl
|
||||
- override: "g:filetype_fs"
|
||||
- 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
|
||||
remote: reasonml-editor/vim-reason-plus
|
||||
after: c/c++
|
||||
filetypes:
|
||||
- name: reason
|
||||
linguist: Reason
|
||||
|
||||
@@ -202,9 +202,17 @@ def indent(str, amount)
|
||||
end
|
||||
|
||||
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"] ? "?" : "#")
|
||||
|
||||
"line #{operator} '#{rule["pattern"]}'"
|
||||
return "line #{operator} '#{rule["pattern"]}'"
|
||||
end
|
||||
|
||||
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")
|
||||
end
|
||||
|
||||
if rule.has_key?("pattern")
|
||||
if rule.has_key?("pattern") || rule.has_key?("or") || rule.has_key?("and")
|
||||
return <<~EOS
|
||||
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
|
||||
EOS
|
||||
end
|
||||
|
||||
@@ -207,3 +207,10 @@ call TestExtension('fsharp', 'fsharp.fs', "let myInt = 5")
|
||||
call TestExtension('glsl', 'glsl.fs', "//#version 120\nvoid main() {}")
|
||||
let g:filetype_fs = 'fizfuz'
|
||||
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('ave')
|
||||
call TestFiletype('awk')
|
||||
call TestFiletype('reason')
|
||||
call TestFiletype('c')
|
||||
call TestFiletype('cpp')
|
||||
call TestFiletype('caddyfile')
|
||||
@@ -175,7 +176,6 @@ call TestFiletype('ragel')
|
||||
call TestFiletype('raku')
|
||||
call TestFiletype('raml')
|
||||
call TestFiletype('razor')
|
||||
call TestFiletype('reason')
|
||||
call TestFiletype('rst')
|
||||
call TestFiletype('ruby')
|
||||
call TestFiletype('eruby')
|
||||
|
||||
Reference in New Issue
Block a user