summaryrefslogtreecommitdiffstats
path: root/autoload/ecrystal.vim
diff options
context:
space:
mode:
Diffstat (limited to 'autoload/ecrystal.vim')
-rw-r--r--autoload/ecrystal.vim34
1 files changed, 34 insertions, 0 deletions
diff --git a/autoload/ecrystal.vim b/autoload/ecrystal.vim
new file mode 100644
index 00000000..1a00b894
--- /dev/null
+++ b/autoload/ecrystal.vim
@@ -0,0 +1,34 @@
+if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'crystal') == -1
+
+let s:ecrystal_extensions = {
+ \ 'cr': 'crystal',
+ \ 'yml': 'yaml',
+ \ 'js': 'javascript',
+ \ 'txt': 'text',
+ \ 'md': 'markdown'
+ \ }
+
+if exists('g:ecrystal_extensions')
+ call extend(s:ecrystal_extensions, g:ecrystal_extensions, 'force')
+endif
+
+function! ecrystal#SetSubtype() abort
+ if exists('b:ecrystal_subtype')
+ return
+ endif
+
+ let b:ecrystal_subtype = matchstr(substitute(expand('%:t'), '\c\%(\.ecr\)\+$', '', ''), '\.\zs\w\+\%(\ze+\w\+\)\=$')
+
+ let b:ecrystal_subtype = get(s:ecrystal_extensions, b:ecrystal_subtype, b:ecrystal_subtype)
+
+ if b:ecrystal_subtype ==# ''
+ let b:ecrystal_subtype = get(g:, 'ecrystal_default_subtype', 'html')
+ endif
+
+ if b:ecrystal_subtype !=# ''
+ exec 'setlocal filetype=ecrystal.' . b:ecrystal_subtype
+ exec 'setlocal syntax=ecrystal.' . b:ecrystal_subtype
+ endif
+endfunction
+
+endif