diff options
Diffstat (limited to '')
| -rw-r--r-- | README.md | 1 | ||||
| -rw-r--r-- | after/ftplugin/coffee.vim | 5 | ||||
| -rw-r--r-- | after/jsx-config.vim | 66 | ||||
| -rw-r--r-- | after/syntax/coffee.vim | 27 | ||||
| -rwxr-xr-x | build | 1 | ||||
| -rw-r--r-- | ftdetect/polyglot.vim | 4 | 
6 files changed, 104 insertions, 0 deletions
| @@ -31,6 +31,7 @@ Optionally download one of the [releases](https://github.com/sheerun/vim-polyglo  - [c/c++](https://github.com/vim-jp/cpp-vim) (syntax)  - [clojure](https://github.com/guns/vim-clojure-static) (syntax, indent, autoload, ftplugin, ftdetect)  - [coffee-script](https://github.com/kchmck/vim-coffee-script) (syntax, indent, compiler, autoload, ftplugin, ftdetect) +- [cjsx](https://github.com/mtscout6/vim-cjsx) (ftdetect, syntax, ftplugin)  - [css](https://github.com/JulesWang/css.vim) (syntax)  - [cucumber](https://github.com/tpope/vim-cucumber) (syntax, indent, compiler, ftplugin, ftdetect)  - [dockerfile](https://github.com/honza/dockerfile.vim) (syntax, ftdetect) diff --git a/after/ftplugin/coffee.vim b/after/ftplugin/coffee.vim new file mode 100644 index 00000000..104948d1 --- /dev/null +++ b/after/ftplugin/coffee.vim @@ -0,0 +1,5 @@ +if exists("loaded_matchit") +  let b:match_ignorecase = 0 +  let b:match_words = '(:),\[:\],{:},<:>,' . +    \ '<\@<=\([^/][^ \t>]*\)[^>]*\%(>\|$\):<\@<=/\1>' +endif diff --git a/after/jsx-config.vim b/after/jsx-config.vim index 5270a518..d617bb40 100644 --- a/after/jsx-config.vim +++ b/after/jsx-config.vim @@ -64,3 +64,69 @@ if !g:jsx_pragma_required | finish | endif  " anything else in the file (except whitespace).  let s:jsx_pragma_pattern = '\%^\_s*\/\*\*\%(\_.\%(\*\/\)\@!\)*@jsx\_.\{-}\*\/'  let b:jsx_pragma_found = search(s:jsx_pragma_pattern, 'npw') +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +" Vimscript file +" +" Set up a bunch of configuration variables. +" +" Also check (if desired) whether or not the @jsx pragma is correctly included +" in '%'.  Set the result in b:jsx_pragma_found. +" +" Language: JSX (JavaScript) +" Maintainer: Max Wang <mxawng@gmail.com> +" +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" + +" Only check once. +if exists('b:jsx_pragma_found') +  finish +endif + +" Whether the .jsx extension is required to enable JSX syntax/indent. +if !exists('g:jsx_ext_required') +  let g:jsx_ext_required = 1 +endif + +" Whether the @jsx pragma is required to enable JSX syntax/indent. +if !exists('g:jsx_pragma_required') +  let g:jsx_pragma_required = 0 +endif +if !g:jsx_pragma_required | finish | endif + +" Look for the @jsx pragma.  It must be included in a docblock comment before +" anything else in the file (except whitespace). +let s:jsx_pragma_pattern = '\%^\_s*\/\*\*\%(\_.\%(\*\/\)\@!\)*@jsx\_.\{-}\*\/' +let b:jsx_pragma_found = search(s:jsx_pragma_pattern, 'npw') +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +" Vimscript file +" +" Set up a bunch of configuration variables. +" +" Also check (if desired) whether or not the @jsx pragma is correctly included +" in '%'.  Set the result in b:jsx_pragma_found. +" +" Language: JSX (JavaScript) +" Maintainer: Max Wang <mxawng@gmail.com> +" +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" + +" Only check once. +if exists('b:jsx_pragma_found') +  finish +endif + +" Whether the .jsx extension is required to enable JSX syntax/indent. +if !exists('g:jsx_ext_required') +  let g:jsx_ext_required = 1 +endif + +" Whether the @jsx pragma is required to enable JSX syntax/indent. +if !exists('g:jsx_pragma_required') +  let g:jsx_pragma_required = 0 +endif +if !g:jsx_pragma_required | finish | endif + +" Look for the @jsx pragma.  It must be included in a docblock comment before +" anything else in the file (except whitespace). +let s:jsx_pragma_pattern = '\%^\_s*\/\*\*\%(\_.\%(\*\/\)\@!\)*@jsx\_.\{-}\*\/' +let b:jsx_pragma_found = search(s:jsx_pragma_pattern, 'npw') diff --git a/after/syntax/coffee.vim b/after/syntax/coffee.vim new file mode 100644 index 00000000..64e0dc4f --- /dev/null +++ b/after/syntax/coffee.vim @@ -0,0 +1,27 @@ +if exists('b:current_syntax') +  let s:current_syntax=b:current_syntax +  unlet b:current_syntax +endif + +if exists('s:current_syntax') +  let b:current_syntax=s:current_syntax +endif + +syn match   cjsxEntity       contained "&[^; \t]*;" contains=cjsxEntityPunct +syn match   cjsxEntityPunct  contained "[&.;]" + +syn match   cjsxAttribProperty /[A-Za-z_][A-Za-z0-9_-]*/ contained +syn region  cjsxAttrib start=/\s[A-Za-z_][A-Za-z0-9_-]/hs=s+1 end=/=/ end=/\s[A-Za-z_]/me=e-2 end=+[/>]+me=e-1 contained contains=cjsxAttribProperty + +syn region  cjsxBody start=+[^/]>+ms=s+2 start=/>/ms=s+1 end=+<\/+me=e-2 contained contains=cjsxElement,coffeeCurlies,cjsxEntity + +syn region  cjsxElement start=/<@\=[A-Za-z_][A-Za-z0-9-_\.]*/ end=/\/>/ end=/<\/@\=[A-Za-z_][A-Za-z0-9-_\.]*>/ contains=cjsxOpenTag,cjsxBody,coffeeCurlies,coffeeString,cjsxAttrib,coffeeNumber,coffeeFloat + +syn cluster coffeeAll add=cjsxElement + +" The default highlighting. +hi def link cjsxElement         Function +hi def link cjsxTagName         Function +hi def link cjsxEntity          Statement +hi def link cjsxEntityPunct     Type +hi def link cjsxAttribProperty  Type @@ -100,6 +100,7 @@ PACKS="    c/c++:vim-jp/cpp-vim    clojure:guns/vim-clojure-static    coffee-script:kchmck/vim-coffee-script +  cjsx:mtscout6/vim-cjsx    css:JulesWang/css.vim    cucumber:tpope/vim-cucumber    dockerfile:honza/dockerfile.vim diff --git a/ftdetect/polyglot.vim b/ftdetect/polyglot.vim index 932dc349..5ecde6fc 100644 --- a/ftdetect/polyglot.vim +++ b/ftdetect/polyglot.vim @@ -1,5 +1,9 @@  au BufRead,BufNewFile *.ino,*.pde set filetype=arduino  au BufNewFile,BufRead *.blade.php set filetype=blade +augroup CJSX +  au! +  autocmd BufNewFile,BufRead *.csx,*.cjsx set filetype=coffee +augroup END  autocmd BufNewFile,BufRead *.clj,*.cljs,*.edn,*.cljx,*.cljc setlocal filetype=clojure  autocmd BufNewFile,BufRead *.coffee set filetype=coffee  autocmd BufNewFile,BufRead *Cakefile set filetype=coffee | 
