diff options
| author | Adam Stankiewicz <sheerun@sher.pl> | 2017-02-02 21:49:51 +0100 | 
|---|---|---|
| committer | Adam Stankiewicz <sheerun@sher.pl> | 2017-02-02 21:49:51 +0100 | 
| commit | cc868aee51c3880f08832cca0bf1351334d61794 (patch) | |
| tree | e66ecd0ead35e53dd16283d6757410cd276bcb83 | |
| parent | 39036a553f353ffb70ec4ad25c0789567fb3518d (diff) | |
| download | vim-polyglot-cc868aee51c3880f08832cca0bf1351334d61794.tar.gz vim-polyglot-cc868aee51c3880f08832cca0bf1351334d61794.zip | |
Add vue support, closes #160
Diffstat (limited to '')
| -rw-r--r-- | README.md | 1 | ||||
| -rw-r--r-- | after/ftplugin/vue.vim | 5 | ||||
| -rwxr-xr-x | build | 1 | ||||
| -rw-r--r-- | ftdetect/polyglot.vim | 7 | ||||
| -rw-r--r-- | ftplugin/vue.vim | 14 | ||||
| -rw-r--r-- | indent/vue.vim | 45 | ||||
| -rw-r--r-- | syntax/vue.vim | 112 | 
7 files changed, 185 insertions, 0 deletions
| @@ -117,6 +117,7 @@ If you need full functionality of any plugin, please use it directly with your p  - [vala](https://github.com/tkztmk/vim-vala) (syntax, indent, ftdetect)  - [vbnet](https://github.com/vim-scripts/vbnet.vim) (syntax)  - [vcl](https://github.com/smerrill/vcl-vim-plugin) (syntax, ftdetect) +- [vue](https://github.com/posva/vim-vue) (syntax, indent, ftplugin, ftdetect)  - [vm](https://github.com/lepture/vim-velocity) (syntax, indent, ftdetect)  - [xls](https://github.com/vim-scripts/XSLT-syntax) (syntax)  - [yaml](https://github.com/stephpy/vim-yaml) (syntax, ftplugin) diff --git a/after/ftplugin/vue.vim b/after/ftplugin/vue.vim new file mode 100644 index 00000000..fd786923 --- /dev/null +++ b/after/ftplugin/vue.vim @@ -0,0 +1,5 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vue') == -1 +   +setlocal suffixesadd+=.vue + +endif @@ -190,6 +190,7 @@ PACKS="    vala:tkztmk/vim-vala    vbnet:vim-scripts/vbnet.vim    vcl:smerrill/vcl-vim-plugin +  vue:posva/vim-vue    vm:lepture/vim-velocity    xls:vim-scripts/XSLT-syntax    yaml:stephpy/vim-yaml diff --git a/ftdetect/polyglot.vim b/ftdetect/polyglot.vim index 54229aa7..f431def0 100644 --- a/ftdetect/polyglot.vim +++ b/ftdetect/polyglot.vim @@ -1000,4 +1000,11 @@ au BufRead,BufNewFile *.vm set ft=velocity syntax=velocity  endif +" ftdetect/vue.vim +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vue') == -1 +   +au BufNewFile,BufRead *.vue setf vue.html.javascript.css + +endif +  augroup END diff --git a/ftplugin/vue.vim b/ftplugin/vue.vim new file mode 100644 index 00000000..9b4ec9b1 --- /dev/null +++ b/ftplugin/vue.vim @@ -0,0 +1,14 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vue') == -1 +   +" Vim filetype plugin +" Language: Vue.js +" Maintainer: Eduardo San Martin Morote +" Author: Adriaan Zonnenberg + +if exists("b:did_ftplugin") +  finish +endif + +runtime! ftplugin/html.vim + +endif diff --git a/indent/vue.vim b/indent/vue.vim new file mode 100644 index 00000000..e754ff6b --- /dev/null +++ b/indent/vue.vim @@ -0,0 +1,45 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vue') == -1 +   +" Vim indent file +" Language: Vue.js +" Maintainer: Eduardo San Martin Morote +" Author: Adriaan Zonnenberg + +if exists("b:did_indent") +  finish +endif + +" Load indent files for required languages +for language in ['stylus', 'pug', 'css', 'javascript', 'html', 'coffee'] +  unlet! b:did_indent +  exe "runtime! indent/".language.".vim" +  exe "let s:".language."indent = &indentexpr" +endfor + +let b:did_indent = 1 + +setlocal indentexpr=GetVueIndent() + +if exists("*GetVueIndent") +  finish +endif + +function! GetVueIndent() +  if searchpair('<template lang="pug"', '', '</template>', 'bWr') +    exe "let indent = ".s:pugindent +  elseif searchpair('<style lang="stylus"', '', '</style>', 'bWr') +    exe "let indent = ".s:stylusindent +  elseif searchpair('<style', '', '</style>', 'bWr') +    exe "let indent = ".s:cssindent +  elseif searchpair('<script lang="coffee"', '', '</script>', 'bWr') +    exe "let indent = ".s:coffeeindent +  elseif searchpair('<script', '', '</script>', 'bWr') +    exe "let indent = ".s:javascriptindent +  else +    exe "let indent = ".s:htmlindent +  endif + +  return indent > -1 ? indent : s:htmlindent +endfunction + +endif diff --git a/syntax/vue.vim b/syntax/vue.vim new file mode 100644 index 00000000..89b5b794 --- /dev/null +++ b/syntax/vue.vim @@ -0,0 +1,112 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vue') == -1 +   +" Vim syntax file +" Language: Vue.js +" Maintainer: Eduardo San Martin Morote + +if exists("b:current_syntax") +  finish +endif + +if !exists("s:syntaxes") +  " Search available syntax files. +  function s:search_syntaxes(...) +    let syntaxes = {} +    let names = a:000 +    for name in names +      let syntaxes[name] = 0 +    endfor + +    for path in split(&runtimepath, ',') +      if isdirectory(path . '/syntax') +        for name in names +          let syntaxes[name] = syntaxes[name] || filereadable(path . '/syntax/' . name . '.vim') +        endfor +      endif +    endfor +    return syntaxes +  endfunction + +  let s:syntaxes = s:search_syntaxes('pug', 'slm', 'coffee', 'stylus', 'sass', 'scss', 'less') +endif + + +syntax include @HTML syntax/html.vim +if exists("b:current_syntax") +  unlet b:current_syntax +endif +syntax region html keepend start=/^<template>/ end=/^<\/template>/ contains=@HTML fold + +if s:syntaxes.pug +  syntax include @PUG syntax/pug.vim +  if exists("b:current_syntax") +    unlet b:current_syntax +  endif +  syntax region pug keepend start=/<template lang=\("\|'\)[^\1]*pug[^\1]*\1>/ end="</template>" contains=@PUG fold +  syntax region pug keepend start=/<template lang=\("\|'\)[^\1]*jade[^\1]*\1>/ end="</template>" contains=@PUG fold +endif + +if s:syntaxes.slm +  syntax include @SLM syntax/slm.vim +  if exists("b:current_syntax") +    unlet b:current_syntax +  endif +  syntax region slm keepend start=/<template lang=\("\|'\)[^\1]*slm[^\1]*\1>/ end="</template>" contains=@SLM fold +endif + +syntax include @JS syntax/javascript.vim +if exists("b:current_syntax") +  unlet b:current_syntax +endif +syntax region javascript keepend matchgroup=Delimiter start=/<script\( lang="babel"\)\?\( type="text\/babel"\)\?>/ end="</script>" contains=@JS fold + +if s:syntaxes.coffee +  syntax include @COFFEE syntax/coffee.vim +  if exists("b:current_syntax") +    unlet b:current_syntax +  endif +  " Matchgroup seems to be necessary for coffee +  syntax region coffee keepend matchgroup=Delimiter start="<script lang=\"coffee\">" end="</script>" contains=@COFFEE fold +endif + +syntax include @CSS syntax/css.vim +if exists("b:current_syntax") +  unlet b:current_syntax +endif +syntax region css keepend start=/<style\( \+scoped\)\?>/ end="</style>" contains=@CSS fold + +if s:syntaxes.stylus +  syntax include @stylus syntax/stylus.vim +  if exists("b:current_syntax") +    unlet b:current_syntax +  endif +  syntax region stylus keepend start=/<style lang=\("\|'\)[^\1]*stylus[^\1]*\1\( \+scoped\)\?>/ end="</style>" contains=@stylus fold +endif + +if s:syntaxes.sass +  syntax include @sass syntax/sass.vim +  if exists("b:current_syntax") +    unlet b:current_syntax +  endif +  syntax region sass keepend start=/<style\( \+scoped\)\? lang=\("\|'\)[^\1]*sass[^\1]*\1\( \+scoped\)\?>/ end="</style>" contains=@sass fold +endif + +if s:syntaxes.scss +  syntax include @scss syntax/scss.vim +  if exists("b:current_syntax") +    unlet b:current_syntax +  endif +  syntax region scss keepend start=/<style\( \+scoped\)\? lang=\("\|'\)[^\1]*scss[^\1]*\1\( \+scoped\)\?>/ end="</style>" contains=@scss fold +endif + +if s:syntaxes.less +  syntax include @less syntax/less.vim +  if exists("b:current_syntax") +    unlet b:current_syntax +  endif +  syntax region less keepend matchgroup=PreProc start=/<style\%( \+scoped\)\? lang=\("\|'\)[^\1]*less[^\1]*\1\%( \+scoped\)\?>/ end="</style>" contains=@less fold +endif + +let b:current_syntax = "vue" + +endif | 
