mirror of
https://github.com/sheerun/vim-polyglot.git
synced 2025-11-09 12:03:53 -05:00
Compare commits
10 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
bf188c4a51 | ||
|
|
a5857b81c2 | ||
|
|
7a32eec6d1 | ||
|
|
c69562f864 | ||
|
|
40c54bc12b | ||
|
|
44b3d860cb | ||
|
|
5a65ffe66d | ||
|
|
b9dae8fbab | ||
|
|
84593f2d7f | ||
|
|
22f6f3b6d3 |
27
README.md
27
README.md
@@ -1,4 +1,4 @@
|
|||||||
# vim-polyglot [![Build Status][travis-img-url]][travis-url]
|
# vim-polyglot [![Build Status][travis-img-url]][travis-url] []()
|
||||||
|
|
||||||
[travis-img-url]: https://travis-ci.org/sheerun/vim-polyglot.svg
|
[travis-img-url]: https://travis-ci.org/sheerun/vim-polyglot.svg
|
||||||
[travis-url]: https://travis-ci.org/sheerun/vim-polyglot
|
[travis-url]: https://travis-ci.org/sheerun/vim-polyglot
|
||||||
@@ -65,8 +65,9 @@ Optionally download one of the [releases](https://github.com/sheerun/vim-polyglo
|
|||||||
- [latex](https://github.com/LaTeX-Box-Team/LaTeX-Box) (syntax, indent, ftplugin)
|
- [latex](https://github.com/LaTeX-Box-Team/LaTeX-Box) (syntax, indent, ftplugin)
|
||||||
- [less](https://github.com/groenewege/vim-less) (syntax, indent, ftplugin, ftdetect)
|
- [less](https://github.com/groenewege/vim-less) (syntax, indent, ftplugin, ftdetect)
|
||||||
- [liquid](https://github.com/tpope/vim-liquid) (syntax, indent, ftplugin, ftdetect)
|
- [liquid](https://github.com/tpope/vim-liquid) (syntax, indent, ftplugin, ftdetect)
|
||||||
- [markdown](https://github.com/tpope/vim-markdown) (syntax, ftplugin, ftdetect)
|
- [mako](https://github.com/sophacles/vim-bundle-mako) (syntax, indent, ftplugin, ftdetect)
|
||||||
- [nginx](https://github.com/nginx/nginx) (syntax, indent, ftdetect)
|
- [markdown](https://github.com/plasticboy/vim-markdown) (syntax, ftdetect)
|
||||||
|
- [nginx](https://github.com/othree/nginx-contrib-vim) (syntax, indent, ftdetect)
|
||||||
- [nim](https://github.com/zah/nim.vim) (syntax, compiler, indent, ftdetect)
|
- [nim](https://github.com/zah/nim.vim) (syntax, compiler, indent, ftdetect)
|
||||||
- [nix](https://github.com/spwhitt/vim-nix) (syntax, ftplugin, ftdetect)
|
- [nix](https://github.com/spwhitt/vim-nix) (syntax, ftplugin, ftdetect)
|
||||||
- [objc](https://github.com/b4winckler/vim-objc) (ftplugin, syntax, indent)
|
- [objc](https://github.com/b4winckler/vim-objc) (ftplugin, syntax, indent)
|
||||||
@@ -78,7 +79,7 @@ Optionally download one of the [releases](https://github.com/sheerun/vim-polyglo
|
|||||||
- [php](https://github.com/StanAngeloff/php.vim) (syntax)
|
- [php](https://github.com/StanAngeloff/php.vim) (syntax)
|
||||||
- [plantuml](https://github.com/aklt/plantuml-syntax) (syntax, ftplugin, ftdetect)
|
- [plantuml](https://github.com/aklt/plantuml-syntax) (syntax, ftplugin, ftdetect)
|
||||||
- [powershell](https://github.com/Persistent13/vim-ps1) (syntax, indent, ftplugin, ftdetect)
|
- [powershell](https://github.com/Persistent13/vim-ps1) (syntax, indent, ftplugin, ftdetect)
|
||||||
- [protobuf](https://github.com/uarun/vim-protobuf) (syntax, ftdetect)
|
- [protobuf](https://github.com/uarun/vim-protobuf) (syntax, indent, ftdetect)
|
||||||
- [pug](https://github.com/digitaltoad/vim-pug) (syntax, indent, ftplugin, ftdetect)
|
- [pug](https://github.com/digitaltoad/vim-pug) (syntax, indent, ftplugin, ftdetect)
|
||||||
- [puppet](https://github.com/voxpupuli/vim-puppet) (syntax, indent, ftplugin, ftdetect)
|
- [puppet](https://github.com/voxpupuli/vim-puppet) (syntax, indent, ftplugin, ftdetect)
|
||||||
- [purescript](https://github.com/raichoo/purescript-vim) (syntax, indent, ftdetect)
|
- [purescript](https://github.com/raichoo/purescript-vim) (syntax, indent, ftdetect)
|
||||||
@@ -91,14 +92,14 @@ Optionally download one of the [releases](https://github.com/sheerun/vim-polyglo
|
|||||||
- [rust](https://github.com/rust-lang/rust.vim) (syntax, indent, compiler, autoload, ftplugin, ftdetect)
|
- [rust](https://github.com/rust-lang/rust.vim) (syntax, indent, compiler, autoload, ftplugin, ftdetect)
|
||||||
- [sbt](https://github.com/derekwyatt/vim-sbt) (syntax, ftdetect)
|
- [sbt](https://github.com/derekwyatt/vim-sbt) (syntax, ftdetect)
|
||||||
- [scala](https://github.com/derekwyatt/vim-scala) (syntax, indent, compiler, ftplugin, ftdetect)
|
- [scala](https://github.com/derekwyatt/vim-scala) (syntax, indent, compiler, ftplugin, ftdetect)
|
||||||
- [slim](https://github.com/slim-template/vim-slim) (syntax, indent, ftdetect)
|
- [slim](https://github.com/slim-template/vim-slim) (syntax, indent, ftplugin, ftdetect)
|
||||||
- [solidity](https://github.com/ethereum/vim-solidity) (syntax, indent, ftdetect)
|
- [solidity](https://github.com/ethereum/vim-solidity) (syntax, indent, ftdetect)
|
||||||
- [stylus](https://github.com/wavded/vim-stylus) (syntax, indent, ftplugin, ftdetect)
|
- [stylus](https://github.com/wavded/vim-stylus) (syntax, indent, ftplugin, ftdetect)
|
||||||
- [swift](https://github.com/keith/swift.vim) (syntax, indent, ftplugin, ftdetect)
|
- [swift](https://github.com/keith/swift.vim) (syntax, indent, ftplugin, ftdetect)
|
||||||
- [systemd](https://github.com/kurayama/systemd-vim-syntax) (syntax, ftdetect)
|
- [systemd](https://github.com/kurayama/systemd-vim-syntax) (syntax, ftdetect)
|
||||||
- [textile](https://github.com/timcharper/textile.vim) (syntax, ftplugin, ftdetect)
|
- [textile](https://github.com/timcharper/textile.vim) (syntax, ftplugin, ftdetect)
|
||||||
- [thrift](https://github.com/solarnz/thrift.vim) (syntax, ftdetect)
|
- [thrift](https://github.com/solarnz/thrift.vim) (syntax, ftdetect)
|
||||||
- [tmux](https://github.com/tejr/vim-tmux) (syntax, ftdetect)
|
- [tmux](https://github.com/keith/tmux.vim) (syntax, ftplugin, ftdetect)
|
||||||
- [tomdoc](https://github.com/wellbredgrapefruit/tomdoc.vim) (syntax)
|
- [tomdoc](https://github.com/wellbredgrapefruit/tomdoc.vim) (syntax)
|
||||||
- [toml](https://github.com/cespare/vim-toml) (syntax, ftplugin, ftdetect)
|
- [toml](https://github.com/cespare/vim-toml) (syntax, ftplugin, ftdetect)
|
||||||
- [twig](https://github.com/evidens/vim-twig) (syntax, ftplugin)
|
- [twig](https://github.com/evidens/vim-twig) (syntax, ftplugin)
|
||||||
@@ -111,9 +112,15 @@ Optionally download one of the [releases](https://github.com/sheerun/vim-polyglo
|
|||||||
- [yaml](https://github.com/stephpy/vim-yaml) (syntax, ftplugin)
|
- [yaml](https://github.com/stephpy/vim-yaml) (syntax, ftplugin)
|
||||||
- [yard](https://github.com/sheerun/vim-yardoc) (syntax)
|
- [yard](https://github.com/sheerun/vim-yardoc) (syntax)
|
||||||
|
|
||||||
## Disabling a language pack
|
## Updating
|
||||||
|
|
||||||
Individual language packs can be disabled by setting `g:polyglot_disabled`.
|
You can either wait for new patch release with updates or run the `./build` script by yourself.
|
||||||
|
|
||||||
|
## Troubleshooting
|
||||||
|
|
||||||
|
Please make sure you have `syntax on` in your `.vimrc`, otherwise syntax files are not loaded at all.
|
||||||
|
|
||||||
|
Individual language packs can be disabled by setting `g:polyglot_disabled` as follows:
|
||||||
|
|
||||||
```viml
|
```viml
|
||||||
" ~/.vimrc
|
" ~/.vimrc
|
||||||
@@ -122,10 +129,6 @@ let g:polyglot_disabled = ['css']
|
|||||||
|
|
||||||
Note that disabiling languages won't make in general your vim startup any faster / slower (only for specific file type). Vim-polyglot is selection of language plugins that are loaded only on demand.
|
Note that disabiling languages won't make in general your vim startup any faster / slower (only for specific file type). Vim-polyglot is selection of language plugins that are loaded only on demand.
|
||||||
|
|
||||||
## Updating
|
|
||||||
|
|
||||||
You can either wait for new patch release with updates or run the `./build` script by yourself.
|
|
||||||
|
|
||||||
## Contributing
|
## Contributing
|
||||||
|
|
||||||
Language packs are periodically updated using automated `build` script.
|
Language packs are periodically updated using automated `build` script.
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'haskell') == -1
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'haskell') == -1
|
||||||
|
|
||||||
setlocal comments=s1fl:{-,mb:-,ex:-},:--
|
setlocal comments=s1fl:{-,mb:\ \ ,ex:-},:--
|
||||||
setlocal iskeyword+='
|
setlocal iskeyword+='
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|||||||
@@ -28,8 +28,11 @@ endif
|
|||||||
|
|
||||||
hi link rustNiceOperator Operator
|
hi link rustNiceOperator Operator
|
||||||
|
|
||||||
if !exists('g:rust_conceal_mod_path') && g:rust_conceal_mod_path != 0
|
if !(exists('g:rust_conceal_mod_path') && g:rust_conceal_mod_path != 0)
|
||||||
hi! link Conceal Operator
|
hi! link Conceal Operator
|
||||||
|
|
||||||
|
" And keep it after a colorscheme change
|
||||||
|
au ColorScheme <buffer> hi! link Conceal Operator
|
||||||
endif
|
endif
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|||||||
@@ -348,7 +348,7 @@ function! s:RmDir(path)
|
|||||||
echoerr 'Attempted to delete protected path: ' . a:path
|
echoerr 'Attempted to delete protected path: ' . a:path
|
||||||
return 0
|
return 0
|
||||||
endif
|
endif
|
||||||
silent exe "!rm -rf " . shellescape(a:path)
|
return system("rm -rf " . shellescape(a:path))
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
" Executes {cmd} with the cwd set to {pwd}, without changing Vim's cwd.
|
" Executes {cmd} with the cwd set to {pwd}, without changing Vim's cwd.
|
||||||
|
|||||||
@@ -29,9 +29,13 @@ function! rustfmt#Format()
|
|||||||
|
|
||||||
let command = g:rustfmt_command . " --write-mode=overwrite "
|
let command = g:rustfmt_command . " --write-mode=overwrite "
|
||||||
|
|
||||||
|
if exists("*systemlist")
|
||||||
let out = systemlist(command . g:rustfmt_options . " " . shellescape(l:tmpname))
|
let out = systemlist(command . g:rustfmt_options . " " . shellescape(l:tmpname))
|
||||||
|
else
|
||||||
|
let out = split(system(command . g:rustfmt_options . " " . shellescape(l:tmpname)), '\r\?\n')
|
||||||
|
endif
|
||||||
|
|
||||||
if v:shell_error == 0
|
if v:shell_error == 0 || v:shell_error == 3
|
||||||
" remove undo point caused via BufWritePre
|
" remove undo point caused via BufWritePre
|
||||||
try | silent undojoin | catch | endtry
|
try | silent undojoin | catch | endtry
|
||||||
|
|
||||||
|
|||||||
8
build
8
build
@@ -5,6 +5,7 @@ set -E
|
|||||||
DIRS="syntax indent compiler autoload ftplugin ftdetect after/syntax after/indent after/ftplugin after/ftdetect"
|
DIRS="syntax indent compiler autoload ftplugin ftdetect after/syntax after/indent after/ftplugin after/ftdetect"
|
||||||
DIRS_BASIC="syntax compiler indent ftdetect after/syntax after/indent after/ftdetect"
|
DIRS_BASIC="syntax compiler indent ftdetect after/syntax after/indent after/ftdetect"
|
||||||
DIRS_ALL="syntax indent compiler autoload ftplugin ftdetect after"
|
DIRS_ALL="syntax indent compiler autoload ftplugin ftdetect after"
|
||||||
|
DIRS_SYNTAX="syntax ftdetect after/syntax after/ftdetect"
|
||||||
|
|
||||||
OUTPUT=""
|
OUTPUT=""
|
||||||
|
|
||||||
@@ -136,8 +137,9 @@ PACKS="
|
|||||||
latex:LaTeX-Box-Team/LaTeX-Box
|
latex:LaTeX-Box-Team/LaTeX-Box
|
||||||
less:groenewege/vim-less
|
less:groenewege/vim-less
|
||||||
liquid:tpope/vim-liquid
|
liquid:tpope/vim-liquid
|
||||||
markdown:tpope/vim-markdown
|
mako:sophacles/vim-bundle-mako
|
||||||
nginx:nginx/nginx::/contrib/vim/
|
markdown:plasticboy/vim-markdown:_SYNTAX
|
||||||
|
nginx:othree/nginx-contrib-vim
|
||||||
nim:zah/nim.vim:_BASIC
|
nim:zah/nim.vim:_BASIC
|
||||||
nix:spwhitt/vim-nix
|
nix:spwhitt/vim-nix
|
||||||
objc:b4winckler/vim-objc
|
objc:b4winckler/vim-objc
|
||||||
@@ -169,7 +171,7 @@ PACKS="
|
|||||||
systemd:kurayama/systemd-vim-syntax
|
systemd:kurayama/systemd-vim-syntax
|
||||||
textile:timcharper/textile.vim
|
textile:timcharper/textile.vim
|
||||||
thrift:solarnz/thrift.vim
|
thrift:solarnz/thrift.vim
|
||||||
tmux:tejr/vim-tmux
|
tmux:keith/tmux.vim
|
||||||
tomdoc:wellbredgrapefruit/tomdoc.vim
|
tomdoc:wellbredgrapefruit/tomdoc.vim
|
||||||
toml:cespare/vim-toml
|
toml:cespare/vim-toml
|
||||||
twig:evidens/vim-twig
|
twig:evidens/vim-twig
|
||||||
|
|||||||
@@ -40,6 +40,6 @@ CompilerSet errorformat+=%-G%.%# " All lines not matching a
|
|||||||
let &cpo = s:save_cpo
|
let &cpo = s:save_cpo
|
||||||
unlet s:save_cpo
|
unlet s:save_cpo
|
||||||
|
|
||||||
" vim:ts=4:sw=4:et
|
" vim: sw=2 ts=2 et
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ endif
|
|||||||
let s:cpo_save = &cpo
|
let s:cpo_save = &cpo
|
||||||
set cpo-=C
|
set cpo-=C
|
||||||
|
|
||||||
CompilerSet makeprg=nim\ c\ $*
|
CompilerSet makeprg=nim\ c\ --verbosity:0\ $*\ %:p
|
||||||
|
|
||||||
CompilerSet errorformat=
|
CompilerSet errorformat=
|
||||||
\%-GHint:\ %m,
|
\%-GHint:\ %m,
|
||||||
|
|||||||
@@ -99,12 +99,22 @@ au BufNewFile,BufRead *.elm set filetype=elm
|
|||||||
endif
|
endif
|
||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'emberscript') == -1
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'emberscript') == -1
|
||||||
|
|
||||||
|
if !exists('g:vim_ember_script')
|
||||||
|
let g:vim_ember_script = 1
|
||||||
|
endif
|
||||||
autocmd BufNewFile,BufRead *.em set filetype=ember-script
|
autocmd BufNewFile,BufRead *.em set filetype=ember-script
|
||||||
autocmd FileType ember-script set tabstop=2|set shiftwidth=2|set expandtab
|
autocmd FileType ember-script set tabstop=2|set shiftwidth=2|set expandtab
|
||||||
endif
|
endif
|
||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'emblem') == -1
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'emblem') == -1
|
||||||
|
|
||||||
autocmd BufNewFile,BufRead *.emblem set filetype=emblem
|
if !exists('g:vim_emblem')
|
||||||
|
let g:vim_emblem = 1
|
||||||
|
endif
|
||||||
|
if exists('g:vim_ember_script')
|
||||||
|
autocmd BufNewFile,BufRead *.emblem set filetype=emblem
|
||||||
|
else
|
||||||
|
autocmd BufNewFile,BufRead *.em,*.emblem set filetype=emblem
|
||||||
|
endif
|
||||||
autocmd FileType emblem set tabstop=2|set shiftwidth=2|set expandtab
|
autocmd FileType emblem set tabstop=2|set shiftwidth=2|set expandtab
|
||||||
endif
|
endif
|
||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'erlang') == -1
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'erlang') == -1
|
||||||
@@ -198,7 +208,7 @@ au BufNewFile,BufRead *.js setf javascript
|
|||||||
au BufNewFile,BufRead *.jsm setf javascript
|
au BufNewFile,BufRead *.jsm setf javascript
|
||||||
au BufNewFile,BufRead Jakefile setf javascript
|
au BufNewFile,BufRead Jakefile setf javascript
|
||||||
fun! s:SelectJavascript()
|
fun! s:SelectJavascript()
|
||||||
if getline(1) =~# '^#!.*/bin/env\s\+node\>'
|
if getline(1) =~# '^#!.*/bin/\%(env\s\+\)\?node\>'
|
||||||
set ft=javascript
|
set ft=javascript
|
||||||
endif
|
endif
|
||||||
endfun
|
endfun
|
||||||
@@ -270,14 +280,14 @@ au BufNewFile,BufRead */templates/**.liquid,*/layout/**.liquid,*/snippets/**.liq
|
|||||||
\ let b:liquid_subtype = 'html' |
|
\ let b:liquid_subtype = 'html' |
|
||||||
\ set ft=liquid |
|
\ set ft=liquid |
|
||||||
endif
|
endif
|
||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'mako') == -1
|
||||||
|
|
||||||
|
au BufRead,BufNewFile *.mako set filetype=mako
|
||||||
|
endif
|
||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'markdown') == -1
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'markdown') == -1
|
||||||
|
|
||||||
autocmd BufNewFile,BufRead *.markdown,*.md,*.mdown,*.mkd,*.mkdn
|
au BufRead,BufNewFile *.{md,mdown,mkd,mkdn,markdown,mdwn} set filetype=markdown
|
||||||
\ if &ft =~# '^\%(conf\|modula2\)$' |
|
au BufRead,BufNewFile *.{md,mdown,mkd,mkdn,markdown,mdwn}.{des3,des,bf,bfa,aes,idea,cast,rc2,rc4,rc5,desx} set filetype=markdown
|
||||||
\ set ft=markdown |
|
|
||||||
\ else |
|
|
||||||
\ setf markdown |
|
|
||||||
\ endif
|
|
||||||
endif
|
endif
|
||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'perl') == -1
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'perl') == -1
|
||||||
|
|
||||||
@@ -302,7 +312,7 @@ au BufRead,BufNewFile nginx.conf set ft=nginx
|
|||||||
endif
|
endif
|
||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'nim') == -1
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'nim') == -1
|
||||||
|
|
||||||
au BufNewFile,BufRead *.nim set filetype=nim
|
au BufNewFile,BufRead *.nim,*.nims set filetype=nim
|
||||||
endif
|
endif
|
||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'nix') == -1
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'nix') == -1
|
||||||
|
|
||||||
@@ -352,8 +362,8 @@ if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'plantuml') == -
|
|||||||
if did_filetype()
|
if did_filetype()
|
||||||
finish
|
finish
|
||||||
endif
|
endif
|
||||||
autocmd BufRead,BufNewFile * :if getline(1) =~ '^.*startuml.*$'| setfiletype plantuml | endif
|
autocmd BufRead,BufNewFile * :if getline(1) =~ '^.*startuml.*$'| setfiletype plantuml | set filetype=plantuml | endif
|
||||||
autocmd BufRead,BufNewFile *.pu,*.uml,*.plantuml set filetype=plantuml
|
autocmd BufRead,BufNewFile *.pu,*.uml,*.plantuml setfiletype plantuml | set filetype=plantuml
|
||||||
endif
|
endif
|
||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'protobuf') == -1
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'protobuf') == -1
|
||||||
|
|
||||||
@@ -395,30 +405,46 @@ function! s:setf(filetype) abort
|
|||||||
let &filetype = a:filetype
|
let &filetype = a:filetype
|
||||||
endif
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
func! s:StarSetf(ft)
|
||||||
|
if expand("<amatch>") !~ g:ft_ignore_pat
|
||||||
|
exe 'setf ' . a:ft
|
||||||
|
endif
|
||||||
|
endfunc
|
||||||
|
au BufNewFile,BufRead *.erb,*.rhtml call s:setf('eruby')
|
||||||
|
au BufNewFile,BufRead .irbrc,irbrc call s:setf('ruby')
|
||||||
au BufNewFile,BufRead *.rb,*.rbw,*.gemspec call s:setf('ruby')
|
au BufNewFile,BufRead *.rb,*.rbw,*.gemspec call s:setf('ruby')
|
||||||
|
au BufNewFile,BufRead *.ru call s:setf('ruby')
|
||||||
|
au BufNewFile,BufRead Gemfile call s:setf('ruby')
|
||||||
au BufNewFile,BufRead *.builder,*.rxml,*.rjs,*.ruby call s:setf('ruby')
|
au BufNewFile,BufRead *.builder,*.rxml,*.rjs,*.ruby call s:setf('ruby')
|
||||||
au BufNewFile,BufRead [rR]akefile,*.rake call s:setf('ruby')
|
au BufNewFile,BufRead [rR]akefile,*.rake call s:setf('ruby')
|
||||||
|
au BufNewFile,BufRead [rR]akefile* call s:StarSetf('ruby')
|
||||||
au BufNewFile,BufRead [rR]antfile,*.rant call s:setf('ruby')
|
au BufNewFile,BufRead [rR]antfile,*.rant call s:setf('ruby')
|
||||||
au BufNewFile,BufRead .irbrc,irbrc call s:setf('ruby')
|
endif
|
||||||
au BufNewFile,BufRead .pryrc call s:setf('ruby')
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'ruby') == -1
|
||||||
au BufNewFile,BufRead *.ru call s:setf('ruby')
|
|
||||||
|
function! s:setf(filetype) abort
|
||||||
|
if &filetype !=# a:filetype
|
||||||
|
let &filetype = a:filetype
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
au BufNewFile,BufRead Appraisals call s:setf('ruby')
|
||||||
|
au BufNewFile,BufRead .autotest call s:setf('ruby')
|
||||||
|
au BufNewFile,BufRead [Bb]uildfile call s:setf('ruby')
|
||||||
au BufNewFile,BufRead Capfile,*.cap call s:setf('ruby')
|
au BufNewFile,BufRead Capfile,*.cap call s:setf('ruby')
|
||||||
au BufNewFile,BufRead Gemfile call s:setf('ruby')
|
|
||||||
au BufNewFile,BufRead Guardfile,.Guardfile call s:setf('ruby')
|
|
||||||
au BufNewFile,BufRead Cheffile call s:setf('ruby')
|
au BufNewFile,BufRead Cheffile call s:setf('ruby')
|
||||||
au BufNewFile,BufRead Berksfile call s:setf('ruby')
|
au BufNewFile,BufRead Berksfile call s:setf('ruby')
|
||||||
au BufNewFile,BufRead [vV]agrantfile call s:setf('ruby')
|
|
||||||
au BufNewFile,BufRead .autotest call s:setf('ruby')
|
|
||||||
au BufNewFile,BufRead *.erb,*.rhtml call s:setf('eruby')
|
|
||||||
au BufNewFile,BufRead [tT]horfile,*.thor call s:setf('ruby')
|
|
||||||
au BufNewFile,BufRead *.rabl call s:setf('ruby')
|
|
||||||
au BufNewFile,BufRead *.jbuilder call s:setf('ruby')
|
|
||||||
au BufNewFile,BufRead Puppetfile call s:setf('ruby')
|
|
||||||
au BufNewFile,BufRead [Bb]uildfile call s:setf('ruby')
|
|
||||||
au BufNewFile,BufRead Appraisals call s:setf('ruby')
|
|
||||||
au BufNewFile,BufRead Podfile,*.podspec call s:setf('ruby')
|
au BufNewFile,BufRead Podfile,*.podspec call s:setf('ruby')
|
||||||
|
au BufNewFile,BufRead Guardfile,.Guardfile call s:setf('ruby')
|
||||||
|
au BufNewFile,BufRead *.jbuilder call s:setf('ruby')
|
||||||
|
au BufNewFile,BufRead KitchenSink call s:setf('ruby')
|
||||||
|
au BufNewFile,BufRead *.opal call s:setf('ruby')
|
||||||
|
au BufNewFile,BufRead .pryrc call s:setf('ruby')
|
||||||
|
au BufNewFile,BufRead Puppetfile call s:setf('ruby')
|
||||||
|
au BufNewFile,BufRead *.rabl call s:setf('ruby')
|
||||||
au BufNewFile,BufRead [rR]outefile call s:setf('ruby')
|
au BufNewFile,BufRead [rR]outefile call s:setf('ruby')
|
||||||
au BufNewFile,BufRead .simplecov set filetype=ruby
|
au BufNewFile,BufRead .simplecov call s:setf('ruby')
|
||||||
|
au BufNewFile,BufRead [tT]horfile,*.thor call s:setf('ruby')
|
||||||
|
au BufNewFile,BufRead [vV]agrantfile call s:setf('ruby')
|
||||||
endif
|
endif
|
||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'rust') == -1
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'rust') == -1
|
||||||
|
|
||||||
@@ -441,7 +467,7 @@ au BufRead,BufNewFile *.sbt setfiletype sbt.scala
|
|||||||
endif
|
endif
|
||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'slim') == -1
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'slim') == -1
|
||||||
|
|
||||||
autocmd BufNewFile,BufRead *.slim set filetype=slim
|
autocmd BufNewFile,BufRead *.slim setf slim
|
||||||
endif
|
endif
|
||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'solidity') == -1
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'solidity') == -1
|
||||||
|
|
||||||
@@ -487,8 +513,7 @@ au BufNewFile,BufRead *.thrift setlocal filetype=thrift
|
|||||||
endif
|
endif
|
||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'tmux') == -1
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'tmux') == -1
|
||||||
|
|
||||||
autocmd BufNewFile,BufRead {.,}tmux.conf{.*,} setlocal filetype=tmux
|
autocmd BufNewFile,BufRead {.,}tmux*.conf* setfiletype tmux
|
||||||
autocmd BufNewFile,BufRead {.,}tmux.conf{.*,} setlocal commentstring=#\ %s
|
|
||||||
endif
|
endif
|
||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'toml') == -1
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'toml') == -1
|
||||||
|
|
||||||
|
|||||||
@@ -11,6 +11,8 @@ endif
|
|||||||
runtime! ftplugin/html.vim
|
runtime! ftplugin/html.vim
|
||||||
let b:did_ftplugin = 1
|
let b:did_ftplugin = 1
|
||||||
|
|
||||||
setlocal iskeyword+=@-@
|
setlocal suffixesadd=.blade.php,.php
|
||||||
|
setlocal includeexpr=substitute(v:fname,'\\.','/','g')
|
||||||
|
setlocal path+=resources/views;
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ call coffee#CoffeeSetUpVariables()
|
|||||||
setlocal formatoptions-=t formatoptions+=croql
|
setlocal formatoptions-=t formatoptions+=croql
|
||||||
setlocal comments=:# commentstring=#\ %s
|
setlocal comments=:# commentstring=#\ %s
|
||||||
setlocal omnifunc=javascriptcomplete#CompleteJS
|
setlocal omnifunc=javascriptcomplete#CompleteJS
|
||||||
setlocal suffixesadd+=coffee
|
setlocal suffixesadd+=.coffee
|
||||||
|
|
||||||
" Create custom augroups.
|
" Create custom augroups.
|
||||||
augroup CoffeeBufUpdate | augroup END
|
augroup CoffeeBufUpdate | augroup END
|
||||||
|
|||||||
@@ -40,6 +40,30 @@ setlocal errorformat=
|
|||||||
\%C%p^,
|
\%C%p^,
|
||||||
\%-C%.%#
|
\%-C%.%#
|
||||||
|
|
||||||
|
let g:crystal_compiler_command = get(g:, 'crystal_compiler_command', 'crystal')
|
||||||
|
let g:crystal_auto_format = get(g:, 'crystal_auto_format', 0)
|
||||||
|
|
||||||
|
command! -buffer -nargs=* CrystalImpl echo crystal_lang#impl(expand('%'), getpos('.'), <q-args>).output
|
||||||
|
command! -buffer -nargs=0 CrystalDef call crystal_lang#jump_to_definition(expand('%'), getpos('.'))
|
||||||
|
command! -buffer -nargs=* CrystalContext echo crystal_lang#context(expand('%'), getpos('.'), <q-args>).output
|
||||||
|
command! -buffer -nargs=* CrystalHierarchy echo crystal_lang#type_hierarchy(expand('%'), <q-args>)
|
||||||
|
command! -buffer -nargs=? CrystalSpecSwitch call crystal_lang#switch_spec_file(<f-args>)
|
||||||
|
command! -buffer -nargs=? CrystalSpecRunAll call crystal_lang#run_all_spec(<f-args>)
|
||||||
|
command! -buffer -nargs=? CrystalSpecRunCurrent call crystal_lang#run_current_spec(<f-args>)
|
||||||
|
command! -buffer -nargs=* -bar CrystalFormat call crystal_lang#format(<q-args>)
|
||||||
|
|
||||||
|
nnoremap <Plug>(crystal-jump-to-definition) :<C-u>CrystalDef<CR>
|
||||||
|
nnoremap <Plug>(crystal-show-context) :<C-u>CrystalContext<CR>
|
||||||
|
nnoremap <Plug>(crystal-spec-switch) :<C-u>CrystalSpecSwitch<CR>
|
||||||
|
nnoremap <Plug>(crystal-spec-run-all) :<C-u>CrystalSpecRunAll<CR>
|
||||||
|
nnoremap <Plug>(crystal-spec-run-current) :<C-u>CrystalSpecRunCurrent<CR>
|
||||||
|
nnoremap <Plug>(crystal-format) :<C-u>CrystalFormat<CR>
|
||||||
|
|
||||||
|
augroup plugin-ft-crystal
|
||||||
|
autocmd!
|
||||||
|
autocmd BufWritePre <buffer> if g:crystal_auto_format | CrystalFormat | endif
|
||||||
|
augroup END
|
||||||
|
|
||||||
if get(g:, 'crystal_define_mappings', 1)
|
if get(g:, 'crystal_define_mappings', 1)
|
||||||
nmap <buffer>gd <Plug>(crystal-jump-to-definition)
|
nmap <buffer>gd <Plug>(crystal-jump-to-definition)
|
||||||
nmap <buffer>gc <Plug>(crystal-show-context)
|
nmap <buffer>gc <Plug>(crystal-show-context)
|
||||||
|
|||||||
@@ -56,6 +56,6 @@ let &l:path =
|
|||||||
setlocal includeexpr=GetElixirFilename(v:fname)
|
setlocal includeexpr=GetElixirFilename(v:fname)
|
||||||
setlocal suffixesadd=.ex,.exs,.eex,.erl,.yrl,.hrl
|
setlocal suffixesadd=.ex,.exs,.eex,.erl,.yrl,.hrl
|
||||||
|
|
||||||
setlocal formatoptions-=t formatoptions+=croqlj
|
silent! setlocal formatoptions-=t formatoptions+=croqlj
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'emberscript') == -1
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'emberscript') == -1
|
||||||
|
|
||||||
" Language: ember-script
|
" Language: ember-script
|
||||||
" Maintainer: heartsentwined <heartsentwined@cogito-lab.com>
|
" Maintainer: Yulij Andreevich Lesov <yalesov@gmail.com>>
|
||||||
" URL: http://github.com/heartsentwined/vim-ember-script
|
" URL: http://github.com/yalesov/vim-ember-script
|
||||||
" Version: 1.0.1
|
" Version: 1.0.3
|
||||||
" Last Change: 2013 Apr 17
|
" Last Change: 2016 Jul 5
|
||||||
" License: GPL-3.0
|
" License: GPL-3.0
|
||||||
|
|
||||||
setlocal tabstop=2
|
setlocal tabstop=2
|
||||||
@@ -14,7 +14,11 @@ setlocal smarttab
|
|||||||
setlocal expandtab
|
setlocal expandtab
|
||||||
setlocal smartindent
|
setlocal smartindent
|
||||||
|
|
||||||
setlocal formatoptions-=t formatoptions+=croqlj
|
if v:version < 703
|
||||||
|
setlocal formatoptions-=t formatoptions+=croql
|
||||||
|
else
|
||||||
|
setlocal formatoptions-=t formatoptions+=croqlj
|
||||||
|
endif
|
||||||
setlocal comments=:#
|
setlocal comments=:#
|
||||||
setlocal commentstring=#\ %s
|
setlocal commentstring=#\ %s
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'emblem') == -1
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'emblem') == -1
|
||||||
|
|
||||||
" Language: emblem
|
" Language: emblem
|
||||||
" Maintainer: heartsentwined <heartsentwined@cogito-lab.com>
|
" Maintainer: Yulij Andreevich Lesov <yalesov@gmail.com>
|
||||||
" URL: http://github.com/heartsentwined/vim-emblem
|
" URL: http://github.com/yalesov/vim-emblem
|
||||||
" Version: 1.2.0
|
" Version: 2.0.0
|
||||||
" Last Change: 2013 Apr 22
|
" Last Change: 2016 Jul 5
|
||||||
" License: GPL-3.0
|
" License: GPL-3.0
|
||||||
|
|
||||||
setlocal tabstop=2
|
setlocal tabstop=2
|
||||||
|
|||||||
@@ -1,5 +1,8 @@
|
|||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'javascript') == -1
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'javascript') == -1
|
||||||
|
|
||||||
setlocal suffixesadd+=.js
|
setlocal suffixesadd+=.js
|
||||||
|
if (v:version < 704 || (v:version == 704 && !has('patch002'))) && exists('®expengine')
|
||||||
|
set re=1
|
||||||
|
end
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|||||||
15
ftplugin/mako.vim
Normal file
15
ftplugin/mako.vim
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'mako') == -1
|
||||||
|
|
||||||
|
" Vim filetype plugin file
|
||||||
|
" Language: Mako
|
||||||
|
" Maintainer: Randy Stauner <randy@magnificent-tears.com>
|
||||||
|
" Last Change: 2014-02-07
|
||||||
|
" Version: 0.1
|
||||||
|
|
||||||
|
if exists("b:did_ftplugin") | finish | endif
|
||||||
|
let b:did_ftplugin = 1
|
||||||
|
|
||||||
|
setlocal comments=:##
|
||||||
|
setlocal commentstring=##%s
|
||||||
|
|
||||||
|
endif
|
||||||
@@ -1,54 +0,0 @@
|
|||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'markdown') == -1
|
|
||||||
|
|
||||||
" Vim filetype plugin
|
|
||||||
" Language: Markdown
|
|
||||||
" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
|
|
||||||
" Last Change: 2013 May 30
|
|
||||||
|
|
||||||
if exists("b:did_ftplugin")
|
|
||||||
finish
|
|
||||||
endif
|
|
||||||
|
|
||||||
runtime! ftplugin/html.vim ftplugin/html_*.vim ftplugin/html/*.vim
|
|
||||||
|
|
||||||
setlocal comments=fb:*,fb:-,fb:+,n:> commentstring=<!--%s-->
|
|
||||||
setlocal formatoptions+=tcqln formatoptions-=r formatoptions-=o
|
|
||||||
setlocal formatlistpat=^\\s*\\d\\+\\.\\s\\+\\\|^[-*+]\\s\\+\\\|^\\[^\\ze[^\\]]\\+\\]:
|
|
||||||
|
|
||||||
if exists('b:undo_ftplugin')
|
|
||||||
let b:undo_ftplugin .= "|setl cms< com< fo< flp<"
|
|
||||||
else
|
|
||||||
let b:undo_ftplugin = "setl cms< com< fo< flp<"
|
|
||||||
endif
|
|
||||||
|
|
||||||
function! MarkdownFold()
|
|
||||||
let line = getline(v:lnum)
|
|
||||||
|
|
||||||
" Regular headers
|
|
||||||
let depth = match(line, '\(^#\+\)\@<=\( .*$\)\@=')
|
|
||||||
if depth > 0
|
|
||||||
return ">" . depth
|
|
||||||
endif
|
|
||||||
|
|
||||||
" Setext style headings
|
|
||||||
let nextline = getline(v:lnum + 1)
|
|
||||||
if (line =~ '^.\+$') && (nextline =~ '^=\+$')
|
|
||||||
return ">1"
|
|
||||||
endif
|
|
||||||
|
|
||||||
if (line =~ '^.\+$') && (nextline =~ '^-\+$')
|
|
||||||
return ">2"
|
|
||||||
endif
|
|
||||||
|
|
||||||
return "="
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
if has("folding") && exists("g:markdown_folding")
|
|
||||||
setlocal foldexpr=MarkdownFold()
|
|
||||||
setlocal foldmethod=expr
|
|
||||||
let b:undo_ftplugin .= " foldexpr< foldmethod<"
|
|
||||||
endif
|
|
||||||
|
|
||||||
" vim:set sw=2:
|
|
||||||
|
|
||||||
endif
|
|
||||||
@@ -77,20 +77,20 @@ function! s:query_path(root) abort
|
|||||||
let prefix = ''
|
let prefix = ''
|
||||||
endif
|
endif
|
||||||
if &shellxquote == "'"
|
if &shellxquote == "'"
|
||||||
let path_check = prefix.'ruby -e "' . code . '"'
|
let path_check = prefix.'ruby -e --disable-gems"' . code . '"'
|
||||||
else
|
else
|
||||||
let path_check = prefix."ruby -e '" . code . "'"
|
let path_check = prefix."ruby -e --disable-gems'" . code . "'"
|
||||||
endif
|
endif
|
||||||
|
|
||||||
let cd = haslocaldir() ? 'lcd' : 'cd'
|
let cd = haslocaldir() ? 'lcd' : 'cd'
|
||||||
let cwd = getcwd()
|
let cwd = fnameescape(getcwd())
|
||||||
try
|
try
|
||||||
exe cd fnameescape(a:root)
|
exe cd fnameescape(a:root)
|
||||||
let path = split(system(path_check),',')
|
let path = split(system(path_check),',')
|
||||||
exe cd fnameescape(cwd)
|
exe cd cwd
|
||||||
return path
|
return path
|
||||||
finally
|
finally
|
||||||
exe cd fnameescape(cwd)
|
exe cd cwd
|
||||||
endtry
|
endtry
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
@@ -186,7 +186,7 @@ if !exists("g:no_plugin_maps") && !exists("g:no_ruby_maps")
|
|||||||
\."| sil! exe 'unmap <buffer> [[' | sil! exe 'unmap <buffer> ]]' | sil! exe 'unmap <buffer> []' | sil! exe 'unmap <buffer> ]['"
|
\."| sil! exe 'unmap <buffer> [[' | sil! exe 'unmap <buffer> ]]' | sil! exe 'unmap <buffer> []' | sil! exe 'unmap <buffer> ]['"
|
||||||
\."| sil! exe 'unmap <buffer> [m' | sil! exe 'unmap <buffer> ]m' | sil! exe 'unmap <buffer> [M' | sil! exe 'unmap <buffer> ]M'"
|
\."| sil! exe 'unmap <buffer> [m' | sil! exe 'unmap <buffer> ]m' | sil! exe 'unmap <buffer> [M' | sil! exe 'unmap <buffer> ]M'"
|
||||||
|
|
||||||
if maparg('im','n') == ''
|
if maparg('im','x') == '' && maparg('im','o') == '' && maparg('am','x') == '' && maparg('am','o') == ''
|
||||||
onoremap <silent> <buffer> im :<C-U>call <SID>wrap_i('[m',']M')<CR>
|
onoremap <silent> <buffer> im :<C-U>call <SID>wrap_i('[m',']M')<CR>
|
||||||
onoremap <silent> <buffer> am :<C-U>call <SID>wrap_a('[m',']M')<CR>
|
onoremap <silent> <buffer> am :<C-U>call <SID>wrap_a('[m',']M')<CR>
|
||||||
xnoremap <silent> <buffer> im :<C-U>call <SID>wrap_i('[m',']M')<CR>
|
xnoremap <silent> <buffer> im :<C-U>call <SID>wrap_i('[m',']M')<CR>
|
||||||
@@ -196,7 +196,7 @@ if !exists("g:no_plugin_maps") && !exists("g:no_ruby_maps")
|
|||||||
\."| sil! exe 'xunmap <buffer> im' | sil! exe 'xunmap <buffer> am'"
|
\."| sil! exe 'xunmap <buffer> im' | sil! exe 'xunmap <buffer> am'"
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if maparg('iM','n') == ''
|
if maparg('iM','x') == '' && maparg('iM','o') == '' && maparg('aM','x') == '' && maparg('aM','o') == ''
|
||||||
onoremap <silent> <buffer> iM :<C-U>call <SID>wrap_i('[[','][')<CR>
|
onoremap <silent> <buffer> iM :<C-U>call <SID>wrap_i('[[','][')<CR>
|
||||||
onoremap <silent> <buffer> aM :<C-U>call <SID>wrap_a('[[','][')<CR>
|
onoremap <silent> <buffer> aM :<C-U>call <SID>wrap_a('[[','][')<CR>
|
||||||
xnoremap <silent> <buffer> iM :<C-U>call <SID>wrap_i('[[','][')<CR>
|
xnoremap <silent> <buffer> iM :<C-U>call <SID>wrap_i('[[','][')<CR>
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'rust') == -1
|
|||||||
" Description: Vim syntax file for Rust
|
" Description: Vim syntax file for Rust
|
||||||
" Maintainer: Chris Morgan <me@chrismorgan.info>
|
" Maintainer: Chris Morgan <me@chrismorgan.info>
|
||||||
" Maintainer: Kevin Ballard <kevin@sb.org>
|
" Maintainer: Kevin Ballard <kevin@sb.org>
|
||||||
" Last Change: January 29, 2015
|
" Last Change: June 08, 2016
|
||||||
|
|
||||||
if exists("b:did_ftplugin")
|
if exists("b:did_ftplugin")
|
||||||
finish
|
finish
|
||||||
@@ -14,6 +14,9 @@ let b:did_ftplugin = 1
|
|||||||
let s:save_cpo = &cpo
|
let s:save_cpo = &cpo
|
||||||
set cpo&vim
|
set cpo&vim
|
||||||
|
|
||||||
|
augroup rust.vim
|
||||||
|
autocmd!
|
||||||
|
|
||||||
" Variables {{{1
|
" Variables {{{1
|
||||||
|
|
||||||
" The rust source code at present seems to typically omit a leader on /*!
|
" The rust source code at present seems to typically omit a leader on /*!
|
||||||
@@ -56,7 +59,33 @@ if exists("g:loaded_delimitMate")
|
|||||||
if exists("b:delimitMate_excluded_regions")
|
if exists("b:delimitMate_excluded_regions")
|
||||||
let b:rust_original_delimitMate_excluded_regions = b:delimitMate_excluded_regions
|
let b:rust_original_delimitMate_excluded_regions = b:delimitMate_excluded_regions
|
||||||
endif
|
endif
|
||||||
let b:delimitMate_excluded_regions = delimitMate#Get("excluded_regions") . ',rustLifetimeCandidate,rustGenericLifetimeCandidate'
|
|
||||||
|
let s:delimitMate_extra_excluded_regions = ',rustLifetimeCandidate,rustGenericLifetimeCandidate'
|
||||||
|
|
||||||
|
" For this buffer, when delimitMate issues the `User delimitMate_map`
|
||||||
|
" event in the autocommand system, add the above-defined extra excluded
|
||||||
|
" regions to delimitMate's state, if they have not already been added.
|
||||||
|
autocmd User <buffer>
|
||||||
|
\ if expand('<afile>') ==# 'delimitMate_map' && match(
|
||||||
|
\ delimitMate#Get("excluded_regions"),
|
||||||
|
\ s:delimitMate_extra_excluded_regions) == -1
|
||||||
|
\| let b:delimitMate_excluded_regions =
|
||||||
|
\ delimitMate#Get("excluded_regions")
|
||||||
|
\ . s:delimitMate_extra_excluded_regions
|
||||||
|
\|endif
|
||||||
|
|
||||||
|
" For this buffer, when delimitMate issues the `User delimitMate_unmap`
|
||||||
|
" event in the autocommand system, delete the above-defined extra excluded
|
||||||
|
" regions from delimitMate's state (the deletion being idempotent and
|
||||||
|
" having no effect if the extra excluded regions are not present in the
|
||||||
|
" targeted part of delimitMate's state).
|
||||||
|
autocmd User <buffer>
|
||||||
|
\ if expand('<afile>') ==# 'delimitMate_unmap'
|
||||||
|
\| let b:delimitMate_excluded_regions = substitute(
|
||||||
|
\ delimitMate#Get("excluded_regions"),
|
||||||
|
\ '\C\V' . s:delimitMate_extra_excluded_regions,
|
||||||
|
\ '', 'g')
|
||||||
|
\|endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if has("folding") && exists('g:rust_fold') && g:rust_fold != 0
|
if has("folding") && exists('g:rust_fold') && g:rust_fold != 0
|
||||||
@@ -161,10 +190,13 @@ let b:undo_ftplugin = "
|
|||||||
\|ounmap <buffer> ]]
|
\|ounmap <buffer> ]]
|
||||||
\|set matchpairs-=<:>
|
\|set matchpairs-=<:>
|
||||||
\|unlet b:match_skip
|
\|unlet b:match_skip
|
||||||
|
\|augroup! rust.vim
|
||||||
\"
|
\"
|
||||||
|
|
||||||
" }}}1
|
" }}}1
|
||||||
|
|
||||||
|
augroup END
|
||||||
|
|
||||||
let &cpo = s:save_cpo
|
let &cpo = s:save_cpo
|
||||||
unlet s:save_cpo
|
unlet s:save_cpo
|
||||||
|
|
||||||
|
|||||||
13
ftplugin/slim.vim
Normal file
13
ftplugin/slim.vim
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'slim') == -1
|
||||||
|
|
||||||
|
if exists("b:did_ftplugin")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
let b:did_ftplugin = 1
|
||||||
|
|
||||||
|
let b:undo_ftplugin = "setl isk<"
|
||||||
|
|
||||||
|
setlocal iskeyword+=-
|
||||||
|
setlocal commentstring=/%s
|
||||||
|
|
||||||
|
endif
|
||||||
5
ftplugin/tmux.vim
Normal file
5
ftplugin/tmux.vim
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'tmux') == -1
|
||||||
|
|
||||||
|
setlocal commentstring=#\ %s
|
||||||
|
|
||||||
|
endif
|
||||||
@@ -16,7 +16,7 @@ setlocal formatoptions=cl
|
|||||||
|
|
||||||
let s:comment = '\v^\s*#' " # comment
|
let s:comment = '\v^\s*#' " # comment
|
||||||
let s:array_entry = '\v^\s*-\s' " - foo
|
let s:array_entry = '\v^\s*-\s' " - foo
|
||||||
let s:named_module_entry = '\v^\s*-\s*(name|hosts):\s*\S' " - name: 'do stuff'
|
let s:named_module_entry = '\v^\s*-\s*(name|hosts|role):\s*\S' " - name: 'do stuff'
|
||||||
let s:dictionary_entry = '\v^\s*[^:-]+:\s*$' " with_items:
|
let s:dictionary_entry = '\v^\s*[^:-]+:\s*$' " with_items:
|
||||||
let s:key_value = '\v^\s*[^:-]+:\s*\S' " apt: name=package
|
let s:key_value = '\v^\s*[^:-]+:\s*\S' " apt: name=package
|
||||||
let s:scalar_value = '\v:\s*[>|\|]\s*$' " shell: >
|
let s:scalar_value = '\v:\s*[>|\|]\s*$' " shell: >
|
||||||
|
|||||||
@@ -7,13 +7,20 @@ if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'blade') == -1
|
|||||||
if exists("b:did_indent")
|
if exists("b:did_indent")
|
||||||
finish
|
finish
|
||||||
endif
|
endif
|
||||||
|
|
||||||
runtime! indent/html.vim
|
runtime! indent/html.vim
|
||||||
|
let s:htmlindent = &indentexpr
|
||||||
unlet! b:did_indent
|
unlet! b:did_indent
|
||||||
|
|
||||||
|
runtime! indent/php.vim
|
||||||
|
let s:phpindent = &indentexpr
|
||||||
|
unlet! b:did_indent
|
||||||
|
|
||||||
let b:did_indent = 1
|
let b:did_indent = 1
|
||||||
|
|
||||||
setlocal autoindent
|
setlocal autoindent
|
||||||
setlocal indentexpr=GetBladeIndent()
|
setlocal indentexpr=GetBladeIndent()
|
||||||
setlocal indentkeys=o,O,*<Return>,<>>,!^F,=@else,=@end,=@empty,=@show
|
setlocal indentkeys=o,O,*<Return>,<>>,!^F,=@else,=@end,=@empty,=@show,=@stop
|
||||||
|
|
||||||
" Only define the function once.
|
" Only define the function once.
|
||||||
if exists("*GetBladeIndent")
|
if exists("*GetBladeIndent")
|
||||||
@@ -29,27 +36,32 @@ function! GetBladeIndent()
|
|||||||
let line = substitute(substitute(getline(lnum), '\s\+$', '', ''), '^\s\+', '', '')
|
let line = substitute(substitute(getline(lnum), '\s\+$', '', ''), '^\s\+', '', '')
|
||||||
let cline = substitute(substitute(getline(v:lnum), '\s\+$', '', ''), '^\s\+', '', '')
|
let cline = substitute(substitute(getline(v:lnum), '\s\+$', '', ''), '^\s\+', '', '')
|
||||||
let indent = indent(lnum)
|
let indent = indent(lnum)
|
||||||
let cindent = indent(v:lnum)
|
if cline =~# '@\%(else\|elseif\|empty\|end\|show\|stop\)' ||
|
||||||
if cline =~# '@\%(else\|elseif\|empty\|end\|show\)'
|
\ cline =~# '\%(<?.*\)\@<!?>\|\%({{.*\)\@<!}}\|\%({!!.*\)\@<!!!}'
|
||||||
let indent = indent - &sw
|
let indent = indent - &sw
|
||||||
|
elseif line =~# '<?\%(.*?>\)\@!'
|
||||||
|
let indent = indent + &sw
|
||||||
else
|
else
|
||||||
if exists("*GetBladeIndentCustom")
|
if exists("*GetBladeIndentCustom")
|
||||||
let hindent = GetBladeIndentCustom()
|
let hindent = GetBladeIndentCustom()
|
||||||
|
elseif searchpair('@include\s*(', '', ')', 'bWr') ||
|
||||||
|
\ searchpair('{!!', '', '!!}', 'bWr') ||
|
||||||
|
\ searchpair('{{', '', '}}', 'bWr') ||
|
||||||
|
\ searchpair('<?', '', '?>', 'bWr')
|
||||||
|
execute 'let hindent = ' . s:phpindent
|
||||||
else
|
else
|
||||||
let hindent = HtmlIndent()
|
execute 'let hindent = ' . s:htmlindent
|
||||||
endif
|
endif
|
||||||
if hindent > -1
|
if hindent > -1
|
||||||
let indent = hindent
|
let indent = hindent
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
let increase = indent + &sw
|
let increase = indent + &sw
|
||||||
if indent = indent(lnum)
|
|
||||||
let indent = cindent <= indent ? -1 : increase
|
|
||||||
endif
|
|
||||||
|
|
||||||
if line =~# '@\%(section\)\%(.*\s*@end\)\@!' && line !~# '@\%(section\)\s*([^,]*)'
|
if line =~# '@\%(section\)\%(.*@end\)\@!' && line !~# '@\%(section\)\s*([^,]*)'
|
||||||
return indent
|
return indent
|
||||||
elseif line =~# '@\%(if\|elseif\|else\|unless\|foreach\|forelse\|for\|while\|empty\|push\|section\|can\)\%(.*\s*@end\)\@!'
|
elseif line =~# '@\%(if\|elseif\|else\|unless\|foreach\|forelse\|for\|while\|empty\|push\|section\|can\|hasSection\)\%(.*@end\|.*@stop\)\@!' ||
|
||||||
|
\ line =~# '{{\%(.*}}\)\@!' || line =~# '{!!\%(.*!!}\)\@!'
|
||||||
return increase
|
return increase
|
||||||
else
|
else
|
||||||
return indent
|
return indent
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'emberscript') == -1
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'emberscript') == -1
|
||||||
|
|
||||||
" Language: ember-script
|
" Language: ember-script
|
||||||
" Maintainer: heartsentwined <heartsentwined@cogito-lab.com>
|
" Maintainer: Yulij Andreevich Lesov <yalesov@gmail.com>>
|
||||||
" URL: http://github.com/heartsentwined/vim-ember-script
|
" URL: http://github.com/yalesov/vim-ember-script
|
||||||
" Version: 1.0.1
|
" Version: 1.0.3
|
||||||
" Last Change: 2013 Apr 17
|
" Last Change: 2016 Jul 5
|
||||||
" License: GPL-3.0
|
" License: GPL-3.0
|
||||||
|
|
||||||
if exists('b:did_indent')
|
if exists('b:did_indent')
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'emblem') == -1
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'emblem') == -1
|
||||||
|
|
||||||
" Language: emblem
|
" Language: emblem
|
||||||
" Maintainer: heartsentwined <heartsentwined@cogito-lab.com>
|
" Maintainer: Yulij Andreevich Lesov <yalesov@gmail.com>
|
||||||
" URL: http://github.com/heartsentwined/vim-emblem
|
" URL: http://github.com/yalesov/vim-emblem
|
||||||
" Version: 1.2.0
|
" Version: 2.0.0
|
||||||
" Last Change: 2013 Apr 22
|
" Last Change: 2016 Jul 5
|
||||||
" License: GPL-3.0
|
" License: GPL-3.0
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|||||||
@@ -77,6 +77,6 @@ function! GoIndent(lnum)
|
|||||||
return ind
|
return ind
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
" vim:ts=4:sw=4:et
|
" vim: sw=2 ts=2 et
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|||||||
@@ -45,4 +45,6 @@ function! GetGoHTMLTmplIndent(lnum)
|
|||||||
return ind
|
return ind
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
" vim: sw=2 ts=2 et
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|||||||
@@ -113,24 +113,22 @@ function! GetHaskellIndent()
|
|||||||
let l:hlstack = s:getHLStack()
|
let l:hlstack = s:getHLStack()
|
||||||
|
|
||||||
" do not indent in strings and quasiquotes
|
" do not indent in strings and quasiquotes
|
||||||
if index(l:hlstack, 'haskellString') > -1 || index(l:hlstack, 'haskellQuasiQuote') > -1
|
if index(l:hlstack, 'haskellQuasiQuote') > -1 || index(l:hlstack, 'haskellBlockComment') > -1
|
||||||
return -1
|
return -1
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" blockcomment handling
|
|
||||||
if index(l:hlstack, 'haskellBlockComment') > -1
|
|
||||||
for l:c in range(v:lnum - 1, 0, -1)
|
|
||||||
let l:line = getline(l:c)
|
|
||||||
if l:line =~ '{-'
|
|
||||||
return 1 + match(l:line, '{-')
|
|
||||||
endif
|
|
||||||
endfor
|
|
||||||
return 1
|
|
||||||
endif
|
|
||||||
|
|
||||||
let l:prevline = getline(v:lnum - 1)
|
let l:prevline = getline(v:lnum - 1)
|
||||||
let l:line = getline(v:lnum)
|
let l:line = getline(v:lnum)
|
||||||
|
|
||||||
|
" indent multiline strings
|
||||||
|
if index(l:hlstack, 'haskellString') > -1
|
||||||
|
if l:line =~ '^\s*\\'
|
||||||
|
return match(l:prevline, '["\\]')
|
||||||
|
else
|
||||||
|
return - 1
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
" reset
|
" reset
|
||||||
if l:prevline =~ '^\s*$' && l:line !~ '^\s*\S'
|
if l:prevline =~ '^\s*$' && l:line !~ '^\s*\S'
|
||||||
return 0
|
return 0
|
||||||
@@ -319,7 +317,10 @@ function! GetHaskellIndent()
|
|||||||
" foo
|
" foo
|
||||||
" >>{
|
" >>{
|
||||||
if l:line =~ '^\s*{' && l:prevline !~ '^{'
|
if l:line =~ '^\s*{' && l:prevline !~ '^{'
|
||||||
return match(l:prevline, '\S') + &shiftwidth
|
let l:s = match(l:prevline, '\S')
|
||||||
|
if l:s >= 0
|
||||||
|
return l:s + &shiftwidth
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" in foo
|
" in foo
|
||||||
|
|||||||
@@ -18,7 +18,8 @@ setlocal nosmartindent
|
|||||||
" Now, set up our indentation expression and keys that trigger it.
|
" Now, set up our indentation expression and keys that trigger it.
|
||||||
setlocal indentexpr=GetJavascriptIndent()
|
setlocal indentexpr=GetJavascriptIndent()
|
||||||
setlocal formatexpr=Fixedgq(v:lnum,v:count)
|
setlocal formatexpr=Fixedgq(v:lnum,v:count)
|
||||||
setlocal indentkeys=0{,0},0),0],0\,:,!^F,o,O,e
|
setlocal indentkeys=0{,0},0),0],0\,*<Return>,:,!^F,o,O,e
|
||||||
|
setlocal cinoptions+=j1,J1,c1
|
||||||
|
|
||||||
" Only define the function once.
|
" Only define the function once.
|
||||||
if exists("*GetJavascriptIndent")
|
if exists("*GetJavascriptIndent")
|
||||||
@@ -42,57 +43,62 @@ endif
|
|||||||
" 1. Variables {{{1
|
" 1. Variables {{{1
|
||||||
" ============
|
" ============
|
||||||
|
|
||||||
let s:js_keywords = '^\s*\(break\|catch\|const\|continue\|debugger\|delete\|do\|else\|finally\|for\|function\|if\|in\|instanceof\|let\|new\|return\|switch\|this\|throw\|try\|typeof\|var\|void\|while\|with\)'
|
let s:line_pre = '^\s*\%(\/\*.*\*\/\s*\)*'
|
||||||
let s:expr_case = '^\s*\(case\s\+[^\:]*\|default\)\s*:\s*'
|
let s:js_keywords = s:line_pre . '\%(break\|import\|export\|catch\|const\|continue\|debugger\|delete\|do\|else\|finally\|for\|function\|if\|in\|instanceof\|let\|new\|return\|switch\|this\|throw\|try\|typeof\|var\|void\|while\|with\)\>\C'
|
||||||
|
let s:expr_case = s:line_pre . '\%(\%(case\>.*\)\|default\)\s*:\C'
|
||||||
" Regex of syntax group names that are or delimit string or are comments.
|
" Regex of syntax group names that are or delimit string or are comments.
|
||||||
let s:syng_strcom = '\%(\%(template\)\@<!string\|regex\|comment\)\c'
|
let s:syng_strcom = '\%(string\|regex\|special\|doc\|comment\|template\)\c'
|
||||||
|
|
||||||
" Regex of syntax group names that are or delimit template strings
|
|
||||||
let s:syng_template = 'template\c'
|
|
||||||
|
|
||||||
" Regex of syntax group names that are strings.
|
" Regex of syntax group names that are strings.
|
||||||
let s:syng_string = 'regex\c'
|
let s:syng_string = 'regex\c'
|
||||||
|
|
||||||
" Regex of syntax group names that are strings or documentation.
|
" Regex of syntax group names that are strings or documentation.
|
||||||
let s:syng_multiline = 'comment\c'
|
let s:syng_comment = '\%(comment\|doc\)\c'
|
||||||
|
|
||||||
" Regex of syntax group names that are line comment.
|
|
||||||
let s:syng_linecom = 'linecomment\c'
|
|
||||||
|
|
||||||
" Expression used to check whether we should skip a match with searchpair().
|
" Expression used to check whether we should skip a match with searchpair().
|
||||||
let s:skip_expr = "synIDattr(synID(line('.'),col('.'),1),'name') =~ '".s:syng_strcom."'"
|
let s:skip_expr = "synIDattr(synID(line('.'),col('.'),1),'name') =~ '".s:syng_strcom."'"
|
||||||
|
|
||||||
let s:line_term = '\s*\%(\%(\/\/\).*\)\=$'
|
func s:lookForParens(start,end,flags,stop)
|
||||||
|
try
|
||||||
|
return searchpair(a:start,'',a:end,a:flags,s:skip_expr,a:stop,300)
|
||||||
|
catch /E118/
|
||||||
|
return searchpair(a:start,'',a:end,a:flags,0,a:stop)
|
||||||
|
endtry
|
||||||
|
endfunc
|
||||||
|
|
||||||
|
let s:line_term = '\s*\%(\%(\/\/.*\)\=\|\%(\/\*.*\*\/\s*\)*\)$'
|
||||||
|
|
||||||
" Regex that defines continuation lines, not including (, {, or [.
|
" Regex that defines continuation lines, not including (, {, or [.
|
||||||
let s:continuation_regex = '\%([\\*/.:]\|+\@<!+\|-\@<!-\|\%(<%\)\@<!=\|\W[|&?]\|||\|&&\|[^=]=[^=>].*,\)' . s:line_term
|
let s:continuation_regex = '\%([*.?:]\|+\@<!+\|-\@<!-\|\*\@<!\/\|=\|||\|&&\)' . s:line_term
|
||||||
|
|
||||||
" Regex that defines continuation lines.
|
let s:one_line_scope_regex = '\%(\<else\>\|=>\)\C' . s:line_term
|
||||||
" TODO: this needs to deal with if ...: and so on
|
|
||||||
let s:msl_regex = s:continuation_regex.'\|'.s:expr_case
|
|
||||||
|
|
||||||
let s:one_line_scope_regex = '\%(\%(\<else\>\|\<\%(if\|for\|while\)\>\s*(\%([^()]*\|[^()]*(\%([^()]*\|[^()]*(\%([^()]*\|[^()]*([^()]*)[^()]*\))[^()]*\))[^()]*\))\)\|=>\)' . s:line_term
|
function s:Onescope(lnum)
|
||||||
|
if getline(a:lnum) =~ s:one_line_scope_regex
|
||||||
|
return 1
|
||||||
|
end
|
||||||
|
let mypos = col('.')
|
||||||
|
call cursor(a:lnum, 1)
|
||||||
|
if search('.*\zs\<\%(while\|for\|if\)\>\s*(\C', 'ce', a:lnum) > 0 &&
|
||||||
|
\ s:lookForParens('(', ')', 'W', a:lnum) > 0 &&
|
||||||
|
\ col('.') == strlen(s:RemoveTrailingComments(getline(a:lnum)))
|
||||||
|
call cursor(a:lnum, mypos)
|
||||||
|
return 1
|
||||||
|
else
|
||||||
|
call cursor(a:lnum, mypos)
|
||||||
|
return 0
|
||||||
|
end
|
||||||
|
endfunction
|
||||||
|
|
||||||
" Regex that defines blocks.
|
" Regex that defines blocks.
|
||||||
let s:block_regex = '\%([{([]\)\s*\%(|\%([*@]\=\h\w*,\=\s*\)\%(,\s*[*@]\=\h\w*\)*|\)\=' . s:line_term
|
let s:block_regex = '[{([]' . s:line_term
|
||||||
|
|
||||||
let s:operator_first = '^\s*\%([*/.:?]\|\([-+]\)\1\@!\|||\|&&\)'
|
let s:operator_first = s:line_pre . '\%([,:?]\|\([-/.+*]\)\%(\1\|\*\|\/\)\@!\|||\|&&\)'
|
||||||
|
|
||||||
let s:var_stmt = '^\s*\%(const\|let\|var\)'
|
let s:var_stmt = s:line_pre . '\%(const\|let\|var\)\s\+\C'
|
||||||
|
|
||||||
let s:comma_first = '^\s*,'
|
let s:comma_last = ',' . s:line_term
|
||||||
let s:comma_last = ',\s*$'
|
|
||||||
|
|
||||||
let s:case_indent = s:sw()
|
|
||||||
let s:case_indent_after = s:sw()
|
|
||||||
let s:m = matchlist(&cinoptions, ':\(.\)')
|
|
||||||
if (len(s:m) > 2)
|
|
||||||
let s:case_indent = s:m[1]
|
|
||||||
endif
|
|
||||||
let s:m = matchlist(&cinoptions, '=\(.\)')
|
|
||||||
if (len(s:m) > 2)
|
|
||||||
let s:case_indent_after = s:m[1]
|
|
||||||
endif
|
|
||||||
" 2. Auxiliary Functions {{{1
|
" 2. Auxiliary Functions {{{1
|
||||||
" ======================
|
" ======================
|
||||||
|
|
||||||
@@ -106,38 +112,24 @@ function s:IsInString(lnum, col)
|
|||||||
return synIDattr(synID(a:lnum, a:col, 1), 'name') =~ s:syng_string
|
return synIDattr(synID(a:lnum, a:col, 1), 'name') =~ s:syng_string
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
" Check if the character at lnum:col is inside a template string.
|
|
||||||
function s:IsInTempl(lnum, col)
|
|
||||||
return synIDattr(synID(a:lnum, a:col, 1), 'name') =~ s:syng_template
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
" Check if the character at lnum:col is inside a multi-line comment.
|
" Check if the character at lnum:col is inside a multi-line comment.
|
||||||
function s:IsInMultilineComment(lnum, col)
|
function s:IsInComment(lnum, col)
|
||||||
return !s:IsLineComment(a:lnum, a:col) && synIDattr(synID(a:lnum, a:col, 1), 'name') =~ s:syng_multiline
|
return synIDattr(synID(a:lnum, a:col, 1), 'name') =~ s:syng_comment
|
||||||
endfunction
|
|
||||||
|
|
||||||
" Check if the character at lnum:col is a line comment.
|
|
||||||
function s:IsLineComment(lnum, col)
|
|
||||||
return synIDattr(synID(a:lnum, a:col, 1), 'name') =~ s:syng_linecom
|
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
" Find line above 'lnum' that isn't empty, in a comment, or in a string.
|
" Find line above 'lnum' that isn't empty, in a comment, or in a string.
|
||||||
function s:PrevNonBlankNonString(lnum)
|
function s:PrevNonBlankNonString(lnum)
|
||||||
let in_block = 0
|
|
||||||
let lnum = prevnonblank(a:lnum)
|
let lnum = prevnonblank(a:lnum)
|
||||||
while lnum > 0
|
while lnum > 0
|
||||||
" Go in and out of blocks comments as necessary.
|
|
||||||
" If the line isn't empty (with opt. comment) or in a string, end search.
|
|
||||||
let line = getline(lnum)
|
let line = getline(lnum)
|
||||||
if s:IsInMultilineComment(lnum, matchend(line, '/\*') - 1)
|
let com = match(line, '\%(\/\*.*\)\@<!\*\/') + 1
|
||||||
if in_block
|
if s:IsInComment(lnum, com)
|
||||||
let in_block = 0
|
call cursor(lnum, com)
|
||||||
else
|
let parlnum = search('\%(\/\/.*\)\@<!\/\*', 'nbW')
|
||||||
break
|
if parlnum > 0
|
||||||
endif
|
let lnum = parlnum
|
||||||
elseif !in_block && s:IsInMultilineComment(lnum, matchend(line, '\*/') - 1)
|
end
|
||||||
let in_block = 1
|
elseif line !~ '^' . s:line_term && !s:IsInStringOrComment(lnum,1)
|
||||||
elseif !in_block && line !~ '^\s*\%(//\).*$' && !(s:IsInStringOrComment(lnum, 1) && s:IsInStringOrComment(lnum, strlen(line)))
|
|
||||||
break
|
break
|
||||||
endif
|
endif
|
||||||
let lnum = prevnonblank(lnum - 1)
|
let lnum = prevnonblank(lnum - 1)
|
||||||
@@ -150,23 +142,22 @@ function s:GetMSL(lnum, in_one_line_scope)
|
|||||||
" Start on the line we're at and use its indent.
|
" Start on the line we're at and use its indent.
|
||||||
let msl = a:lnum
|
let msl = a:lnum
|
||||||
let lnum = s:PrevNonBlankNonString(a:lnum - 1)
|
let lnum = s:PrevNonBlankNonString(a:lnum - 1)
|
||||||
while lnum > 0
|
while lnum > 0 && !s:Match(msl,s:line_pre . '[])}]')
|
||||||
" If we have a continuation line, or we're in a string, use line as MSL.
|
" If we have a continuation line, or we're in a string, use line as MSL.
|
||||||
" Otherwise, terminate search as we have found our MSL already.
|
" Otherwise, terminate search as we have found our MSL already.
|
||||||
let line = getline(lnum)
|
let line = getline(lnum)
|
||||||
let col = match(line, s:msl_regex) + 1
|
|
||||||
let line2 = getline(msl)
|
let line2 = getline(msl)
|
||||||
let col2 = matchend(line2, ')')
|
if ((s:Match(lnum,s:continuation_regex) || s:Match(lnum, s:comma_last)) &&
|
||||||
if (col > 0 && !s:IsInStringOrComment(lnum, col)) || s:IsInString(lnum, strlen(line))
|
\ !s:Match(lnum, s:expr_case)) || s:IsInString(lnum, strlen(line))
|
||||||
let msl = lnum
|
let msl = lnum
|
||||||
|
if s:Match(lnum, s:line_pre . '[]})]') && !a:in_one_line_scope
|
||||||
" if there are more closing brackets, continue from the line which has the matching opening bracket
|
call cursor(lnum,1)
|
||||||
elseif col2 > 0 && !s:IsInStringOrComment(msl, col2) && s:LineHasOpeningBrackets(msl)[0] == '2' && !a:in_one_line_scope
|
let parlnum = s:lookForParens('(\|{\|\[', ')\|}\|\]', 'nbW', 0)
|
||||||
call cursor(msl, 1)
|
if parlnum > 0
|
||||||
if searchpair('(', '', ')', 'bW', s:skip_expr) > 0
|
let lnum = parlnum
|
||||||
let lnum = line('.')
|
continue
|
||||||
let msl = lnum
|
end
|
||||||
endif
|
end
|
||||||
|
|
||||||
else
|
else
|
||||||
|
|
||||||
@@ -176,7 +167,7 @@ function s:GetMSL(lnum, in_one_line_scope)
|
|||||||
if a:in_one_line_scope
|
if a:in_one_line_scope
|
||||||
break
|
break
|
||||||
end
|
end
|
||||||
let msl_one_line = s:Match(lnum, s:one_line_scope_regex)
|
let msl_one_line = s:Onescope(lnum)
|
||||||
if msl_one_line == 0
|
if msl_one_line == 0
|
||||||
break
|
break
|
||||||
endif
|
endif
|
||||||
@@ -187,62 +178,53 @@ function s:GetMSL(lnum, in_one_line_scope)
|
|||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function s:RemoveTrailingComments(content)
|
function s:RemoveTrailingComments(content)
|
||||||
let single = '\/\/\(.*\)\s*$'
|
let single = '\/\/\%(.*\)\s*$'
|
||||||
let multi = '\/\*\(.*\)\*\/\s*$'
|
let multi = '\/\*\%(.*\)\*\/\s*$'
|
||||||
return substitute(substitute(a:content, single, '', ''), multi, '', '')
|
return substitute(substitute(substitute(a:content, single, '', ''), multi, '', ''), '\s\+$', '', '')
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
" Find if the string is inside var statement (but not the first string)
|
" Find if the string is inside var statement (but not the first string)
|
||||||
function s:InMultiVarStatement(lnum)
|
function s:InMultiVarStatement(lnum, cont, prev)
|
||||||
let lnum = s:PrevNonBlankNonString(a:lnum - 1)
|
let lnum = s:PrevNonBlankNonString(a:lnum - 1)
|
||||||
|
let cont = a:cont
|
||||||
|
let prev = a:prev
|
||||||
|
|
||||||
" let type = synIDattr(synID(lnum, indent(lnum) + 1, 0), 'name')
|
" let type = synIDattr(synID(lnum, indent(lnum) + 1, 0), 'name')
|
||||||
|
|
||||||
" loop through previous expressions to find a var statement
|
" loop through previous expressions to find a var statement
|
||||||
while lnum > 0
|
while lnum > 0 && (s:Match(lnum, s:comma_last) ||(cont && getline(lnum) =~ s:line_pre . '[]})]') ||
|
||||||
let line = getline(lnum)
|
\ s:Match(lnum,s:continuation_regex)) || (prev && (s:Match(prev, s:comma_last) ||
|
||||||
|
\ s:Match(prev,s:continuation_regex)))
|
||||||
" if the line is a js keyword
|
" if the line is a js keyword
|
||||||
if (line =~ s:js_keywords)
|
if cont
|
||||||
|
let cont = 0
|
||||||
|
call cursor(lnum,1)
|
||||||
|
let parlnum = s:lookForParens('(\|{\|\[', ')\|}\|\]', 'nbW', 0)
|
||||||
|
if parlnum > 0
|
||||||
|
let lnum = parlnum
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if s:Match(lnum, s:js_keywords)
|
||||||
" check if the line is a var stmt
|
" check if the line is a var stmt
|
||||||
" if the line has a comma first or comma last then we can assume that we
|
" if the line has a comma first or comma last then we can assume that we
|
||||||
" are in a multiple var statement
|
" are in a multiple var statement
|
||||||
if (line =~ s:var_stmt)
|
if s:Match(lnum, s:var_stmt) && (s:Match(lnum, s:comma_last)||s:Match(lnum,s:continuation_regex))
|
||||||
return lnum
|
return lnum
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" other js keywords, not a var
|
" other js keywords, not a var
|
||||||
|
if !s:Match(lnum, s:comma_last)||!s:Match(lnum,s:continuation_regex)
|
||||||
return 0
|
return 0
|
||||||
|
end
|
||||||
endif
|
endif
|
||||||
|
|
||||||
let lnum = s:PrevNonBlankNonString(lnum - 1)
|
let lnum = s:PrevNonBlankNonString(lnum - 1)
|
||||||
|
let prev = prev && lnum > 0 ? prev : 0
|
||||||
endwhile
|
endwhile
|
||||||
|
|
||||||
" beginning of program, not a var
|
" beginning of program, not a var
|
||||||
return 0
|
return 0
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
" Find line above with beginning of the var statement or returns 0 if it's not
|
|
||||||
" this statement
|
|
||||||
function s:GetVarIndent(lnum)
|
|
||||||
let lvar = s:InMultiVarStatement(a:lnum)
|
|
||||||
let prev_lnum = s:PrevNonBlankNonString(a:lnum - 1)
|
|
||||||
|
|
||||||
if lvar
|
|
||||||
let line = s:RemoveTrailingComments(getline(prev_lnum))
|
|
||||||
|
|
||||||
" if the previous line doesn't end in a comma, return to regular indent
|
|
||||||
if (line !~ s:comma_last)
|
|
||||||
return indent(prev_lnum) - s:sw()
|
|
||||||
else
|
|
||||||
return indent(lvar) + s:sw()
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
return -1
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
|
|
||||||
" Check if line 'lnum' has more opening brackets than closing ones.
|
" Check if line 'lnum' has more opening brackets than closing ones.
|
||||||
function s:LineHasOpeningBrackets(lnum)
|
function s:LineHasOpeningBrackets(lnum)
|
||||||
let open_0 = 0
|
let open_0 = 0
|
||||||
@@ -261,7 +243,7 @@ function s:LineHasOpeningBrackets(lnum)
|
|||||||
endif
|
endif
|
||||||
let pos = match(line, '[][(){}]', pos + 1)
|
let pos = match(line, '[][(){}]', pos + 1)
|
||||||
endwhile
|
endwhile
|
||||||
return (open_0 > 0 ? 1 : (open_0 == 0 ? 0 : 2)) . (open_2 > 0) . (open_4 > 0)
|
return (open_0 > 0 ? 1 : (open_0 == 0 ? 0 : 2)) . (open_2 > 0 ? 1 : (open_2 == 0 ? 0 : 2)) . (open_4 > 0 ? 1 : (open_4 == 0 ? 0 : 2))
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function s:Match(lnum, regex)
|
function s:Match(lnum, regex)
|
||||||
@@ -293,7 +275,9 @@ function s:IndentWithContinuation(lnum, ind, width)
|
|||||||
return msl_ind + a:width
|
return msl_ind + a:width
|
||||||
else
|
else
|
||||||
return msl_ind
|
return msl_ind
|
||||||
endif
|
end
|
||||||
|
elseif s:InMultiVarStatement(p_lnum, 0, s:PrevNonBlankNonString(p_lnum - 1))
|
||||||
|
return indent(p_lnum) - s:sw()
|
||||||
endif
|
endif
|
||||||
|
|
||||||
return a:ind
|
return a:ind
|
||||||
@@ -301,7 +285,7 @@ endfunction
|
|||||||
|
|
||||||
function s:InOneLineScope(lnum)
|
function s:InOneLineScope(lnum)
|
||||||
let msl = s:GetMSL(a:lnum, 1)
|
let msl = s:GetMSL(a:lnum, 1)
|
||||||
if msl > 0 && s:Match(msl, s:one_line_scope_regex)
|
if msl > 0 && s:Onescope(msl)
|
||||||
return msl
|
return msl
|
||||||
endif
|
endif
|
||||||
return 0
|
return 0
|
||||||
@@ -311,11 +295,11 @@ function s:ExitingOneLineScope(lnum)
|
|||||||
let msl = s:GetMSL(a:lnum, 1)
|
let msl = s:GetMSL(a:lnum, 1)
|
||||||
if msl > 0
|
if msl > 0
|
||||||
" if the current line is in a one line scope ..
|
" if the current line is in a one line scope ..
|
||||||
if s:Match(msl, s:one_line_scope_regex)
|
if s:Onescope(msl)
|
||||||
return 0
|
return 0
|
||||||
else
|
else
|
||||||
let prev_msl = s:GetMSL(msl - 1, 1)
|
let prev_msl = s:GetMSL(msl - 1, 1)
|
||||||
if s:Match(prev_msl, s:one_line_scope_regex)
|
if s:Onescope(prev_msl)
|
||||||
return prev_msl
|
return prev_msl
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
@@ -327,13 +311,13 @@ endfunction
|
|||||||
" =========================
|
" =========================
|
||||||
|
|
||||||
function GetJavascriptIndent()
|
function GetJavascriptIndent()
|
||||||
" 3.1. Setup {{{2
|
" 3.1. Setup {{{1
|
||||||
" ----------
|
" ----------
|
||||||
|
|
||||||
" Set up variables for restoring position in file. Could use v:lnum here.
|
" Set up variables for restoring position in file. Could use v:lnum here.
|
||||||
|
" Avoid use of line('.')/col('.') type functions as the curpos can change
|
||||||
let vcol = col('.')
|
let vcol = col('.')
|
||||||
|
|
||||||
" 3.2. Work on the current line {{{2
|
" 3.2. Work on the current line {{{1
|
||||||
" -----------------------------
|
" -----------------------------
|
||||||
|
|
||||||
let ind = -1
|
let ind = -1
|
||||||
@@ -341,128 +325,108 @@ function GetJavascriptIndent()
|
|||||||
let line = getline(v:lnum)
|
let line = getline(v:lnum)
|
||||||
" previous nonblank line number
|
" previous nonblank line number
|
||||||
let prevline = prevnonblank(v:lnum - 1)
|
let prevline = prevnonblank(v:lnum - 1)
|
||||||
|
" previous line of code
|
||||||
|
let lnum = s:PrevNonBlankNonString(v:lnum - 1)
|
||||||
|
|
||||||
if (line =~ s:expr_case)
|
" to not change multiline string values
|
||||||
if (getline(prevline) =~ s:expr_case)
|
if line !~ '^[''"`]' && synIDattr(synID(v:lnum, 1, 1), 'name') =~? 'string\|template'
|
||||||
return indent(prevline)
|
return -1
|
||||||
else
|
|
||||||
if (getline(prevline) =~ s:block_regex)
|
|
||||||
return indent(prevline) + s:case_indent
|
|
||||||
else
|
|
||||||
return indent(prevline) - s:case_indent_after
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
" If we got a closing bracket on an empty line, find its match and indent
|
|
||||||
" according to it. For parentheses we indent to its column - 1, for the
|
|
||||||
" others we indent to the containing line's MSL's level. Return -1 if fail.
|
|
||||||
let col = matchend(line, '^\s*[],})]')
|
|
||||||
if col > 0 && !s:IsInStringOrComment(v:lnum, col)
|
|
||||||
call cursor(v:lnum, col)
|
|
||||||
|
|
||||||
let lvar = s:InMultiVarStatement(v:lnum)
|
|
||||||
if lvar
|
|
||||||
let prevline_contents = s:RemoveTrailingComments(getline(prevline))
|
|
||||||
|
|
||||||
" check for comma first
|
|
||||||
if (line[col - 1] =~ ',')
|
|
||||||
" if the previous line ends in comma or semicolon don't indent
|
|
||||||
if (prevline_contents =~ '[;,]\s*$')
|
|
||||||
return indent(s:GetMSL(line('.'), 0))
|
|
||||||
" get previous line indent, if it's comma first return prevline indent
|
|
||||||
elseif (prevline_contents =~ s:comma_first)
|
|
||||||
return indent(prevline)
|
|
||||||
" otherwise we indent 1 level
|
|
||||||
else
|
|
||||||
return indent(lvar) + s:sw()
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
|
|
||||||
let bs = strpart('(){}[]', stridx(')}]', line[col - 1]) * 2, 2)
|
|
||||||
if searchpair(escape(bs[0], '\['), '', bs[1], 'bW', s:skip_expr) > 0
|
|
||||||
if line[col-1]==')' && col('.') != col('$') - 1
|
|
||||||
let ind = virtcol('.')-1
|
|
||||||
else
|
|
||||||
let ind = indent(s:GetMSL(line('.'), 0))
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
return ind
|
|
||||||
endif
|
|
||||||
|
|
||||||
" If the line is comma first, dedent 1 level
|
|
||||||
if (getline(prevline) =~ s:comma_first)
|
|
||||||
return indent(prevline) - s:sw()
|
|
||||||
endif
|
|
||||||
if (getline(prevline) =~ s:expr_case)
|
|
||||||
return indent(prevline) + s:case_indent_after
|
|
||||||
endif
|
|
||||||
|
|
||||||
" If line starts with an operator...
|
|
||||||
if (s:Match(v:lnum, s:operator_first))
|
|
||||||
if (s:Match(prevline, s:operator_first))
|
|
||||||
" and so does previous line, don't indent
|
|
||||||
return indent(prevline)
|
|
||||||
end
|
|
||||||
let counts = s:LineHasOpeningBrackets(prevline)
|
|
||||||
if counts[0] == '2'
|
|
||||||
call cursor(prevline, 1)
|
|
||||||
" Search for the opening tag
|
|
||||||
let mnum = searchpair('(', '', ')', 'bW', s:skip_expr)
|
|
||||||
if mnum > 0 && s:Match(mnum, s:operator_first)
|
|
||||||
return indent(mnum)
|
|
||||||
end
|
|
||||||
elseif counts[0] != '1' && counts[1] != '1' && counts[2] != '1'
|
|
||||||
" otherwise, indent 1 level
|
|
||||||
return indent(prevline) + s:sw()
|
|
||||||
end
|
|
||||||
" If previous line starts with an operator...
|
|
||||||
elseif s:Match(prevline, s:operator_first) && !s:Match(prevline, s:comma_last) && !s:Match(prevline, '};\=' . s:line_term)
|
|
||||||
let counts = s:LineHasOpeningBrackets(prevline)
|
|
||||||
if counts[0] == '2' && counts[1] == '1'
|
|
||||||
call cursor(prevline, 1)
|
|
||||||
" Search for the opening tag
|
|
||||||
let mnum = searchpair('(', '', ')', 'bW', s:skip_expr)
|
|
||||||
if mnum > 0 && !s:Match(mnum, s:operator_first)
|
|
||||||
return indent(mnum) + s:sw()
|
|
||||||
end
|
|
||||||
elseif counts[0] != '1' && counts[1] != '1' && counts[2] != '1'
|
|
||||||
return indent(prevline) - s:sw()
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
if getline(prevline) =~ '^\s*`$' && s:IsInTempl(v:lnum, 1)
|
|
||||||
if line !~ '^\s*`$'
|
|
||||||
return indent(prevline) + s:sw()
|
|
||||||
endif
|
|
||||||
elseif line =~ '^\s*`$' && s:IsInTempl(prevline, 1)
|
|
||||||
return indent(prevline) - s:sw()
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" If we are in a multi-line comment, cindent does the right thing.
|
" If we are in a multi-line comment, cindent does the right thing.
|
||||||
if s:IsInMultilineComment(v:lnum, 1) && !s:IsLineComment(v:lnum, 1)
|
if line !~ '^\%(\/\*\|\s*\/\/\)' && s:IsInComment(v:lnum, 1)
|
||||||
return cindent(v:lnum)
|
return cindent(v:lnum)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" Check for multiple var assignments
|
" single opening bracket will assume you want a c style of indenting
|
||||||
" let var_indent = s:GetVarIndent(v:lnum)
|
if line =~ s:line_pre . '{' && !s:Match(lnum,s:block_regex) &&
|
||||||
" if var_indent >= 0
|
\ !s:Match(lnum,s:comma_last)
|
||||||
" return var_indent
|
return cindent(v:lnum)
|
||||||
" endif
|
endif
|
||||||
|
|
||||||
" 3.3. Work on the previous line. {{{2
|
" cindent each line which has a switch label
|
||||||
|
if (line =~ s:expr_case)
|
||||||
|
let s:cpo_switch = &cpo
|
||||||
|
set cpo+=%
|
||||||
|
let ind = cindent(v:lnum)
|
||||||
|
let &cpo = s:cpo_switch
|
||||||
|
return ind
|
||||||
|
endif
|
||||||
|
|
||||||
|
" If we got a closing bracket on an empty line, find its match and indent
|
||||||
|
" according to it.
|
||||||
|
let col = line =~ s:line_pre . '[]})]'
|
||||||
|
if col > 0
|
||||||
|
let parlnum = v:lnum
|
||||||
|
while col
|
||||||
|
call cursor(parlnum, 1)
|
||||||
|
let parlnum = s:lookForParens('(\|{\|\[', ')\|}\|\]', 'nbW', 0)
|
||||||
|
let col = s:Match(parlnum, s:line_pre . '[]})]')
|
||||||
|
if col
|
||||||
|
continue
|
||||||
|
end
|
||||||
|
if parlnum > 0
|
||||||
|
let ind = s:InMultiVarStatement(parlnum, 0, 0)|| s:LineHasOpeningBrackets(parlnum) !~ '2' ?
|
||||||
|
\ indent(parlnum) : indent(s:GetMSL(parlnum, 0))
|
||||||
|
endif
|
||||||
|
endwhile
|
||||||
|
return ind
|
||||||
|
endif
|
||||||
|
|
||||||
|
|
||||||
|
" If line starts with an operator...
|
||||||
|
if (line =~ s:operator_first)
|
||||||
|
if (s:Match(lnum, s:operator_first) || (s:Match(lnum, s:line_pre . '[])}]') &&
|
||||||
|
\ !(s:Match(v:lnum,s:line_pre . '\.') && s:Match(lnum, ')' . s:line_term))))
|
||||||
|
" and so does previous line, don't indent
|
||||||
|
return indent(lnum)
|
||||||
|
end
|
||||||
|
let counts = s:LineHasOpeningBrackets(lnum)
|
||||||
|
if counts =~ '2'
|
||||||
|
call cursor(lnum, 1)
|
||||||
|
" Search for the opening tag
|
||||||
|
let parlnum = s:lookForParens('(\|{\|\[', ')\|}\|\]', 'nbW', 0)
|
||||||
|
if parlnum > 0
|
||||||
|
return !s:Match(parlnum, s:operator_first) &&
|
||||||
|
\ synIDattr(synID(v:lnum, 1, 1), 'name') !~? 'jsbracket\|jsparen\|jsobject' ?
|
||||||
|
\ indent(lnum) + s:sw() : indent(parlnum)
|
||||||
|
end
|
||||||
|
elseif synIDattr(synID(v:lnum, 1, 1), 'name') !~? 'jsbracket\|jsparen\|jsobject'
|
||||||
|
" otherwise, if not in an key/val;array item;param, indent 1 level
|
||||||
|
return indent(lnum) + s:sw()
|
||||||
|
end
|
||||||
|
|
||||||
|
" If previous line starts with an operator...
|
||||||
|
elseif (s:Match(lnum, s:operator_first) && !s:Match(lnum,s:continuation_regex)) ||
|
||||||
|
\ getline(lnum) =~ '[]})];\=' . s:line_term
|
||||||
|
let counts = s:LineHasOpeningBrackets(lnum)
|
||||||
|
if counts =~ '2' && !s:Match(lnum, s:operator_first)
|
||||||
|
call cursor(lnum, 1)
|
||||||
|
" Search for the opening tag
|
||||||
|
let mnum = s:lookForParens('(\|{\|\[', ')\|}\|\]', 'nbW', 0)
|
||||||
|
if mnum > 0 && (s:Match(mnum, s:operator_first) ||
|
||||||
|
\ (s:Onescope(s:PrevNonBlankNonString(mnum - 1))) && !s:Match(mnum, s:line_pre . '{'))
|
||||||
|
return indent(mnum) - s:sw()
|
||||||
|
end
|
||||||
|
elseif s:Match(lnum, s:operator_first)
|
||||||
|
if counts !~ '1'
|
||||||
|
return indent(lnum) - s:sw()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
" 3.3. Work on the previous line. {{{1
|
||||||
" -------------------------------
|
" -------------------------------
|
||||||
|
|
||||||
" If the line is empty and the previous nonblank line was a multi-line
|
" If the line is empty and the previous nonblank line was a multi-line
|
||||||
" comment, use that comment's indent. Deduct one char to account for the
|
" comment, use that comment's indent. Deduct one char to account for the
|
||||||
" space in ' */'.
|
" space in ' */'.
|
||||||
if line =~ '^\s*$' && s:IsInMultilineComment(prevline, 1)
|
if line =~ '^\s*$' && getline(prevline) =~ '\%(\%(^\s*\/\/\|\/\*\).*\)\@<!\*\/' &&
|
||||||
|
\ s:IsInComment(prevline, 1)
|
||||||
return indent(prevline) - 1
|
return indent(prevline) - 1
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" Find a non-blank, non-multi-line string line above the current line.
|
" Find a non-blank, non-multi-line string line above the current line.
|
||||||
let lnum = s:PrevNonBlankNonString(v:lnum - 1)
|
|
||||||
|
|
||||||
" If the line is empty and inside a string, use the previous line.
|
" If the line is empty and inside a string, use the previous line.
|
||||||
if line =~ '^\s*$' && lnum != prevline
|
if line =~ '^\s*$' && lnum != prevline
|
||||||
@@ -474,14 +438,10 @@ function GetJavascriptIndent()
|
|||||||
return 0
|
return 0
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
||||||
" If the previous line ended with a block opening, add a level of indent.
|
" If the previous line ended with a block opening, add a level of indent.
|
||||||
if s:Match(lnum, s:block_regex)
|
if s:Match(lnum, s:block_regex)
|
||||||
if (line =~ s:expr_case)
|
return s:InMultiVarStatement(lnum, 0, 0) || s:LineHasOpeningBrackets(lnum) !~ '2' ?
|
||||||
return indent(s:GetMSL(lnum, 0)) + s:sw()/2
|
\ indent(lnum) + s:sw() : indent(s:GetMSL(lnum, 0)) + s:sw()
|
||||||
else
|
|
||||||
return indent(s:GetMSL(lnum, 0)) + s:sw()
|
|
||||||
endif
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" Set up variables for current line.
|
" Set up variables for current line.
|
||||||
@@ -489,43 +449,32 @@ function GetJavascriptIndent()
|
|||||||
let ind = indent(lnum)
|
let ind = indent(lnum)
|
||||||
" If the previous line contained an opening bracket, and we are still in it,
|
" If the previous line contained an opening bracket, and we are still in it,
|
||||||
" add indent depending on the bracket type.
|
" add indent depending on the bracket type.
|
||||||
if line =~ '[[({]'
|
if s:Match(lnum, '[[({})\]]')
|
||||||
let counts = s:LineHasOpeningBrackets(lnum)
|
let counts = s:LineHasOpeningBrackets(lnum)
|
||||||
if counts[0] == '1' && searchpair('(', '', ')', 'bW', s:skip_expr) > 0
|
if counts =~ '2'
|
||||||
if col('.') + 1 == col('$') || line =~ s:one_line_scope_regex
|
call cursor(lnum,matchend(s:RemoveTrailingComments(line), '.*\zs[])}]'))
|
||||||
|
while s:lookForParens('(\|{\|\[', ')\|}\|\]', 'bW', 0) == lnum
|
||||||
|
call cursor(lnum, matchend(s:RemoveTrailingComments(strpart(line,0,col('.'))), '.*\zs[])}]'))
|
||||||
|
endwhile
|
||||||
|
let cur = line('.')
|
||||||
|
if cur < lnum && !s:InMultiVarStatement(cur,0,0)
|
||||||
|
return indent(s:GetMSL(cur, 0))
|
||||||
|
end
|
||||||
|
elseif counts =~ '1' || s:Onescope(lnum)
|
||||||
return ind + s:sw()
|
return ind + s:sw()
|
||||||
else
|
|
||||||
return virtcol('.')
|
|
||||||
endif
|
|
||||||
elseif counts[1] == '1' || counts[2] == '1' && counts[0] != '2'
|
|
||||||
return ind + s:sw()
|
|
||||||
else
|
|
||||||
call cursor(v:lnum, vcol)
|
|
||||||
end
|
|
||||||
elseif line =~ '.\+};\=' . s:line_term
|
|
||||||
call cursor(lnum, 1)
|
|
||||||
" Search for the opening tag
|
|
||||||
let mnum = searchpair('{', '', '}', 'bW', s:skip_expr)
|
|
||||||
if mnum > 0
|
|
||||||
return indent(s:GetMSL(mnum, 0))
|
|
||||||
end
|
|
||||||
elseif line =~ '.\+);\=' || line =~ s:comma_last
|
|
||||||
let counts = s:LineHasOpeningBrackets(lnum)
|
|
||||||
if counts[0] == '2'
|
|
||||||
call cursor(lnum, 1)
|
|
||||||
" Search for the opening tag
|
|
||||||
let mnum = searchpair('(', '', ')', 'bW', s:skip_expr)
|
|
||||||
if mnum > 0
|
|
||||||
return indent(s:GetMSL(mnum, 0))
|
|
||||||
end
|
|
||||||
elseif line !~ s:var_stmt
|
|
||||||
return indent(prevline)
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
" 3.4. Work on the MSL line. {{{2
|
" 3.4. Work on the MSL line. {{{1
|
||||||
" --------------------------
|
" --------------------------
|
||||||
|
if s:Match(lnum, s:comma_last) && !s:Match(lnum, s:continuation_regex)
|
||||||
|
return s:Match(lnum, s:var_stmt) ? indent(lnum) + s:sw() : indent(lnum)
|
||||||
|
|
||||||
|
elseif s:Match(s:PrevNonBlankNonString(lnum - 1), s:comma_last)
|
||||||
|
if !s:Match(lnum, s:comma_last) && s:InMultiVarStatement(lnum,1,0)
|
||||||
|
return indent(lnum) - s:sw()
|
||||||
|
end
|
||||||
|
end
|
||||||
let ind_con = ind
|
let ind_con = ind
|
||||||
let ind = s:IndentWithContinuation(lnum, ind_con, s:sw())
|
let ind = s:IndentWithContinuation(lnum, ind_con, s:sw())
|
||||||
|
|
||||||
@@ -550,7 +499,7 @@ endfunction
|
|||||||
|
|
||||||
let &cpo = s:cpo_save
|
let &cpo = s:cpo_save
|
||||||
unlet s:cpo_save
|
unlet s:cpo_save
|
||||||
|
" gq{{{2
|
||||||
function! Fixedgq(lnum, count)
|
function! Fixedgq(lnum, count)
|
||||||
let l:tw = &tw ? &tw : 80;
|
let l:tw = &tw ? &tw : 80;
|
||||||
|
|
||||||
@@ -562,7 +511,7 @@ function! Fixedgq(lnum, count)
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
" This gq is only meant to do code with strings, not comments
|
" This gq is only meant to do code with strings, not comments
|
||||||
if s:IsLineComment(a:lnum, l:first_char) || s:IsInMultilineComment(a:lnum, l:first_char)
|
if s:IsInComment(a:lnum, l:first_char)
|
||||||
return 1
|
return 1
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@@ -611,5 +560,7 @@ function! Fixedgq(lnum, count)
|
|||||||
|
|
||||||
return 0
|
return 0
|
||||||
endfunction
|
endfunction
|
||||||
|
"}}}
|
||||||
|
" vim: foldmethod=marker:foldlevel=1
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|||||||
358
indent/mako.vim
Normal file
358
indent/mako.vim
Normal file
@@ -0,0 +1,358 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'mako') == -1
|
||||||
|
|
||||||
|
" Vim indent file
|
||||||
|
" Language: Mako
|
||||||
|
" Author: Scott Torborg <storborg@mit.edu>
|
||||||
|
" Version: 0.4
|
||||||
|
" License: Do What The Fuck You Want To Public License (WTFPL)
|
||||||
|
"
|
||||||
|
" ---------------------------------------------------------------------------
|
||||||
|
"
|
||||||
|
" DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
|
||||||
|
" Version 2, December 2004
|
||||||
|
"
|
||||||
|
" Copyright (C) 2004 Sam Hocevar <sam@hocevar.net>
|
||||||
|
"
|
||||||
|
" Everyone is permitted to copy and distribute verbatim or modified
|
||||||
|
" copies of this license document, and changing it is allowed as long
|
||||||
|
" as the name is changed.
|
||||||
|
"
|
||||||
|
" DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
|
||||||
|
" TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||||
|
"
|
||||||
|
" 0. You just DO WHAT THE FUCK YOU WANT TO.
|
||||||
|
"
|
||||||
|
" ---------------------------------------------------------------------------
|
||||||
|
"
|
||||||
|
" This script does more useful indenting for Mako HTML templates. It indents
|
||||||
|
" inside of control blocks, defs, etc. Note that this indenting style will
|
||||||
|
" sacrifice readability of the output text for the sake of readability of the
|
||||||
|
" template.
|
||||||
|
"
|
||||||
|
" We'll use HTML indenting globally, python inside <% %> blocks. Inspired by
|
||||||
|
" the excellent PHP + HTML indentation files such as php.vim by Pim Snel.
|
||||||
|
"
|
||||||
|
" Changelog:
|
||||||
|
" 0.4 - 5 March 2010
|
||||||
|
" - Added license information
|
||||||
|
" 0.3 - 15 September 2009
|
||||||
|
" - Added explicit indenting for ## comments, fixed unindenting count,
|
||||||
|
" thanks to Mike Lewis (@MikeRLewis) for this
|
||||||
|
" 0.2 - 15 June 2009
|
||||||
|
" - Fixed issue where opening and closing mako tags on the same line
|
||||||
|
" would cause incorrect indenting
|
||||||
|
" 0.1 - 06 June 2009
|
||||||
|
" - Initial public release of mako indent file
|
||||||
|
|
||||||
|
let sw=2 " default shiftwidth of 2 spaces
|
||||||
|
|
||||||
|
if exists("b:did_indent")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
let b:did_indent = 1
|
||||||
|
|
||||||
|
setlocal nosmartindent
|
||||||
|
setlocal noautoindent
|
||||||
|
setlocal nocindent
|
||||||
|
setlocal nolisp
|
||||||
|
|
||||||
|
setlocal indentexpr=GetMakoIndent()
|
||||||
|
setlocal indentkeys+=*<Return>,<>>,<bs>,end,:
|
||||||
|
|
||||||
|
" Only define the function once.
|
||||||
|
if exists("*GetMakoIndent")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
if exists('g:html_indent_tags')
|
||||||
|
unlet g:html_indent_tags
|
||||||
|
endif
|
||||||
|
|
||||||
|
function IsInsidePythonBlock(startline)
|
||||||
|
" Loop until we get a line that's either <% or %>
|
||||||
|
let lnum = a:startline
|
||||||
|
while getline(lnum) !~ '\(%>\|<%\)$' && lnum > 0
|
||||||
|
let lnum = lnum - 1
|
||||||
|
endwhile
|
||||||
|
|
||||||
|
" lnum points to the last control. If it's a <% then we're inside an
|
||||||
|
" embedded python block, otherwise we're not.
|
||||||
|
return getline(lnum) =~ '<%$'
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function GetMakoIndent()
|
||||||
|
" Find a non-empty line above the current line
|
||||||
|
let lnum = prevnonblank(v:lnum - 1)
|
||||||
|
|
||||||
|
" Hit the start of the file, use zero indent.
|
||||||
|
if lnum == 0
|
||||||
|
return 0
|
||||||
|
endif
|
||||||
|
|
||||||
|
let line = getline(lnum) " last line
|
||||||
|
let cline = getline(v:lnum) " current line
|
||||||
|
let pline = getline(lnum - 1) " previous to last line
|
||||||
|
let ind = indent(lnum)
|
||||||
|
if line =~ '^\s*##'
|
||||||
|
return indent(lnum)
|
||||||
|
end
|
||||||
|
|
||||||
|
let restore_ic=&ic
|
||||||
|
let &ic=1 " ignore case
|
||||||
|
|
||||||
|
let ind = <SID>HtmlIndentSum(lnum, -1)
|
||||||
|
let ind = <SID>HtmlIndentSum(lnum, -1)
|
||||||
|
let ind = ind + <SID>HtmlIndentSum(v:lnum, 0)
|
||||||
|
|
||||||
|
let &ic=restore_ic
|
||||||
|
|
||||||
|
let ind = indent(lnum) + (&sw * ind)
|
||||||
|
|
||||||
|
" Indent after %anything: or <%anything NOT ending in />
|
||||||
|
if line =~ '^\s*%.*:\s*$'
|
||||||
|
let ind = ind + &sw
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Unindent before %end* or </%anything
|
||||||
|
if cline =~ '^\s*%\s*end'
|
||||||
|
let ind = ind - &sw
|
||||||
|
endif
|
||||||
|
"
|
||||||
|
" Unindent before %else, %except, and %elif
|
||||||
|
if cline =~ '^\s*%\s*else' || cline =~ '^\s*%\s*except' || cline =~ '^\s*%\s*elif'
|
||||||
|
let ind = ind - &sw
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Indent at the beginning of a python control block
|
||||||
|
if line =~ '<%$'
|
||||||
|
let ind = ind + &sw
|
||||||
|
endif
|
||||||
|
"
|
||||||
|
" Unindent at the end of the python block.
|
||||||
|
if cline =~ '^\s*%>$'
|
||||||
|
let scanlnum = lnum
|
||||||
|
" Scan backwards until we find the beginning of this python block.
|
||||||
|
while getline(scanlnum) !~ '<%$' && scanlnum > 0
|
||||||
|
let scanlnum = scanlnum - 1
|
||||||
|
endwhile
|
||||||
|
let ind = indent(scanlnum)
|
||||||
|
endif
|
||||||
|
|
||||||
|
" If we're inside a python block and the previous line ends in a colon,
|
||||||
|
" indent.
|
||||||
|
if IsInsidePythonBlock(lnum - 1)
|
||||||
|
" Indent after :
|
||||||
|
if line =~ '\:$'
|
||||||
|
let ind = ind + &sw
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
return ind
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
|
||||||
|
" [-- helper function to assemble tag list --]
|
||||||
|
fun! <SID>HtmlIndentPush(tag)
|
||||||
|
if exists('g:html_indent_tags')
|
||||||
|
let g:html_indent_tags = g:html_indent_tags.'\|'.a:tag
|
||||||
|
else
|
||||||
|
let g:html_indent_tags = a:tag
|
||||||
|
endif
|
||||||
|
endfun
|
||||||
|
|
||||||
|
fun! <SID>MakoIndentPush(tag)
|
||||||
|
if exists('g:mako_indent_tags')
|
||||||
|
let g:mako_indent_tags = g:mako_indent_tags.'\|'.a:tag
|
||||||
|
else
|
||||||
|
let g:mako_indent_tags = a:tag
|
||||||
|
endif
|
||||||
|
endfun
|
||||||
|
|
||||||
|
" [-- <ELEMENT ? - - ...> --]
|
||||||
|
call <SID>HtmlIndentPush('a')
|
||||||
|
call <SID>HtmlIndentPush('abbr')
|
||||||
|
call <SID>HtmlIndentPush('acronym')
|
||||||
|
call <SID>HtmlIndentPush('address')
|
||||||
|
call <SID>HtmlIndentPush('b')
|
||||||
|
call <SID>HtmlIndentPush('bdo')
|
||||||
|
call <SID>HtmlIndentPush('big')
|
||||||
|
call <SID>HtmlIndentPush('blockquote')
|
||||||
|
call <SID>HtmlIndentPush('button')
|
||||||
|
call <SID>HtmlIndentPush('caption')
|
||||||
|
call <SID>HtmlIndentPush('center')
|
||||||
|
call <SID>HtmlIndentPush('cite')
|
||||||
|
call <SID>HtmlIndentPush('code')
|
||||||
|
call <SID>HtmlIndentPush('colgroup')
|
||||||
|
call <SID>HtmlIndentPush('del')
|
||||||
|
call <SID>HtmlIndentPush('dfn')
|
||||||
|
call <SID>HtmlIndentPush('dir')
|
||||||
|
call <SID>HtmlIndentPush('div')
|
||||||
|
call <SID>HtmlIndentPush('dl')
|
||||||
|
call <SID>HtmlIndentPush('em')
|
||||||
|
call <SID>HtmlIndentPush('fieldset')
|
||||||
|
call <SID>HtmlIndentPush('font')
|
||||||
|
call <SID>HtmlIndentPush('form')
|
||||||
|
call <SID>HtmlIndentPush('frameset')
|
||||||
|
call <SID>HtmlIndentPush('h1')
|
||||||
|
call <SID>HtmlIndentPush('h2')
|
||||||
|
call <SID>HtmlIndentPush('h3')
|
||||||
|
call <SID>HtmlIndentPush('h4')
|
||||||
|
call <SID>HtmlIndentPush('h5')
|
||||||
|
call <SID>HtmlIndentPush('h6')
|
||||||
|
call <SID>HtmlIndentPush('i')
|
||||||
|
call <SID>HtmlIndentPush('iframe')
|
||||||
|
call <SID>HtmlIndentPush('ins')
|
||||||
|
call <SID>HtmlIndentPush('kbd')
|
||||||
|
call <SID>HtmlIndentPush('label')
|
||||||
|
call <SID>HtmlIndentPush('legend')
|
||||||
|
call <SID>HtmlIndentPush('map')
|
||||||
|
call <SID>HtmlIndentPush('menu')
|
||||||
|
call <SID>HtmlIndentPush('noframes')
|
||||||
|
call <SID>HtmlIndentPush('noscript')
|
||||||
|
call <SID>HtmlIndentPush('object')
|
||||||
|
call <SID>HtmlIndentPush('ol')
|
||||||
|
call <SID>HtmlIndentPush('optgroup')
|
||||||
|
call <SID>HtmlIndentPush('pre')
|
||||||
|
call <SID>HtmlIndentPush('q')
|
||||||
|
call <SID>HtmlIndentPush('s')
|
||||||
|
call <SID>HtmlIndentPush('samp')
|
||||||
|
call <SID>HtmlIndentPush('script')
|
||||||
|
call <SID>HtmlIndentPush('select')
|
||||||
|
call <SID>HtmlIndentPush('small')
|
||||||
|
call <SID>HtmlIndentPush('span')
|
||||||
|
call <SID>HtmlIndentPush('strong')
|
||||||
|
call <SID>HtmlIndentPush('style')
|
||||||
|
call <SID>HtmlIndentPush('sub')
|
||||||
|
call <SID>HtmlIndentPush('sup')
|
||||||
|
call <SID>HtmlIndentPush('table')
|
||||||
|
call <SID>HtmlIndentPush('textarea')
|
||||||
|
call <SID>HtmlIndentPush('title')
|
||||||
|
call <SID>HtmlIndentPush('tt')
|
||||||
|
call <SID>HtmlIndentPush('u')
|
||||||
|
call <SID>HtmlIndentPush('ul')
|
||||||
|
call <SID>HtmlIndentPush('var')
|
||||||
|
|
||||||
|
" For some reason the default HTML indentation script doesn't consider these
|
||||||
|
" elements to be worthy of indentation.
|
||||||
|
call <SID>HtmlIndentPush('p')
|
||||||
|
call <SID>HtmlIndentPush('dt')
|
||||||
|
call <SID>HtmlIndentPush('dd')
|
||||||
|
|
||||||
|
|
||||||
|
" [-- <ELEMENT ? O O ...> --]
|
||||||
|
if !exists('g:html_indent_strict')
|
||||||
|
call <SID>HtmlIndentPush('body')
|
||||||
|
call <SID>HtmlIndentPush('head')
|
||||||
|
call <SID>HtmlIndentPush('html')
|
||||||
|
call <SID>HtmlIndentPush('tbody')
|
||||||
|
endif
|
||||||
|
|
||||||
|
|
||||||
|
" [-- <ELEMENT ? O - ...> --]
|
||||||
|
if !exists('g:html_indent_strict_table')
|
||||||
|
call <SID>HtmlIndentPush('th')
|
||||||
|
call <SID>HtmlIndentPush('td')
|
||||||
|
call <SID>HtmlIndentPush('tr')
|
||||||
|
call <SID>HtmlIndentPush('tfoot')
|
||||||
|
call <SID>HtmlIndentPush('thead')
|
||||||
|
endif
|
||||||
|
|
||||||
|
" [-- <Mako Elements> --]
|
||||||
|
call <SID>MakoIndentPush('%def')
|
||||||
|
call <SID>MakoIndentPush('%block')
|
||||||
|
call <SID>MakoIndentPush('%call')
|
||||||
|
call <SID>MakoIndentPush('%doc')
|
||||||
|
call <SID>MakoIndentPush('%text')
|
||||||
|
call <SID>MakoIndentPush('%.\+:.\+')
|
||||||
|
|
||||||
|
delfun <SID>HtmlIndentPush
|
||||||
|
delfun <SID>MakoIndentPush
|
||||||
|
|
||||||
|
set cpo-=C
|
||||||
|
|
||||||
|
" [-- get number of regex matches in a string --]
|
||||||
|
fun! <SID>MatchCount(expr, pat)
|
||||||
|
let mpos = 0
|
||||||
|
let mcount = 0
|
||||||
|
let expr = a:expr
|
||||||
|
while (mpos > -1)
|
||||||
|
let mend = matchend(expr, a:pat)
|
||||||
|
if mend > -1
|
||||||
|
let mcount = mcount + 1
|
||||||
|
endif
|
||||||
|
if mend == mpos
|
||||||
|
let mpos = mpos + 1
|
||||||
|
else
|
||||||
|
let mpos = mend
|
||||||
|
endif
|
||||||
|
let expr = strpart(expr, mpos)
|
||||||
|
endwhile
|
||||||
|
return mcount
|
||||||
|
endfun
|
||||||
|
|
||||||
|
" [-- count indent-increasing tags of line a:lnum --]
|
||||||
|
fun! <SID>HtmlIndentOpen(lnum)
|
||||||
|
let s = substitute('x'.getline(a:lnum),
|
||||||
|
\ '.\{-}\(\(<\)\('.g:html_indent_tags.'\)\>\)', "\1", 'g')
|
||||||
|
let s = substitute(s, "[^\1].*$", '', '')
|
||||||
|
return strlen(s)
|
||||||
|
endfun
|
||||||
|
|
||||||
|
" [-- count indent-decreasing tags of line a:lnum --]
|
||||||
|
fun! <SID>HtmlIndentClose(lnum)
|
||||||
|
let s = substitute('x'.getline(a:lnum),
|
||||||
|
\ '.\{-}\(\(<\)/\('.g:html_indent_tags.'\)\>>\)', "\1", 'g')
|
||||||
|
let s = substitute(s, "[^\1].*$", '', '')
|
||||||
|
return strlen(s)
|
||||||
|
endfun
|
||||||
|
|
||||||
|
" [-- count indent-increasing mako tags of line a:lnum --]
|
||||||
|
fun! <SID>MakoIndentOpen(lnum)
|
||||||
|
let s = substitute('x'.getline(a:lnum),
|
||||||
|
\ '.\{-}\(\(<\)\('.g:mako_indent_tags.'\)\>\)', "\1", 'g')
|
||||||
|
let s = substitute(s, "[^\1].*$", '', '')
|
||||||
|
return strlen(s)
|
||||||
|
endfun
|
||||||
|
|
||||||
|
" [-- count indent-decreasing mako tags of line a:lnum --]
|
||||||
|
fun! <SID>MakoIndentClose(lnum)
|
||||||
|
let mcount = <SID>MatchCount(getline(a:lnum), '</\('.g:mako_indent_tags.'\)>')
|
||||||
|
let mcount = mcount + <SID>MatchCount(getline(a:lnum), '<\('.g:mako_indent_tags.'\)[^>]*/>')
|
||||||
|
return mcount
|
||||||
|
endfun
|
||||||
|
|
||||||
|
" [-- count indent-increasing '{' of (java|css) line a:lnum --]
|
||||||
|
fun! <SID>HtmlIndentOpenAlt(lnum)
|
||||||
|
return strlen(substitute(getline(a:lnum), '[^{]\+', '', 'g'))
|
||||||
|
endfun
|
||||||
|
|
||||||
|
" [-- count indent-decreasing '}' of (java|css) line a:lnum --]
|
||||||
|
fun! <SID>HtmlIndentCloseAlt(lnum)
|
||||||
|
return strlen(substitute(getline(a:lnum), '[^}]\+', '', 'g'))
|
||||||
|
endfun
|
||||||
|
|
||||||
|
" [-- return the sum of indents respecting the syntax of a:lnum --]
|
||||||
|
fun! <SID>HtmlIndentSum(lnum, style)
|
||||||
|
let open = <SID>HtmlIndentOpen(a:lnum) + <SID>MakoIndentOpen(a:lnum)
|
||||||
|
let close = <SID>HtmlIndentClose(a:lnum) + <SID>MakoIndentClose(a:lnum)
|
||||||
|
if a:style == match(getline(a:lnum), '^\s*</')
|
||||||
|
if a:style == match(getline(a:lnum), '^\s*</\('.g:html_indent_tags.'\|'.g:mako_indent_tags.'\)')
|
||||||
|
if 0 != open || 0 != close
|
||||||
|
return open - close
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
if '' != &syntax &&
|
||||||
|
\ synIDattr(synID(a:lnum, 1, 1), 'name') =~ '\(css\|java\).*' &&
|
||||||
|
\ synIDattr(synID(a:lnum, strlen(getline(a:lnum)) - 1, 1), 'name')
|
||||||
|
\ =~ '\(css\|java\).*'
|
||||||
|
if a:style == match(getline(a:lnum), '^\s*}')
|
||||||
|
return <SID>HtmlIndentOpenAlt(a:lnum) - <SID>HtmlIndentCloseAlt(a:lnum)
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
return 0
|
||||||
|
endfun
|
||||||
|
|
||||||
|
" vim: set ts=4 sw=4:
|
||||||
|
|
||||||
|
endif
|
||||||
@@ -121,7 +121,7 @@ function! GetNimIndent(lnum)
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
if pline =~ '\(type\|import\|const\|var\)\s*$'
|
if pline =~ '\(type\|import\|const\|var\)\s*$'
|
||||||
\ || pline =~ '=\s*\(object\|enum\|tuple\|generic\)'
|
\ || pline =~ '=\s*\(object\|enum\|tuple\|concept\)'
|
||||||
return plindent + &sw
|
return plindent + &sw
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|||||||
21
indent/proto.vim
Normal file
21
indent/proto.vim
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'protobuf') == -1
|
||||||
|
|
||||||
|
" Vim indent file
|
||||||
|
" Language: Protobuf
|
||||||
|
" Maintainer: Johannes Zellner <johannes@zellner.org>
|
||||||
|
" Last Change: Fri, 15 Mar 2002 07:53:54 CET
|
||||||
|
|
||||||
|
" Only load this indent file when no other was loaded.
|
||||||
|
if exists("b:did_indent")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
let b:did_indent = 1
|
||||||
|
|
||||||
|
" Protobuf is like indenting C
|
||||||
|
setlocal cindent
|
||||||
|
setlocal expandtab
|
||||||
|
setlocal shiftwidth=2
|
||||||
|
|
||||||
|
let b:undo_indent = "setl cin<"
|
||||||
|
|
||||||
|
endif
|
||||||
@@ -20,6 +20,11 @@ if !exists('g:ruby_indent_access_modifier_style')
|
|||||||
let g:ruby_indent_access_modifier_style = 'normal'
|
let g:ruby_indent_access_modifier_style = 'normal'
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
if !exists('g:ruby_indent_block_style')
|
||||||
|
" Possible values: "expression", "do"
|
||||||
|
let g:ruby_indent_block_style = 'expression'
|
||||||
|
endif
|
||||||
|
|
||||||
setlocal nosmartindent
|
setlocal nosmartindent
|
||||||
|
|
||||||
" Now, set up our indentation expression and keys that trigger it.
|
" Now, set up our indentation expression and keys that trigger it.
|
||||||
@@ -219,15 +224,15 @@ function s:GetMSL(lnum)
|
|||||||
elseif s:Match(lnum, s:non_bracket_continuation_regex) &&
|
elseif s:Match(lnum, s:non_bracket_continuation_regex) &&
|
||||||
\ (s:Match(msl, s:bracket_continuation_regex) || s:Match(msl, s:block_continuation_regex))
|
\ (s:Match(msl, s:bracket_continuation_regex) || s:Match(msl, s:block_continuation_regex))
|
||||||
" If the current line is a bracket continuation or a block-starter, but
|
" If the current line is a bracket continuation or a block-starter, but
|
||||||
" the previous is a non-bracket one, respect the previous' indentation,
|
" the previous is a non-bracket one, keep going to see if the previous
|
||||||
" and stop here.
|
" line is a part of another continuation.
|
||||||
"
|
"
|
||||||
" Example:
|
" Example:
|
||||||
" method_call one,
|
" method_call one,
|
||||||
" two {
|
" two {
|
||||||
" three
|
" three
|
||||||
"
|
"
|
||||||
return lnum
|
let msl = lnum
|
||||||
elseif s:Match(lnum, s:bracket_continuation_regex) &&
|
elseif s:Match(lnum, s:bracket_continuation_regex) &&
|
||||||
\ (s:Match(msl, s:bracket_continuation_regex) || s:Match(msl, s:block_continuation_regex))
|
\ (s:Match(msl, s:bracket_continuation_regex) || s:Match(msl, s:block_continuation_regex))
|
||||||
" If both lines are bracket continuations (the current may also be a
|
" If both lines are bracket continuations (the current may also be a
|
||||||
@@ -419,7 +424,9 @@ function GetRubyIndent(...)
|
|||||||
if searchpair(escape(bs[0], '\['), '', bs[1], 'bW', s:skip_expr) > 0
|
if searchpair(escape(bs[0], '\['), '', bs[1], 'bW', s:skip_expr) > 0
|
||||||
if line[col-1]==')' && col('.') != col('$') - 1
|
if line[col-1]==')' && col('.') != col('$') - 1
|
||||||
let ind = virtcol('.') - 1
|
let ind = virtcol('.') - 1
|
||||||
else
|
elseif g:ruby_indent_block_style == 'do'
|
||||||
|
let ind = indent(line('.'))
|
||||||
|
else " g:ruby_indent_block_style == 'expression'
|
||||||
let ind = indent(s:GetMSL(line('.')))
|
let ind = indent(s:GetMSL(line('.')))
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
@@ -444,12 +451,15 @@ function GetRubyIndent(...)
|
|||||||
\ strpart(line, col('.') - 1, 2) !~ 'do'
|
\ strpart(line, col('.') - 1, 2) !~ 'do'
|
||||||
" assignment to case/begin/etc, on the same line, hanging indent
|
" assignment to case/begin/etc, on the same line, hanging indent
|
||||||
let ind = virtcol('.') - 1
|
let ind = virtcol('.') - 1
|
||||||
|
elseif g:ruby_indent_block_style == 'do'
|
||||||
|
" align to line of the "do", not to the MSL
|
||||||
|
let ind = indent(line('.'))
|
||||||
elseif getline(msl) =~ '=\s*\(#.*\)\=$'
|
elseif getline(msl) =~ '=\s*\(#.*\)\=$'
|
||||||
" in the case of assignment to the msl, align to the starting line,
|
" in the case of assignment to the MSL, align to the starting line,
|
||||||
" not to the msl
|
" not to the MSL
|
||||||
let ind = indent(line('.'))
|
let ind = indent(line('.'))
|
||||||
else
|
else
|
||||||
" align to the msl
|
" align to the MSL
|
||||||
let ind = indent(msl)
|
let ind = indent(msl)
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
@@ -516,7 +526,10 @@ function GetRubyIndent(...)
|
|||||||
if s:Match(lnum, s:block_regex)
|
if s:Match(lnum, s:block_regex)
|
||||||
let msl = s:GetMSL(lnum)
|
let msl = s:GetMSL(lnum)
|
||||||
|
|
||||||
if getline(msl) =~ '=\s*\(#.*\)\=$'
|
if g:ruby_indent_block_style == 'do'
|
||||||
|
" don't align to the msl, align to the "do"
|
||||||
|
let ind = indent(lnum) + sw
|
||||||
|
elseif getline(msl) =~ '=\s*\(#.*\)\=$'
|
||||||
" in the case of assignment to the msl, align to the starting line,
|
" in the case of assignment to the msl, align to the starting line,
|
||||||
" not to the msl
|
" not to the msl
|
||||||
let ind = indent(lnum) + sw
|
let ind = indent(lnum) + sw
|
||||||
@@ -564,7 +577,7 @@ function GetRubyIndent(...)
|
|||||||
if s:Match(line('.'), s:ruby_indent_keywords)
|
if s:Match(line('.'), s:ruby_indent_keywords)
|
||||||
return indent('.') + sw
|
return indent('.') + sw
|
||||||
else
|
else
|
||||||
return indent('.')
|
return indent(s:GetMSL(line('.')))
|
||||||
endif
|
endif
|
||||||
else
|
else
|
||||||
call cursor(clnum, vcol)
|
call cursor(clnum, vcol)
|
||||||
|
|||||||
@@ -442,7 +442,7 @@ let &cpo = s:cpo_save
|
|||||||
unlet s:cpo_save
|
unlet s:cpo_save
|
||||||
|
|
||||||
function! Fixedgq(lnum, count)
|
function! Fixedgq(lnum, count)
|
||||||
let l:tw = &tw ? &tw : 80;
|
let l:tw = &tw ? &tw : 80
|
||||||
|
|
||||||
let l:count = a:count
|
let l:count = a:count
|
||||||
let l:first_char = indent(a:lnum) + 1
|
let l:first_char = indent(a:lnum) + 1
|
||||||
|
|||||||
@@ -21,6 +21,12 @@ unlet! b:current_syntax
|
|||||||
syn case match
|
syn case match
|
||||||
syn clear htmlError
|
syn clear htmlError
|
||||||
|
|
||||||
|
if has('patch-7.4.1142')
|
||||||
|
syn iskeyword @,48-57,_,192-255,@-@
|
||||||
|
else
|
||||||
|
setlocal iskeyword+=@-@
|
||||||
|
endif
|
||||||
|
|
||||||
syn region bladeEcho matchgroup=bladeDelimiter start="@\@<!{{" end="}}" contains=@bladePhp,bladePhpParenBlock containedin=ALLBUT,@bladeExempt keepend
|
syn region bladeEcho matchgroup=bladeDelimiter start="@\@<!{{" end="}}" contains=@bladePhp,bladePhpParenBlock containedin=ALLBUT,@bladeExempt keepend
|
||||||
syn region bladeEcho matchgroup=bladeDelimiter start="{!!" end="!!}" contains=@bladePhp,bladePhpParenBlock containedin=ALLBUT,@bladeExempt keepend
|
syn region bladeEcho matchgroup=bladeDelimiter start="{!!" end="!!}" contains=@bladePhp,bladePhpParenBlock containedin=ALLBUT,@bladeExempt keepend
|
||||||
syn region bladeComment matchgroup=bladeDelimiter start="{{--" end="--}}" contains=bladeTodo containedin=ALLBUT,@bladeExempt keepend
|
syn region bladeComment matchgroup=bladeDelimiter start="{{--" end="--}}" contains=bladeTodo containedin=ALLBUT,@bladeExempt keepend
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ syn region cryString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=crySpecial
|
|||||||
syn region cryString start=+``+ skip=+\\\\\|\\"+ end=+``+ contains=hsSpecialChar
|
syn region cryString start=+``+ skip=+\\\\\|\\"+ end=+``+ contains=hsSpecialChar
|
||||||
syn match cryCharacter "[^a-zA-Z0-9_']'\([^\\]\|\\[^']\+\|\\'\)'"lc=1 contains=crySpecialChar,crySpecialCharError
|
syn match cryCharacter "[^a-zA-Z0-9_']'\([^\\]\|\\[^']\+\|\\'\)'"lc=1 contains=crySpecialChar,crySpecialCharError
|
||||||
syn match cryCharacter "^'\([^\\]\|\\[^']\+\|\\'\)'" contains=crySpecialChar,crySpecialCharError
|
syn match cryCharacter "^'\([^\\]\|\\[^']\+\|\\'\)'" contains=crySpecialChar,crySpecialCharError
|
||||||
syn match cryNumber "\<[0-9]\+\>\|\<0[xX][0-9a-fA-F]\+\>\|\<0[oO][0-7]\+\>"
|
syn match cryNumber "\<[0-9]\+\>\|\<0[b][01]\+\>\|\<0[x][0-9a-fA-F]\+\>\|\<0[o][0-7]\+\>"
|
||||||
|
|
||||||
" Keyword definitions.
|
" Keyword definitions.
|
||||||
|
|
||||||
@@ -61,10 +61,12 @@ syn keyword cryPrimitive error parity lg2 pmod pdiv pmult format
|
|||||||
syn keyword cryPrimitive join split groupBy take drop min max negate reverse
|
syn keyword cryPrimitive join split groupBy take drop min max negate reverse
|
||||||
syn keyword cryPrimitive project tail width
|
syn keyword cryPrimitive project tail width
|
||||||
syn keyword cryPrimitive ASSERT
|
syn keyword cryPrimitive ASSERT
|
||||||
|
syn keyword cryPrimitive module import private
|
||||||
|
|
||||||
" Comments
|
" Comments
|
||||||
syn match cryLineComment "//.*"
|
syn keyword cryTodo contained TODO FIXME XXX
|
||||||
syn region cryBlockComment start="/\*" end="\*/" contains=cryBlockComment
|
syn match cryLineComment "//.*" contains=cryTodo
|
||||||
|
syn region cryBlockComment start="/\*" end="\*/" contains=cryBlockComment,cryTodo
|
||||||
|
|
||||||
if !exists("cry_minlines")
|
if !exists("cry_minlines")
|
||||||
let cry_minlines = 50
|
let cry_minlines = 50
|
||||||
@@ -103,6 +105,7 @@ if version >= 508 || !exists("did_cry_syntax_inits")
|
|||||||
hi link cryBoolean Boolean
|
hi link cryBoolean Boolean
|
||||||
hi link cryType Type
|
hi link cryType Type
|
||||||
hi link cryProp Keyword
|
hi link cryProp Keyword
|
||||||
|
hi link cryTodo Todo
|
||||||
|
|
||||||
delcommand HiLink
|
delcommand HiLink
|
||||||
endif
|
endif
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'emberscript') == -1
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'emberscript') == -1
|
||||||
|
|
||||||
" Language: ember-script
|
" Language: ember-script
|
||||||
" Maintainer: heartsentwined <heartsentwined@cogito-lab.com>
|
" Maintainer: Yulij Andreevich Lesov <yalesov@gmail.com>>
|
||||||
" URL: http://github.com/heartsentwined/vim-ember-script
|
" URL: http://github.com/yalesov/vim-ember-script
|
||||||
" Version: 1.0.1
|
" Version: 1.0.3
|
||||||
" Last Change: 2013 Apr 17
|
" Last Change: 2016 Jul 5
|
||||||
" License: GPL-3.0
|
" License: GPL-3.0
|
||||||
|
|
||||||
if exists('b:current_syntax') && b:current_syntax == 'ember-script'
|
if exists('b:current_syntax') && b:current_syntax == 'ember-script'
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'emblem') == -1
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'emblem') == -1
|
||||||
|
|
||||||
" Language: emblem
|
" Language: emblem
|
||||||
" Maintainer: heartsentwined <heartsentwined@cogito-lab.com>
|
" Maintainer: Yulij Andreevich Lesov <yalesov@gmail.com>
|
||||||
" URL: http://github.com/heartsentwined/vim-emblem
|
" URL: http://github.com/yalesov/vim-emblem
|
||||||
" Version: 1.2.0
|
" Version: 2.0.0
|
||||||
" Last Change: 2013 Apr 22
|
" Last Change: 2016 Jul 5
|
||||||
" License: GPL-3.0
|
" License: GPL-3.0
|
||||||
|
|
||||||
" Quit when a syntax file is already loaded.
|
" Quit when a syntax file is already loaded.
|
||||||
@@ -31,7 +31,7 @@ syn match eblClass '\v(\w|-)+' nextgroup=@eblComponent contained display
|
|||||||
hi def link eblIdOp eblId
|
hi def link eblIdOp eblId
|
||||||
hi def link eblClassOp eblClass
|
hi def link eblClassOp eblClass
|
||||||
|
|
||||||
syn region eblHbsAttrRegion matchgroup=eblHbsAttrRegionOp start='{' end='}' contains=@eblHbsHelpers nextgroup=@eblComponent keepend contained display
|
syn region eblHbsAttrRegion matchgroup=eblHbsAttrRegionOp start='{\|(\|\[' end='}\|)\|\]' contains=@eblHbsHelpers nextgroup=@eblComponent keepend contained display
|
||||||
hi def link eblHbsAttrRegionOp eblOperator
|
hi def link eblHbsAttrRegionOp eblOperator
|
||||||
|
|
||||||
syn match eblInlineText '\v\s+[^:]+.*$' contains=eblItpl contained display
|
syn match eblInlineText '\v\s+[^:]+.*$' contains=eblItpl contained display
|
||||||
@@ -40,7 +40,7 @@ hi def link eblInlineText eblRaw
|
|||||||
syn cluster eblHbsComponent contains=eblHbsArg,eblHbsAttr,eblHbsTextOp,eblLineOp
|
syn cluster eblHbsComponent contains=eblHbsArg,eblHbsAttr,eblHbsTextOp,eblLineOp
|
||||||
|
|
||||||
syn match eblHbsOp '\v\s*\=+' nextgroup=@eblHbsHelpers skipwhite contained display
|
syn match eblHbsOp '\v\s*\=+' nextgroup=@eblHbsHelpers skipwhite contained display
|
||||||
syn match eblHbsHelper '\v\w(\w|-|\.)*' nextgroup=@eblHbsComponent skipwhite contained display
|
syn match eblHbsHelper '\v\w(\w|-|\.|\/)*' nextgroup=@eblHbsComponent skipwhite contained display
|
||||||
syn match eblHbsTextOp '|' nextgroup=eblHbsText contained display
|
syn match eblHbsTextOp '|' nextgroup=eblHbsText contained display
|
||||||
syn match eblHbsText '.*' contained display
|
syn match eblHbsText '.*' contained display
|
||||||
hi def link eblHbsOp eblOperator
|
hi def link eblHbsOp eblOperator
|
||||||
@@ -48,24 +48,38 @@ hi def link eblHbsHelper eblFunction
|
|||||||
hi def link eblHbsTextOp eblOperator
|
hi def link eblHbsTextOp eblOperator
|
||||||
hi def link eblHbsText eblRaw
|
hi def link eblHbsText eblRaw
|
||||||
|
|
||||||
syn cluster eblHbsHelpers contains=eblHbsHelper,eblHbsCtrlFlowHelper,eblHbsEachHelper
|
syn cluster eblHbsHelpers contains=eblHbsHelper,eblHbsCtrlFlowHelper,eblHbsEachHelper,eblHbsWithHelper
|
||||||
|
|
||||||
syn match eblHbsCtrlFlowHelper '\v<(if|unless|else|with)>' nextgroup=@eblHbsComponent skipwhite contained display
|
syn match eblHbsCtrlFlowHelper '\v<(else if|if|unless|else)>' nextgroup=@eblHbsComponent skipwhite contained display
|
||||||
syn match eblHbsEachHelper '\v<each>' nextgroup=eblHbsEachArg skipwhite contained display
|
syn match eblHbsEachHelper '\v<each>' nextgroup=eblHbsEachArg skipwhite contained display
|
||||||
syn match eblHbsEachArg /\v((["'])[^\2]{-}\2|(\w|\.|-|\>)+)/ nextgroup=eblHbsIn,eblLineOp skipwhite contained display
|
syn match eblHbsEachArg /\v((["'])[^\2]{-}\2|(\w|\.|-|\>)+)/ nextgroup=eblHbsIn,eblLineOp skipwhite contained display
|
||||||
syn match eblHbsIn '\v<in>' nextgroup=eblHbsInArg skipwhite contained display
|
syn match eblHbsIn '\v<in>' nextgroup=eblHbsInArg skipwhite contained display
|
||||||
syn match eblHbsInArg /\v((["'])[^\2]{-}\2|(\w|\.|-|\>)+)/ nextgroup=eblLineOp skipwhite contained display
|
syn match eblHbsInArg /\v((["'])[^\2]{-}\2|(\w|\.|-|\>)+)/ nextgroup=eblLineOp skipwhite contained display
|
||||||
|
syn match eblHbsWithHelper '\v<with>' nextgroup=eblHbsWithArg skipwhite contained display
|
||||||
|
syn match eblHbsWithArg /\v((["'])[^\2]{-}\2|(\w|\.|-|\>)+)/ nextgroup=eblHbsAs skipwhite contained display
|
||||||
|
syn match eblHbsAs '\v<as>' nextgroup=eblHbsAsBlockStartArg skipwhite contained display
|
||||||
|
syn match eblHbsAsBlockStartArg /\v\|/ nextgroup=eblHbsAsBlockFirstArg skipwhite contained display
|
||||||
|
syn match eblHbsAsBlockFirstArg /\v((["'])[^\2]{-}\2|(\w|\.|-|\>)+)/ nextgroup=eblHbsAsBlockSecondArg,eblHbsAsBlockEndArg skipwhite contained display
|
||||||
|
syn match eblHbsAsBlockSecondArg /\v((["'])[^\2]{-}\2|(\w|\.|-|\>)+)/ nextgroup=eblHbsAsBlockEndArg skipwhite contained display
|
||||||
|
syn match eblHbsAsBlockEndArg /\v\|/ nextgroup=eblLineOp skipwhite contained display
|
||||||
hi def link eblHbsCtrlFlowHelper eblKeyword
|
hi def link eblHbsCtrlFlowHelper eblKeyword
|
||||||
hi def link eblHbsEachHelper eblKeyword
|
hi def link eblHbsEachHelper eblKeyword
|
||||||
hi def link eblHbsEachArg eblLiteral
|
hi def link eblHbsEachArg eblLiteral
|
||||||
hi def link eblHbsIn eblKeyword
|
hi def link eblHbsIn eblKeyword
|
||||||
hi def link eblHbsInArg eblLiteral
|
hi def link eblHbsInArg eblLiteral
|
||||||
|
hi def link eblHbsWithHelper eblKeyword
|
||||||
|
hi def link eblHbsWithArg eblLiteral
|
||||||
|
hi def link eblHbsAs eblKeyword
|
||||||
|
hi def link eblHbsAsBlockStartArg eblOperator
|
||||||
|
hi def link eblHbsAsBlockFirstArg eblLiteral
|
||||||
|
hi def link eblHbsAsBlockSecondArg eblLiteral
|
||||||
|
hi def link eblHbsAsBlockEndArg eblOperator
|
||||||
|
|
||||||
syn match eblHbsArg /\v\s*((["'])[^\2]{-}\2|(\w|\.|-|\>)+)/ nextgroup=@eblHbsComponent skipwhite contained display
|
syn match eblHbsArg /\v\s*((["'])[^\2]{-}\2|(\w|\.|-|\>)+)/ nextgroup=@eblHbsComponent skipwhite contained display
|
||||||
syn match eblHbsAttr '\v\s*(\w|-)+\=@=' contains=eblHbsAttrBind nextgroup=eblHbsAttrOp contained display
|
syn match eblHbsAttr '\v\s*(\w|-)+\=@=' contains=eblHbsAttrBind nextgroup=eblHbsAttrOp contained display
|
||||||
syn match eblHbsAttrBind /\v<(\w|-)+Bind>/ contained display
|
syn match eblHbsAttrBind /\v<(\w|-)+Bind>/ contained display
|
||||||
syn match eblHbsAttrOp '=' nextgroup=eblHbsAttrLit contained display
|
syn match eblHbsAttrOp '=' nextgroup=eblHbsAttrLit contained display
|
||||||
syn match eblHbsAttrLit /\v(["'])[^\1]{-}\1|[^: ]+/ contains=eblItpl nextgroup=@eblHbsComponent skipwhite contained display
|
syn match eblHbsAttrLit /\v(["'])[^\1]{-}\1|[^\.: ]+/ contains=eblItpl nextgroup=@eblHbsComponent skipwhite contained display
|
||||||
hi def link eblHbsArg eblLiteral
|
hi def link eblHbsArg eblLiteral
|
||||||
hi def link eblHbsAttr eblAttr
|
hi def link eblHbsAttr eblAttr
|
||||||
hi def link eblhbsAttrBind eblBind
|
hi def link eblhbsAttrBind eblBind
|
||||||
@@ -106,6 +120,7 @@ hi def link eblKnownEvent eblEvent
|
|||||||
|
|
||||||
syn region eblItpl matchgroup=eblItplOp start='#{' end='}' contains=@eblHbsHelpers,eblHbsPartialOp keepend contained display
|
syn region eblItpl matchgroup=eblItplOp start='#{' end='}' contains=@eblHbsHelpers,eblHbsPartialOp keepend contained display
|
||||||
syn region eblItpl matchgroup=eblItplOp start='{{' end='}}' contains=@eblHbsHelpers,eblHbsPartialOp keepend contained display
|
syn region eblItpl matchgroup=eblItplOp start='{{' end='}}' contains=@eblHbsHelpers,eblHbsPartialOp keepend contained display
|
||||||
|
syn region eblItpl matchgroup=eblItplOp start='(' end=')' contains=@eblHbsHelpers,eblHbsPartialOp keepend contained display
|
||||||
hi def link eblItplOp eblOperator
|
hi def link eblItplOp eblOperator
|
||||||
|
|
||||||
syn match eblHbsPartialOp '\s*>' nextgroup=@eblHbsHelpers skipwhite contained display
|
syn match eblHbsPartialOp '\s*>' nextgroup=@eblHbsHelpers skipwhite contained display
|
||||||
|
|||||||
@@ -69,12 +69,12 @@ if !exists("g:go_highlight_methods")
|
|||||||
let g:go_highlight_methods = 0
|
let g:go_highlight_methods = 0
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if !exists("g:go_highlight_structs")
|
if !exists("g:go_highlight_fields")
|
||||||
let g:go_highlight_structs = 0
|
let g:go_highlight_fields = 0
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if !exists("g:go_highlight_interfaces")
|
if !exists("g:go_highlight_types")
|
||||||
let g:go_highlight_interfaces = 0
|
let g:go_highlight_types = 0
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if !exists("g:go_highlight_build_constraints")
|
if !exists("g:go_highlight_build_constraints")
|
||||||
@@ -96,12 +96,10 @@ endif
|
|||||||
syn case match
|
syn case match
|
||||||
|
|
||||||
syn keyword goDirective package import
|
syn keyword goDirective package import
|
||||||
syn keyword goDeclaration var const type
|
syn keyword goDeclaration var const
|
||||||
syn keyword goDeclType struct interface
|
|
||||||
|
|
||||||
hi def link goDirective Statement
|
hi def link goDirective Statement
|
||||||
hi def link goDeclaration Keyword
|
hi def link goDeclaration Keyword
|
||||||
hi def link goDeclType Keyword
|
|
||||||
|
|
||||||
" Keywords within functions
|
" Keywords within functions
|
||||||
syn keyword goStatement defer go goto return break continue fallthrough
|
syn keyword goStatement defer go goto return break continue fallthrough
|
||||||
@@ -127,10 +125,6 @@ hi def link goUnsignedInts Type
|
|||||||
hi def link goFloats Type
|
hi def link goFloats Type
|
||||||
hi def link goComplexes Type
|
hi def link goComplexes Type
|
||||||
|
|
||||||
" Treat func specially: it's a declaration at the start of a line, but a type
|
|
||||||
" elsewhere. Order matters here.
|
|
||||||
syn match goDeclaration /\<func\>/
|
|
||||||
|
|
||||||
|
|
||||||
" Predefined functions and values
|
" Predefined functions and values
|
||||||
syn match goBuiltins /\<\v(append|cap|close|complex|copy|delete|imag|len)\ze\(/
|
syn match goBuiltins /\<\v(append|cap|close|complex|copy|delete|imag|len)\ze\(/
|
||||||
@@ -299,32 +293,43 @@ hi def link goOperator Operator
|
|||||||
|
|
||||||
" Functions;
|
" Functions;
|
||||||
if g:go_highlight_functions != 0
|
if g:go_highlight_functions != 0
|
||||||
syn match goFunction /\(func\s\+\)\@<=\w\+\((\)\@=/
|
syn match goDeclaration /\<func\>/ nextgroup=goReceiver,goFunction skipwhite skipnl
|
||||||
syn match goFunction /\()\s\+\)\@<=\w\+\((\)\@=/
|
syn match goReceiver /([^),]\+)/ contained nextgroup=goFunction contains=goReceiverType skipwhite skipnl
|
||||||
|
syn match goReceiverType /\(\s\|*\)\w\+)/hs=s+1,he=e-1 contained
|
||||||
|
syn match goFunction /\w\+/ contained
|
||||||
|
else
|
||||||
|
syn keyword goDeclaration func
|
||||||
endif
|
endif
|
||||||
|
hi def link goReceiverType Type
|
||||||
hi def link goFunction Function
|
hi def link goFunction Function
|
||||||
|
|
||||||
" Methods;
|
" Methods;
|
||||||
if g:go_highlight_methods != 0
|
if g:go_highlight_methods != 0
|
||||||
syn match goMethod /\(\.\)\@<=\w\+\((\)\@=/
|
syn match goMethod /\.\w\+(/hs=s+1,he=e-1
|
||||||
endif
|
endif
|
||||||
hi def link goMethod Type
|
hi def link goMethod Type
|
||||||
|
|
||||||
" Structs;
|
" Fields;
|
||||||
if g:go_highlight_structs != 0
|
if g:go_highlight_fields != 0
|
||||||
syn match goStruct /\(.\)\@<=\w\+\({\)\@=/
|
syn match goVarArgs /\.\.\.\w\+\>/
|
||||||
syn match goStructDef /\(type\s\+\)\@<=\w\+\(\s\+struct\s\+{\)\@=/
|
syn match goField /\.\a\+\([\ \n\r\:\)\[]\)\@=/hs=s+1
|
||||||
endif
|
endif
|
||||||
hi def link goStruct Function
|
hi def link goField Identifier
|
||||||
hi def link goStructDef Function
|
|
||||||
|
|
||||||
" Interfaces;
|
" Structs & Interfaces;
|
||||||
if g:go_highlight_interfaces != 0
|
if g:go_highlight_types != 0
|
||||||
syn match goInterface /\(.\)\@<=\w\+\({\)\@=/
|
syn match goTypeConstructor /\<\w\+{/he=e-1
|
||||||
syn match goInterfaceDef /\(type\s\+\)\@<=\w\+\(\s\+interface\s\+{\)\@=/
|
syn match goTypeDecl /\<type\>/ nextgroup=goTypeName skipwhite skipnl
|
||||||
|
syn match goTypeName /\w\+/ contained nextgroup=goDeclType skipwhite skipnl
|
||||||
|
syn match goDeclType /\<interface\|struct\>/ contained skipwhite skipnl
|
||||||
|
else
|
||||||
|
syn keyword goDeclType struct interface
|
||||||
|
syn keyword goDeclaration type
|
||||||
endif
|
endif
|
||||||
hi def link goInterface Function
|
hi def link goTypeConstructor Type
|
||||||
hi def link goInterfaceDef Function
|
hi def link goTypeName Type
|
||||||
|
hi def link goTypeDecl Keyword
|
||||||
|
hi def link goDeclType Keyword
|
||||||
|
|
||||||
" Build Constraints
|
" Build Constraints
|
||||||
if g:go_highlight_build_constraints != 0
|
if g:go_highlight_build_constraints != 0
|
||||||
@@ -369,4 +374,6 @@ syn sync minlines=500
|
|||||||
|
|
||||||
let b:current_syntax = "go"
|
let b:current_syntax = "go"
|
||||||
|
|
||||||
|
" vim: sw=2 ts=2 et
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|||||||
@@ -19,4 +19,6 @@ hi def link godefStackCurrentPosition Special
|
|||||||
hi def link godefStackFilename Directory
|
hi def link godefStackFilename Directory
|
||||||
hi def link godefStackEntryLocationNumber LineNr
|
hi def link godefStackEntryLocationNumber LineNr
|
||||||
|
|
||||||
|
" vim: sw=2 ts=2 et
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|||||||
@@ -14,6 +14,6 @@ unlet b:current_syntax
|
|||||||
|
|
||||||
let b:current_syntax = "gohtmltmpl"
|
let b:current_syntax = "gohtmltmpl"
|
||||||
|
|
||||||
" vim:ts=4:sw=4:et
|
" vim: sw=2 ts=2 et
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|||||||
@@ -84,6 +84,6 @@ hi def link goTplComment Comment
|
|||||||
|
|
||||||
let b:current_syntax = "gotexttmpl"
|
let b:current_syntax = "gotexttmpl"
|
||||||
|
|
||||||
" vim:ts=4:sw=4:et
|
" vim: sw=2 ts=2 et
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|||||||
@@ -18,206 +18,195 @@ if !exists('g:javascript_conceal')
|
|||||||
let g:javascript_conceal = 0
|
let g:javascript_conceal = 0
|
||||||
endif
|
endif
|
||||||
|
|
||||||
"" dollar sign is permittd anywhere in an identifier
|
" Dollar sign is permittd anywhere in an identifier
|
||||||
setlocal iskeyword+=$
|
setlocal iskeyword+=$
|
||||||
|
|
||||||
syntax sync fromstart
|
syntax sync fromstart
|
||||||
|
" TODO: Figure out what type of casing I need
|
||||||
|
" syntax case ignore
|
||||||
|
syntax case match
|
||||||
|
|
||||||
syntax match jsNoise /[:,\;\.]\{1}/
|
syntax match jsNoise /[:,\;\.]\{1}/
|
||||||
|
syntax match jsFuncCall /\k\+\%(\s*(\)\@=/
|
||||||
|
syntax match jsParensError /[)}\]]/
|
||||||
|
|
||||||
"" Program Keywords
|
" Program Keywords
|
||||||
syntax keyword jsStorageClass const var let
|
syntax keyword jsStorageClass const var let skipwhite skipempty nextgroup=jsDestructuringBlock,jsDestructuringArray
|
||||||
syntax keyword jsOperator delete instanceof typeof void new in
|
syntax keyword jsOperator delete instanceof typeof void new in of
|
||||||
syntax match jsOperator /[\!\|\&\+\-\<\>\=\%\/\*\~\^]\{1}/
|
syntax match jsOperator /[\!\|\&\+\-\<\>\=\%\/\*\~\^]\{1}/
|
||||||
syntax keyword jsBooleanTrue true
|
syntax keyword jsBooleanTrue true
|
||||||
syntax keyword jsBooleanFalse false
|
syntax keyword jsBooleanFalse false
|
||||||
syntax keyword jsModules import export contained
|
|
||||||
syntax keyword jsModuleWords default from as contained
|
|
||||||
syntax keyword jsOf of contained
|
|
||||||
syntax keyword jsArgsObj arguments
|
|
||||||
|
|
||||||
syntax region jsImportContainer start="^\s\?import \?" end=";\|$" contains=jsModules,jsModuleWords,jsLineComment,jsComment,jsStringS,jsStringD,jsTemplateString,jsNoise,jsBlock
|
" Modules
|
||||||
|
syntax keyword jsModuleKeywords contained import
|
||||||
|
syntax keyword jsModuleKeywords contained export skipwhite skipempty nextgroup=jsExportBlock,jsModuleDefault
|
||||||
|
syntax keyword jsModuleOperators contained from
|
||||||
|
syntax keyword jsModuleOperators contained as
|
||||||
|
syntax region jsModuleGroup contained matchgroup=jsBraces start=/{/ end=/}/ contains=jsModuleOperators,jsNoise,jsComment
|
||||||
|
syntax match jsModuleAsterisk contained /*/
|
||||||
|
syntax keyword jsModuleDefault contained default skipwhite kipempty nextgroup=@jsExpression
|
||||||
|
syntax region jsImportContainer start=/\<import\> / end="\%(;\|$\)" contains=jsModuleKeywords,jsModuleOperators,jsComment,jsString,jsTemplateString,jsNoise,jsModuleGroup,jsModuleAsterisk
|
||||||
|
syntax region jsExportContainer start=/\<export\> / end="\%(;\|$\)" contains=jsModuleKeywords,jsModuleOperators,jsStorageClass,jsModuleDefault,@jsExpression
|
||||||
|
syntax region jsExportBlock contained matchgroup=jsBraces start=/{/ end=/}/ contains=jsModuleOperators,jsNoise,jsComment
|
||||||
|
|
||||||
syntax region jsExportContainer start="^\s\?export \?" end="$" contains=jsModules,jsModuleWords,jsComment,jsTemplateString,jsStringD,jsStringS,jsRegexpString,jsNumber,jsFloat,jsThis,jsOperator,jsBooleanTrue,jsBooleanFalse,jsNull,jsFunction,jsArrowFunction,jsGlobalObjects,jsExceptions,jsDomErrNo,jsDomNodeConsts,jsHtmlEvents,jsDotNotation,jsBracket,jsParen,jsFuncCall,jsUndefined,jsNan,jsKeyword,jsStorageClass,jsPrototype,jsBuiltins,jsNoise,jsArgsObj,jsBlock,jsClassDefinition
|
" Strings, Templates, Numbers
|
||||||
|
syntax region jsString start=+"+ skip=+\\\("\|$\)+ end=+"\|$+ contains=jsSpecial,@Spell extend
|
||||||
"" JavaScript comments
|
syntax region jsString start=+'+ skip=+\\\('\|$\)+ end=+'\|$+ contains=jsSpecial,@Spell extend
|
||||||
syntax keyword jsCommentTodo TODO FIXME XXX TBD contained
|
syntax region jsTemplateString start=+`+ skip=+\\\(`\|$\)+ end=+`+ contains=jsTemplateVar,jsSpecial extend
|
||||||
syntax region jsLineComment start=+\/\/+ end=+$+ keepend contains=jsCommentTodo,@Spell extend
|
syntax match jsTaggedTemplate /\k\+\%(`\)\@=/ nextgroup=jsTemplateString
|
||||||
syntax region jsEnvComment start="\%^#!" end="$" display
|
|
||||||
syntax region jsLineComment start=+^\s*\/\/+ skip=+\n\s*\/\/+ end=+$+ keepend contains=jsCommentTodo,@Spell fold
|
|
||||||
syntax region jsCvsTag start="\$\cid:" end="\$" oneline contained
|
|
||||||
syntax region jsComment start="/\*" end="\*/" contains=jsCommentTodo,jsCvsTag,@Spell fold extend
|
|
||||||
|
|
||||||
"" JSDoc / JSDoc Toolkit
|
|
||||||
if !exists("javascript_ignore_javaScriptdoc")
|
|
||||||
syntax case ignore
|
|
||||||
|
|
||||||
"" syntax coloring for javadoc comments (HTML)
|
|
||||||
"syntax include @javaHtml <sfile>:p:h/html.vim
|
|
||||||
"unlet b:current_syntax
|
|
||||||
|
|
||||||
syntax region jsBlockComment matchgroup=jsComment start="/\*\s*" end="\*/" contains=jsDocTags,jsCommentTodo,jsCvsTag,@jsHtml,@Spell fold
|
|
||||||
|
|
||||||
" tags containing a param
|
|
||||||
syntax match jsDocTags contained "@\(alias\|api\|augments\|borrows\|class\|constructs\|default\|defaultvalue\|emits\|exception\|exports\|extends\|fires\|kind\|link\|listens\|member\|member[oO]f\|mixes\|module\|name\|namespace\|requires\|template\|throws\|var\|variation\|version\)\>" nextgroup=jsDocParam skipwhite
|
|
||||||
" tags containing type and param
|
|
||||||
syntax match jsDocTags contained "@\(arg\|argument\|cfg\|param\|property\|prop\)\>" nextgroup=jsDocType skipwhite
|
|
||||||
" tags containing type but no param
|
|
||||||
syntax match jsDocTags contained "@\(callback\|define\|enum\|external\|implements\|this\|type\|typedef\|return\|returns\)\>" nextgroup=jsDocTypeNoParam skipwhite
|
|
||||||
" tags containing references
|
|
||||||
syntax match jsDocTags contained "@\(lends\|see\|tutorial\)\>" nextgroup=jsDocSeeTag skipwhite
|
|
||||||
" other tags (no extra syntax)
|
|
||||||
syntax match jsDocTags contained "@\(abstract\|access\|accessor\|author\|classdesc\|constant\|const\|constructor\|copyright\|deprecated\|desc\|description\|dict\|event\|example\|file\|file[oO]verview\|final\|function\|global\|ignore\|inheritDoc\|inner\|instance\|interface\|license\|localdoc\|method\|mixin\|nosideeffects\|override\|overview\|preserve\|private\|protected\|public\|readonly\|since\|static\|struct\|todo\|summary\|undocumented\|virtual\)\>"
|
|
||||||
|
|
||||||
syntax region jsDocType matchgroup=jsDocTypeBrackets start="{" end="}" oneline contained nextgroup=jsDocParam skipwhite contains=jsDocTypeRecord
|
|
||||||
syntax match jsDocType contained "\%(#\|\"\|\w\|\.\|:\|\/\)\+" nextgroup=jsDocParam skipwhite
|
|
||||||
syntax region jsDocTypeRecord start=/{/ end=/}/ contained extend contains=jsDocTypeRecord
|
|
||||||
syntax region jsDocTypeRecord start=/\[/ end=/\]/ contained extend contains=jsDocTypeRecord
|
|
||||||
syntax region jsDocTypeNoParam start="{" end="}" oneline contained
|
|
||||||
syntax match jsDocTypeNoParam contained "\%(#\|\"\|\w\|\.\|:\|\/\)\+"
|
|
||||||
syntax match jsDocParam contained "\%(#\|\$\|-\|'\|\"\|{.\{-}}\|\w\|\.\|:\|\/\|\[.{-}]\|=\)\+"
|
|
||||||
syntax region jsDocSeeTag contained matchgroup=jsDocSeeTag start="{" end="}" contains=jsDocTags
|
|
||||||
|
|
||||||
syntax case match
|
|
||||||
endif "" JSDoc end
|
|
||||||
|
|
||||||
syntax case match
|
|
||||||
|
|
||||||
"" Syntax in the JavaScript code
|
|
||||||
syntax match jsFuncCall /\k\+\%(\s*(\)\@=/
|
|
||||||
syntax match jsSpecial "\v\\%(0|\\x\x\{2\}\|\\u\x\{4\}\|\c[A-Z]|.)" contained
|
|
||||||
syntax region jsTemplateVar matchgroup=jsTemplateBraces start=+${+ end=+}+ contained contains=@jsExpression
|
|
||||||
syntax region jsStringD start=+"+ skip=+\\\("\|$\)+ end=+"\|$+ contains=jsSpecial,@htmlPreproc,@Spell
|
|
||||||
syntax region jsStringS start=+'+ skip=+\\\('\|$\)+ end=+'\|$+ contains=jsSpecial,@htmlPreproc,@Spell
|
|
||||||
syntax region jsTemplateString start=+`+ skip=+\\\(`\|$\)+ end=+`+ contains=jsTemplateVar,jsSpecial,@htmlPreproc
|
|
||||||
syntax region jsTaggedTemplate start=/\k\+\%([\n\s]\+\)\?`/ end=+`+ contains=jsTemplateString keepend
|
|
||||||
syntax region jsRegexpCharClass start=+\[+ skip=+\\.+ end=+\]+ contained
|
|
||||||
syntax match jsRegexpBoundary "\v%(\<@![\^$]|\\[bB])" contained
|
|
||||||
syntax match jsRegexpBackRef "\v\\[1-9][0-9]*" contained
|
|
||||||
syntax match jsRegexpQuantifier "\v\\@<!%([?*+]|\{\d+%(,|,\d+)?})\??" contained
|
|
||||||
syntax match jsRegexpOr "\v\<@!\|" contained
|
|
||||||
syntax match jsRegexpMod "\v\(@<=\?[:=!>]" contained
|
|
||||||
syntax cluster jsRegexpSpecial contains=jsSpecial,jsRegexpBoundary,jsRegexpBackRef,jsRegexpQuantifier,jsRegexpOr,jsRegexpMod
|
|
||||||
syntax region jsRegexpGroup start="\\\@<!(" skip="\\.\|\[\(\\.\|[^]]\)*\]" end="\\\@<!)" contained contains=jsRegexpCharClass,@jsRegexpSpecial keepend
|
|
||||||
syntax region jsRegexpString start=+\%(\%(\%(return\|case\)\s\+\)\@50<=\|\%(\%([)\]"']\|\d\|\w\)\s*\)\@50<!\)/\(\*\|/\)\@!+ skip=+\\.\|\[\%(\\.\|[^]]\)*\]+ end=+/[gimy]\{,4}+ contains=jsRegexpCharClass,jsRegexpGroup,@jsRegexpSpecial,@htmlPreproc oneline keepend
|
|
||||||
syntax match jsNumber /\<-\=\d\+\(L\|[eE][+-]\=\d\+\)\=\>\|\<0[xX]\x\+\>/
|
syntax match jsNumber /\<-\=\d\+\(L\|[eE][+-]\=\d\+\)\=\>\|\<0[xX]\x\+\>/
|
||||||
syntax keyword jsNumber Infinity
|
syntax keyword jsNumber Infinity
|
||||||
syntax match jsFloat /\<-\=\%(\d\+\.\d\+\|\d\+\.\|\.\d\+\)\%([eE][+-]\=\d\+\)\=\>/
|
syntax match jsFloat /\<-\=\%(\d\+\.\d\+\|\d\+\.\|\.\d\+\)\%([eE][+-]\=\d\+\)\=\>/
|
||||||
syntax match jsObjectKey /\<[a-zA-Z_$][0-9a-zA-Z_$]*\>\(\s*:\)\@=/ contains=jsFunctionKey contained
|
|
||||||
syntax match jsFunctionKey /\<[a-zA-Z_$][0-9a-zA-Z_$]*\>\(\s*:\s*function\s*\)\@=/ contained
|
" Regular Expressions
|
||||||
syntax match jsDecorator "@" display contains=jsDecoratorFunction nextgroup=jsDecoratorFunction skipwhite
|
syntax match jsSpecial contained "\v\\%(0|\\x\x\{2\}\|\\u\x\{4\}\|\c[A-Z]|.)"
|
||||||
syntax match jsDecoratorFunction "[a-zA-Z_][a-zA-Z0-9_.]*" display contained nextgroup=jsFunc skipwhite
|
syntax region jsTemplateVar contained matchgroup=jsTemplateBraces start=+${+ end=+}+ contains=@jsExpression
|
||||||
|
syntax region jsRegexpCharClass contained start=+\[+ skip=+\\.+ end=+\]+
|
||||||
|
syntax match jsRegexpBoundary contained "\v%(\<@![\^$]|\\[bB])"
|
||||||
|
syntax match jsRegexpBackRef contained "\v\\[1-9][0-9]*"
|
||||||
|
syntax match jsRegexpQuantifier contained "\v\\@<!%([?*+]|\{\d+%(,|,\d+)?})\??"
|
||||||
|
syntax match jsRegexpOr contained "\v\<@!\|"
|
||||||
|
syntax match jsRegexpMod contained "\v\(@<=\?[:=!>]"
|
||||||
|
syntax region jsRegexpGroup contained start="\\\@<!(" skip="\\.\|\[\(\\.\|[^]]\)*\]" end="\\\@<!)" contains=jsRegexpCharClass,@jsRegexpSpecial keepend
|
||||||
|
if v:version > 703 || v:version == 603 && has("patch1088")
|
||||||
|
syntax region jsRegexpString start=+\%(\%(\%(return\|case\)\s\+\)\@50<=\|\%(\%([)\]"']\|\d\|\w\)\s*\)\@50<!\)/\(\*\|/\)\@!+ skip=+\\.\|\[\%(\\.\|[^]]\)*\]+ end=+/[gimy]\{,4}+ contains=jsRegexpCharClass,jsRegexpGroup,@jsRegexpSpecial oneline keepend extend
|
||||||
|
else
|
||||||
|
syntax region jsRegexpString start=+\%(\%(\%(return\|case\)\s\+\)\@<=\|\%(\%([)\]"']\|\d\|\w\)\s*\)\@<!\)/\(\*\|/\)\@!+ skip=+\\.\|\[\%(\\.\|[^]]\)*\]+ end=+/[gimy]\{,4}+ contains=jsRegexpCharClass,jsRegexpGroup,@jsRegexpSpecial oneline keepend extend
|
||||||
|
endif
|
||||||
|
syntax cluster jsRegexpSpecial contains=jsSpecial,jsRegexpBoundary,jsRegexpBackRef,jsRegexpQuantifier,jsRegexpOr,jsRegexpMod
|
||||||
|
|
||||||
|
syntax match jsObjectKey contained /\<[0-9a-zA-Z_$]*\>\(\s*:\)\@=/ contains=jsFunctionKey skipwhite skipempty nextgroup=jsObjectValue,jsFlowParenRegion
|
||||||
|
syntax region jsObjectKeyString contained start=+"+ skip=+\\\("\|$\)+ end=+"\|$+ contains=jsSpecial,@Spell skipwhite skipempty nextgroup=jsObjectValue
|
||||||
|
syntax region jsObjectKeyString contained start=+'+ skip=+\\\('\|$\)+ end=+'\|$+ contains=jsSpecial,@Spell skipwhite skipempty nextgroup=jsObjectValue
|
||||||
|
syntax region jsObjectKeyComputed contained matchgroup=jsBrackets start=/\[/ end=/]/ contains=@jsExpression skipwhite skipempty nextgroup=jsObjectValue,jsFuncArgs extend
|
||||||
|
syntax match jsObjectSeparator contained /,/
|
||||||
|
syntax region jsObjectValue contained start=/:/ end=/\%(,\|}\)\@=/ contains=@jsExpression extend
|
||||||
|
syntax match jsObjectFuncName contained /\<[a-zA-Z_$][0-9a-zA-Z_$]*\>[\r\n\t ]*(\@=/ skipwhite skipempty nextgroup=jsFuncArgs
|
||||||
|
syntax match jsFunctionKey contained /\<[a-zA-Z_$][0-9a-zA-Z_$]*\>\(\s*:\s*function\s*\)\@=/
|
||||||
|
syntax match jsObjectMethodType contained /\%(get\|set\|static\|async\)\%( \k\+\)\@=/ skipwhite skipempty nextgroup=jsObjectFuncName
|
||||||
|
syntax region jsObjectStringKey contained start=+"+ skip=+\\\("\|$\)+ end=+"\|$+ contains=jsSpecial,@Spell extend skipwhite skipempty nextgroup=jsFuncArgs,jsObjectValue
|
||||||
|
syntax region jsObjectStringKey contained start=+'+ skip=+\\\('\|$\)+ end=+'\|$+ contains=jsSpecial,@Spell extend skipwhite skipempty nextgroup=jsFuncArgs,jsObjectValue
|
||||||
|
|
||||||
exe 'syntax keyword jsNull null '.(exists('g:javascript_conceal_null') ? 'conceal cchar='.g:javascript_conceal_null : '')
|
exe 'syntax keyword jsNull null '.(exists('g:javascript_conceal_null') ? 'conceal cchar='.g:javascript_conceal_null : '')
|
||||||
exe 'syntax keyword jsReturn return '.(exists('g:javascript_conceal_return') ? 'conceal cchar='.g:javascript_conceal_return : '')
|
exe 'syntax keyword jsReturn return contained '.(exists('g:javascript_conceal_return') ? 'conceal cchar='.g:javascript_conceal_return : '')
|
||||||
exe 'syntax keyword jsUndefined undefined '.(exists('g:javascript_conceal_undefined') ? 'conceal cchar='.g:javascript_conceal_undefined : '')
|
exe 'syntax keyword jsUndefined undefined '.(exists('g:javascript_conceal_undefined') ? 'conceal cchar='.g:javascript_conceal_undefined : '')
|
||||||
exe 'syntax keyword jsNan NaN '.(exists('g:javascript_conceal_NaN') ? 'conceal cchar='.g:javascript_conceal_NaN : '')
|
exe 'syntax keyword jsNan NaN '.(exists('g:javascript_conceal_NaN') ? 'conceal cchar='.g:javascript_conceal_NaN : '')
|
||||||
exe 'syntax keyword jsPrototype prototype '.(exists('g:javascript_conceal_prototype') ? 'conceal cchar='.g:javascript_conceal_prototype : '')
|
exe 'syntax keyword jsPrototype prototype '.(exists('g:javascript_conceal_prototype') ? 'conceal cchar='.g:javascript_conceal_prototype : '')
|
||||||
exe 'syntax keyword jsThis this '.(exists('g:javascript_conceal_this') ? 'conceal cchar='.g:javascript_conceal_this : '')
|
exe 'syntax keyword jsThis this contained '.(exists('g:javascript_conceal_this') ? 'conceal cchar='.g:javascript_conceal_this : '')
|
||||||
exe 'syntax keyword jsStatic static '.(exists('g:javascript_conceal_static') ? 'conceal cchar='.g:javascript_conceal_static : '')
|
exe 'syntax keyword jsSuper super contained '.(exists('g:javascript_conceal_super') ? 'conceal cchar='.g:javascript_conceal_super : '')
|
||||||
exe 'syntax keyword jsSuper super '.(exists('g:javascript_conceal_super') ? 'conceal cchar='.g:javascript_conceal_super : '')
|
|
||||||
|
|
||||||
"" Statement Keywords
|
" Statement Keywords
|
||||||
syntax keyword jsStatement break continue with
|
syntax keyword jsStatement contained break continue with yield debugger
|
||||||
syntax keyword jsConditional if else switch
|
syntax keyword jsConditional if else skipwhite skipempty nextgroup=jsParenIfElse,jsBlock
|
||||||
syntax keyword jsRepeat do while for
|
syntax keyword jsConditional switch skipwhite skipempty nextgroup=jsParenSwitch
|
||||||
syntax keyword jsLabel case default
|
syntax keyword jsRepeat while for skipwhite skipempty nextgroup=jsParenRepeat
|
||||||
syntax keyword jsKeyword yield
|
syntax keyword jsRepeat do skipwhite skipempty nextgroup=jsBlock
|
||||||
syntax keyword jsException try catch throw finally
|
syntax keyword jsLabel contained case default
|
||||||
|
syntax keyword jsTry try skipwhite skipempty nextgroup=jsTryCatchBlock
|
||||||
|
syntax keyword jsFinally contained finally skipwhite skipempty nextgroup=jsBlock
|
||||||
|
syntax keyword jsCatch contained catch skipwhite skipempty nextgroup=jsParenCatch
|
||||||
|
syntax keyword jsException throw
|
||||||
syntax keyword jsAsyncKeyword async await
|
syntax keyword jsAsyncKeyword async await
|
||||||
|
syntax match jsSwitchColon contained /:/ skipwhite skipempty nextgroup=jsBlock
|
||||||
|
|
||||||
|
" Keywords
|
||||||
syntax keyword jsGlobalObjects Array Boolean Date Function Iterator Number Object Symbol Map WeakMap Set RegExp String Proxy Promise Buffer ParallelArray ArrayBuffer DataView Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray JSON Math console document window Intl Collator DateTimeFormat NumberFormat
|
syntax keyword jsGlobalObjects Array Boolean Date Function Iterator Number Object Symbol Map WeakMap Set RegExp String Proxy Promise Buffer ParallelArray ArrayBuffer DataView Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray JSON Math console document window Intl Collator DateTimeFormat NumberFormat
|
||||||
|
|
||||||
syntax keyword jsExceptions Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError
|
syntax keyword jsExceptions Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError
|
||||||
|
|
||||||
syntax keyword jsBuiltins decodeURI decodeURIComponent encodeURI encodeURIComponent eval isFinite isNaN parseFloat parseInt uneval
|
syntax keyword jsBuiltins decodeURI decodeURIComponent encodeURI encodeURIComponent eval isFinite isNaN parseFloat parseInt uneval
|
||||||
|
" DISCUSS: How imporant is this, really? Perhaps it should be linked to an error because I assume the keywords are reserved?
|
||||||
|
syntax keyword jsFutureKeys abstract enum int short boolean interface byte long char final native synchronized float package throws goto private transient implements protected volatile double public
|
||||||
|
|
||||||
syntax keyword jsFutureKeys abstract enum int short boolean interface byte long char final native synchronized float package throws goto private transient debugger implements protected volatile double public
|
" DISCUSS: Should we really be matching stuff like this?
|
||||||
|
|
||||||
"" DOM/HTML/CSS specified things
|
|
||||||
|
|
||||||
" DOM2 Objects
|
" DOM2 Objects
|
||||||
syntax keyword jsGlobalObjects DOMImplementation DocumentFragment Document Node NodeList NamedNodeMap CharacterData Attr Element Text Comment CDATASection DocumentType Notation Entity EntityReference ProcessingInstruction
|
syntax keyword jsGlobalObjects DOMImplementation DocumentFragment Document Node NodeList NamedNodeMap CharacterData Attr Element Text Comment CDATASection DocumentType Notation Entity EntityReference ProcessingInstruction
|
||||||
syntax keyword jsExceptions DOMException
|
syntax keyword jsExceptions DOMException
|
||||||
|
|
||||||
|
" DISCUSS: Should we really be matching stuff like this?
|
||||||
" DOM2 CONSTANT
|
" DOM2 CONSTANT
|
||||||
syntax keyword jsDomErrNo INDEX_SIZE_ERR DOMSTRING_SIZE_ERR HIERARCHY_REQUEST_ERR WRONG_DOCUMENT_ERR INVALID_CHARACTER_ERR NO_DATA_ALLOWED_ERR NO_MODIFICATION_ALLOWED_ERR NOT_FOUND_ERR NOT_SUPPORTED_ERR INUSE_ATTRIBUTE_ERR INVALID_STATE_ERR SYNTAX_ERR INVALID_MODIFICATION_ERR NAMESPACE_ERR INVALID_ACCESS_ERR
|
syntax keyword jsDomErrNo INDEX_SIZE_ERR DOMSTRING_SIZE_ERR HIERARCHY_REQUEST_ERR WRONG_DOCUMENT_ERR INVALID_CHARACTER_ERR NO_DATA_ALLOWED_ERR NO_MODIFICATION_ALLOWED_ERR NOT_FOUND_ERR NOT_SUPPORTED_ERR INUSE_ATTRIBUTE_ERR INVALID_STATE_ERR SYNTAX_ERR INVALID_MODIFICATION_ERR NAMESPACE_ERR INVALID_ACCESS_ERR
|
||||||
syntax keyword jsDomNodeConsts ELEMENT_NODE ATTRIBUTE_NODE TEXT_NODE CDATA_SECTION_NODE ENTITY_REFERENCE_NODE ENTITY_NODE PROCESSING_INSTRUCTION_NODE COMMENT_NODE DOCUMENT_NODE DOCUMENT_TYPE_NODE DOCUMENT_FRAGMENT_NODE NOTATION_NODE
|
syntax keyword jsDomNodeConsts ELEMENT_NODE ATTRIBUTE_NODE TEXT_NODE CDATA_SECTION_NODE ENTITY_REFERENCE_NODE ENTITY_NODE PROCESSING_INSTRUCTION_NODE COMMENT_NODE DOCUMENT_NODE DOCUMENT_TYPE_NODE DOCUMENT_FRAGMENT_NODE NOTATION_NODE
|
||||||
|
|
||||||
|
" DISCUSS: Should we really be special matching on these props?
|
||||||
" HTML events and internal variables
|
" HTML events and internal variables
|
||||||
syntax case ignore
|
|
||||||
syntax keyword jsHtmlEvents onblur onclick oncontextmenu ondblclick onfocus onkeydown onkeypress onkeyup onmousedown onmousemove onmouseout onmouseover onmouseup onresize
|
syntax keyword jsHtmlEvents onblur onclick oncontextmenu ondblclick onfocus onkeydown onkeypress onkeyup onmousedown onmousemove onmouseout onmouseover onmouseup onresize
|
||||||
syntax case match
|
|
||||||
|
|
||||||
" Follow stuff should be highligh within a special context
|
|
||||||
" While it can't be handled with context depended with Regex based highlight
|
|
||||||
" So, turn it off by default
|
|
||||||
if exists("javascript_enable_domhtmlcss")
|
|
||||||
|
|
||||||
" DOM2 things
|
|
||||||
syntax match jsDomElemAttrs contained /\%(nodeName\|nodeValue\|nodeType\|parentNode\|childNodes\|firstChild\|lastChild\|previousSibling\|nextSibling\|attributes\|ownerDocument\|namespaceURI\|prefix\|localName\|tagName\)\>/
|
|
||||||
syntax match jsDomElemFuncs contained /\%(insertBefore\|replaceChild\|removeChild\|appendChild\|hasChildNodes\|cloneNode\|normalize\|isSupported\|hasAttributes\|getAttribute\|setAttribute\|removeAttribute\|getAttributeNode\|setAttributeNode\|removeAttributeNode\|getElementById\|getElementsByClassName\|getElementsByTagName\|querySelector\|querySelectorAll\|getAttributeNS\|setAttributeNS\|removeAttributeNS\|getAttributeNodeNS\|setAttributeNodeNS\|getElementsByTagNameNS\|hasAttribute\|hasAttributeNS\)\>/ nextgroup=jsParen skipwhite
|
|
||||||
" HTML things
|
|
||||||
syntax match jsHtmlElemAttrs contained /\%(className\|clientHeight\|clientLeft\|clientTop\|clientWidth\|dir\|id\|innerHTML\|lang\|length\|offsetHeight\|offsetLeft\|offsetParent\|offsetTop\|offsetWidth\|scrollHeight\|scrollLeft\|scrollTop\|scrollWidth\|style\|tabIndex\|title\)\>/
|
|
||||||
syntax match jsHtmlElemFuncs contained /\%(blur\|click\|focus\|scrollIntoView\|addEventListener\|dispatchEvent\|removeEventListener\|item\)\>/ nextgroup=jsParen skipwhite
|
|
||||||
|
|
||||||
" CSS Styles in JavaScript
|
|
||||||
syntax keyword jsCssStyles contained color font fontFamily fontSize fontSizeAdjust fontStretch fontStyle fontVariant fontWeight letterSpacing lineBreak lineHeight quotes rubyAlign rubyOverhang rubyPosition
|
|
||||||
syntax keyword jsCssStyles contained textAlign textAlignLast textAutospace textDecoration textIndent textJustify textJustifyTrim textKashidaSpace textOverflowW6 textShadow textTransform textUnderlinePosition
|
|
||||||
syntax keyword jsCssStyles contained unicodeBidi whiteSpace wordBreak wordSpacing wordWrap writingMode
|
|
||||||
syntax keyword jsCssStyles contained bottom height left position right top width zIndex
|
|
||||||
syntax keyword jsCssStyles contained border borderBottom borderLeft borderRight borderTop borderBottomColor borderLeftColor borderTopColor borderBottomStyle borderLeftStyle borderRightStyle borderTopStyle borderBottomWidth borderLeftWidth borderRightWidth borderTopWidth borderColor borderStyle borderWidth borderCollapse borderSpacing captionSide emptyCells tableLayout
|
|
||||||
syntax keyword jsCssStyles contained margin marginBottom marginLeft marginRight marginTop outline outlineColor outlineStyle outlineWidth padding paddingBottom paddingLeft paddingRight paddingTop
|
|
||||||
syntax keyword jsCssStyles contained listStyle listStyleImage listStylePosition listStyleType
|
|
||||||
syntax keyword jsCssStyles contained background backgroundAttachment backgroundColor backgroundImage backgroundPosition backgroundPositionX backgroundPositionY backgroundRepeat
|
|
||||||
syntax keyword jsCssStyles contained clear clip clipBottom clipLeft clipRight clipTop content counterIncrement counterReset cssFloat cursor direction display filter layoutGrid layoutGridChar layoutGridLine layoutGridMode layoutGridType
|
|
||||||
syntax keyword jsCssStyles contained marks maxHeight maxWidth minHeight minWidth opacity MozOpacity overflow overflowX overflowY verticalAlign visibility zoom cssText
|
|
||||||
syntax keyword jsCssStyles contained scrollbar3dLightColor scrollbarArrowColor scrollbarBaseColor scrollbarDarkShadowColor scrollbarFaceColor scrollbarHighlightColor scrollbarShadowColor scrollbarTrackColor
|
|
||||||
|
|
||||||
" Highlight ways
|
|
||||||
syntax match jsDotNotation "\." nextgroup=jsPrototype,jsDomElemAttrs,jsDomElemFuncs,jsHtmlElemAttrs,jsHtmlElemFuncs
|
|
||||||
syntax match jsDotNotation "\.style\." nextgroup=jsCssStyles
|
|
||||||
|
|
||||||
endif "DOM/HTML/CSS
|
|
||||||
|
|
||||||
"" end DOM/HTML/CSS specified things
|
|
||||||
|
|
||||||
"" Code blocks
|
"" Code blocks
|
||||||
syntax cluster jsExpression contains=jsComment,jsLineComment,jsBlockComment,jsTaggedTemplate,jsTemplateString,jsStringD,jsStringS,jsRegexpString,jsNumber,jsFloat,jsThis,jsStatic,jsSuper,jsOperator,jsBooleanTrue,jsBooleanFalse,jsNull,jsFunction,jsArrowFunction,jsGlobalObjects,jsExceptions,jsFutureKeys,jsDomErrNo,jsDomNodeConsts,jsHtmlEvents,jsDotNotation,jsBracket,jsParen,jsBlock,jsFuncCall,jsUndefined,jsNan,jsKeyword,jsStorageClass,jsPrototype,jsBuiltins,jsNoise,jsCommonJS,jsImportContainer,jsExportContainer,jsArgsObj,jsDecorator,jsAsyncKeyword,jsClassDefinition,jsArrowFunction,jsArrowFuncArgs
|
syntax region jsBracket matchgroup=jsBrackets start=/\[/ end=/\]/ contains=@jsExpression extend fold
|
||||||
syntax cluster jsAll contains=@jsExpression,jsLabel,jsConditional,jsRepeat,jsReturn,jsStatement,jsTernaryIf,jsException
|
syntax region jsParen matchgroup=jsParens start=/(/ end=/)/ contains=@jsAll extend fold
|
||||||
syntax region jsBracket matchgroup=jsBrackets start="\[" end="\]" contains=@jsAll,jsParensErrB,jsParensErrC,jsBracket,jsParen,jsBlock,@htmlPreproc fold
|
syntax region jsParenIfElse contained matchgroup=jsParens start=/(/ end=/)/ contains=@jsAll skipwhite skipempty nextgroup=jsBlock extend fold
|
||||||
syntax region jsParen matchgroup=jsParens start="(" end=")" contains=@jsAll,jsOf,jsParensErrA,jsParensErrC,jsParen,jsBracket,jsBlock,@htmlPreproc fold extend
|
syntax region jsParenRepeat contained matchgroup=jsParens start=/(/ end=/)/ contains=@jsAll skipwhite skipempty nextgroup=jsBlock extend fold
|
||||||
syntax region jsClassBlock matchgroup=jsClassBraces start="{" end="}" contains=jsFuncName,jsClassMethodDefinitions,jsOperator,jsArrowFunction,jsArrowFuncArgs,jsComment,jsBlockComment,jsLineComment contained fold
|
syntax region jsParenSwitch contained matchgroup=jsParens start=/(/ end=/)/ contains=@jsAll skipwhite skipempty nextgroup=jsSwitchBlock extend fold
|
||||||
syntax region jsFuncBlock matchgroup=jsFuncBraces start="{" end="}" contains=@jsAll,jsParensErrA,jsParensErrB,jsParen,jsBracket,jsBlock,@htmlPreproc,jsClassDefinition fold extend
|
syntax region jsParenCatch contained matchgroup=jsParens start=/(/ end=/)/ skipwhite skipempty nextgroup=jsTryCatchBlock extend fold
|
||||||
syntax region jsBlock matchgroup=jsBraces start="{" end="}" contains=@jsAll,jsParensErrA,jsParensErrB,jsParen,jsBracket,jsBlock,jsObjectKey,@htmlPreproc,jsClassDefinition fold extend
|
syntax region jsFuncArgs contained matchgroup=jsFuncParens start=/(/ end=/)/ contains=jsFuncArgCommas,jsComment,jsFuncArgExpression,jsDestructuringBlock,jsRestExpression,jsFlow skipwhite skipempty nextgroup=jsFuncBlock,jsFlowReturn extend fold
|
||||||
syntax region jsTernaryIf matchgroup=jsTernaryIfOperator start=+?+ end=+:+ contains=@jsExpression,jsTernaryIf
|
syntax region jsClassBlock contained matchgroup=jsClassBraces start=/{/ end=/}/ contains=jsClassFuncName,jsClassMethodType,jsOperator,jsArrowFunction,jsArrowFuncArgs,jsComment,jsGenerator,jsDecorator,jsClassProperty,jsClassPropertyComputed,jsClassStringKey,jsNoise,jsFlowClassProperty extend fold
|
||||||
|
syntax region jsFuncBlock contained matchgroup=jsFuncBraces start=/{/ end=/}/ contains=@jsAll extend fold
|
||||||
|
syntax region jsBlock contained matchgroup=jsBraces start=/{/ end=/}/ contains=@jsAll extend fold
|
||||||
|
syntax region jsTryCatchBlock contained matchgroup=jsBraces start=/{/ end=/}/ contains=@jsAll skipwhite skipempty nextgroup=jsCatch,jsFinally extend fold
|
||||||
|
syntax region jsSwitchBlock contained matchgroup=jsBraces start=/{/ end=/}/ contains=@jsAll,jsLabel,jsSwitchColon extend fold
|
||||||
|
syntax region jsDestructuringBlock contained matchgroup=jsDestructuringBraces start=/{/ end=/}/ contains=jsDestructuringProperty,jsDestructuringAssignment,jsDestructuringNoise,jsDestructuringPropertyComputed,jsSpreadExpression extend fold
|
||||||
|
syntax region jsDestructuringArray contained matchgroup=jsDestructuringBraces start=/\[/ end=/\]/ contains=jsDestructuringPropertyValue,jsNoise,jsDestructuringProperty,jsSpreadExpression extend fold
|
||||||
|
syntax region jsObject matchgroup=jsObjectBraces start=/{/ end=/}/ contains=jsObjectKey,jsObjectKeyString,jsObjectKeyComputed,jsObjectSeparator,jsObjectFuncName,jsObjectMethodType,jsGenerator,jsComment,jsObjectStringKey,jsSpreadExpression extend fold
|
||||||
|
syntax region jsTernaryIf matchgroup=jsTernaryIfOperator start=/?/ end=/\%(:\|[\}]\@=\)/ contains=@jsExpression
|
||||||
|
syntax region jsSpreadExpression contained matchgroup=jsSpreadOperator start=/\.\.\./ end=/[,}\]]\@=/ contains=@jsExpression
|
||||||
|
syntax region jsRestExpression contained matchgroup=jsRestOperator start=/\.\.\./ end=/[,)]\@=/
|
||||||
|
syntax region jsTernaryIf matchgroup=jsTernaryIfOperator start=/?/ end=/\%(:\|[\}]\@=\)/ contains=@jsExpression
|
||||||
|
|
||||||
"" catch errors caused by wrong parenthesis
|
syntax match jsGenerator contained /\*/ skipwhite skipempty nextgroup=jsFuncName,jsFuncArgs
|
||||||
syntax match jsParensError ")\|}\|\]"
|
syntax match jsFuncName contained /\<[a-zA-Z_$][0-9a-zA-Z_$]*\>/ skipwhite skipempty nextgroup=jsFuncArgs
|
||||||
syntax match jsParensErrA contained "\]"
|
syntax region jsFuncArgExpression contained matchgroup=jsFuncArgOperator start=/=/ end=/[,)]\@=/ contains=@jsExpression extend
|
||||||
syntax match jsParensErrB contained ")"
|
|
||||||
syntax match jsParensErrC contained "}"
|
|
||||||
|
|
||||||
syntax match jsFuncArgDestructuring contained /\({\|}\|=\|:\|\[\|\]\)/ extend
|
|
||||||
exe 'syntax match jsFunction /\<function\>/ nextgroup=jsGenerator,jsFuncName,jsFuncArgs skipwhite '.(exists('g:javascript_conceal_function') ? 'conceal cchar='.g:javascript_conceal_function : '')
|
|
||||||
exe 'syntax match jsArrowFunction /=>/ skipwhite nextgroup=jsFuncBlock contains=jsFuncBraces '.(exists('g:javascript_conceal_arrow_function') ? 'conceal cchar='.g:javascript_conceal_arrow_function : '')
|
|
||||||
|
|
||||||
syntax match jsGenerator contained '\*' nextgroup=jsFuncName,jsFuncArgs skipwhite
|
|
||||||
syntax match jsFuncName contained /\<[a-zA-Z_$][0-9a-zA-Z_$]*/ nextgroup=jsFuncArgs skipwhite
|
|
||||||
syntax region jsFuncArgs contained matchgroup=jsFuncParens start='(' end=')' contains=jsFuncArgCommas,jsFuncArgRest,jsComment,jsLineComment,jsStringS,jsStringD,jsNumber,jsFuncArgDestructuring,jsArrowFunction,jsParen,jsArrowFuncArgs nextgroup=jsFuncBlock keepend skipwhite skipempty
|
|
||||||
syntax match jsFuncArgCommas contained ','
|
syntax match jsFuncArgCommas contained ','
|
||||||
syntax match jsFuncArgRest contained /\%(\.\.\.[a-zA-Z_$][0-9a-zA-Z_$]*\))/ contains=jsFuncArgRestDots
|
syntax keyword jsArguments contained arguments
|
||||||
syntax match jsFuncArgRestDots contained /\.\.\./
|
|
||||||
|
|
||||||
" Matches a single keyword argument with no parens
|
" Matches a single keyword argument with no parens
|
||||||
syntax match jsArrowFuncArgs /\k\+\s*\%(=>\)\@=/ skipwhite contains=jsFuncArgs nextgroup=jsArrowFunction extend
|
syntax match jsArrowFuncArgs /\k\+\s*\%(=>\)\@=/ skipwhite contains=jsFuncArgs skipwhite skipempty nextgroup=jsArrowFunction extend
|
||||||
" Matches a series of arguments surrounded in parens
|
" Matches a series of arguments surrounded in parens
|
||||||
syntax match jsArrowFuncArgs /([^()]*)\s*\(=>\)\@=/ skipempty skipwhite contains=jsFuncArgs nextgroup=jsArrowFunction extend
|
syntax match jsArrowFuncArgs /([^()]*)\s*\(=>\)\@=/ contains=jsFuncArgs skipempty skipwhite nextgroup=jsArrowFunction extend
|
||||||
|
|
||||||
syntax keyword jsClassKeywords extends class contained
|
exe 'syntax match jsFunction /\<function\>/ skipwhite skipempty nextgroup=jsGenerator,jsFuncName,jsFuncArgs skipwhite '.(exists('g:javascript_conceal_function') ? 'conceal cchar='.g:javascript_conceal_function : '')
|
||||||
syntax match jsClassNoise /\./ contained
|
exe 'syntax match jsArrowFunction /=>/ skipwhite skipempty nextgroup=jsFuncBlock contains=jsFuncBraces '.(exists('g:javascript_conceal_arrow_function') ? 'conceal cchar='.g:javascript_conceal_arrow_function : '')
|
||||||
syntax keyword jsClassMethodDefinitions get set static contained nextgroup=jsFuncName skipwhite skipempty
|
|
||||||
syntax match jsClassDefinition /class [a-zA-Z_$][0-9a-zA-Z_$ \n.]*/ contains=jsClassKeywords,jsClassNoise nextgroup=jsClassBlock skipwhite skipempty
|
syntax keyword jsClassKeywords contained extends class
|
||||||
|
syntax match jsClassNoise contained /\./
|
||||||
|
syntax match jsClassMethodType contained /\%(get\|set\|static\|async\)\%( \k\+\)\@=/ skipwhite skipempty nextgroup=jsFuncName,jsClassProperty
|
||||||
|
syntax match jsClassDefinition /\<class\>\%( [a-zA-Z_$][0-9a-zA-Z_$ \n.]*\)*/ contains=jsClassKeywords,jsClassNoise skipwhite skipempty nextgroup=jsClassBlock,jsFlowClass
|
||||||
|
syntax match jsDecorator contained "@" nextgroup=jsDecoratorFunction
|
||||||
|
syntax match jsDecoratorFunction contained "[a-zA-Z_][a-zA-Z0-9_.]*"
|
||||||
|
syntax match jsClassProperty contained /\<[0-9a-zA-Z_$]*\>\(\s*=\)\@=/ skipwhite skipempty nextgroup=jsClassValue
|
||||||
|
syntax region jsClassValue contained start=/=/ end=/\%(;\|}\|\n\)\@=/ contains=@jsExpression
|
||||||
|
syntax region jsClassPropertyComputed contained matchgroup=jsBrackets start=/\[/ end=/]/ contains=@jsExpression skipwhite skipempty nextgroup=jsFuncArgs,jsClassValue extend
|
||||||
|
syntax match jsClassFuncName contained /\<[a-zA-Z_$][0-9a-zA-Z_$]*\>\%(\s*(\)\@=/ skipwhite skipempty nextgroup=jsFuncArgs
|
||||||
|
syntax region jsClassStringKey contained start=+"+ skip=+\\\("\|$\)+ end=+"\|$+ contains=jsSpecial,@Spell extend skipwhite skipempty nextgroup=jsFuncArgs
|
||||||
|
syntax region jsClassStringKey contained start=+'+ skip=+\\\('\|$\)+ end=+'\|$+ contains=jsSpecial,@Spell extend skipwhite skipempty nextgroup=jsFuncArgs
|
||||||
|
|
||||||
|
" Destructuring
|
||||||
|
syntax match jsDestructuringPropertyValue contained /\<[0-9a-zA-Z_$]*\>/
|
||||||
|
syntax match jsDestructuringProperty contained /\<[0-9a-zA-Z_$]*\>\(\s*=\)\@=/ skipwhite skipempty nextgroup=jsDestructuringValue
|
||||||
|
syntax match jsDestructuringAssignment contained /\<[0-9a-zA-Z_$]*\>\(\s*:\)\@=/ skipwhite skipempty nextgroup=jsDestructuringValueAssignment
|
||||||
|
syntax region jsDestructuringValue contained start=/=/ end=/[,}\]]\@=/ contains=@jsExpression extend
|
||||||
|
syntax region jsDestructuringValueAssignment contained start=/:/ end=/[,}=]\@=/ contains=jsDestructuringPropertyValue,jsDestructuringBlock,jsNoise,jsDestructuringNoise skipwhite skipempty nextgroup=jsDestructuringValue extend
|
||||||
|
syntax match jsDestructuringNoise contained /[,\[\]]/
|
||||||
|
syntax region jsDestructuringPropertyComputed contained matchgroup=jsBrackets start=/\[/ end=/]/ contains=@jsExpression skipwhite skipempty nextgroup=jsDestructuringValue,jsDestructuringNoise extend fold
|
||||||
|
|
||||||
|
" Comments
|
||||||
|
syntax keyword jsCommentTodo contained TODO FIXME XXX TBD
|
||||||
|
syntax region jsComment start=/\/\// end=/$/ contains=jsCommentTodo,@Spell extend keepend
|
||||||
|
syntax region jsComment start=/\/\*/ end=/\*\// contains=jsCommentTodo,@Spell fold extend keepend
|
||||||
|
syntax region jsEnvComment start=/\%^#!/ end=/$/ display
|
||||||
|
|
||||||
|
if exists("javascript_plugin_jsdoc")
|
||||||
|
runtime extras/jsdoc.vim
|
||||||
|
" NGDoc requires JSDoc
|
||||||
|
if exists("javascript_plugin_ngdoc")
|
||||||
|
runtime extras/ngdoc.vim
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
if exists("javascript_plugin_flow")
|
||||||
|
runtime extras/flow.vim
|
||||||
|
endif
|
||||||
|
|
||||||
|
syntax cluster jsExpression contains=jsBracket,jsParen,jsObject,jsBlock,jsTernaryIf,jsTaggedTemplate,jsTemplateString,jsString,jsRegexpString,jsNumber,jsFloat,jsOperator,jsBooleanTrue,jsBooleanFalse,jsNull,jsFunction,jsArrowFunction,jsGlobalObjects,jsExceptions,jsFutureKeys,jsDomErrNo,jsDomNodeConsts,jsHtmlEvents,jsFuncCall,jsUndefined,jsNan,jsPrototype,jsBuiltins,jsNoise,jsClassDefinition,jsArrowFunction,jsArrowFuncArgs,jsParensError,jsComment,jsArguments,jsThis,jsSuper
|
||||||
|
syntax cluster jsAll contains=@jsExpression,jsExportContainer,jsImportContainer,jsStorageClass,jsConditional,jsRepeat,jsReturn,jsStatement,jsException,jsTry,jsAsyncKeyword
|
||||||
|
|
||||||
" Define the default highlighting.
|
" Define the default highlighting.
|
||||||
" For version 5.7 and earlier: only when not done already
|
" For version 5.7 and earlier: only when not done already
|
||||||
@@ -229,25 +218,16 @@ if version >= 508 || !exists("did_javascript_syn_inits")
|
|||||||
else
|
else
|
||||||
command -nargs=+ HiLink hi def link <args>
|
command -nargs=+ HiLink hi def link <args>
|
||||||
endif
|
endif
|
||||||
HiLink jsFuncArgRest Special
|
|
||||||
HiLink jsComment Comment
|
HiLink jsComment Comment
|
||||||
HiLink jsLineComment Comment
|
|
||||||
HiLink jsEnvComment PreProc
|
HiLink jsEnvComment PreProc
|
||||||
HiLink jsBlockComment Comment
|
|
||||||
HiLink jsCommentTodo Todo
|
HiLink jsCommentTodo Todo
|
||||||
HiLink jsCvsTag Function
|
HiLink jsString String
|
||||||
HiLink jsDocTags Special
|
HiLink jsObjectKeyString String
|
||||||
HiLink jsDocSeeTag Function
|
|
||||||
HiLink jsDocType Type
|
|
||||||
HiLink jsDocTypeBrackets jsDocType
|
|
||||||
HiLink jsDocTypeRecord jsDocType
|
|
||||||
HiLink jsDocTypeNoParam Type
|
|
||||||
HiLink jsDocParam Label
|
|
||||||
HiLink jsStringS String
|
|
||||||
HiLink jsStringD String
|
|
||||||
HiLink jsTemplateString String
|
HiLink jsTemplateString String
|
||||||
|
HiLink jsObjectStringKey String
|
||||||
|
HiLink jsClassStringKey String
|
||||||
HiLink jsTaggedTemplate StorageClass
|
HiLink jsTaggedTemplate StorageClass
|
||||||
HiLink jsTernaryIfOperator Conditional
|
HiLink jsTernaryIfOperator Operator
|
||||||
HiLink jsRegexpString String
|
HiLink jsRegexpString String
|
||||||
HiLink jsRegexpBoundary SpecialChar
|
HiLink jsRegexpBoundary SpecialChar
|
||||||
HiLink jsRegexpQuantifier SpecialChar
|
HiLink jsRegexpQuantifier SpecialChar
|
||||||
@@ -265,25 +245,25 @@ if version >= 508 || !exists("did_javascript_syn_inits")
|
|||||||
HiLink jsRepeat Repeat
|
HiLink jsRepeat Repeat
|
||||||
HiLink jsStatement Statement
|
HiLink jsStatement Statement
|
||||||
HiLink jsException Exception
|
HiLink jsException Exception
|
||||||
HiLink jsKeyword Keyword
|
HiLink jsTry Exception
|
||||||
|
HiLink jsFinally Exception
|
||||||
|
HiLink jsCatch Exception
|
||||||
HiLink jsAsyncKeyword Keyword
|
HiLink jsAsyncKeyword Keyword
|
||||||
HiLink jsArrowFunction Type
|
HiLink jsArrowFunction Type
|
||||||
HiLink jsFunction Type
|
HiLink jsFunction Type
|
||||||
HiLink jsGenerator jsFunction
|
HiLink jsGenerator jsFunction
|
||||||
HiLink jsArrowFuncArgs jsFuncArgs
|
HiLink jsArrowFuncArgs jsFuncArgs
|
||||||
HiLink jsFuncName Function
|
HiLink jsFuncName Function
|
||||||
HiLink jsArgsObj Special
|
HiLink jsClassFuncName jsFuncName
|
||||||
|
HiLink jsObjectFuncName Function
|
||||||
|
HiLink jsArguments Special
|
||||||
HiLink jsError Error
|
HiLink jsError Error
|
||||||
HiLink jsParensError Error
|
HiLink jsParensError Error
|
||||||
HiLink jsParensErrA Error
|
|
||||||
HiLink jsParensErrB Error
|
|
||||||
HiLink jsParensErrC Error
|
|
||||||
HiLink jsOperator Operator
|
HiLink jsOperator Operator
|
||||||
HiLink jsOf Operator
|
HiLink jsOf Operator
|
||||||
HiLink jsStorageClass StorageClass
|
HiLink jsStorageClass StorageClass
|
||||||
HiLink jsClassKeywords Structure
|
HiLink jsClassKeywords Structure
|
||||||
HiLink jsThis Special
|
HiLink jsThis Special
|
||||||
HiLink jsStatic Special
|
|
||||||
HiLink jsSuper Special
|
HiLink jsSuper Special
|
||||||
HiLink jsNan Number
|
HiLink jsNan Number
|
||||||
HiLink jsNull Type
|
HiLink jsNull Type
|
||||||
@@ -300,18 +280,33 @@ if version >= 508 || !exists("did_javascript_syn_inits")
|
|||||||
HiLink jsFuncParens Noise
|
HiLink jsFuncParens Noise
|
||||||
HiLink jsClassBraces Noise
|
HiLink jsClassBraces Noise
|
||||||
HiLink jsClassNoise Noise
|
HiLink jsClassNoise Noise
|
||||||
|
HiLink jsObjectBraces Noise
|
||||||
|
HiLink jsObjectSeparator Noise
|
||||||
HiLink jsSpecial Special
|
HiLink jsSpecial Special
|
||||||
HiLink jsTemplateVar Special
|
HiLink jsTemplateVar Special
|
||||||
HiLink jsTemplateBraces jsBraces
|
HiLink jsTemplateBraces jsBraces
|
||||||
HiLink jsGlobalObjects Special
|
HiLink jsGlobalObjects Special
|
||||||
HiLink jsExceptions Special
|
HiLink jsExceptions Special
|
||||||
HiLink jsFutureKeys Special
|
|
||||||
HiLink jsBuiltins Special
|
HiLink jsBuiltins Special
|
||||||
HiLink jsModules Include
|
HiLink jsModuleKeywords Include
|
||||||
HiLink jsModuleWords Include
|
HiLink jsModuleOperators Include
|
||||||
|
HiLink jsModuleDefault Include
|
||||||
HiLink jsDecorator Special
|
HiLink jsDecorator Special
|
||||||
HiLink jsFuncArgRestDots Noise
|
HiLink jsDecoratorFunction Special
|
||||||
HiLink jsFuncArgDestructuring Noise
|
HiLink jsFuncArgOperator jsFuncArgs
|
||||||
|
HiLink jsModuleAsterisk Noise
|
||||||
|
HiLink jsClassProperty jsObjectKey
|
||||||
|
HiLink jsSpreadOperator Operator
|
||||||
|
HiLink jsRestOperator Operator
|
||||||
|
HiLink jsRestExpression jsFuncArgs
|
||||||
|
HiLink jsSwitchColon Noise
|
||||||
|
HiLink jsClassMethodType Type
|
||||||
|
HiLink jsObjectMethodType Type
|
||||||
|
|
||||||
|
HiLink jsDestructuringBraces Noise
|
||||||
|
HiLink jsDestructuringProperty jsFuncArgs
|
||||||
|
HiLink jsDestructuringAssignment jsObjectKey
|
||||||
|
HiLink jsDestructuringNoise Noise
|
||||||
|
|
||||||
HiLink jsDomErrNo Constant
|
HiLink jsDomErrNo Constant
|
||||||
HiLink jsDomNodeConsts Constant
|
HiLink jsDomNodeConsts Constant
|
||||||
@@ -324,14 +319,12 @@ if version >= 508 || !exists("did_javascript_syn_inits")
|
|||||||
|
|
||||||
HiLink jsCssStyles Label
|
HiLink jsCssStyles Label
|
||||||
|
|
||||||
HiLink jsClassMethodDefinitions Type
|
|
||||||
|
|
||||||
delcommand HiLink
|
delcommand HiLink
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" Define the htmlJavaScript for HTML syntax html.vim
|
" Define the htmlJavaScript for HTML syntax html.vim
|
||||||
syntax cluster htmlJavaScript contains=@jsAll,jsBracket,jsParen,jsBlock
|
syntax cluster htmlJavaScript contains=@jsAll
|
||||||
syntax cluster javaScriptExpression contains=@jsAll,jsBracket,jsParen,jsBlock,@htmlPreproc
|
syntax cluster javaScriptExpression contains=@jsAll
|
||||||
|
|
||||||
" Vim's default html.vim highlights all javascript as 'Special'
|
" Vim's default html.vim highlights all javascript as 'Special'
|
||||||
hi! def link javaScript NONE
|
hi! def link javaScript NONE
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'kotlin') == -1
|
|||||||
" Vim syntax file
|
" Vim syntax file
|
||||||
" Language: Kotlin
|
" Language: Kotlin
|
||||||
" Maintainer: Alexander Udalov
|
" Maintainer: Alexander Udalov
|
||||||
" Latest Revision: 24 February 2016
|
" Latest Revision: 4 July 2016
|
||||||
|
|
||||||
if exists("b:current_syntax")
|
if exists("b:current_syntax")
|
||||||
finish
|
finish
|
||||||
@@ -22,14 +22,14 @@ syn keyword ktInclude import package
|
|||||||
|
|
||||||
syn keyword ktType Any Boolean Byte Char Double Float Int Long Nothing Short Unit
|
syn keyword ktType Any Boolean Byte Char Double Float Int Long Nothing Short Unit
|
||||||
syn keyword ktModifier annotation companion enum inner internal private protected public abstract final open override sealed vararg dynamic
|
syn keyword ktModifier annotation companion enum inner internal private protected public abstract final open override sealed vararg dynamic
|
||||||
syn keyword ktStructure class object interface fun val var constructor init
|
syn keyword ktStructure class object interface typealias fun val var constructor init
|
||||||
|
|
||||||
syn keyword ktReservedKeyword async typealias typeof yield
|
syn keyword ktReservedKeyword typeof
|
||||||
|
|
||||||
syn keyword ktBoolean true false
|
syn keyword ktBoolean true false
|
||||||
syn keyword ktConstant null
|
syn keyword ktConstant null
|
||||||
|
|
||||||
syn keyword ktModifier data tailrec lateinit reified external inline noinline crossinline const operator infix
|
syn keyword ktModifier data tailrec lateinit reified external inline noinline crossinline const operator infix coroutine suspend
|
||||||
|
|
||||||
syn keyword ktTodo TODO FIXME XXX contained
|
syn keyword ktTodo TODO FIXME XXX contained
|
||||||
syn match ktShebang "\v^#!.*$"
|
syn match ktShebang "\v^#!.*$"
|
||||||
|
|||||||
96
syntax/mako.vim
Normal file
96
syntax/mako.vim
Normal file
@@ -0,0 +1,96 @@
|
|||||||
|
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'mako') == -1
|
||||||
|
|
||||||
|
" Vim syntax file
|
||||||
|
" Language: Mako
|
||||||
|
" Maintainer: Armin Ronacher <armin.ronacher@active-4.com>
|
||||||
|
" URL: http://lucumr.pocoo.org/
|
||||||
|
" Last Change: 2013-05-01
|
||||||
|
" Version: 0.6.1+
|
||||||
|
"
|
||||||
|
" Thanks to Brine Rue <brian@lolapps.com> who noticed a bug in the
|
||||||
|
" delimiter handling.
|
||||||
|
"
|
||||||
|
" Known Limitations
|
||||||
|
" the <%text> block does not have correct attributes
|
||||||
|
|
||||||
|
" For version 5.x: Clear all syntax items
|
||||||
|
" For version 6.x: Quit when a syntax file was already loaded
|
||||||
|
if version < 600
|
||||||
|
syntax clear
|
||||||
|
elseif exists("b:current_syntax")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
if !exists("main_syntax")
|
||||||
|
let main_syntax = "html"
|
||||||
|
endif
|
||||||
|
|
||||||
|
"Source the html syntax file
|
||||||
|
ru! syntax/html.vim
|
||||||
|
unlet b:current_syntax
|
||||||
|
|
||||||
|
" tell html.vim what syntax groups should take precedence (see :help html.vim)
|
||||||
|
syn cluster htmlPreproc add=makoLine,makoVariable,makoTag,makoDocComment,makoDefEnd,makoText,makoDelim,makoEnd,makoComment,makoEscape
|
||||||
|
|
||||||
|
"Put the python syntax file in @pythonTop
|
||||||
|
syn include @pythonTop syntax/python.vim
|
||||||
|
|
||||||
|
" End keywords
|
||||||
|
syn keyword makoEnd contained endfor endwhile endif endtry enddef
|
||||||
|
|
||||||
|
" Block rules
|
||||||
|
syn region makoLine matchgroup=makoDelim start=#^\s*%# end=#$# keepend contains=@pythonTop,makoEnd
|
||||||
|
syn region makoBlock matchgroup=makoDelim start=#<%!\?# end=#%># keepend contains=@pythonTop,makoEnd
|
||||||
|
|
||||||
|
" Variables
|
||||||
|
syn region makoNested start="{" end="}" transparent display contained contains=makoNested,@pythonTop
|
||||||
|
syn region makoVariable matchgroup=makoDelim start=#\${# end=#}# contains=makoNested,@pythonTop
|
||||||
|
|
||||||
|
" Comments
|
||||||
|
syn region makoComment start="^\s*##" end="$"
|
||||||
|
syn region makoDocComment matchgroup=makoDelim start="<%doc>" end="</%doc>" keepend
|
||||||
|
|
||||||
|
" Literal Blocks
|
||||||
|
syn region makoText matchgroup=makoDelim start="<%text[^>]*>" end="</%text>"
|
||||||
|
|
||||||
|
" Attribute Sublexing
|
||||||
|
syn match makoAttributeKey containedin=makoTag contained "[a-zA-Z_][a-zA-Z0-9_]*="
|
||||||
|
syn region makoAttributeValue containedin=makoTag contained start=/"/ skip=/\\"/ end=/"/
|
||||||
|
syn region makoAttributeValue containedin=MakoTag contained start=/'/ skip=/\\'/ end=/'/
|
||||||
|
|
||||||
|
" Tags
|
||||||
|
syn region makoTag matchgroup=makoDelim start="<%\(def\|call\|page\|include\|namespace\|inherit\|block\|[a-zA-Z_][a-zA-Z0-9_]*:[a-zA-Z_][a-zA-Z0-9_]*\)\>" end="/\?>"
|
||||||
|
syn match makoDelim "</%\(def\|call\|namespace\|block\|[a-zA-Z_][a-zA-Z0-9_]*:[a-zA-Z_][a-zA-Z0-9_]*\)>"
|
||||||
|
|
||||||
|
syn region makoJavaScript matchgroup=makoDelim start=+<%block .*js.*>+ keepend end=+</%block>+ contains=@htmlJavaScript,htmlCssStyleComment,htmlScriptTag,@htmlPreproc,makoLine,makoBlock,makoVariable
|
||||||
|
syn region makoCssStyle matchgroup=makoDelim start=+<%block .*css.*>+ keepend end=+</%block>+ contains=@htmlCss,htmlTag,htmlEndTag,htmlCssStyleComment,@htmlPreproc,makoLine,makoBlock,makoVariable
|
||||||
|
|
||||||
|
" Newline Escapes
|
||||||
|
syn match makoEscape /\\$/
|
||||||
|
|
||||||
|
" Default highlighting links
|
||||||
|
if version >= 508 || !exists("did_mako_syn_inits")
|
||||||
|
if version < 508
|
||||||
|
let did_mako_syn_inits = 1
|
||||||
|
com -nargs=+ HiLink hi link <args>
|
||||||
|
else
|
||||||
|
com -nargs=+ HiLink hi def link <args>
|
||||||
|
endif
|
||||||
|
|
||||||
|
HiLink makoDocComment makoComment
|
||||||
|
HiLink makoDefEnd makoDelim
|
||||||
|
|
||||||
|
HiLink makoAttributeKey Type
|
||||||
|
HiLink makoAttributeValue String
|
||||||
|
HiLink makoText Normal
|
||||||
|
HiLink makoDelim Preproc
|
||||||
|
HiLink makoEnd Keyword
|
||||||
|
HiLink makoComment Comment
|
||||||
|
HiLink makoEscape Special
|
||||||
|
|
||||||
|
delc HiLink
|
||||||
|
endif
|
||||||
|
|
||||||
|
let b:current_syntax = "html"
|
||||||
|
|
||||||
|
endif
|
||||||
@@ -2,160 +2,175 @@ if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'markdown') == -
|
|||||||
|
|
||||||
" Vim syntax file
|
" Vim syntax file
|
||||||
" Language: Markdown
|
" Language: Markdown
|
||||||
" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
|
" Maintainer: Ben Williams <benw@plasticboy.com>
|
||||||
" Filenames: *.markdown
|
" URL: http://plasticboy.com/markdown-vim-mode/
|
||||||
" Last Change: 2013 May 30
|
" Remark: Uses HTML syntax file
|
||||||
|
" TODO: Handle stuff contained within stuff (e.g. headings within blockquotes)
|
||||||
|
|
||||||
if exists("b:current_syntax")
|
|
||||||
|
" Read the HTML syntax to start with
|
||||||
|
if version < 600
|
||||||
|
so <sfile>:p:h/html.vim
|
||||||
|
else
|
||||||
|
runtime! syntax/html.vim
|
||||||
|
|
||||||
|
if exists('b:current_syntax')
|
||||||
|
unlet b:current_syntax
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
if version < 600
|
||||||
|
syntax clear
|
||||||
|
elseif exists("b:current_syntax")
|
||||||
finish
|
finish
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if !exists('main_syntax')
|
" don't use standard HiLink, it will not work with included syntax files
|
||||||
let main_syntax = 'markdown'
|
if version < 508
|
||||||
|
command! -nargs=+ HtmlHiLink hi link <args>
|
||||||
|
else
|
||||||
|
command! -nargs=+ HtmlHiLink hi def link <args>
|
||||||
endif
|
endif
|
||||||
|
|
||||||
runtime! syntax/html.vim
|
syn spell toplevel
|
||||||
unlet! b:current_syntax
|
|
||||||
|
|
||||||
if !exists('g:markdown_fenced_languages')
|
|
||||||
let g:markdown_fenced_languages = []
|
|
||||||
endif
|
|
||||||
let s:done_include = {}
|
|
||||||
for s:type in map(copy(g:markdown_fenced_languages),'matchstr(v:val,"[^=]*$")')
|
|
||||||
if has_key(s:done_include, matchstr(s:type,'[^.]*'))
|
|
||||||
continue
|
|
||||||
endif
|
|
||||||
if s:type =~ '\.'
|
|
||||||
let b:{matchstr(s:type,'[^.]*')}_subtype = matchstr(s:type,'\.\zs.*')
|
|
||||||
endif
|
|
||||||
exe 'syn include @markdownHighlight'.substitute(s:type,'\.','','g').' syntax/'.matchstr(s:type,'[^.]*').'.vim'
|
|
||||||
unlet! b:current_syntax
|
|
||||||
let s:done_include[matchstr(s:type,'[^.]*')] = 1
|
|
||||||
endfor
|
|
||||||
unlet! s:type
|
|
||||||
unlet! s:done_include
|
|
||||||
|
|
||||||
syn sync minlines=10
|
|
||||||
syn case ignore
|
syn case ignore
|
||||||
|
syn sync linebreaks=1
|
||||||
|
|
||||||
syn match markdownValid '[<>]\c[a-z/$!]\@!'
|
let s:conceal = ''
|
||||||
syn match markdownValid '&\%(#\=\w*;\)\@!'
|
let s:concealends = ''
|
||||||
|
if has('conceal') && get(g:, 'vim_markdown_conceal', 1)
|
||||||
syn match markdownLineStart "^[<@]\@!" nextgroup=@markdownBlock,htmlSpecialChar
|
let s:conceal = ' conceal'
|
||||||
|
let s:concealends = ' concealends'
|
||||||
syn cluster markdownBlock contains=markdownH1,markdownH2,markdownH3,markdownH4,markdownH5,markdownH6,markdownBlockquote,markdownListMarker,markdownOrderedListMarker,markdownCodeBlock,markdownRule
|
|
||||||
syn cluster markdownInline contains=markdownLineBreak,markdownLinkText,markdownItalic,markdownBold,markdownCode,markdownEscape,@htmlTop,markdownError
|
|
||||||
|
|
||||||
syn match markdownH1 "^.\+\n=\+$" contained contains=@markdownInline,markdownHeadingRule,markdownAutomaticLink
|
|
||||||
syn match markdownH2 "^.\+\n-\+$" contained contains=@markdownInline,markdownHeadingRule,markdownAutomaticLink
|
|
||||||
|
|
||||||
syn match markdownHeadingRule "^[=-]\+$" contained
|
|
||||||
|
|
||||||
syn region markdownH1 matchgroup=markdownHeadingDelimiter start="##\@!" end="#*\s*$" keepend oneline contains=@markdownInline,markdownAutomaticLink contained
|
|
||||||
syn region markdownH2 matchgroup=markdownHeadingDelimiter start="###\@!" end="#*\s*$" keepend oneline contains=@markdownInline,markdownAutomaticLink contained
|
|
||||||
syn region markdownH3 matchgroup=markdownHeadingDelimiter start="####\@!" end="#*\s*$" keepend oneline contains=@markdownInline,markdownAutomaticLink contained
|
|
||||||
syn region markdownH4 matchgroup=markdownHeadingDelimiter start="#####\@!" end="#*\s*$" keepend oneline contains=@markdownInline,markdownAutomaticLink contained
|
|
||||||
syn region markdownH5 matchgroup=markdownHeadingDelimiter start="######\@!" end="#*\s*$" keepend oneline contains=@markdownInline,markdownAutomaticLink contained
|
|
||||||
syn region markdownH6 matchgroup=markdownHeadingDelimiter start="#######\@!" end="#*\s*$" keepend oneline contains=@markdownInline,markdownAutomaticLink contained
|
|
||||||
|
|
||||||
syn match markdownBlockquote ">\%(\s\|$\)" contained nextgroup=@markdownBlock
|
|
||||||
|
|
||||||
syn region markdownCodeBlock start=" \|\t" end="$" contained
|
|
||||||
|
|
||||||
" TODO: real nesting
|
|
||||||
syn match markdownListMarker "\%(\t\| \{0,4\}\)[-*+]\%(\s\+\S\)\@=" contained
|
|
||||||
syn match markdownOrderedListMarker "\%(\t\| \{0,4}\)\<\d\+\.\%(\s\+\S\)\@=" contained
|
|
||||||
|
|
||||||
syn match markdownRule "\* *\* *\*[ *]*$" contained
|
|
||||||
syn match markdownRule "- *- *-[ -]*$" contained
|
|
||||||
|
|
||||||
syn match markdownLineBreak " \{2,\}$"
|
|
||||||
|
|
||||||
syn region markdownIdDeclaration matchgroup=markdownLinkDelimiter start="^ \{0,3\}!\=\[" end="\]:" oneline keepend nextgroup=markdownUrl skipwhite
|
|
||||||
syn match markdownUrl "\S\+" nextgroup=markdownUrlTitle skipwhite contained
|
|
||||||
syn region markdownUrl matchgroup=markdownUrlDelimiter start="<" end=">" oneline keepend nextgroup=markdownUrlTitle skipwhite contained
|
|
||||||
syn region markdownUrlTitle matchgroup=markdownUrlTitleDelimiter start=+"+ end=+"+ keepend contained
|
|
||||||
syn region markdownUrlTitle matchgroup=markdownUrlTitleDelimiter start=+'+ end=+'+ keepend contained
|
|
||||||
syn region markdownUrlTitle matchgroup=markdownUrlTitleDelimiter start=+(+ end=+)+ keepend contained
|
|
||||||
|
|
||||||
syn region markdownLinkText matchgroup=markdownLinkTextDelimiter start="!\=\[\%(\_[^]]*]\%( \=[[(]\)\)\@=" end="\]\%( \=[[(]\)\@=" nextgroup=markdownLink,markdownId skipwhite contains=@markdownInline,markdownLineStart
|
|
||||||
syn region markdownLink matchgroup=markdownLinkDelimiter start="(" end=")" contains=markdownUrl keepend contained
|
|
||||||
syn region markdownId matchgroup=markdownIdDelimiter start="\[" end="\]" keepend contained
|
|
||||||
syn region markdownAutomaticLink matchgroup=markdownUrlDelimiter start="<\%(\w\+:\|[[:alnum:]_+-]\+@\)\@=" end=">" keepend oneline
|
|
||||||
|
|
||||||
let s:concealends = has('conceal') ? ' concealends' : ''
|
|
||||||
exe 'syn region markdownItalic matchgroup=markdownItalicDelimiter start="\S\@<=\*\|\*\S\@=" end="\S\@<=\*\|\*\S\@=" keepend contains=markdownLineStart' . s:concealends
|
|
||||||
exe 'syn region markdownItalic matchgroup=markdownItalicDelimiter start="\S\@<=_\|_\S\@=" end="\S\@<=_\|_\S\@=" keepend contains=markdownLineStart' . s:concealends
|
|
||||||
exe 'syn region markdownBold matchgroup=markdownBoldDelimiter start="\S\@<=\*\*\|\*\*\S\@=" end="\S\@<=\*\*\|\*\*\S\@=" keepend contains=markdownLineStart,markdownItalic' . s:concealends
|
|
||||||
exe 'syn region markdownBold matchgroup=markdownBoldDelimiter start="\S\@<=__\|__\S\@=" end="\S\@<=__\|__\S\@=" keepend contains=markdownLineStart,markdownItalic' . s:concealends
|
|
||||||
exe 'syn region markdownBoldItalic matchgroup=markdownBoldItalicDelimiter start="\S\@<=\*\*\*\|\*\*\*\S\@=" end="\S\@<=\*\*\*\|\*\*\*\S\@=" keepend contains=markdownLineStart' . s:concealends
|
|
||||||
exe 'syn region markdownBoldItalic matchgroup=markdownBoldItalicDelimiter start="\S\@<=___\|___\S\@=" end="\S\@<=___\|___\S\@=" keepend contains=markdownLineStart' . s:concealends
|
|
||||||
|
|
||||||
syn region markdownCode matchgroup=markdownCodeDelimiter start="`" end="`" keepend contains=markdownLineStart
|
|
||||||
syn region markdownCode matchgroup=markdownCodeDelimiter start="`` \=" end=" \=``" keepend contains=markdownLineStart
|
|
||||||
syn region markdownCode matchgroup=markdownCodeDelimiter start="^\s*```*.*$" end="^\s*```*\ze\s*$" keepend
|
|
||||||
|
|
||||||
syn match markdownFootnote "\[^[^\]]\+\]"
|
|
||||||
syn match markdownFootnoteDefinition "^\[^[^\]]\+\]:"
|
|
||||||
|
|
||||||
if main_syntax ==# 'markdown'
|
|
||||||
let s:done_include = {}
|
|
||||||
for s:type in g:markdown_fenced_languages
|
|
||||||
if has_key(s:done_include, matchstr(s:type,'[^.]*'))
|
|
||||||
continue
|
|
||||||
endif
|
|
||||||
exe 'syn region markdownHighlight'.substitute(matchstr(s:type,'[^=]*$'),'\..*','','').' matchgroup=markdownCodeDelimiter start="^\s*```*\s*'.matchstr(s:type,'[^=]*').'\>.*$" end="^\s*```*\ze\s*$" keepend contains=@markdownHighlight'.substitute(matchstr(s:type,'[^=]*$'),'\.','','g')
|
|
||||||
let s:done_include[matchstr(s:type,'[^.]*')] = 1
|
|
||||||
endfor
|
|
||||||
unlet! s:type
|
|
||||||
unlet! s:done_include
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
syn match markdownEscape "\\[][\\`*_{}()<>#+.!-]"
|
" additions to HTML groups
|
||||||
syn match markdownError "\w\@<=_\w\@="
|
if get(g:, 'vim_markdown_emphasis_multiline', 1)
|
||||||
|
let s:oneline = ''
|
||||||
|
else
|
||||||
|
let s:oneline = ' oneline'
|
||||||
|
endif
|
||||||
|
execute 'syn region htmlItalic start="\%(^\|\s\)\zs\*\ze[^\\\*\t ]\%(\%([^*]\|\\\*\|\n\)*[^\\\*\t ]\)\?\*\_W" end="[^\\\*\t ]\zs\*\ze\_W" keepend' . s:oneline
|
||||||
|
execute 'syn region htmlItalic start="\%(^\|\s\)\zs_\ze[^\\_\t ]" end="[^\\_\t ]\zs_\ze\_W" keepend' . s:oneline
|
||||||
|
execute 'syn region htmlBold start="\%(^\|\s\)\*\*\ze\S" end="\S\zs\*\*" keepend' . s:oneline
|
||||||
|
execute 'syn region htmlBold start="\%(^\|\s\)\zs__\ze\S" end="\S\zs__" keepend' . s:oneline
|
||||||
|
execute 'syn region htmlBoldItalic start="\%(^\|\s\)\zs\*\*\*\ze\S" end="\S\zs\*\*\*" keepend' . s:oneline
|
||||||
|
execute 'syn region htmlBoldItalic start="\%(^\|\s\)\zs___\ze\S" end="\S\zs___" keepend' . s:oneline
|
||||||
|
|
||||||
hi def link markdownH1 htmlH1
|
" [link](URL) | [link][id] | [link][] | 
|
||||||
hi def link markdownH2 htmlH2
|
syn region mkdFootnotes matchgroup=mkdDelimiter start="\[^" end="\]"
|
||||||
hi def link markdownH3 htmlH3
|
execute 'syn region mkdID matchgroup=mkdDelimiter start="\[" end="\]" contained oneline' . s:conceal
|
||||||
hi def link markdownH4 htmlH4
|
execute 'syn region mkdURL matchgroup=mkdDelimiter start="(" end=")" contained oneline' . s:conceal
|
||||||
hi def link markdownH5 htmlH5
|
execute 'syn region mkdLink matchgroup=mkdDelimiter start="\\\@<!!\?\[" end="\n\{-,1}[^]]\{-}\zs\]\ze[[(]" contains=@mkdNonListItem,@Spell nextgroup=mkdURL,mkdID skipwhite oneline' . s:concealends
|
||||||
hi def link markdownH6 htmlH6
|
|
||||||
hi def link markdownHeadingRule markdownRule
|
|
||||||
hi def link markdownHeadingDelimiter Delimiter
|
|
||||||
hi def link markdownOrderedListMarker markdownListMarker
|
|
||||||
hi def link markdownListMarker htmlTagName
|
|
||||||
hi def link markdownBlockquote Comment
|
|
||||||
hi def link markdownRule PreProc
|
|
||||||
|
|
||||||
hi def link markdownFootnote Typedef
|
" Autolink without angle brackets.
|
||||||
hi def link markdownFootnoteDefinition Typedef
|
" mkd inline links: protocol optional user:pass@ sub/domain .com, .co.uk, etc optional port path/querystring/hash fragment
|
||||||
|
" ------------ _____________________ ----------------------------- _________________________ ----------------- __
|
||||||
|
syn match mkdInlineURL /https\?:\/\/\(\w\+\(:\w\+\)\?@\)\?\([A-Za-z0-9][-_0-9A-Za-z]*\.\)\{1,}\(\w\{2,}\.\?\)\{1,}\(:[0-9]\{1,5}\)\?\S*/
|
||||||
|
|
||||||
hi def link markdownLinkText htmlLink
|
" Autolink with parenthesis.
|
||||||
hi def link markdownIdDeclaration Typedef
|
syn region mkdInlineURL matchgroup=mkdDelimiter start="(\(https\?:\/\/\(\w\+\(:\w\+\)\?@\)\?\([A-Za-z0-9][-_0-9A-Za-z]*\.\)\{1,}\(\w\{2,}\.\?\)\{1,}\(:[0-9]\{1,5}\)\?\S*)\)\@=" end=")"
|
||||||
hi def link markdownId Type
|
|
||||||
hi def link markdownAutomaticLink markdownUrl
|
|
||||||
hi def link markdownUrl Float
|
|
||||||
hi def link markdownUrlTitle String
|
|
||||||
hi def link markdownIdDelimiter markdownLinkDelimiter
|
|
||||||
hi def link markdownUrlDelimiter htmlTag
|
|
||||||
hi def link markdownUrlTitleDelimiter Delimiter
|
|
||||||
|
|
||||||
hi def link markdownItalic htmlItalic
|
" Autolink with angle brackets.
|
||||||
hi def link markdownItalicDelimiter markdownItalic
|
syn region mkdInlineURL matchgroup=mkdDelimiter start="\\\@<!<\ze[a-z][a-z0-9,.-]\{1,22}:\/\/[^> ]*>" end=">"
|
||||||
hi def link markdownBold htmlBold
|
|
||||||
hi def link markdownBoldDelimiter markdownBold
|
|
||||||
hi def link markdownBoldItalic htmlBoldItalic
|
|
||||||
hi def link markdownBoldItalicDelimiter markdownBoldItalic
|
|
||||||
hi def link markdownCodeDelimiter Delimiter
|
|
||||||
|
|
||||||
hi def link markdownEscape Special
|
" Link definitions: [id]: URL (Optional Title)
|
||||||
hi def link markdownError Error
|
syn region mkdLinkDef matchgroup=mkdDelimiter start="^ \{,3}\zs\[" end="]:" oneline nextgroup=mkdLinkDefTarget skipwhite
|
||||||
|
syn region mkdLinkDefTarget start="<\?\zs\S" excludenl end="\ze[>[:space:]\n]" contained nextgroup=mkdLinkTitle,mkdLinkDef skipwhite skipnl oneline
|
||||||
|
syn region mkdLinkTitle matchgroup=mkdDelimiter start=+"+ end=+"+ contained
|
||||||
|
syn region mkdLinkTitle matchgroup=mkdDelimiter start=+'+ end=+'+ contained
|
||||||
|
syn region mkdLinkTitle matchgroup=mkdDelimiter start=+(+ end=+)+ contained
|
||||||
|
|
||||||
let b:current_syntax = "markdown"
|
"HTML headings
|
||||||
if main_syntax ==# 'markdown'
|
syn region htmlH1 start="^\s*#" end="$" contains=mkdLink,mkdInlineURL,@Spell
|
||||||
unlet main_syntax
|
syn region htmlH2 start="^\s*##" end="$" contains=mkdLink,mkdInlineURL,@Spell
|
||||||
|
syn region htmlH3 start="^\s*###" end="$" contains=mkdLink,mkdInlineURL,@Spell
|
||||||
|
syn region htmlH4 start="^\s*####" end="$" contains=mkdLink,mkdInlineURL,@Spell
|
||||||
|
syn region htmlH5 start="^\s*#####" end="$" contains=mkdLink,mkdInlineURL,@Spell
|
||||||
|
syn region htmlH6 start="^\s*######" end="$" contains=mkdLink,mkdInlineURL,@Spell
|
||||||
|
syn match htmlH1 /^.\+\n=\+$/ contains=mkdLink,mkdInlineURL,@Spell
|
||||||
|
syn match htmlH2 /^.\+\n-\+$/ contains=mkdLink,mkdInlineURL,@Spell
|
||||||
|
|
||||||
|
"define Markdown groups
|
||||||
|
syn match mkdLineBreak / \+$/
|
||||||
|
syn region mkdBlockquote start=/^\s*>/ end=/$/ contains=mkdLink,mkdInlineURL,mkdLineBreak,@Spell
|
||||||
|
syn region mkdCode start=/\(\([^\\]\|^\)\\\)\@<!`/ end=/\(\([^\\]\|^\)\\\)\@<!`/
|
||||||
|
syn region mkdCode start=/\s*``[^`]*/ end=/[^`]*``\s*/
|
||||||
|
syn region mkdCode start=/^\s*\z(`\{3,}\)[^`]*$/ end=/^\s*\z1`*\s*$/
|
||||||
|
syn region mkdCode start=/\s*\~\~[^\~]*/ end=/[^\~]*\~\~\s*/
|
||||||
|
syn region mkdCode start=/^\s*\z(\~\{3,}\)\s*[0-9A-Za-z_+-]*\s*$/ end=/^\s*\z1\~*\s*$/
|
||||||
|
syn region mkdCode start="<pre[^>]*\\\@<!>" end="</pre>"
|
||||||
|
syn region mkdCode start="<code[^>]*\\\@<!>" end="</code>"
|
||||||
|
syn region mkdFootnote start="\[^" end="\]"
|
||||||
|
syn match mkdCode /^\s*\n\(\(\s\{8,}[^ ]\|\t\t\+[^\t]\).*\n\)\+/
|
||||||
|
syn match mkdCode /\%^\(\(\s\{4,}[^ ]\|\t\+[^\t]\).*\n\)\+/
|
||||||
|
syn match mkdCode /^\s*\n\(\(\s\{4,}[^ ]\|\t\+[^\t]\).*\n\)\+/ contained
|
||||||
|
syn match mkdListItem /^\s*\%([-*+]\|\d\+\.\)\s\+/ contained
|
||||||
|
syn region mkdListItemLine start="^\s*\%([-*+]\|\d\+\.\)\s\+" end="$" oneline contains=@mkdNonListItem,mkdListItem,@Spell
|
||||||
|
syn region mkdNonListItemBlock start="\(\%^\(\s*\([-*+]\|\d\+\.\)\s\+\)\@!\|\n\(\_^\_$\|\s\{4,}[^ ]\|\t+[^\t]\)\@!\)" end="^\(\s*\([-*+]\|\d\+\.\)\s\+\)\@=" contains=@mkdNonListItem,@Spell
|
||||||
|
syn match mkdRule /^\s*\*\s\{0,1}\*\s\{0,1}\*$/
|
||||||
|
syn match mkdRule /^\s*-\s\{0,1}-\s\{0,1}-$/
|
||||||
|
syn match mkdRule /^\s*_\s\{0,1}_\s\{0,1}_$/
|
||||||
|
syn match mkdRule /^\s*-\{3,}$/
|
||||||
|
syn match mkdRule /^\s*\*\{3,5}$/
|
||||||
|
|
||||||
|
" YAML frontmatter
|
||||||
|
if get(g:, 'vim_markdown_frontmatter', 0)
|
||||||
|
syn include @yamlTop syntax/yaml.vim
|
||||||
|
syn region Comment matchgroup=mkdDelimiter start="\%^---$" end="^---$" contains=@yamlTop keepend
|
||||||
|
unlet! b:current_syntax
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" vim:set sw=2:
|
if get(g:, 'vim_markdown_toml_frontmatter', 0)
|
||||||
|
try
|
||||||
|
syn include @tomlTop syntax/toml.vim
|
||||||
|
syn region Comment matchgroup=mkdDelimiter start="\%^+++$" end="^+++$" transparent contains=@tomlTop keepend
|
||||||
|
unlet! b:current_syntax
|
||||||
|
catch /E484/
|
||||||
|
syn region Comment matchgroup=mkdDelimiter start="\%^+++$" end="^+++$"
|
||||||
|
endtry
|
||||||
|
endif
|
||||||
|
|
||||||
|
if get(g:, 'vim_markdown_json_frontmatter', 0)
|
||||||
|
try
|
||||||
|
syn include @jsonTop syntax/json.vim
|
||||||
|
syn region Comment matchgroup=mkdDelimiter start="\%^{$" end="^}$" contains=@jsonTop keepend
|
||||||
|
unlet! b:current_syntax
|
||||||
|
catch /E484/
|
||||||
|
syn region Comment matchgroup=mkdDelimiter start="\%^{$" end="^}$"
|
||||||
|
endtry
|
||||||
|
endif
|
||||||
|
|
||||||
|
if get(g:, 'vim_markdown_math', 0)
|
||||||
|
syn include @tex syntax/tex.vim
|
||||||
|
syn region mkdMath start="\\\@<!\$" end="\$" contains=@tex keepend
|
||||||
|
syn region mkdMath start="\\\@<!\$\$" end="\$\$" contains=@tex keepend
|
||||||
|
endif
|
||||||
|
|
||||||
|
syn cluster mkdNonListItem contains=@htmlTop,htmlItalic,htmlBold,htmlBoldItalic,mkdFootnotes,mkdInlineURL,mkdLink,mkdLinkDef,mkdLineBreak,mkdBlockquote,mkdCode,mkdRule,htmlH1,htmlH2,htmlH3,htmlH4,htmlH5,htmlH6,mkdMath
|
||||||
|
|
||||||
|
"highlighting for Markdown groups
|
||||||
|
HtmlHiLink mkdString String
|
||||||
|
HtmlHiLink mkdCode String
|
||||||
|
HtmlHiLink mkdCodeStart String
|
||||||
|
HtmlHiLink mkdCodeEnd String
|
||||||
|
HtmlHiLink mkdFootnote Comment
|
||||||
|
HtmlHiLink mkdBlockquote Comment
|
||||||
|
HtmlHiLink mkdListItem Identifier
|
||||||
|
HtmlHiLink mkdRule Identifier
|
||||||
|
HtmlHiLink mkdLineBreak Visual
|
||||||
|
HtmlHiLink mkdFootnotes htmlLink
|
||||||
|
HtmlHiLink mkdLink htmlLink
|
||||||
|
HtmlHiLink mkdURL htmlString
|
||||||
|
HtmlHiLink mkdInlineURL htmlLink
|
||||||
|
HtmlHiLink mkdID Identifier
|
||||||
|
HtmlHiLink mkdLinkDef mkdID
|
||||||
|
HtmlHiLink mkdLinkDefTarget mkdURL
|
||||||
|
HtmlHiLink mkdLinkTitle htmlString
|
||||||
|
HtmlHiLink mkdDelimiter Delimiter
|
||||||
|
|
||||||
|
let b:current_syntax = "mkd"
|
||||||
|
|
||||||
|
delcommand HtmlHiLink
|
||||||
|
" vim: ts=8
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|||||||
141
syntax/nginx.vim
141
syntax/nginx.vim
@@ -12,28 +12,32 @@ setlocal iskeyword+=/
|
|||||||
setlocal iskeyword+=:
|
setlocal iskeyword+=:
|
||||||
|
|
||||||
syn match ngxVariable '\$\(\w\+\|{\w\+}\)'
|
syn match ngxVariable '\$\(\w\+\|{\w\+}\)'
|
||||||
syn match ngxVariableBlock '\$\(\w\+\|{\w\+}\)' contained
|
|
||||||
syn match ngxVariableString '\$\(\w\+\|{\w\+}\)' contained
|
syn match ngxVariableString '\$\(\w\+\|{\w\+}\)' contained
|
||||||
syn region ngxBlock start=+^+ end=+{+ skip=+\${+ contains=ngxComment,ngxDirectiveBlock,ngxVariableBlock,ngxString oneline
|
|
||||||
syn region ngxString start=+\z(["']\)+ end=+\z1+ skip=+\\\\\|\\\z1+ contains=ngxVariableString
|
|
||||||
syn match ngxComment ' *#.*$'
|
syn match ngxComment ' *#.*$'
|
||||||
|
syn match ngxRewriteURI /\S\+/ contained contains=ngxVariableString nextgroup=ngxURI skipwhite
|
||||||
|
syn match ngxURI /\S\+/ contained contains=ngxVariableString skipwhite
|
||||||
|
syn match ngxLocationPath /[^ {]\+/ contained
|
||||||
|
syn region ngxString start=+\z(["']\)+ end=+\z1+ skip=+\\\\\|\\\z1+ contains=ngxVariableString
|
||||||
|
|
||||||
syn keyword ngxBoolean on
|
syn keyword ngxBoolean on
|
||||||
syn keyword ngxBoolean off
|
syn keyword ngxBoolean off
|
||||||
|
|
||||||
syn keyword ngxDirectiveBlock http contained
|
|
||||||
syn keyword ngxDirectiveBlock mail contained
|
syn keyword ngxDirectiveBlock http
|
||||||
syn keyword ngxDirectiveBlock events contained
|
syn keyword ngxDirectiveBlock mail
|
||||||
syn keyword ngxDirectiveBlock server contained
|
syn keyword ngxDirectiveBlock events
|
||||||
syn keyword ngxDirectiveBlock types contained
|
syn keyword ngxDirectiveBlock server
|
||||||
syn keyword ngxDirectiveBlock location contained
|
syn keyword ngxDirectiveBlock types
|
||||||
syn keyword ngxDirectiveBlock upstream contained
|
syn match ngxLocationOperator /\(=\|\~\*\|\^\~\|\~\)/ contained nextgroup=ngxLocationPath,ngxString skipwhite
|
||||||
syn keyword ngxDirectiveBlock charset_map contained
|
syn match ngxLocationNamedLoc /@\w\+/
|
||||||
syn keyword ngxDirectiveBlock limit_except contained
|
syn keyword ngxDirectiveBlock location nextgroup=ngxLocationNamedLoc,ngxLocationOperator,ngxLocationPath,ngxString skipwhite
|
||||||
syn keyword ngxDirectiveBlock if contained
|
syn keyword ngxDirectiveBlock upstream
|
||||||
syn keyword ngxDirectiveBlock geo contained
|
syn keyword ngxDirectiveBlock charset_map
|
||||||
syn keyword ngxDirectiveBlock map contained
|
syn keyword ngxDirectiveBlock limit_except
|
||||||
syn keyword ngxDirectiveBlock split_clients contained
|
syn keyword ngxDirectiveBlock if
|
||||||
|
syn keyword ngxDirectiveBlock geo
|
||||||
|
syn keyword ngxDirectiveBlock map
|
||||||
|
syn keyword ngxDirectiveBlock split_clients
|
||||||
|
|
||||||
syn keyword ngxDirectiveImportant include
|
syn keyword ngxDirectiveImportant include
|
||||||
syn keyword ngxDirectiveImportant root
|
syn keyword ngxDirectiveImportant root
|
||||||
@@ -50,16 +54,17 @@ syn keyword ngxDirectiveImportant try_files
|
|||||||
|
|
||||||
syn keyword ngxDirectiveControl break
|
syn keyword ngxDirectiveControl break
|
||||||
syn keyword ngxDirectiveControl return
|
syn keyword ngxDirectiveControl return
|
||||||
syn keyword ngxDirectiveControl rewrite
|
syn keyword ngxDirectiveControl rewrite nextgroup=ngxRewriteURI skipwhite
|
||||||
syn keyword ngxDirectiveControl set
|
syn keyword ngxDirectiveControl set
|
||||||
|
|
||||||
|
syn keyword ngxRewriteFlag last break redirect permanent
|
||||||
|
|
||||||
syn keyword ngxDirectiveError error_page
|
syn keyword ngxDirectiveError error_page
|
||||||
syn keyword ngxDirectiveError post_action
|
syn keyword ngxDirectiveError post_action
|
||||||
|
|
||||||
syn keyword ngxDirectiveDeprecated connections
|
syn keyword ngxDirectiveDeprecated connections
|
||||||
syn keyword ngxDirectiveDeprecated imap
|
syn keyword ngxDirectiveDeprecated imap
|
||||||
syn keyword ngxDirectiveDeprecated limit_zone
|
syn keyword ngxDirectiveDeprecated limit_zone
|
||||||
syn keyword ngxDirectiveDeprecated mysql_test
|
|
||||||
syn keyword ngxDirectiveDeprecated open_file_cache_retest
|
syn keyword ngxDirectiveDeprecated open_file_cache_retest
|
||||||
syn keyword ngxDirectiveDeprecated optimize_server_names
|
syn keyword ngxDirectiveDeprecated optimize_server_names
|
||||||
syn keyword ngxDirectiveDeprecated satisfy_any
|
syn keyword ngxDirectiveDeprecated satisfy_any
|
||||||
@@ -131,10 +136,12 @@ syn keyword ngxDirective fastcgi_cache
|
|||||||
syn keyword ngxDirective fastcgi_cache_bypass
|
syn keyword ngxDirective fastcgi_cache_bypass
|
||||||
syn keyword ngxDirective fastcgi_cache_key
|
syn keyword ngxDirective fastcgi_cache_key
|
||||||
syn keyword ngxDirective fastcgi_cache_lock
|
syn keyword ngxDirective fastcgi_cache_lock
|
||||||
|
syn keyword ngxDirective fastcgi_cache_lock_age
|
||||||
syn keyword ngxDirective fastcgi_cache_lock_timeout
|
syn keyword ngxDirective fastcgi_cache_lock_timeout
|
||||||
syn keyword ngxDirective fastcgi_cache_methods
|
syn keyword ngxDirective fastcgi_cache_methods
|
||||||
syn keyword ngxDirective fastcgi_cache_min_uses
|
syn keyword ngxDirective fastcgi_cache_min_uses
|
||||||
syn keyword ngxDirective fastcgi_cache_path
|
syn keyword ngxDirective fastcgi_cache_path
|
||||||
|
syn keyword ngxDirective fastcgi_cache_purge
|
||||||
syn keyword ngxDirective fastcgi_cache_revalidate
|
syn keyword ngxDirective fastcgi_cache_revalidate
|
||||||
syn keyword ngxDirective fastcgi_cache_use_stale
|
syn keyword ngxDirective fastcgi_cache_use_stale
|
||||||
syn keyword ngxDirective fastcgi_cache_valid
|
syn keyword ngxDirective fastcgi_cache_valid
|
||||||
@@ -147,6 +154,7 @@ syn keyword ngxDirective fastcgi_ignore_headers
|
|||||||
syn keyword ngxDirective fastcgi_index
|
syn keyword ngxDirective fastcgi_index
|
||||||
syn keyword ngxDirective fastcgi_intercept_errors
|
syn keyword ngxDirective fastcgi_intercept_errors
|
||||||
syn keyword ngxDirective fastcgi_keep_conn
|
syn keyword ngxDirective fastcgi_keep_conn
|
||||||
|
syn keyword ngxDirective fastcgi_limit_rate
|
||||||
syn keyword ngxDirective fastcgi_max_temp_file_size
|
syn keyword ngxDirective fastcgi_max_temp_file_size
|
||||||
syn keyword ngxDirective fastcgi_next_upstream
|
syn keyword ngxDirective fastcgi_next_upstream
|
||||||
syn keyword ngxDirective fastcgi_next_upstream_timeout
|
syn keyword ngxDirective fastcgi_next_upstream_timeout
|
||||||
@@ -157,6 +165,7 @@ syn keyword ngxDirective fastcgi_pass_header
|
|||||||
syn keyword ngxDirective fastcgi_pass_request_body
|
syn keyword ngxDirective fastcgi_pass_request_body
|
||||||
syn keyword ngxDirective fastcgi_pass_request_headers
|
syn keyword ngxDirective fastcgi_pass_request_headers
|
||||||
syn keyword ngxDirective fastcgi_read_timeout
|
syn keyword ngxDirective fastcgi_read_timeout
|
||||||
|
syn keyword ngxDirective fastcgi_request_buffering
|
||||||
syn keyword ngxDirective fastcgi_send_lowat
|
syn keyword ngxDirective fastcgi_send_lowat
|
||||||
syn keyword ngxDirective fastcgi_send_timeout
|
syn keyword ngxDirective fastcgi_send_timeout
|
||||||
syn keyword ngxDirective fastcgi_split_path_info
|
syn keyword ngxDirective fastcgi_split_path_info
|
||||||
@@ -187,6 +196,7 @@ syn keyword ngxDirective gzip_types
|
|||||||
syn keyword ngxDirective gzip_vary
|
syn keyword ngxDirective gzip_vary
|
||||||
syn keyword ngxDirective gzip_window
|
syn keyword ngxDirective gzip_window
|
||||||
syn keyword ngxDirective hash
|
syn keyword ngxDirective hash
|
||||||
|
syn keyword ngxDirective http2 " Not a real directive
|
||||||
syn keyword ngxDirective if_modified_since
|
syn keyword ngxDirective if_modified_since
|
||||||
syn keyword ngxDirective ignore_invalid_headers
|
syn keyword ngxDirective ignore_invalid_headers
|
||||||
syn keyword ngxDirective image_filter
|
syn keyword ngxDirective image_filter
|
||||||
@@ -201,6 +211,8 @@ syn keyword ngxDirective imap_client_buffer
|
|||||||
syn keyword ngxDirective index
|
syn keyword ngxDirective index
|
||||||
syn keyword ngxDirective iocp_threads
|
syn keyword ngxDirective iocp_threads
|
||||||
syn keyword ngxDirective ip_hash
|
syn keyword ngxDirective ip_hash
|
||||||
|
syn keyword ngxDirective js_run
|
||||||
|
syn keyword ngxDirective js_set
|
||||||
syn keyword ngxDirective keepalive
|
syn keyword ngxDirective keepalive
|
||||||
syn keyword ngxDirective keepalive_disable
|
syn keyword ngxDirective keepalive_disable
|
||||||
syn keyword ngxDirective keepalive_requests
|
syn keyword ngxDirective keepalive_requests
|
||||||
@@ -246,9 +258,12 @@ syn keyword ngxDirective modern_browser_value
|
|||||||
syn keyword ngxDirective mp4
|
syn keyword ngxDirective mp4
|
||||||
syn keyword ngxDirective mp4_buffer_size
|
syn keyword ngxDirective mp4_buffer_size
|
||||||
syn keyword ngxDirective mp4_max_buffer_size
|
syn keyword ngxDirective mp4_max_buffer_size
|
||||||
|
syn keyword ngxDirective mp4_limit_rate
|
||||||
|
syn keyword ngxDirective mp4_limit_rate_after
|
||||||
syn keyword ngxDirective msie_padding
|
syn keyword ngxDirective msie_padding
|
||||||
syn keyword ngxDirective msie_refresh
|
syn keyword ngxDirective msie_refresh
|
||||||
syn keyword ngxDirective multi_accept
|
syn keyword ngxDirective multi_accept
|
||||||
|
syn keyword ngxDirective mysql_test
|
||||||
syn keyword ngxDirective open_file_cache
|
syn keyword ngxDirective open_file_cache
|
||||||
syn keyword ngxDirective open_file_cache_errors
|
syn keyword ngxDirective open_file_cache_errors
|
||||||
syn keyword ngxDirective open_file_cache_events
|
syn keyword ngxDirective open_file_cache_events
|
||||||
@@ -269,7 +284,8 @@ syn keyword ngxDirective port_in_redirect
|
|||||||
syn keyword ngxDirective post_acceptex
|
syn keyword ngxDirective post_acceptex
|
||||||
syn keyword ngxDirective postpone_gzipping
|
syn keyword ngxDirective postpone_gzipping
|
||||||
syn keyword ngxDirective postpone_output
|
syn keyword ngxDirective postpone_output
|
||||||
syn keyword ngxDirective protocol
|
syn keyword ngxDirective protocol nextgroup=ngxMailProtocol skipwhite
|
||||||
|
syn keyword ngxMailProtocol imap pop3 smtp
|
||||||
syn keyword ngxDirective proxy
|
syn keyword ngxDirective proxy
|
||||||
syn keyword ngxDirective proxy_bind
|
syn keyword ngxDirective proxy_bind
|
||||||
syn keyword ngxDirective proxy_buffer
|
syn keyword ngxDirective proxy_buffer
|
||||||
@@ -473,6 +489,7 @@ syn keyword ngxDirective uwsgi_cache
|
|||||||
syn keyword ngxDirective uwsgi_cache_bypass
|
syn keyword ngxDirective uwsgi_cache_bypass
|
||||||
syn keyword ngxDirective uwsgi_cache_key
|
syn keyword ngxDirective uwsgi_cache_key
|
||||||
syn keyword ngxDirective uwsgi_cache_lock
|
syn keyword ngxDirective uwsgi_cache_lock
|
||||||
|
syn keyword ngxDirective uwsgi_cache_lock_age
|
||||||
syn keyword ngxDirective uwsgi_cache_lock_timeout
|
syn keyword ngxDirective uwsgi_cache_lock_timeout
|
||||||
syn keyword ngxDirective uwsgi_cache_methods
|
syn keyword ngxDirective uwsgi_cache_methods
|
||||||
syn keyword ngxDirective uwsgi_cache_min_uses
|
syn keyword ngxDirective uwsgi_cache_min_uses
|
||||||
@@ -494,14 +511,19 @@ syn keyword ngxDirective uwsgi_next_upstream_timeout
|
|||||||
syn keyword ngxDirective uwsgi_next_upstream_tries
|
syn keyword ngxDirective uwsgi_next_upstream_tries
|
||||||
syn keyword ngxDirective uwsgi_no_cache
|
syn keyword ngxDirective uwsgi_no_cache
|
||||||
syn keyword ngxDirective uwsgi_param
|
syn keyword ngxDirective uwsgi_param
|
||||||
|
syn keyword ngxDirective uwsgi_pass
|
||||||
syn keyword ngxDirective uwsgi_pass_header
|
syn keyword ngxDirective uwsgi_pass_header
|
||||||
syn keyword ngxDirective uwsgi_pass_request_body
|
syn keyword ngxDirective uwsgi_pass_request_body
|
||||||
syn keyword ngxDirective uwsgi_pass_request_headers
|
syn keyword ngxDirective uwsgi_pass_request_headers
|
||||||
syn keyword ngxDirective uwsgi_read_timeout
|
syn keyword ngxDirective uwsgi_read_timeout
|
||||||
|
syn keyword ngxDirective uwsgi_request_buffering
|
||||||
syn keyword ngxDirective uwsgi_send_timeout
|
syn keyword ngxDirective uwsgi_send_timeout
|
||||||
|
syn keyword ngxDirective uwsgi_ssl_certificate
|
||||||
|
syn keyword ngxDirective uwsgi_ssl_certificate_key
|
||||||
syn keyword ngxDirective uwsgi_ssl_ciphers
|
syn keyword ngxDirective uwsgi_ssl_ciphers
|
||||||
syn keyword ngxDirective uwsgi_ssl_crl
|
syn keyword ngxDirective uwsgi_ssl_crl
|
||||||
syn keyword ngxDirective uwsgi_ssl_name
|
syn keyword ngxDirective uwsgi_ssl_name
|
||||||
|
syn keyword ngxDirective uwsgi_ssl_password_file
|
||||||
syn keyword ngxDirective uwsgi_ssl_protocols
|
syn keyword ngxDirective uwsgi_ssl_protocols
|
||||||
syn keyword ngxDirective uwsgi_ssl_server_name
|
syn keyword ngxDirective uwsgi_ssl_server_name
|
||||||
syn keyword ngxDirective uwsgi_ssl_session_reuse
|
syn keyword ngxDirective uwsgi_ssl_session_reuse
|
||||||
@@ -553,6 +575,16 @@ syn keyword ngxDirectiveThirdParty accesskey_signature
|
|||||||
syn keyword ngxDirectiveThirdParty auth_pam
|
syn keyword ngxDirectiveThirdParty auth_pam
|
||||||
syn keyword ngxDirectiveThirdParty auth_pam_service_name
|
syn keyword ngxDirectiveThirdParty auth_pam_service_name
|
||||||
|
|
||||||
|
" Brotli Module <https://github.com/google/ngx_brotli>
|
||||||
|
" Nginx module for Brotli compression
|
||||||
|
syn keyword ngxDirectiveThirdParty brotli_static
|
||||||
|
syn keyword ngxDirectiveThirdParty brotli
|
||||||
|
syn keyword ngxDirectiveThirdParty brotli_types
|
||||||
|
syn keyword ngxDirectiveThirdParty brotli_buffers
|
||||||
|
syn keyword ngxDirectiveThirdParty brotli_comp_level
|
||||||
|
syn keyword ngxDirectiveThirdParty brotli_window
|
||||||
|
syn keyword ngxDirectiveThirdParty brotli_min_length
|
||||||
|
|
||||||
" Cache Purge Module <http://labs.frickle.com/nginx_ngx_cache_purge/>
|
" Cache Purge Module <http://labs.frickle.com/nginx_ngx_cache_purge/>
|
||||||
" Module adding ability to purge content from FastCGI and proxy caches.
|
" Module adding ability to purge content from FastCGI and proxy caches.
|
||||||
syn keyword ngxDirectiveThirdParty fastcgi_cache_purge
|
syn keyword ngxDirectiveThirdParty fastcgi_cache_purge
|
||||||
@@ -606,7 +638,7 @@ syn keyword ngxDirectiveThirdParty echo_subrequest
|
|||||||
syn keyword ngxDirectiveThirdParty echo_subrequest_async
|
syn keyword ngxDirectiveThirdParty echo_subrequest_async
|
||||||
|
|
||||||
" Events Module <http://docs.dutov.org/nginx_modules_events_en.html>
|
" Events Module <http://docs.dutov.org/nginx_modules_events_en.html>
|
||||||
" Provides options for start/stop events.
|
" Privides options for start/stop events.
|
||||||
syn keyword ngxDirectiveThirdParty on_start
|
syn keyword ngxDirectiveThirdParty on_start
|
||||||
syn keyword ngxDirectiveThirdParty on_stop
|
syn keyword ngxDirectiveThirdParty on_stop
|
||||||
|
|
||||||
@@ -671,6 +703,70 @@ syn keyword ngxDirectiveThirdParty js_utf8
|
|||||||
syn keyword ngxDirectiveThirdParty log_request_speed_filter
|
syn keyword ngxDirectiveThirdParty log_request_speed_filter
|
||||||
syn keyword ngxDirectiveThirdParty log_request_speed_filter_timeout
|
syn keyword ngxDirectiveThirdParty log_request_speed_filter_timeout
|
||||||
|
|
||||||
|
|
||||||
|
" Lua Module <https://github.com/openresty/lua-nginx-module>
|
||||||
|
" Embed the Power of Lua into NGINX HTTP servers
|
||||||
|
syn keyword ngxDirectiveThirdParty lua_use_default_type
|
||||||
|
syn keyword ngxDirectiveThirdParty lua_code_cache
|
||||||
|
syn keyword ngxDirectiveThirdParty lua_regex_cache_max_entries
|
||||||
|
syn keyword ngxDirectiveThirdParty lua_regex_match_limit
|
||||||
|
syn keyword ngxDirectiveThirdParty lua_package_path
|
||||||
|
syn keyword ngxDirectiveThirdParty lua_package_cpath
|
||||||
|
syn keyword ngxDirectiveThirdParty init_by_lua
|
||||||
|
syn keyword ngxDirectiveThirdParty init_by_lua_block
|
||||||
|
syn keyword ngxDirectiveThirdParty init_by_lua_file
|
||||||
|
syn keyword ngxDirectiveThirdParty init_worker_by_lua
|
||||||
|
syn keyword ngxDirectiveThirdParty init_worker_by_lua_block
|
||||||
|
syn keyword ngxDirectiveThirdParty init_worker_by_lua_file
|
||||||
|
syn keyword ngxDirectiveThirdParty set_by_lua
|
||||||
|
syn keyword ngxDirectiveThirdParty set_by_lua_block
|
||||||
|
syn keyword ngxDirectiveThirdParty set_by_lua_file
|
||||||
|
syn keyword ngxDirectiveThirdParty content_by_lua
|
||||||
|
syn keyword ngxDirectiveThirdParty content_by_lua_block
|
||||||
|
syn keyword ngxDirectiveThirdParty content_by_lua_file
|
||||||
|
syn keyword ngxDirectiveThirdParty rewrite_by_lua
|
||||||
|
syn keyword ngxDirectiveThirdParty rewrite_by_lua_block
|
||||||
|
syn keyword ngxDirectiveThirdParty rewrite_by_lua_file
|
||||||
|
syn keyword ngxDirectiveThirdParty access_by_lua
|
||||||
|
syn keyword ngxDirectiveThirdParty access_by_lua_block
|
||||||
|
syn keyword ngxDirectiveThirdParty access_by_lua_file
|
||||||
|
syn keyword ngxDirectiveThirdParty header_filter_by_lua
|
||||||
|
syn keyword ngxDirectiveThirdParty header_filter_by_lua_block
|
||||||
|
syn keyword ngxDirectiveThirdParty header_filter_by_lua_file
|
||||||
|
syn keyword ngxDirectiveThirdParty body_filter_by_lua
|
||||||
|
syn keyword ngxDirectiveThirdParty body_filter_by_lua_block
|
||||||
|
syn keyword ngxDirectiveThirdParty body_filter_by_lua_file
|
||||||
|
syn keyword ngxDirectiveThirdParty log_by_lua
|
||||||
|
syn keyword ngxDirectiveThirdParty log_by_lua_block
|
||||||
|
syn keyword ngxDirectiveThirdParty log_by_lua_file
|
||||||
|
syn keyword ngxDirectiveThirdParty balancer_by_lua_block
|
||||||
|
syn keyword ngxDirectiveThirdParty balancer_by_lua_file
|
||||||
|
syn keyword ngxDirectiveThirdParty lua_need_request_body
|
||||||
|
syn keyword ngxDirectiveThirdParty ssl_certificate_by_lua_block
|
||||||
|
syn keyword ngxDirectiveThirdParty ssl_certificate_by_lua_file
|
||||||
|
syn keyword ngxDirectiveThirdParty lua_shared_dict
|
||||||
|
syn keyword ngxDirectiveThirdParty lua_socket_connect_timeout
|
||||||
|
syn keyword ngxDirectiveThirdParty lua_socket_send_timeout
|
||||||
|
syn keyword ngxDirectiveThirdParty lua_socket_send_lowat
|
||||||
|
syn keyword ngxDirectiveThirdParty lua_socket_read_timeout
|
||||||
|
syn keyword ngxDirectiveThirdParty lua_socket_buffer_size
|
||||||
|
syn keyword ngxDirectiveThirdParty lua_socket_pool_size
|
||||||
|
syn keyword ngxDirectiveThirdParty lua_socket_keepalive_timeout
|
||||||
|
syn keyword ngxDirectiveThirdParty lua_socket_log_errors
|
||||||
|
syn keyword ngxDirectiveThirdParty lua_ssl_ciphers
|
||||||
|
syn keyword ngxDirectiveThirdParty lua_ssl_crl
|
||||||
|
syn keyword ngxDirectiveThirdParty lua_ssl_protocols
|
||||||
|
syn keyword ngxDirectiveThirdParty lua_ssl_trusted_certificate
|
||||||
|
syn keyword ngxDirectiveThirdParty lua_ssl_verify_depth
|
||||||
|
syn keyword ngxDirectiveThirdParty lua_http10_buffering
|
||||||
|
syn keyword ngxDirectiveThirdParty rewrite_by_lua_no_postpone
|
||||||
|
syn keyword ngxDirectiveThirdParty access_by_lua_no_postpone
|
||||||
|
syn keyword ngxDirectiveThirdParty lua_transform_underscores_in_response_headers
|
||||||
|
syn keyword ngxDirectiveThirdParty lua_check_client_abort
|
||||||
|
syn keyword ngxDirectiveThirdParty lua_max_pending_timers
|
||||||
|
syn keyword ngxDirectiveThirdParty lua_max_running_timers
|
||||||
|
|
||||||
|
|
||||||
" Memc Module <http://wiki.nginx.org/NginxHttpMemcModule>
|
" Memc Module <http://wiki.nginx.org/NginxHttpMemcModule>
|
||||||
" An extended version of the standard memcached module that supports set, add, delete, and many more memcached commands.
|
" An extended version of the standard memcached module that supports set, add, delete, and many more memcached commands.
|
||||||
syn keyword ngxDirectiveThirdParty memc_buffer_size
|
syn keyword ngxDirectiveThirdParty memc_buffer_size
|
||||||
@@ -821,12 +917,13 @@ syn keyword ngxDirectiveThirdParty xss_output_type
|
|||||||
|
|
||||||
hi link ngxComment Comment
|
hi link ngxComment Comment
|
||||||
hi link ngxVariable Identifier
|
hi link ngxVariable Identifier
|
||||||
hi link ngxVariableBlock Identifier
|
|
||||||
hi link ngxVariableString PreProc
|
hi link ngxVariableString PreProc
|
||||||
hi link ngxBlock Normal
|
|
||||||
hi link ngxString String
|
hi link ngxString String
|
||||||
|
hi link ngxLocationPath String
|
||||||
|
hi link ngxLocationNamedLoc Identifier
|
||||||
|
|
||||||
hi link ngxBoolean Boolean
|
hi link ngxBoolean Boolean
|
||||||
|
hi link ngxRewriteFlag Boolean
|
||||||
hi link ngxDirectiveBlock Statement
|
hi link ngxDirectiveBlock Statement
|
||||||
hi link ngxDirectiveImportant Type
|
hi link ngxDirectiveImportant Type
|
||||||
hi link ngxDirectiveControl Keyword
|
hi link ngxDirectiveControl Keyword
|
||||||
|
|||||||
@@ -21,25 +21,29 @@ endif
|
|||||||
if !exists("nim_highlight_space_errors")
|
if !exists("nim_highlight_space_errors")
|
||||||
let nim_highlight_space_errors = 1
|
let nim_highlight_space_errors = 1
|
||||||
endif
|
endif
|
||||||
|
if !exists("nim_highlight_special_vars")
|
||||||
|
let nim_highlight_special_vars = 1
|
||||||
|
endif
|
||||||
|
|
||||||
if exists("nim_highlight_all")
|
if exists("nim_highlight_all")
|
||||||
let nim_highlight_numbers = 1
|
let nim_highlight_numbers = 1
|
||||||
let nim_highlight_builtins = 1
|
let nim_highlight_builtins = 1
|
||||||
let nim_highlight_exceptions = 1
|
let nim_highlight_exceptions = 1
|
||||||
let nim_highlight_space_errors = 1
|
let nim_highlight_space_errors = 1
|
||||||
|
let nim_highlight_special_vars = 1
|
||||||
endif
|
endif
|
||||||
|
|
||||||
syn region nimBrackets contained extend keepend matchgroup=Bold start=+\(\\\)\@<!\[+ end=+]\|$+ skip=+\\\s*$\|\(\\\)\@<!\\]+ contains=@tclCommandCluster
|
syn region nimBrackets contained extend keepend matchgroup=Bold start=+\(\\\)\@<!\[+ end=+]\|$+ skip=+\\\s*$\|\(\\\)\@<!\\]+ contains=@tclCommandCluster
|
||||||
|
|
||||||
syn keyword nimKeyword addr and as asm atomic
|
syn keyword nimKeyword addr and as asm atomic
|
||||||
syn keyword nimKeyword bind block break
|
syn keyword nimKeyword bind block break
|
||||||
syn keyword nimKeyword case cast const continue converter
|
syn keyword nimKeyword case cast concept const continue converter
|
||||||
syn keyword nimKeyword discard distinct div do
|
syn keyword nimKeyword defer discard distinct div do
|
||||||
syn keyword nimKeyword elif else end enum except export
|
syn keyword nimKeyword elif else end enum except export
|
||||||
syn keyword nimKeyword finally for from
|
syn keyword nimKeyword finally for from func
|
||||||
syn keyword nimKeyword generic
|
syn keyword nimKeyword generic
|
||||||
syn keyword nimKeyword if import in include interface is isnot iterator
|
syn keyword nimKeyword if import in include interface is isnot iterator
|
||||||
syn keyword nimKeyword lambda let
|
syn keyword nimKeyword let
|
||||||
syn keyword nimKeyword mixin using mod
|
syn keyword nimKeyword mixin using mod
|
||||||
syn keyword nimKeyword nil not notin
|
syn keyword nimKeyword nil not notin
|
||||||
syn keyword nimKeyword object of or out
|
syn keyword nimKeyword object of or out
|
||||||
@@ -59,6 +63,7 @@ syn keyword nimRepeat for while
|
|||||||
syn keyword nimConditional if elif else case of
|
syn keyword nimConditional if elif else case of
|
||||||
syn keyword nimOperator and in is not or xor shl shr div
|
syn keyword nimOperator and in is not or xor shl shr div
|
||||||
syn match nimComment "#.*$" contains=nimTodo,@Spell
|
syn match nimComment "#.*$" contains=nimTodo,@Spell
|
||||||
|
syn region nimComment start="#\[" end="\]#" contains=nimTodo,@Spell
|
||||||
syn keyword nimTodo TODO FIXME XXX contained
|
syn keyword nimTodo TODO FIXME XXX contained
|
||||||
syn keyword nimBoolean true false
|
syn keyword nimBoolean true false
|
||||||
|
|
||||||
@@ -89,11 +94,9 @@ if nim_highlight_builtins == 1
|
|||||||
" builtin functions, types and objects, not really part of the syntax
|
" builtin functions, types and objects, not really part of the syntax
|
||||||
syn keyword nimBuiltin int int8 int16 int32 int64 uint uint8 uint16 uint32 uint64 float float32 float64 bool
|
syn keyword nimBuiltin int int8 int16 int32 int64 uint uint8 uint16 uint32 uint64 float float32 float64 bool
|
||||||
syn keyword nimBuiltin char string cstring pointer range array openarray seq
|
syn keyword nimBuiltin char string cstring pointer range array openarray seq
|
||||||
syn keyword nimBuiltin set Byte Natural Positive TObject PObject Conversion TResult TAddress
|
syn keyword nimBuiltin set Byte Natural Positive Conversion
|
||||||
syn keyword nimBuiltin BiggestInt BiggestFloat cchar cschar cshort cint csize cuchar cushort
|
syn keyword nimBuiltin BiggestInt BiggestFloat cchar cschar cshort cint csize cuchar cushort
|
||||||
syn keyword nimBuiltin clong clonglong cfloat cdouble clongdouble cuint culong culonglong cchar
|
syn keyword nimBuiltin clong clonglong cfloat cdouble clongdouble cuint culong culonglong cchar
|
||||||
syn keyword nimBuiltin cstringArray TEndian PFloat32 PFloat64 PInt64 PInt32
|
|
||||||
syn keyword nimBuiltin TGC_Strategy TFile TFileMode TFileHandle isMainModule
|
|
||||||
syn keyword nimBuiltin CompileDate CompileTime nimVersion nimMajor
|
syn keyword nimBuiltin CompileDate CompileTime nimVersion nimMajor
|
||||||
syn keyword nimBuiltin nimMinor nimPatch cpuEndian hostOS hostCPU inf
|
syn keyword nimBuiltin nimMinor nimPatch cpuEndian hostOS hostCPU inf
|
||||||
syn keyword nimBuiltin neginf nan QuitSuccess QuitFailure dbgLineHook stdin
|
syn keyword nimBuiltin neginf nan QuitSuccess QuitFailure dbgLineHook stdin
|
||||||
@@ -107,7 +110,7 @@ if nim_highlight_builtins == 1
|
|||||||
syn keyword nimBuiltin swap getRefcount getCurrentException Msg
|
syn keyword nimBuiltin swap getRefcount getCurrentException Msg
|
||||||
syn keyword nimBuiltin getOccupiedMem getFreeMem getTotalMem isNil seqToPtr
|
syn keyword nimBuiltin getOccupiedMem getFreeMem getTotalMem isNil seqToPtr
|
||||||
syn keyword nimBuiltin find pop GC_disable GC_enable GC_fullCollect
|
syn keyword nimBuiltin find pop GC_disable GC_enable GC_fullCollect
|
||||||
syn keyword nimBuiltin GC_setStrategy GC_enableMarkAnd Sweep
|
syn keyword nimBuiltin GC_setStrategy GC_enableMarkAndSweep GC_Strategy
|
||||||
syn keyword nimBuiltin GC_disableMarkAnd Sweep GC_getStatistics GC_ref
|
syn keyword nimBuiltin GC_disableMarkAnd Sweep GC_getStatistics GC_ref
|
||||||
syn keyword nimBuiltin GC_ref GC_ref GC_unref GC_unref GC_unref quit
|
syn keyword nimBuiltin GC_ref GC_ref GC_unref GC_unref GC_unref quit
|
||||||
syn keyword nimBuiltin OpenFile OpenFile CloseFile EndOfFile readChar
|
syn keyword nimBuiltin OpenFile OpenFile CloseFile EndOfFile readChar
|
||||||
@@ -115,6 +118,7 @@ if nim_highlight_builtins == 1
|
|||||||
syn keyword nimBuiltin getFileSize ReadBytes ReadChars readBuffer writeBytes
|
syn keyword nimBuiltin getFileSize ReadBytes ReadChars readBuffer writeBytes
|
||||||
syn keyword nimBuiltin writeChars writeBuffer setFilePos getFilePos
|
syn keyword nimBuiltin writeChars writeBuffer setFilePos getFilePos
|
||||||
syn keyword nimBuiltin fileHandle countdown countup items lines
|
syn keyword nimBuiltin fileHandle countdown countup items lines
|
||||||
|
syn keyword nimBuiltin FileMode File RootObj FileHandle ByteAddress Endianness
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if nim_highlight_exceptions == 1
|
if nim_highlight_exceptions == 1
|
||||||
@@ -139,6 +143,10 @@ if nim_highlight_space_errors == 1
|
|||||||
syn match nimSpaceError display "\t"
|
syn match nimSpaceError display "\t"
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
if nim_highlight_special_vars
|
||||||
|
syn keyword nimSpecialVar result
|
||||||
|
endif
|
||||||
|
|
||||||
syn sync match nimSync grouphere NONE "):$"
|
syn sync match nimSync grouphere NONE "):$"
|
||||||
syn sync maxlines=200
|
syn sync maxlines=200
|
||||||
syn sync minlines=2000
|
syn sync minlines=2000
|
||||||
@@ -166,6 +174,7 @@ if version >= 508 || !exists("did_nim_syn_inits")
|
|||||||
HiLink nimComment Comment
|
HiLink nimComment Comment
|
||||||
HiLink nimTodo Todo
|
HiLink nimTodo Todo
|
||||||
HiLink nimDecorator Define
|
HiLink nimDecorator Define
|
||||||
|
HiLink nimSpecialVar Identifier
|
||||||
|
|
||||||
if nim_highlight_numbers == 1
|
if nim_highlight_numbers == 1
|
||||||
HiLink nimNumber Number
|
HiLink nimNumber Number
|
||||||
|
|||||||
@@ -68,17 +68,11 @@ set cpo&vim
|
|||||||
syn match p6Identifier display "\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)"
|
syn match p6Identifier display "\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)"
|
||||||
|
|
||||||
let s:keywords = {
|
let s:keywords = {
|
||||||
\ "p6DeclareRoutine": [
|
|
||||||
\ "macro sub submethod method multi proto only category unit",
|
|
||||||
\ ],
|
|
||||||
\ "p6Module": [
|
|
||||||
\ "module class role package enum grammar slang subset",
|
|
||||||
\ ],
|
|
||||||
\ "p6Include": [
|
\ "p6Include": [
|
||||||
\ "use require",
|
\ "use require unit",
|
||||||
\ ],
|
\ ],
|
||||||
\ "p6Conditional": [
|
\ "p6Conditional": [
|
||||||
\ "if else elsif unless",
|
\ "if else elsif unless with orwith without",
|
||||||
\ ],
|
\ ],
|
||||||
\ "p6VarStorage": [
|
\ "p6VarStorage": [
|
||||||
\ "let my our state temp has constant",
|
\ "let my our state temp has constant",
|
||||||
@@ -144,7 +138,7 @@ let s:alpha_metaops_or = join(s:temp, "\\|")
|
|||||||
" than matches/regions, which would prevent these words from matching as
|
" than matches/regions, which would prevent these words from matching as
|
||||||
" autoquoted strings before "=>" or "p5=>".
|
" autoquoted strings before "=>" or "p5=>".
|
||||||
syn match p6KeywordStart display "\%(\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\)\@!\)\@=[A-Za-z_\xC0-\xFF0-9]\@1<!\%([A-Za-z_\xC0-\xFF][-']\)\@2<!"
|
syn match p6KeywordStart display "\%(\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\)\@!\)\@=[A-Za-z_\xC0-\xFF0-9]\@1<!\%([A-Za-z_\xC0-\xFF][-']\)\@2<!"
|
||||||
\ nextgroup=p6Attention,p6DeclareRoutine,p6Module,p6Variable,p6Include,p6Conditional,p6VarStorage,p6Repeat,p6FlowControl,p6ClosureTrait,p6Exception,p6Number,p6Pragma,p6Type,p6Operator,p6Identifier
|
\ nextgroup=p6Attention,p6Variable,p6Include,p6Conditional,p6VarStorage,p6Repeat,p6FlowControl,p6ClosureTrait,p6Exception,p6Number,p6Pragma,p6Type,p6Operator,p6Identifier
|
||||||
|
|
||||||
for [group, words] in items(s:keywords)
|
for [group, words] in items(s:keywords)
|
||||||
let s:words_space = join(words, " ")
|
let s:words_space = join(words, " ")
|
||||||
@@ -159,6 +153,10 @@ let s:words = join(s:temp, "\\|")
|
|||||||
exec "syn match p6Type display \"\\%(". s:words . "\\)\\%([A-Za-z_\\xC0-\\xFF0-9]\\|[-'][A-Za-z_\\xC0-\\xFF]\\)\\@!\" contained"
|
exec "syn match p6Type display \"\\%(". s:words . "\\)\\%([A-Za-z_\\xC0-\\xFF0-9]\\|[-'][A-Za-z_\\xC0-\\xFF]\\)\\@!\" contained"
|
||||||
unlet s:keywords s:types s:words_space s:temp s:words
|
unlet s:keywords s:types s:words_space s:temp s:words
|
||||||
|
|
||||||
|
syn match p6PreDeclare display "[.^]\@1<!\<\%(multi\|proto\|only\)\>" nextgroup=p6Declare,p6Identifier skipwhite skipempty
|
||||||
|
syn match p6Declare display "[.^]\@1<!\<\%(macro\|sub\|submethod\|method\|category\|module\|class\|role\|package\|enum\|grammar\|slang\|subset\)\>" nextgroup=p6Identifier skipwhite skipempty
|
||||||
|
syn match p6DeclareRegex display "[.^]\@1<!\<\%(regex\|rule\|token\)\>" nextgroup=p6RegexName skipwhite skipempty
|
||||||
|
|
||||||
syn match p6TypeConstraint display "\%([.^]\|^\s*\)\@<!\a\@=\%(does\|as\|but\|trusts\|of\|returns\|handles\|where\|augment\|supersede\)\>"
|
syn match p6TypeConstraint display "\%([.^]\|^\s*\)\@<!\a\@=\%(does\|as\|but\|trusts\|of\|returns\|handles\|where\|augment\|supersede\)\>"
|
||||||
syn match p6TypeConstraint display "\%([.^]\|^\s*\)\@<![A-Za-z_\xC0-\xFF0-9]\@1<!\%([A-Za-z_\xC0-\xFF][-']\)\@2<!is\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\)\@!" skipwhite skipempty nextgroup=p6Property
|
syn match p6TypeConstraint display "\%([.^]\|^\s*\)\@<![A-Za-z_\xC0-\xFF0-9]\@1<!\%([A-Za-z_\xC0-\xFF][-']\)\@2<!is\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\)\@!" skipwhite skipempty nextgroup=p6Property
|
||||||
syn match p6Property display "\a\@=\%(signature\|context\|also\|shape\|prec\|irs\|ofs\|ors\|export\|deep\|binary\|unary\|reparsed\|rw\|parsed\|cached\|readonly\|defequiv\|will\|ref\|copy\|inline\|tighter\|looser\|equiv\|assoc\|required\)" contained
|
syn match p6Property display "\a\@=\%(signature\|context\|also\|shape\|prec\|irs\|ofs\|ors\|export\|deep\|binary\|unary\|reparsed\|rw\|parsed\|cached\|readonly\|defequiv\|will\|ref\|copy\|inline\|tighter\|looser\|equiv\|assoc\|required\)" contained
|
||||||
@@ -188,7 +186,7 @@ syn match p6ReduceOp display "\%(^\|\s\|(\)\@1<=!*\%([RSXZ\[]\)*[&RSXZ]\?\[\+(\?
|
|||||||
syn match p6SetOp display "R\?(\%([-^.+|&]\|[<>][=+]\?\|cont\|elem\))"
|
syn match p6SetOp display "R\?(\%([-^.+|&]\|[<>][=+]\?\|cont\|elem\))"
|
||||||
|
|
||||||
" Reverse, cross, and zip metaoperators
|
" Reverse, cross, and zip metaoperators
|
||||||
exec "syn match p6RSXZOp display \"[RSXZ]:\\@!\\%(\\a\\@=\\%(". s:alpha_metaops_or . "\\)\\>\\|[[:alnum:]]\\@!\\%([.,]\\|[^[,.[:space:]]\\)\\+\\|\\s\\@=\\|$\\)\""
|
exec "syn match p6RSXZOp display \"[RSXZ]:\\@!\\%(\\a\\@=\\%(". s:alpha_metaops_or . "\\)\\>\\|[[:alnum:]]\\@!\\%([.,]\\|[^[,.[:alnum:][:space:]]\\)\\+\\|\\s\\@=\\|$\\)\""
|
||||||
|
|
||||||
syn match p6BlockLabel display "^\s*\zs\h\w*\s*::\@!\_s\@="
|
syn match p6BlockLabel display "^\s*\zs\h\w*\s*::\@!\_s\@="
|
||||||
|
|
||||||
@@ -362,12 +360,12 @@ syn region p6Adverb
|
|||||||
" * Followed by [-=] (e.g. <--, <=, <==, <->)
|
" * Followed by [-=] (e.g. <--, <=, <==, <->)
|
||||||
syn region p6StringAngle
|
syn region p6StringAngle
|
||||||
\ matchgroup=p6Quote
|
\ matchgroup=p6Quote
|
||||||
\ start="\%(\<\%(enum\|for\|any\|all\|none\)\>\s*(\?\s*\)\@<=<\%(<\|=>\|[-=]\{1,2}>\@!\)\@!"
|
\ start="\%(\<\%(enum\|for\|any\|all\|none\)\>\s*(\?\s*\)\@<=<\%(<\|=>\|\%([=-]\{1,2}>\|[=-]\{2}\)\)\@!"
|
||||||
\ start="\%(\s\|[<+~=!]\)\@<!<\%(<\|=>\|[-=]\{1,2}>\@!\)\@!"
|
\ start="\%(\s\|[<+~=!]\)\@<!<\%(<\|=>\|\%([=-]\{1,2}>\|[=-]\{2}\)\)\@!"
|
||||||
\ start="[<+~=!]\@1<!<\%(\s\|<\|=>\|[-=]\{1,2}\)\@!"
|
\ start="[<+~=!]\@1<!<\%(\s\|<\|=>\|\%([=-]\{1,2}>\|[=-]\{2}\)\)\@!"
|
||||||
\ start="\%(^\s*\)\@<=<\%(<\|=>\|[-=]\{1,2}>\@!\)\@!"
|
\ start="\%(^\s*\)\@<=<\%(<\|=>\|\%([=-]\{1,2}>\|[=-]\{2}\)\)\@!"
|
||||||
\ start="[<+~=!]\@1<!<\%(\s*$\)\@="
|
\ start="[<+~=!]\@1<!<\%(\s*$\)\@="
|
||||||
\ start="\%((\s*\|=\s\+\)\@<=<\%(<\|=>\|[-=]\{1,2}>\@!\)\@!"
|
\ start="\%((\s*\|=\s\+\)\@<=<\%(<\|=>\|\%([=-]\{1,2}>\|[=-]\{2}\)\)\@!"
|
||||||
\ start="<\%(\s*>\)\@="
|
\ start="<\%(\s*>\)\@="
|
||||||
\ skip="\\\@1<!\\>"
|
\ skip="\\\@1<!\\>"
|
||||||
\ end=">"
|
\ end=">"
|
||||||
@@ -450,11 +448,12 @@ syn region p6StringDQ
|
|||||||
|
|
||||||
" Q// and friends
|
" Q// and friends
|
||||||
|
|
||||||
syn match p6QuoteQStart display "\%(:\|\%(sub\|role\)\s\)\@5<![Qq]\@=" nextgroup=p6QuoteQ,p6QuoteQ_q,p6QuoteQ_qww,p6QuoteQ_qq,p6QuoteQ_qto,p6QuoteQ_qqto,p6Identifier
|
syn match p6QuoteQStart display "\%(:\|\%(sub\|role\)\s\)\@5<![Qq]\@=" nextgroup=p6QuoteQ,p6QuoteQ_q,p6QuoteQ_qww,p6QuoteQ_qq,p6QuoteQ_to,p6QuoteQ_qto,p6QuoteQ_qqto,p6Identifier
|
||||||
syn match p6QuoteQ display "Q\%(qq\|ww\|[abcfhpsqvwx]\)\?[A-Za-z(]\@!" nextgroup=p6PairsQ skipwhite skipempty contained
|
syn match p6QuoteQ display "Q\%(qq\|ww\|[abcfhpsqvwx]\)\?[A-Za-z(]\@!" nextgroup=p6PairsQ skipwhite skipempty contained
|
||||||
syn match p6QuoteQ_q display "q[abcfhpsvwx]\?[A-Za-z(]\@!" nextgroup=p6PairsQ_q skipwhite skipempty contained
|
syn match p6QuoteQ_q display "q[abcfhpsvwx]\?[A-Za-z(]\@!" nextgroup=p6PairsQ_q skipwhite skipempty contained
|
||||||
syn match p6QuoteQ_qww display "qww[A-Za-z(]\@!" nextgroup=p6PairsQ_qww skipwhite skipempty contained
|
syn match p6QuoteQ_qww display "qww[A-Za-z(]\@!" nextgroup=p6PairsQ_qww skipwhite skipempty contained
|
||||||
syn match p6QuoteQ_qq display "qq[pwx]\?[A-Za-z(]\@!" nextgroup=p6PairsQ_qq skipwhite skipempty contained
|
syn match p6QuoteQ_qq display "qq[pwx]\?[A-Za-z(]\@!" nextgroup=p6PairsQ_qq skipwhite skipempty contained
|
||||||
|
syn match p6QuoteQ_to display "Qto[A-Za-z(]\@!" nextgroup=p6StringQ_to skipwhite skipempty contained
|
||||||
syn match p6QuoteQ_qto display "qto[A-Za-z(]\@!" nextgroup=p6StringQ_qto skipwhite skipempty contained
|
syn match p6QuoteQ_qto display "qto[A-Za-z(]\@!" nextgroup=p6StringQ_qto skipwhite skipempty contained
|
||||||
syn match p6QuoteQ_qqto display "qqto[A-Za-z(]\@!" nextgroup=p6StringQ_qqto skipwhite skipempty contained
|
syn match p6QuoteQ_qqto display "qqto[A-Za-z(]\@!" nextgroup=p6StringQ_qqto skipwhite skipempty contained
|
||||||
syn match p6QuoteQ_qto display "q\_s*\%(\%(\_s*:!\?\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\%(([^)]*)\)\?\)*:\%(to\|heredoc\)\%(\_s*:!\?\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\%(([^)]*)\)\?\)*(\@!\)\@=" nextgroup=p6PairsQ_qto skipwhite skipempty contained
|
syn match p6QuoteQ_qto display "q\_s*\%(\%(\_s*:!\?\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\%(([^)]*)\)\?\)*:\%(to\|heredoc\)\%(\_s*:!\?\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\%(([^)]*)\)\?\)*(\@!\)\@=" nextgroup=p6PairsQ_qto skipwhite skipempty contained
|
||||||
@@ -494,10 +493,11 @@ let s:bracketing_delims = [
|
|||||||
let s:all_delims = s:plain_delims + s:bracketing_delims
|
let s:all_delims = s:plain_delims + s:bracketing_delims
|
||||||
|
|
||||||
for [name, start_delim, end_delim, end_group, skip] in s:all_delims
|
for [name, start_delim, end_delim, end_group, skip] in s:all_delims
|
||||||
exec "syn region p6StringQ matchgroup=p6Quote start=\"".start_delim."\" skip=\"".skip."\" end=\"".end_delim."\" contains=".end_group." contained"
|
exec "syn region p6StringQ matchgroup=p6Quote start=\"".start_delim."\" end=\"".end_delim."\" contained"
|
||||||
exec "syn region p6StringQ_q matchgroup=p6Quote start=\"".start_delim."\" skip=\"".skip."\" end=\"".end_delim."\" contains=@p6Interp_q,".end_group." contained"
|
exec "syn region p6StringQ_q matchgroup=p6Quote start=\"".start_delim."\" skip=\"".skip."\" end=\"".end_delim."\" contains=@p6Interp_q,".end_group." contained"
|
||||||
exec "syn region p6StringQ_qww matchgroup=p6Quote start=\"".start_delim."\" skip=\"".skip."\" end=\"".end_delim."\" contains=@p6Interp_q,p6StringSQ,p6StringDQ".end_group." contained"
|
exec "syn region p6StringQ_qww matchgroup=p6Quote start=\"".start_delim."\" skip=\"".skip."\" end=\"".end_delim."\" contains=@p6Interp_q,p6StringSQ,p6StringDQ".end_group." contained"
|
||||||
exec "syn region p6StringQ_qq matchgroup=p6Quote start=\"".start_delim."\" skip=\"".skip."\" end=\"".end_delim."\" contains=@p6Interp_qq,".end_group." contained"
|
exec "syn region p6StringQ_qq matchgroup=p6Quote start=\"".start_delim."\" skip=\"".skip."\" end=\"".end_delim."\" contains=@p6Interp_qq,".end_group." contained"
|
||||||
|
exec "syn region p6StringQ_to matchgroup=p6Quote start=\"".start_delim."\\z([^".end_delim."]\\+\\)".end_delim."\" end=\"^\\s*\\z1$\" contained"
|
||||||
exec "syn region p6StringQ_qto matchgroup=p6Quote start=\"".start_delim."\\z([^".end_delim."]\\+\\)".end_delim."\" skip=\"".skip."\" end=\"^\\s*\\z1$\" contains=@p6Interp_q,".end_group." contained"
|
exec "syn region p6StringQ_qto matchgroup=p6Quote start=\"".start_delim."\\z([^".end_delim."]\\+\\)".end_delim."\" skip=\"".skip."\" end=\"^\\s*\\z1$\" contains=@p6Interp_q,".end_group." contained"
|
||||||
exec "syn region p6StringQ_qqto matchgroup=p6Quote start=\"".start_delim."\\z(\[^".end_delim."]\\+\\)".end_delim."\" skip=\"".skip."\" end=\"^\\s*\\z1$\" contains=@p6Interp_qq,".end_group." contained"
|
exec "syn region p6StringQ_qqto matchgroup=p6Quote start=\"".start_delim."\\z(\[^".end_delim."]\\+\\)".end_delim."\" skip=\"".skip."\" end=\"^\\s*\\z1$\" contains=@p6Interp_qq,".end_group." contained"
|
||||||
|
|
||||||
@@ -513,7 +513,6 @@ syn match p6Key display "\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Z
|
|||||||
|
|
||||||
" Regexes and grammars
|
" Regexes and grammars
|
||||||
|
|
||||||
syn match p6DeclareRegex display "\%(regex\|rule\|token\)" nextgroup=p6RegexName skipwhite skipempty
|
|
||||||
syn match p6RegexName display "\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\?" nextgroup=p6RegexBlockCrap skipwhite skipempty contained
|
syn match p6RegexName display "\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\?" nextgroup=p6RegexBlockCrap skipwhite skipempty contained
|
||||||
syn match p6RegexBlockCrap "[^{]*" nextgroup=p6RegexBlock skipwhite skipempty transparent contained
|
syn match p6RegexBlockCrap "[^{]*" nextgroup=p6RegexBlock skipwhite skipempty transparent contained
|
||||||
|
|
||||||
@@ -724,7 +723,7 @@ syn match p6PackageScope display "\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\
|
|||||||
" Perl 6 regex regions
|
" Perl 6 regex regions
|
||||||
|
|
||||||
syn match p6MatchStart_m display "\.\@1<!\<\%(mm\?\|rx\)\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\)\@!" skipwhite skipempty nextgroup=p6MatchAdverbs_m
|
syn match p6MatchStart_m display "\.\@1<!\<\%(mm\?\|rx\)\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\)\@!" skipwhite skipempty nextgroup=p6MatchAdverbs_m
|
||||||
syn match p6MatchStart_s display "\.\@1<!\<s\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\)\@!" skipwhite skipempty nextgroup=p6MatchAdverbs_s
|
syn match p6MatchStart_s display "\.\@1<!\<[sS]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\)\@!" skipwhite skipempty nextgroup=p6MatchAdverbs_s
|
||||||
syn match p6MatchStart_tr display "\.\@1<!\<tr\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\)\@!" skipwhite skipempty nextgroup=p6MatchAdverbs_tr
|
syn match p6MatchStart_tr display "\.\@1<!\<tr\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\)\@!" skipwhite skipempty nextgroup=p6MatchAdverbs_tr
|
||||||
syn match p6MatchAdverbs_m "\%(\_s*:!\?\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\%(([^)]*)\)\?\)*" contained transparent skipwhite skipempty nextgroup=p6Match
|
syn match p6MatchAdverbs_m "\%(\_s*:!\?\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\%(([^)]*)\)\?\)*" contained transparent skipwhite skipempty nextgroup=p6Match
|
||||||
syn match p6MatchAdverbs_s "\%(\_s*:!\?\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\%(([^)]*)\)\?\)*" contained transparent skipwhite skipempty nextgroup=p6Substitution
|
syn match p6MatchAdverbs_s "\%(\_s*:!\?\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\%(([^)]*)\)\?\)*" contained transparent skipwhite skipempty nextgroup=p6Substitution
|
||||||
@@ -1100,10 +1099,10 @@ syn region p6BracketComment
|
|||||||
syn match p6Shebang display "\%^#!.*"
|
syn match p6Shebang display "\%^#!.*"
|
||||||
|
|
||||||
" => and p5=> autoquoting
|
" => and p5=> autoquoting
|
||||||
syn match p6StringP5Auto display "\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\ze\s\+p5=>"
|
syn match p6StringP5Auto display "\.\@1<!\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\ze\s\+p5=>"
|
||||||
syn match p6StringAuto display "\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\ze\%(p5\)\@2<![RSXZ]\@1<!=>"
|
syn match p6StringAuto display "\.\@1<!\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\ze\%(p5\)\@2<![RSXZ]\@1<!=>"
|
||||||
syn match p6StringAuto display "\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\ze\s\+=>"
|
syn match p6StringAuto display "\.\@1<!\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)\ze\s\+=>"
|
||||||
syn match p6StringAuto display "\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)p5\ze=>"
|
syn match p6StringAuto display "\.\@1<!\%([A-Za-z_\xC0-\xFF]\%([A-Za-z_\xC0-\xFF0-9]\|[-'][A-Za-z_\xC0-\xFF]\@=\)*\)p5\ze=>"
|
||||||
|
|
||||||
" Pod
|
" Pod
|
||||||
|
|
||||||
@@ -1759,6 +1758,7 @@ if version >= 508 || !exists("did_perl6_syntax_inits")
|
|||||||
HiLink p6StringQ_q p6String
|
HiLink p6StringQ_q p6String
|
||||||
HiLink p6StringQ_qww p6String
|
HiLink p6StringQ_qww p6String
|
||||||
HiLink p6StringQ_qq p6String
|
HiLink p6StringQ_qq p6String
|
||||||
|
HiLink p6StringQ_to p6String
|
||||||
HiLink p6StringQ_qto p6String
|
HiLink p6StringQ_qto p6String
|
||||||
HiLink p6StringQ_qqto p6String
|
HiLink p6StringQ_qqto p6String
|
||||||
HiLink p6RxStringSQ p6String
|
HiLink p6RxStringSQ p6String
|
||||||
@@ -1796,6 +1796,7 @@ if version >= 508 || !exists("did_perl6_syntax_inits")
|
|||||||
HiLink p6QuoteQ_q p6Quote
|
HiLink p6QuoteQ_q p6Quote
|
||||||
HiLink p6QuoteQ_qww p6Quote
|
HiLink p6QuoteQ_qww p6Quote
|
||||||
HiLink p6QuoteQ_qq p6Quote
|
HiLink p6QuoteQ_qq p6Quote
|
||||||
|
HiLink p6QuoteQ_to p6Quote
|
||||||
HiLink p6QuoteQ_qto p6Quote
|
HiLink p6QuoteQ_qto p6Quote
|
||||||
HiLink p6QuoteQ_qqto p6Quote
|
HiLink p6QuoteQ_qqto p6Quote
|
||||||
HiLink p6QuoteQ_PIR p6Quote
|
HiLink p6QuoteQ_PIR p6Quote
|
||||||
@@ -1875,8 +1876,8 @@ if version >= 508 || !exists("did_perl6_syntax_inits")
|
|||||||
HiLink p6String String
|
HiLink p6String String
|
||||||
HiLink p6Repeat Repeat
|
HiLink p6Repeat Repeat
|
||||||
HiLink p6Pragma Keyword
|
HiLink p6Pragma Keyword
|
||||||
HiLink p6Module Keyword
|
HiLink p6PreDeclare Keyword
|
||||||
HiLink p6DeclareRoutine Keyword
|
HiLink p6Declare Keyword
|
||||||
HiLink p6DeclareRegex Keyword
|
HiLink p6DeclareRegex Keyword
|
||||||
HiLink p6VarStorage Special
|
HiLink p6VarStorage Special
|
||||||
HiLink p6FlowControl Special
|
HiLink p6FlowControl Special
|
||||||
|
|||||||
@@ -127,6 +127,7 @@ syn match pgsqlKeyword "\<for\_s\+\(search\|order\_s\+by\)\>"
|
|||||||
syn match pgsqlKeyword "\<\(no\_s\+\)\?inherit\>"
|
syn match pgsqlKeyword "\<\(no\_s\+\)\?inherit\>"
|
||||||
syn match pgsqlKeyword "\<\(not\_s\+\)\?of\>"
|
syn match pgsqlKeyword "\<\(not\_s\+\)\?of\>"
|
||||||
syn match pgsqlKeyword "\<primary\_s\+key\>"
|
syn match pgsqlKeyword "\<primary\_s\+key\>"
|
||||||
|
syn match pgsqlKeyword "\<foreign\_s\+key\>"
|
||||||
syn match pgsqlKeyword "\<replica\_s\+identity\>"
|
syn match pgsqlKeyword "\<replica\_s\+identity\>"
|
||||||
syn match pgsqlKeyword "\<using\(\_s\+index\(\_s\+tablespace\)\?\)\?\>"
|
syn match pgsqlKeyword "\<using\(\_s\+index\(\_s\+tablespace\)\?\)\?\>"
|
||||||
syn match pgsqlKeyword "\<with\(out\)\?\_s\+function\>"
|
syn match pgsqlKeyword "\<with\(out\)\?\_s\+function\>"
|
||||||
|
|||||||
@@ -34,8 +34,8 @@ syn cluster pugTop contains=pugBegin,pugComment,pugHtmlComment,pugJavascript
|
|||||||
syn match pugBegin "^\s*\%([<>]\|&[^=~ ]\)\@!" nextgroup=pugTag,pugClassChar,pugIdChar,pugPlainChar,pugJavascript,pugScriptConditional,pugScriptStatement,pugPipedText
|
syn match pugBegin "^\s*\%([<>]\|&[^=~ ]\)\@!" nextgroup=pugTag,pugClassChar,pugIdChar,pugPlainChar,pugJavascript,pugScriptConditional,pugScriptStatement,pugPipedText
|
||||||
syn match pugTag "+\?\w\+\%(:\w\+\)\=" contained contains=htmlTagName,htmlSpecialTagName nextgroup=@pugComponent
|
syn match pugTag "+\?\w\+\%(:\w\+\)\=" contained contains=htmlTagName,htmlSpecialTagName nextgroup=@pugComponent
|
||||||
syn cluster pugComponent contains=pugAttributes,pugIdChar,pugBlockExpansionChar,pugClassChar,pugPlainChar,pugJavascript,pugTagBlockChar,pugTagInlineText
|
syn cluster pugComponent contains=pugAttributes,pugIdChar,pugBlockExpansionChar,pugClassChar,pugPlainChar,pugJavascript,pugTagBlockChar,pugTagInlineText
|
||||||
syn match pugComment '\s*\/\/.*$'
|
syn match pugComment '\(\s\+\|^\)\/\/.*$'
|
||||||
syn region pugCommentBlock start="\z(\s*\)\/\/.*$" end="^\%(\z1\s\|\s*$\)\@!" keepend
|
syn region pugCommentBlock start="\z(\s\+\|^\)\/\/.*$" end="^\%(\z1\s\|\s*$\)\@!" keepend
|
||||||
syn region pugHtmlConditionalComment start="<!--\%(.*\)>" end="<!\%(.*\)-->"
|
syn region pugHtmlConditionalComment start="<!--\%(.*\)>" end="<!\%(.*\)-->"
|
||||||
syn region pugAttributes matchgroup=pugAttributesDelimiter start="(" end=")" contained contains=@htmlJavascript,pugHtmlArg,htmlArg,htmlEvent,htmlCssDefinition nextgroup=@pugComponent
|
syn region pugAttributes matchgroup=pugAttributesDelimiter start="(" end=")" contained contains=@htmlJavascript,pugHtmlArg,htmlArg,htmlEvent,htmlCssDefinition nextgroup=@pugComponent
|
||||||
syn match pugClassChar "\." contained nextgroup=pugClass
|
syn match pugClassChar "\." contained nextgroup=pugClass
|
||||||
|
|||||||
357
syntax/ruby.vim
357
syntax/ruby.vim
@@ -11,16 +11,41 @@ if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'ruby') == -1
|
|||||||
" Thanks to perl.vim authors, and to Reimer Behrends. :-) (MN)
|
" Thanks to perl.vim authors, and to Reimer Behrends. :-) (MN)
|
||||||
" ----------------------------------------------------------------------------
|
" ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
" Prelude {{{1
|
||||||
if exists("b:current_syntax")
|
if exists("b:current_syntax")
|
||||||
finish
|
finish
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
" Folding Config {{{1
|
||||||
if has("folding") && exists("ruby_fold")
|
if has("folding") && exists("ruby_fold")
|
||||||
setlocal foldmethod=syntax
|
setlocal foldmethod=syntax
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
let s:foldable_groups = split(
|
||||||
|
\ get(
|
||||||
|
\ b:,
|
||||||
|
\ 'ruby_foldable_groups',
|
||||||
|
\ get(g:, 'ruby_foldable_groups', 'ALL')
|
||||||
|
\ )
|
||||||
|
\ )
|
||||||
|
|
||||||
|
function! s:foldable(...) abort
|
||||||
|
if index(s:foldable_groups, 'ALL') > -1
|
||||||
|
return 1
|
||||||
|
endif
|
||||||
|
|
||||||
|
for l:i in a:000
|
||||||
|
if index(s:foldable_groups, l:i) > -1
|
||||||
|
return 1
|
||||||
|
endif
|
||||||
|
endfor
|
||||||
|
|
||||||
|
return 0
|
||||||
|
endfunction " }}}
|
||||||
|
|
||||||
syn cluster rubyNotTop contains=@rubyExtendedStringSpecial,@rubyRegexpSpecial,@rubyDeclaration,rubyConditional,rubyExceptional,rubyMethodExceptional,rubyTodo
|
syn cluster rubyNotTop contains=@rubyExtendedStringSpecial,@rubyRegexpSpecial,@rubyDeclaration,rubyConditional,rubyExceptional,rubyMethodExceptional,rubyTodo
|
||||||
|
|
||||||
|
" Whitespace Errors {{{1
|
||||||
if exists("ruby_space_errors")
|
if exists("ruby_space_errors")
|
||||||
if !exists("ruby_no_trail_space_error")
|
if !exists("ruby_no_trail_space_error")
|
||||||
syn match rubySpaceError display excludenl "\s\+$"
|
syn match rubySpaceError display excludenl "\s\+$"
|
||||||
@@ -30,14 +55,14 @@ if exists("ruby_space_errors")
|
|||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" Operators
|
" Operators {{{1
|
||||||
if exists("ruby_operators")
|
if exists("ruby_operators")
|
||||||
syn match rubyOperator "[~!^|*/%+-]\|&\.\@!\|\%(class\s*\)\@<!<<\|<=>\|<=\|\%(<\|\<class\s\+\u\w*\s*\)\@<!<[^<]\@=\|===\|==\|=\~\|>>\|>=\|=\@<!>\|\*\*\|\.\.\.\|\.\.\|::"
|
syn match rubyOperator "[~!^|*/%+-]\|&\.\@!\|\%(class\s*\)\@<!<<\|<=>\|<=\|\%(<\|\<class\s\+\u\w*\s*\)\@<!<[^<]\@=\|===\|==\|=\~\|>>\|>=\|=\@1<!>\|\*\*\|\.\.\.\|\.\.\|::"
|
||||||
syn match rubyOperator "->\|-=\|/=\|\*\*=\|\*=\|&&=\|&=\|&&\|||=\||=\|||\|%=\|+=\|!\~\|!="
|
syn match rubyOperator "->\|-=\|/=\|\*\*=\|\*=\|&&=\|&=\|&&\|||=\||=\|||\|%=\|+=\|!\~\|!="
|
||||||
syn region rubyBracketOperator matchgroup=rubyOperator start="\%(\w[?!]\=\|[]})]\)\@<=\[\s*" end="\s*]" contains=ALLBUT,@rubyNotTop
|
syn region rubyBracketOperator matchgroup=rubyOperator start="\%(\w[?!]\=\|[]})]\)\@2<=\[\s*" end="\s*]" contains=ALLBUT,@rubyNotTop
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" Expression Substitution and Backslash Notation
|
" Expression Substitution and Backslash Notation {{{1
|
||||||
syn match rubyStringEscape "\\\\\|\\[abefnrstv]\|\\\o\{1,3}\|\\x\x\{1,2}" contained display
|
syn match rubyStringEscape "\\\\\|\\[abefnrstv]\|\\\o\{1,3}\|\\x\x\{1,2}" contained display
|
||||||
syn match rubyStringEscape "\%(\\M-\\C-\|\\C-\\M-\|\\M-\\c\|\\c\\M-\|\\c\|\\C-\|\\M-\)\%(\\\o\{1,3}\|\\x\x\{1,2}\|\\\=\S\)" contained display
|
syn match rubyStringEscape "\%(\\M-\\C-\|\\C-\\M-\|\\M-\\c\|\\c\\M-\|\\c\|\\C-\|\\M-\)\%(\\\o\{1,3}\|\\x\x\{1,2}\|\\\=\S\)" contained display
|
||||||
syn match rubyQuoteEscape "\\[\\']" contained display
|
syn match rubyQuoteEscape "\\[\\']" contained display
|
||||||
@@ -52,13 +77,14 @@ syn match rubyNoInterpolation "\\#{" display contained
|
|||||||
syn match rubyNoInterpolation "\\#\%(\$\|@@\=\)\w\+" display contained
|
syn match rubyNoInterpolation "\\#\%(\$\|@@\=\)\w\+" display contained
|
||||||
syn match rubyNoInterpolation "\\#\$\W" display contained
|
syn match rubyNoInterpolation "\\#\$\W" display contained
|
||||||
|
|
||||||
syn match rubyDelimEscape "\\[(<{\[)>}\]]" transparent display contained contains=NONE
|
syn match rubyDelimiterEscape "\\[(<{\[)>}\]]" transparent display contained contains=NONE
|
||||||
|
|
||||||
syn region rubyNestedParentheses start="(" skip="\\\\\|\\)" matchgroup=rubyString end=")" transparent contained
|
syn region rubyNestedParentheses start="(" skip="\\\\\|\\)" matchgroup=rubyString end=")" transparent contained
|
||||||
syn region rubyNestedCurlyBraces start="{" skip="\\\\\|\\}" matchgroup=rubyString end="}" transparent contained
|
syn region rubyNestedCurlyBraces start="{" skip="\\\\\|\\}" matchgroup=rubyString end="}" transparent contained
|
||||||
syn region rubyNestedAngleBrackets start="<" skip="\\\\\|\\>" matchgroup=rubyString end=">" transparent contained
|
syn region rubyNestedAngleBrackets start="<" skip="\\\\\|\\>" matchgroup=rubyString end=">" transparent contained
|
||||||
syn region rubyNestedSquareBrackets start="\[" skip="\\\\\|\\\]" matchgroup=rubyString end="\]" transparent contained
|
syn region rubyNestedSquareBrackets start="\[" skip="\\\\\|\\\]" matchgroup=rubyString end="\]" transparent contained
|
||||||
|
|
||||||
|
" Regular Expression Metacharacters {{{1
|
||||||
" These are mostly Oniguruma ready
|
" These are mostly Oniguruma ready
|
||||||
syn region rubyRegexpComment matchgroup=rubyRegexpSpecial start="(?#" skip="\\)" end=")" contained
|
syn region rubyRegexpComment matchgroup=rubyRegexpSpecial start="(?#" skip="\\)" end=")" contained
|
||||||
syn region rubyRegexpParens matchgroup=rubyRegexpSpecial start="(\(?:\|?<\=[=!]\|?>\|?<[a-z_]\w*>\|?[imx]*-[imx]*:\=\|\%(?#\)\@!\)" skip="\\)" end=")" contained transparent contains=@rubyRegexpSpecial
|
syn region rubyRegexpParens matchgroup=rubyRegexpSpecial start="(\(?:\|?<\=[=!]\|?>\|?<[a-z_]\w*>\|?[imx]*-[imx]*:\=\|\%(?#\)\@!\)" skip="\\)" end=")" contained transparent contains=@rubyRegexpSpecial
|
||||||
@@ -81,8 +107,8 @@ syn cluster rubyStringSpecial contains=rubyInterpolation,rubyNoInterpolati
|
|||||||
syn cluster rubyExtendedStringSpecial contains=@rubyStringSpecial,rubyNestedParentheses,rubyNestedCurlyBraces,rubyNestedAngleBrackets,rubyNestedSquareBrackets
|
syn cluster rubyExtendedStringSpecial contains=@rubyStringSpecial,rubyNestedParentheses,rubyNestedCurlyBraces,rubyNestedAngleBrackets,rubyNestedSquareBrackets
|
||||||
syn cluster rubyRegexpSpecial contains=rubyInterpolation,rubyNoInterpolation,rubyStringEscape,rubyRegexpSpecial,rubyRegexpEscape,rubyRegexpBrackets,rubyRegexpCharClass,rubyRegexpDot,rubyRegexpQuantifier,rubyRegexpAnchor,rubyRegexpParens,rubyRegexpComment
|
syn cluster rubyRegexpSpecial contains=rubyInterpolation,rubyNoInterpolation,rubyStringEscape,rubyRegexpSpecial,rubyRegexpEscape,rubyRegexpBrackets,rubyRegexpCharClass,rubyRegexpDot,rubyRegexpQuantifier,rubyRegexpAnchor,rubyRegexpParens,rubyRegexpComment
|
||||||
|
|
||||||
" Numbers and ASCII Codes
|
" Numbers and ASCII Codes {{{1
|
||||||
syn match rubyASCIICode "\%(\w\|[]})\"'/]\)\@<!\%(?\%(\\M-\\C-\|\\C-\\M-\|\\M-\\c\|\\c\\M-\|\\c\|\\C-\|\\M-\)\=\%(\\\o\{1,3}\|\\x\x\{1,2}\|\\\=\S\)\)"
|
syn match rubyASCIICode "\%(\w\|[]})\"'/]\)\@1<!\%(?\%(\\M-\\C-\|\\C-\\M-\|\\M-\\c\|\\c\\M-\|\\c\|\\C-\|\\M-\)\=\%(\\\o\{1,3}\|\\x\x\{1,2}\|\\\=\S\)\)"
|
||||||
syn match rubyInteger "\%(\%(\w\|[]})\"']\s*\)\@<!-\)\=\<0[xX]\x\+\%(_\x\+\)*r\=i\=\>" display
|
syn match rubyInteger "\%(\%(\w\|[]})\"']\s*\)\@<!-\)\=\<0[xX]\x\+\%(_\x\+\)*r\=i\=\>" display
|
||||||
syn match rubyInteger "\%(\%(\w\|[]})\"']\s*\)\@<!-\)\=\<\%(0[dD]\)\=\%(0\|[1-9]\d*\%(_\d\+\)*\)r\=i\=\>" display
|
syn match rubyInteger "\%(\%(\w\|[]})\"']\s*\)\@<!-\)\=\<\%(0[dD]\)\=\%(0\|[1-9]\d*\%(_\d\+\)*\)r\=i\=\>" display
|
||||||
syn match rubyInteger "\%(\%(\w\|[]})\"']\s*\)\@<!-\)\=\<0[oO]\=\o\+\%(_\o\+\)*r\=i\=\>" display
|
syn match rubyInteger "\%(\%(\w\|[]})\"']\s*\)\@<!-\)\=\<0[oO]\=\o\+\%(_\o\+\)*r\=i\=\>" display
|
||||||
@@ -90,7 +116,7 @@ syn match rubyInteger "\%(\%(\w\|[]})\"']\s*\)\@<!-\)\=\<0[bB][01]\+\%(_[01]\+\)
|
|||||||
syn match rubyFloat "\%(\%(\w\|[]})\"']\s*\)\@<!-\)\=\<\%(0\|[1-9]\d*\%(_\d\+\)*\)\.\d\+\%(_\d\+\)*r\=i\=\>" display
|
syn match rubyFloat "\%(\%(\w\|[]})\"']\s*\)\@<!-\)\=\<\%(0\|[1-9]\d*\%(_\d\+\)*\)\.\d\+\%(_\d\+\)*r\=i\=\>" display
|
||||||
syn match rubyFloat "\%(\%(\w\|[]})\"']\s*\)\@<!-\)\=\<\%(0\|[1-9]\d*\%(_\d\+\)*\)\%(\.\d\+\%(_\d\+\)*\)\=\%([eE][-+]\=\d\+\%(_\d\+\)*\)r\=i\=\>" display
|
syn match rubyFloat "\%(\%(\w\|[]})\"']\s*\)\@<!-\)\=\<\%(0\|[1-9]\d*\%(_\d\+\)*\)\%(\.\d\+\%(_\d\+\)*\)\=\%([eE][-+]\=\d\+\%(_\d\+\)*\)r\=i\=\>" display
|
||||||
|
|
||||||
" Identifiers
|
" Identifiers {{{1
|
||||||
syn match rubyLocalVariableOrMethod "\<[_[:lower:]][_[:alnum:]]*[?!=]\=" contains=NONE display transparent
|
syn match rubyLocalVariableOrMethod "\<[_[:lower:]][_[:alnum:]]*[?!=]\=" contains=NONE display transparent
|
||||||
syn match rubyBlockArgument "&[_[:lower:]][_[:alnum:]]" contains=NONE display transparent
|
syn match rubyBlockArgument "&[_[:lower:]][_[:alnum:]]" contains=NONE display transparent
|
||||||
|
|
||||||
@@ -98,12 +124,18 @@ syn match rubyConstant "\%(\%(^\|[^.]\)\.\s*\)\@<!\<\u\%(\w\|[^\x00-\x7F]\)*\>
|
|||||||
syn match rubyClassVariable "@@\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*" display
|
syn match rubyClassVariable "@@\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*" display
|
||||||
syn match rubyInstanceVariable "@\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*" display
|
syn match rubyInstanceVariable "@\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*" display
|
||||||
syn match rubyGlobalVariable "$\%(\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\|-.\)"
|
syn match rubyGlobalVariable "$\%(\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\|-.\)"
|
||||||
syn match rubySymbol "[]})\"':]\@<!:\%(\^\|\~@\|\~\|<<\|<=>\|<=\|<\|===\|[=!]=\|[=!]\~\|!@\|!\|>>\|>=\|>\||\|-@\|-\|/\|\[]=\|\[]\|\*\*\|\*\|&\|%\|+@\|+\|`\)"
|
syn match rubySymbol "[]})\"':]\@1<!:\%(\^\|\~@\|\~\|<<\|<=>\|<=\|<\|===\|[=!]=\|[=!]\~\|!@\|!\|>>\|>=\|>\||\|-@\|-\|/\|\[]=\|\[]\|\*\*\|\*\|&\|%\|+@\|+\|`\)"
|
||||||
syn match rubySymbol "[]})\"':]\@<!:\$\%(-.\|[`~<=>_,;:!?/.'"@$*\&+0]\)"
|
syn match rubySymbol "[]})\"':]\@1<!:\$\%(-.\|[`~<=>_,;:!?/.'"@$*\&+0]\)"
|
||||||
syn match rubySymbol "[]})\"':]\@<!:\%(\$\|@@\=\)\=\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*"
|
syn match rubySymbol "[]})\"':]\@1<!:\%(\$\|@@\=\)\=\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*"
|
||||||
syn match rubySymbol "[]})\"':]\@<!:\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\%([?!=]>\@!\)\="
|
syn match rubySymbol "[]})\"':]\@1<!:\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\%([?!=]>\@!\)\="
|
||||||
syn region rubySymbol start="[]})\"':]\@<!:'" end="'" skip="\\\\\|\\'" contains=rubyQuoteEscape fold
|
|
||||||
syn region rubySymbol start="[]})\"':]\@<!:\"" end="\"" skip="\\\\\|\\\"" contains=@rubyStringSpecial fold
|
if s:foldable(':')
|
||||||
|
syn region rubySymbol start="[]})\"':]\@1<!:'" end="'" skip="\\\\\|\\'" contains=rubyQuoteEscape fold
|
||||||
|
syn region rubySymbol start="[]})\"':]\@1<!:\"" end="\"" skip="\\\\\|\\\"" contains=@rubyStringSpecial fold
|
||||||
|
else
|
||||||
|
syn region rubySymbol start="[]})\"':]\@1<!:'" end="'" skip="\\\\\|\\'" contains=rubyQuoteEscape
|
||||||
|
syn region rubySymbol start="[]})\"':]\@1<!:\"" end="\"" skip="\\\\\|\\\"" contains=@rubyStringSpecial
|
||||||
|
endif
|
||||||
|
|
||||||
syn match rubyCapitalizedMethod "\%(\%(^\|[^.]\)\.\s*\)\@<!\<\u\%(\w\|[^\x00-\x7F]\)*\>\%(\s*(\)*\s*(\@="
|
syn match rubyCapitalizedMethod "\%(\%(^\|[^.]\)\.\s*\)\@<!\<\u\%(\w\|[^\x00-\x7F]\)*\>\%(\s*(\)*\s*(\@="
|
||||||
|
|
||||||
@@ -120,96 +152,172 @@ syn match rubyPredefinedVariable "$\%(DEBUG\|FILENAME\|KCODE\|LOADED_FEATURES\|L
|
|||||||
syn match rubyPredefinedConstant "\%(\%(^\|[^.]\)\.\s*\)\@<!\<\%(ARGF\|ARGV\|ENV\|DATA\|FALSE\|NIL\|STDERR\|STDIN\|STDOUT\|TOPLEVEL_BINDING\|TRUE\)\>\%(\s*(\)\@!"
|
syn match rubyPredefinedConstant "\%(\%(^\|[^.]\)\.\s*\)\@<!\<\%(ARGF\|ARGV\|ENV\|DATA\|FALSE\|NIL\|STDERR\|STDIN\|STDOUT\|TOPLEVEL_BINDING\|TRUE\)\>\%(\s*(\)\@!"
|
||||||
syn match rubyPredefinedConstant "\%(\%(^\|[^.]\)\.\s*\)\@<!\<\%(RUBY_\%(VERSION\|RELEASE_DATE\|PLATFORM\|PATCHLEVEL\|REVISION\|DESCRIPTION\|COPYRIGHT\|ENGINE\)\)\>\%(\s*(\)\@!"
|
syn match rubyPredefinedConstant "\%(\%(^\|[^.]\)\.\s*\)\@<!\<\%(RUBY_\%(VERSION\|RELEASE_DATE\|PLATFORM\|PATCHLEVEL\|REVISION\|DESCRIPTION\|COPYRIGHT\|ENGINE\)\)\>\%(\s*(\)\@!"
|
||||||
|
|
||||||
" Normal Regular Expression
|
" Normal Regular Expression {{{1
|
||||||
syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="\%(\%(^\|\<\%(and\|or\|while\|until\|unless\|if\|elsif\|when\|not\|then\|else\)\|[;\~=!|&(,{[<>?:*+-]\)\s*\)\@<=/" end="/[iomxneus]*" skip="\\\\\|\\/" contains=@rubyRegexpSpecial fold
|
if s:foldable('/')
|
||||||
syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="\%(\h\k*\s\+\)\@<=/[ \t=]\@!" end="/[iomxneus]*" skip="\\\\\|\\/" contains=@rubyRegexpSpecial fold
|
syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="\%(\%(^\|\<\%(and\|or\|while\|until\|unless\|if\|elsif\|when\|not\|then\|else\)\|[;\~=!|&(,{[<>?:*+-]\)\s*\)\@<=/" end="/[iomxneus]*" skip="\\\\\|\\/" contains=@rubyRegexpSpecial fold
|
||||||
|
syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="\%(\h\k*\s\+\)\@<=/[ \t=]\@!" end="/[iomxneus]*" skip="\\\\\|\\/" contains=@rubyRegexpSpecial fold
|
||||||
|
else
|
||||||
|
syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="\%(\%(^\|\<\%(and\|or\|while\|until\|unless\|if\|elsif\|when\|not\|then\|else\)\|[;\~=!|&(,{[<>?:*+-]\)\s*\)\@<=/" end="/[iomxneus]*" skip="\\\\\|\\/" contains=@rubyRegexpSpecial
|
||||||
|
syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="\%(\h\k*\s\+\)\@<=/[ \t=]\@!" end="/[iomxneus]*" skip="\\\\\|\\/" contains=@rubyRegexpSpecial
|
||||||
|
endif
|
||||||
|
|
||||||
" Generalized Regular Expression
|
" Generalized Regular Expression {{{1
|
||||||
syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1[iomxneus]*" skip="\\\\\|\\\z1" contains=@rubyRegexpSpecial fold
|
if s:foldable('%')
|
||||||
syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r{" end="}[iomxneus]*" skip="\\\\\|\\}" contains=@rubyRegexpSpecial fold
|
syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1[iomxneus]*" skip="\\\\\|\\\z1" contains=@rubyRegexpSpecial fold
|
||||||
syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r<" end=">[iomxneus]*" skip="\\\\\|\\>" contains=@rubyRegexpSpecial,rubyNestedAngleBrackets,rubyDelimEscape fold
|
syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r{" end="}[iomxneus]*" skip="\\\\\|\\}" contains=@rubyRegexpSpecial fold
|
||||||
syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r\[" end="\][iomxneus]*" skip="\\\\\|\\\]" contains=@rubyRegexpSpecial fold
|
syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r<" end=">[iomxneus]*" skip="\\\\\|\\>" contains=@rubyRegexpSpecial,rubyNestedAngleBrackets,rubyDelimiterEscape fold
|
||||||
syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r(" end=")[iomxneus]*" skip="\\\\\|\\)" contains=@rubyRegexpSpecial fold
|
syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r\[" end="\][iomxneus]*" skip="\\\\\|\\\]" contains=@rubyRegexpSpecial fold
|
||||||
syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r\z(\s\)" end="\z1[iomxneus]*" skip="\\\\\|\\\z1" contains=@rubyRegexpSpecial fold
|
syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r(" end=")[iomxneus]*" skip="\\\\\|\\)" contains=@rubyRegexpSpecial fold
|
||||||
|
syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r\z(\s\)" end="\z1[iomxneus]*" skip="\\\\\|\\\z1" contains=@rubyRegexpSpecial fold
|
||||||
|
else
|
||||||
|
syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1[iomxneus]*" skip="\\\\\|\\\z1" contains=@rubyRegexpSpecial
|
||||||
|
syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r{" end="}[iomxneus]*" skip="\\\\\|\\}" contains=@rubyRegexpSpecial
|
||||||
|
syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r<" end=">[iomxneus]*" skip="\\\\\|\\>" contains=@rubyRegexpSpecial,rubyNestedAngleBrackets,rubyDelimiterEscape
|
||||||
|
syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r\[" end="\][iomxneus]*" skip="\\\\\|\\\]" contains=@rubyRegexpSpecial
|
||||||
|
syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r(" end=")[iomxneus]*" skip="\\\\\|\\)" contains=@rubyRegexpSpecial
|
||||||
|
syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="%r\z(\s\)" end="\z1[iomxneus]*" skip="\\\\\|\\\z1" contains=@rubyRegexpSpecial
|
||||||
|
endif
|
||||||
|
|
||||||
" Normal String
|
" Normal String {{{1
|
||||||
let s:spell_cluster = exists('ruby_spellcheck_strings') ? ',@Spell' : ''
|
let s:spell_cluster = exists('ruby_spellcheck_strings') ? ',@Spell' : ''
|
||||||
exe 'syn region rubyString matchgroup=rubyStringDelimiter start="\"" end="\"" skip="\\\\\|\\\"" fold contains=@rubyStringSpecial' . s:spell_cluster
|
exe 'syn region rubyString matchgroup=rubyStringDelimiter start="\"" end="\"" skip="\\\\\|\\\"" ' .
|
||||||
exe 'syn region rubyString matchgroup=rubyStringDelimiter start="''" end="''" skip="\\\\\|\\''" fold contains=rubyQuoteEscape' . s:spell_cluster
|
\ (s:foldable('%') ? 'fold' : '') . ' contains=@rubyStringSpecial' . s:spell_cluster
|
||||||
|
exe 'syn region rubyString matchgroup=rubyStringDelimiter start="''" end="''" skip="\\\\\|\\''" ' .
|
||||||
|
\ (s:foldable('%') ? 'fold' : '') . ' contains=rubyQuoteEscape' . s:spell_cluster
|
||||||
|
|
||||||
" Shell Command Output
|
" Shell Command Output {{{1
|
||||||
syn region rubyString matchgroup=rubyStringDelimiter start="`" end="`" skip="\\\\\|\\`" contains=@rubyStringSpecial fold
|
if s:foldable('%')
|
||||||
|
syn region rubyString matchgroup=rubyStringDelimiter start="`" end="`" skip="\\\\\|\\`" contains=@rubyStringSpecial fold
|
||||||
|
else
|
||||||
|
syn region rubyString matchgroup=rubyStringDelimiter start="`" end="`" skip="\\\\\|\\`" contains=@rubyStringSpecial
|
||||||
|
endif
|
||||||
|
|
||||||
" Generalized Single Quoted String, Symbol and Array of Strings
|
" Generalized Single Quoted String, Symbol and Array of Strings {{{1
|
||||||
syn region rubyString matchgroup=rubyStringDelimiter start="%[qw]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" fold
|
if s:foldable('%')
|
||||||
syn region rubyString matchgroup=rubyStringDelimiter start="%[qw]{" end="}" skip="\\\\\|\\}" fold contains=rubyNestedCurlyBraces,rubyDelimEscape
|
syn region rubyString matchgroup=rubyStringDelimiter start="%[qw]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" fold
|
||||||
syn region rubyString matchgroup=rubyStringDelimiter start="%[qw]<" end=">" skip="\\\\\|\\>" fold contains=rubyNestedAngleBrackets,rubyDelimEscape
|
syn region rubyString matchgroup=rubyStringDelimiter start="%[qw]{" end="}" skip="\\\\\|\\}" fold contains=rubyNestedCurlyBraces,rubyDelimiterEscape
|
||||||
syn region rubyString matchgroup=rubyStringDelimiter start="%[qw]\[" end="\]" skip="\\\\\|\\\]" fold contains=rubyNestedSquareBrackets,rubyDelimEscape
|
syn region rubyString matchgroup=rubyStringDelimiter start="%[qw]<" end=">" skip="\\\\\|\\>" fold contains=rubyNestedAngleBrackets,rubyDelimiterEscape
|
||||||
syn region rubyString matchgroup=rubyStringDelimiter start="%[qw](" end=")" skip="\\\\\|\\)" fold contains=rubyNestedParentheses,rubyDelimEscape
|
syn region rubyString matchgroup=rubyStringDelimiter start="%[qw]\[" end="\]" skip="\\\\\|\\\]" fold contains=rubyNestedSquareBrackets,rubyDelimiterEscape
|
||||||
syn region rubyString matchgroup=rubyStringDelimiter start="%q\z(\s\)" end="\z1" skip="\\\\\|\\\z1" fold
|
syn region rubyString matchgroup=rubyStringDelimiter start="%[qw](" end=")" skip="\\\\\|\\)" fold contains=rubyNestedParentheses,rubyDelimiterEscape
|
||||||
syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" fold
|
syn region rubyString matchgroup=rubyStringDelimiter start="%q\z(\s\)" end="\z1" skip="\\\\\|\\\z1" fold
|
||||||
syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s{" end="}" skip="\\\\\|\\}" fold contains=rubyNestedCurlyBraces,rubyDelimEscape
|
syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" fold
|
||||||
syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s<" end=">" skip="\\\\\|\\>" fold contains=rubyNestedAngleBrackets,rubyDelimEscape
|
syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s{" end="}" skip="\\\\\|\\}" fold contains=rubyNestedCurlyBraces,rubyDelimiterEscape
|
||||||
syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s\[" end="\]" skip="\\\\\|\\\]" fold contains=rubyNestedSquareBrackets,rubyDelimEscape
|
syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s<" end=">" skip="\\\\\|\\>" fold contains=rubyNestedAngleBrackets,rubyDelimiterEscape
|
||||||
syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s(" end=")" skip="\\\\\|\\)" fold contains=rubyNestedParentheses,rubyDelimEscape
|
syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s\[" end="\]" skip="\\\\\|\\\]" fold contains=rubyNestedSquareBrackets,rubyDelimiterEscape
|
||||||
syn region rubyString matchgroup=rubyStringDelimiter start="%s\z(\s\)" end="\z1" skip="\\\\\|\\\z1" fold
|
syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s(" end=")" skip="\\\\\|\\)" fold contains=rubyNestedParentheses,rubyDelimiterEscape
|
||||||
|
syn region rubyString matchgroup=rubyStringDelimiter start="%s\z(\s\)" end="\z1" skip="\\\\\|\\\z1" fold
|
||||||
|
else
|
||||||
|
syn region rubyString matchgroup=rubyStringDelimiter start="%[qw]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1"
|
||||||
|
syn region rubyString matchgroup=rubyStringDelimiter start="%[qw]{" end="}" skip="\\\\\|\\}" contains=rubyNestedCurlyBraces,rubyDelimiterEscape
|
||||||
|
syn region rubyString matchgroup=rubyStringDelimiter start="%[qw]<" end=">" skip="\\\\\|\\>" contains=rubyNestedAngleBrackets,rubyDelimiterEscape
|
||||||
|
syn region rubyString matchgroup=rubyStringDelimiter start="%[qw]\[" end="\]" skip="\\\\\|\\\]" contains=rubyNestedSquareBrackets,rubyDelimiterEscape
|
||||||
|
syn region rubyString matchgroup=rubyStringDelimiter start="%[qw](" end=")" skip="\\\\\|\\)" contains=rubyNestedParentheses,rubyDelimiterEscape
|
||||||
|
syn region rubyString matchgroup=rubyStringDelimiter start="%q\z(\s\)" end="\z1" skip="\\\\\|\\\z1"
|
||||||
|
syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1"
|
||||||
|
syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s{" end="}" skip="\\\\\|\\}" contains=rubyNestedCurlyBraces,rubyDelimiterEscape
|
||||||
|
syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s<" end=">" skip="\\\\\|\\>" contains=rubyNestedAngleBrackets,rubyDelimiterEscape
|
||||||
|
syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s\[" end="\]" skip="\\\\\|\\\]" contains=rubyNestedSquareBrackets,rubyDelimiterEscape
|
||||||
|
syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s(" end=")" skip="\\\\\|\\)" contains=rubyNestedParentheses,rubyDelimiterEscape
|
||||||
|
syn region rubyString matchgroup=rubyStringDelimiter start="%s\z(\s\)" end="\z1" skip="\\\\\|\\\z1"
|
||||||
|
endif
|
||||||
|
|
||||||
" Generalized Double Quoted String and Array of Strings and Shell Command Output
|
" Generalized Double Quoted String and Array of Strings and Shell Command Output {{{1
|
||||||
" Note: %= is not matched here as the beginning of a double quoted string
|
" Note: %= is not matched here as the beginning of a double quoted string
|
||||||
syn region rubyString matchgroup=rubyStringDelimiter start="%\z([~`!@#$%^&*_\-+|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial fold
|
if s:foldable('%')
|
||||||
syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial fold
|
syn region rubyString matchgroup=rubyStringDelimiter start="%\z([~`!@#$%^&*_\-+|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial fold
|
||||||
syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\={" end="}" skip="\\\\\|\\}" contains=@rubyStringSpecial,rubyNestedCurlyBraces,rubyDelimEscape fold
|
syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial fold
|
||||||
syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\=<" end=">" skip="\\\\\|\\>" contains=@rubyStringSpecial,rubyNestedAngleBrackets,rubyDelimEscape fold
|
syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\={" end="}" skip="\\\\\|\\}" contains=@rubyStringSpecial,rubyNestedCurlyBraces,rubyDelimiterEscape fold
|
||||||
syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\=\[" end="\]" skip="\\\\\|\\\]" contains=@rubyStringSpecial,rubyNestedSquareBrackets,rubyDelimEscape fold
|
syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\=<" end=">" skip="\\\\\|\\>" contains=@rubyStringSpecial,rubyNestedAngleBrackets,rubyDelimiterEscape fold
|
||||||
syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\=(" end=")" skip="\\\\\|\\)" contains=@rubyStringSpecial,rubyNestedParentheses,rubyDelimEscape fold
|
syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\=\[" end="\]" skip="\\\\\|\\\]" contains=@rubyStringSpecial,rubyNestedSquareBrackets,rubyDelimiterEscape fold
|
||||||
syn region rubyString matchgroup=rubyStringDelimiter start="%[Qx]\z(\s\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial fold
|
syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\=(" end=")" skip="\\\\\|\\)" contains=@rubyStringSpecial,rubyNestedParentheses,rubyDelimiterEscape fold
|
||||||
|
syn region rubyString matchgroup=rubyStringDelimiter start="%[Qx]\z(\s\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial fold
|
||||||
|
else
|
||||||
|
syn region rubyString matchgroup=rubyStringDelimiter start="%\z([~`!@#$%^&*_\-+|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial
|
||||||
|
syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial
|
||||||
|
syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\={" end="}" skip="\\\\\|\\}" contains=@rubyStringSpecial,rubyNestedCurlyBraces,rubyDelimiterEscape
|
||||||
|
syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\=<" end=">" skip="\\\\\|\\>" contains=@rubyStringSpecial,rubyNestedAngleBrackets,rubyDelimiterEscape
|
||||||
|
syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\=\[" end="\]" skip="\\\\\|\\\]" contains=@rubyStringSpecial,rubyNestedSquareBrackets,rubyDelimiterEscape
|
||||||
|
syn region rubyString matchgroup=rubyStringDelimiter start="%[QWx]\=(" end=")" skip="\\\\\|\\)" contains=@rubyStringSpecial,rubyNestedParentheses,rubyDelimiterEscape
|
||||||
|
syn region rubyString matchgroup=rubyStringDelimiter start="%[Qx]\z(\s\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial
|
||||||
|
endif
|
||||||
|
|
||||||
" Array of Symbols
|
" Array of Symbols {{{1
|
||||||
syn region rubySymbol matchgroup=rubySymbolDelimiter start="%i\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" fold
|
if s:foldable('%')
|
||||||
syn region rubySymbol matchgroup=rubySymbolDelimiter start="%i{" end="}" skip="\\\\\|\\}" fold contains=rubyNestedCurlyBraces,rubyDelimEscape
|
" Array of Symbols
|
||||||
syn region rubySymbol matchgroup=rubySymbolDelimiter start="%i<" end=">" skip="\\\\\|\\>" fold contains=rubyNestedAngleBrackets,rubyDelimEscape
|
syn region rubySymbol matchgroup=rubySymbolDelimiter start="%i\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" fold
|
||||||
syn region rubySymbol matchgroup=rubySymbolDelimiter start="%i\[" end="\]" skip="\\\\\|\\\]" fold contains=rubyNestedSquareBrackets,rubyDelimEscape
|
syn region rubySymbol matchgroup=rubySymbolDelimiter start="%i{" end="}" skip="\\\\\|\\}" fold contains=rubyNestedCurlyBraces,rubyDelimiterEscape
|
||||||
syn region rubySymbol matchgroup=rubySymbolDelimiter start="%i(" end=")" skip="\\\\\|\\)" fold contains=rubyNestedParentheses,rubyDelimEscape
|
syn region rubySymbol matchgroup=rubySymbolDelimiter start="%i<" end=">" skip="\\\\\|\\>" fold contains=rubyNestedAngleBrackets,rubyDelimiterEscape
|
||||||
|
syn region rubySymbol matchgroup=rubySymbolDelimiter start="%i\[" end="\]" skip="\\\\\|\\\]" fold contains=rubyNestedSquareBrackets,rubyDelimiterEscape
|
||||||
|
syn region rubySymbol matchgroup=rubySymbolDelimiter start="%i(" end=")" skip="\\\\\|\\)" fold contains=rubyNestedParentheses,rubyDelimiterEscape
|
||||||
|
|
||||||
" Array of interpolated Symbols
|
" Array of interpolated Symbols
|
||||||
syn region rubySymbol matchgroup=rubySymbolDelimiter start="%I\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial fold
|
syn region rubySymbol matchgroup=rubySymbolDelimiter start="%I\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial fold
|
||||||
syn region rubySymbol matchgroup=rubySymbolDelimiter start="%I{" end="}" skip="\\\\\|\\}" contains=@rubyStringSpecial,rubyNestedCurlyBraces,rubyDelimEscape fold
|
syn region rubySymbol matchgroup=rubySymbolDelimiter start="%I{" end="}" skip="\\\\\|\\}" contains=@rubyStringSpecial,rubyNestedCurlyBraces,rubyDelimiterEscape fold
|
||||||
syn region rubySymbol matchgroup=rubySymbolDelimiter start="%I<" end=">" skip="\\\\\|\\>" contains=@rubyStringSpecial,rubyNestedAngleBrackets,rubyDelimEscape fold
|
syn region rubySymbol matchgroup=rubySymbolDelimiter start="%I<" end=">" skip="\\\\\|\\>" contains=@rubyStringSpecial,rubyNestedAngleBrackets,rubyDelimiterEscape fold
|
||||||
syn region rubySymbol matchgroup=rubySymbolDelimiter start="%I\[" end="\]" skip="\\\\\|\\\]" contains=@rubyStringSpecial,rubyNestedSquareBrackets,rubyDelimEscape fold
|
syn region rubySymbol matchgroup=rubySymbolDelimiter start="%I\[" end="\]" skip="\\\\\|\\\]" contains=@rubyStringSpecial,rubyNestedSquareBrackets,rubyDelimiterEscape fold
|
||||||
syn region rubySymbol matchgroup=rubySymbolDelimiter start="%I(" end=")" skip="\\\\\|\\)" contains=@rubyStringSpecial,rubyNestedParentheses,rubyDelimEscape fold
|
syn region rubySymbol matchgroup=rubySymbolDelimiter start="%I(" end=")" skip="\\\\\|\\)" contains=@rubyStringSpecial,rubyNestedParentheses,rubyDelimiterEscape fold
|
||||||
|
else
|
||||||
|
" Array of Symbols
|
||||||
|
syn region rubySymbol matchgroup=rubySymbolDelimiter start="%i\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1"
|
||||||
|
syn region rubySymbol matchgroup=rubySymbolDelimiter start="%i{" end="}" skip="\\\\\|\\}" contains=rubyNestedCurlyBraces,rubyDelimiterEscape
|
||||||
|
syn region rubySymbol matchgroup=rubySymbolDelimiter start="%i<" end=">" skip="\\\\\|\\>" contains=rubyNestedAngleBrackets,rubyDelimiterEscape
|
||||||
|
syn region rubySymbol matchgroup=rubySymbolDelimiter start="%i\[" end="\]" skip="\\\\\|\\\]" contains=rubyNestedSquareBrackets,rubyDelimiterEscape
|
||||||
|
syn region rubySymbol matchgroup=rubySymbolDelimiter start="%i(" end=")" skip="\\\\\|\\)" contains=rubyNestedParentheses,rubyDelimiterEscape
|
||||||
|
|
||||||
" Here Document
|
" Array of interpolated Symbols
|
||||||
|
syn region rubySymbol matchgroup=rubySymbolDelimiter start="%I\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" contains=@rubyStringSpecial
|
||||||
|
syn region rubySymbol matchgroup=rubySymbolDelimiter start="%I{" end="}" skip="\\\\\|\\}" contains=@rubyStringSpecial,rubyNestedCurlyBraces,rubyDelimiterEscape
|
||||||
|
syn region rubySymbol matchgroup=rubySymbolDelimiter start="%I<" end=">" skip="\\\\\|\\>" contains=@rubyStringSpecial,rubyNestedAngleBrackets,rubyDelimiterEscape
|
||||||
|
syn region rubySymbol matchgroup=rubySymbolDelimiter start="%I\[" end="\]" skip="\\\\\|\\\]" contains=@rubyStringSpecial,rubyNestedSquareBrackets,rubyDelimiterEscape
|
||||||
|
syn region rubySymbol matchgroup=rubySymbolDelimiter start="%I(" end=")" skip="\\\\\|\\)" contains=@rubyStringSpecial,rubyNestedParentheses,rubyDelimiterEscape
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Here Document {{{1
|
||||||
syn region rubyHeredocStart matchgroup=rubyStringDelimiter start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<[-~]\=\zs\%(\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\)+ end=+$+ oneline contains=ALLBUT,@rubyNotTop
|
syn region rubyHeredocStart matchgroup=rubyStringDelimiter start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<[-~]\=\zs\%(\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\)+ end=+$+ oneline contains=ALLBUT,@rubyNotTop
|
||||||
syn region rubyHeredocStart matchgroup=rubyStringDelimiter start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<[-~]\=\zs"\%([^"]*\)"+ end=+$+ oneline contains=ALLBUT,@rubyNotTop
|
syn region rubyHeredocStart matchgroup=rubyStringDelimiter start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<[-~]\=\zs"\%([^"]*\)"+ end=+$+ oneline contains=ALLBUT,@rubyNotTop
|
||||||
syn region rubyHeredocStart matchgroup=rubyStringDelimiter start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<[-~]\=\zs'\%([^']*\)'+ end=+$+ oneline contains=ALLBUT,@rubyNotTop
|
syn region rubyHeredocStart matchgroup=rubyStringDelimiter start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<[-~]\=\zs'\%([^']*\)'+ end=+$+ oneline contains=ALLBUT,@rubyNotTop
|
||||||
syn region rubyHeredocStart matchgroup=rubyStringDelimiter start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<[-~]\=\zs`\%([^`]*\)`+ end=+$+ oneline contains=ALLBUT,@rubyNotTop
|
syn region rubyHeredocStart matchgroup=rubyStringDelimiter start=+\%(\%(class\s*\|\%([]})"'.]\|::\)\)\_s*\|\w\)\@<!<<[-~]\=\zs`\%([^`]*\)`+ end=+$+ oneline contains=ALLBUT,@rubyNotTop
|
||||||
|
|
||||||
syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<\z(\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\)\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+2 matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,rubyHeredoc,@rubyStringSpecial fold keepend
|
if s:foldable('<<')
|
||||||
syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<"\z([^"]*\)"\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+2 matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,rubyHeredoc,@rubyStringSpecial fold keepend
|
syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<\z(\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\)\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+2 matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,rubyHeredoc,@rubyStringSpecial fold keepend
|
||||||
syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<'\z([^']*\)'\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+2 matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,rubyHeredoc fold keepend
|
syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<"\z([^"]*\)"\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+2 matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,rubyHeredoc,@rubyStringSpecial fold keepend
|
||||||
syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<`\z([^`]*\)`\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+2 matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,rubyHeredoc,@rubyStringSpecial fold keepend
|
syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<'\z([^']*\)'\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+2 matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,rubyHeredoc fold keepend
|
||||||
|
syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<`\z([^`]*\)`\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+2 matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,rubyHeredoc,@rubyStringSpecial fold keepend
|
||||||
|
|
||||||
syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]}).]\)\s\|\w\)\@<!<<[-~]\z(\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\)\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+3 matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart,@rubyStringSpecial fold keepend
|
syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]}).]\)\s\|\w\)\@<!<<[-~]\z(\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\)\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+3 matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart,@rubyStringSpecial fold keepend
|
||||||
syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]}).]\)\s\|\w\)\@<!<<[-~]"\z([^"]*\)"\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+3 matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart,@rubyStringSpecial fold keepend
|
syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]}).]\)\s\|\w\)\@<!<<[-~]"\z([^"]*\)"\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+3 matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart,@rubyStringSpecial fold keepend
|
||||||
syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]}).]\)\s\|\w\)\@<!<<[-~]'\z([^']*\)'\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+3 matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart fold keepend
|
syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]}).]\)\s\|\w\)\@<!<<[-~]'\z([^']*\)'\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+3 matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart fold keepend
|
||||||
syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]}).]\)\s\|\w\)\@<!<<[-~]`\z([^`]*\)`\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+3 matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart,@rubyStringSpecial fold keepend
|
syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]}).]\)\s\|\w\)\@<!<<[-~]`\z([^`]*\)`\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+3 matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart,@rubyStringSpecial fold keepend
|
||||||
|
else
|
||||||
|
syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<\z(\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\)\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+2 matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,rubyHeredoc,@rubyStringSpecial keepend
|
||||||
|
syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<"\z([^"]*\)"\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+2 matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,rubyHeredoc,@rubyStringSpecial keepend
|
||||||
|
syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<'\z([^']*\)'\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+2 matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,rubyHeredoc keepend
|
||||||
|
syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]})"'.]\)\s\|\w\)\@<!<<`\z([^`]*\)`\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+2 matchgroup=rubyStringDelimiter end=+^\z1$+ contains=rubyHeredocStart,rubyHeredoc,@rubyStringSpecial keepend
|
||||||
|
|
||||||
|
syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]}).]\)\s\|\w\)\@<!<<[-~]\z(\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\)\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+3 matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart,@rubyStringSpecial keepend
|
||||||
|
syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]}).]\)\s\|\w\)\@<!<<[-~]"\z([^"]*\)"\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+3 matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart,@rubyStringSpecial keepend
|
||||||
|
syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]}).]\)\s\|\w\)\@<!<<[-~]'\z([^']*\)'\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+3 matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart keepend
|
||||||
|
syn region rubyString start=+\%(\%(class\|::\)\_s*\|\%([]}).]\)\s\|\w\)\@<!<<[-~]`\z([^`]*\)`\ze\%(.*<<[-~]\=['`"]\=\h\)\@!+hs=s+3 matchgroup=rubyStringDelimiter end=+^\s*\zs\z1$+ contains=rubyHeredocStart,@rubyStringSpecial keepend
|
||||||
|
endif
|
||||||
|
|
||||||
|
" eRuby Config {{{1
|
||||||
if exists('main_syntax') && main_syntax == 'eruby'
|
if exists('main_syntax') && main_syntax == 'eruby'
|
||||||
let b:ruby_no_expensive = 1
|
let b:ruby_no_expensive = 1
|
||||||
end
|
end
|
||||||
|
|
||||||
|
" Module, Class, Method and Alias Declarations {{{1
|
||||||
syn match rubyAliasDeclaration "[^[:space:];#.()]\+" contained contains=rubySymbol,rubyGlobalVariable,rubyPredefinedVariable nextgroup=rubyAliasDeclaration2 skipwhite
|
syn match rubyAliasDeclaration "[^[:space:];#.()]\+" contained contains=rubySymbol,rubyGlobalVariable,rubyPredefinedVariable nextgroup=rubyAliasDeclaration2 skipwhite
|
||||||
syn match rubyAliasDeclaration2 "[^[:space:];#.()]\+" contained contains=rubySymbol,rubyGlobalVariable,rubyPredefinedVariable
|
syn match rubyAliasDeclaration2 "[^[:space:];#.()]\+" contained contains=rubySymbol,rubyGlobalVariable,rubyPredefinedVariable
|
||||||
syn match rubyMethodDeclaration "[^[:space:];#(]\+" contained contains=rubyConstant,rubyBoolean,rubyPseudoVariable,rubyInstanceVariable,rubyClassVariable,rubyGlobalVariable
|
syn match rubyMethodDeclaration "[^[:space:];#(]\+" contained contains=rubyConstant,rubyBoolean,rubyPseudoVariable,rubyInstanceVariable,rubyClassVariable,rubyGlobalVariable
|
||||||
syn match rubyClassDeclaration "[^[:space:];#<]\+" contained contains=rubyConstant,rubyOperator
|
syn match rubyClassDeclaration "[^[:space:];#<]\+" contained contains=rubyConstant,rubyOperator
|
||||||
syn match rubyModuleDeclaration "[^[:space:];#<]\+" contained contains=rubyConstant,rubyOperator
|
syn match rubyModuleDeclaration "[^[:space:];#<]\+" contained contains=rubyConstant,rubyOperator
|
||||||
syn match rubyFunction "\<[_[:alpha:]][_[:alnum:]]*[?!=]\=[[:alnum:]_.:?!=]\@!" contained containedin=rubyMethodDeclaration
|
syn match rubyFunction "\<[_[:alpha:]][_[:alnum:]]*[?!=]\=[[:alnum:]_.:?!=]\@!" contained containedin=rubyMethodDeclaration
|
||||||
syn match rubyFunction "\%(\s\|^\)\@<=[_[:alpha:]][_[:alnum:]]*[?!=]\=\%(\s\|$\)\@=" contained containedin=rubyAliasDeclaration,rubyAliasDeclaration2
|
syn match rubyFunction "\%(\s\|^\)\@1<=[_[:alpha:]][_[:alnum:]]*[?!=]\=\%(\s\|$\)\@=" contained containedin=rubyAliasDeclaration,rubyAliasDeclaration2
|
||||||
syn match rubyFunction "\%([[:space:].]\|^\)\@<=\%(\[\]=\=\|\*\*\|[-+!~]@\=\|[*/%|&^~]\|<<\|>>\|[<>]=\=\|<=>\|===\|[=!]=\|[=!]\~\|!\|`\)\%([[:space:];#(]\|$\)\@=" contained containedin=rubyAliasDeclaration,rubyAliasDeclaration2,rubyMethodDeclaration
|
syn match rubyFunction "\%([[:space:].]\|^\)\@2<=\%(\[\]=\=\|\*\*\|[-+!~]@\=\|[*/%|&^~]\|<<\|>>\|[<>]=\=\|<=>\|===\|[=!]=\|[=!]\~\|!\|`\)\%([[:space:];#(]\|$\)\@=" contained containedin=rubyAliasDeclaration,rubyAliasDeclaration2,rubyMethodDeclaration
|
||||||
|
|
||||||
syn cluster rubyDeclaration contains=rubyAliasDeclaration,rubyAliasDeclaration2,rubyMethodDeclaration,rubyModuleDeclaration,rubyClassDeclaration,rubyFunction,rubyBlockParameter
|
syn cluster rubyDeclaration contains=rubyAliasDeclaration,rubyAliasDeclaration2,rubyMethodDeclaration,rubyModuleDeclaration,rubyClassDeclaration,rubyFunction,rubyBlockParameter
|
||||||
|
|
||||||
" Keywords
|
" Keywords {{{1
|
||||||
" Note: the following keywords have already been defined:
|
" Note: the following keywords have already been defined:
|
||||||
" begin case class def do end for if module unless until while
|
" begin case class def do end for if module unless until while
|
||||||
syn match rubyControl "\<\%(and\|break\|in\|next\|not\|or\|redo\|rescue\|retry\|return\)\>[?!]\@!"
|
syn match rubyControl "\<\%(and\|break\|in\|next\|not\|or\|redo\|rescue\|retry\|return\)\>[?!]\@!"
|
||||||
@@ -219,8 +327,9 @@ syn match rubyBoolean "\<\%(true\|false\)\>[?!]\@!"
|
|||||||
syn match rubyPseudoVariable "\<\%(nil\|self\|__ENCODING__\|__dir__\|__FILE__\|__LINE__\|__callee__\|__method__\)\>[?!]\@!" " TODO: reorganise
|
syn match rubyPseudoVariable "\<\%(nil\|self\|__ENCODING__\|__dir__\|__FILE__\|__LINE__\|__callee__\|__method__\)\>[?!]\@!" " TODO: reorganise
|
||||||
syn match rubyBeginEnd "\<\%(BEGIN\|END\)\>[?!]\@!"
|
syn match rubyBeginEnd "\<\%(BEGIN\|END\)\>[?!]\@!"
|
||||||
|
|
||||||
" Expensive Mode - match 'end' with the appropriate opening keyword for syntax
|
" Expensive Mode {{{1
|
||||||
" based folding and special highlighting of module/class/method definitions
|
" Match 'end' with the appropriate opening keyword for syntax based folding
|
||||||
|
" and special highlighting of module/class/method definitions
|
||||||
if !exists("b:ruby_no_expensive") && !exists("ruby_no_expensive")
|
if !exists("b:ruby_no_expensive") && !exists("ruby_no_expensive")
|
||||||
syn match rubyDefine "\<alias\>" nextgroup=rubyAliasDeclaration skipwhite skipnl
|
syn match rubyDefine "\<alias\>" nextgroup=rubyAliasDeclaration skipwhite skipnl
|
||||||
syn match rubyDefine "\<def\>" nextgroup=rubyMethodDeclaration skipwhite skipnl
|
syn match rubyDefine "\<def\>" nextgroup=rubyMethodDeclaration skipwhite skipnl
|
||||||
@@ -228,23 +337,66 @@ if !exists("b:ruby_no_expensive") && !exists("ruby_no_expensive")
|
|||||||
syn match rubyClass "\<class\>" nextgroup=rubyClassDeclaration skipwhite skipnl
|
syn match rubyClass "\<class\>" nextgroup=rubyClassDeclaration skipwhite skipnl
|
||||||
syn match rubyModule "\<module\>" nextgroup=rubyModuleDeclaration skipwhite skipnl
|
syn match rubyModule "\<module\>" nextgroup=rubyModuleDeclaration skipwhite skipnl
|
||||||
|
|
||||||
|
if s:foldable('def')
|
||||||
syn region rubyMethodBlock start="\<def\>" matchgroup=rubyDefine end="\%(\<def\_s\+\)\@<!\<end\>" contains=ALLBUT,@rubyNotTop fold
|
syn region rubyMethodBlock start="\<def\>" matchgroup=rubyDefine end="\%(\<def\_s\+\)\@<!\<end\>" contains=ALLBUT,@rubyNotTop fold
|
||||||
|
else
|
||||||
|
syn region rubyMethodBlock start="\<def\>" matchgroup=rubyDefine end="\%(\<def\_s\+\)\@<!\<end\>" contains=ALLBUT,@rubyNotTop
|
||||||
|
endif
|
||||||
|
|
||||||
|
if s:foldable('class')
|
||||||
syn region rubyBlock start="\<class\>" matchgroup=rubyClass end="\<end\>" contains=ALLBUT,@rubyNotTop fold
|
syn region rubyBlock start="\<class\>" matchgroup=rubyClass end="\<end\>" contains=ALLBUT,@rubyNotTop fold
|
||||||
|
else
|
||||||
|
syn region rubyBlock start="\<class\>" matchgroup=rubyClass end="\<end\>" contains=ALLBUT,@rubyNotTop
|
||||||
|
endif
|
||||||
|
|
||||||
|
if s:foldable('module')
|
||||||
syn region rubyBlock start="\<module\>" matchgroup=rubyModule end="\<end\>" contains=ALLBUT,@rubyNotTop fold
|
syn region rubyBlock start="\<module\>" matchgroup=rubyModule end="\<end\>" contains=ALLBUT,@rubyNotTop fold
|
||||||
|
else
|
||||||
|
syn region rubyBlock start="\<module\>" matchgroup=rubyModule end="\<end\>" contains=ALLBUT,@rubyNotTop
|
||||||
|
endif
|
||||||
|
|
||||||
" modifiers
|
" modifiers
|
||||||
syn match rubyConditionalModifier "\<\%(if\|unless\)\>" display
|
syn match rubyLineContinuation "\\$" nextgroup=rubyConditionalModifier,rubyRepeatModifier skipwhite skipnl
|
||||||
syn match rubyRepeatModifier "\<\%(while\|until\)\>" display
|
syn match rubyConditionalModifier "\<\%(if\|unless\)\>"
|
||||||
|
syn match rubyRepeatModifier "\<\%(while\|until\)\>"
|
||||||
|
|
||||||
|
if s:foldable('do')
|
||||||
syn region rubyDoBlock matchgroup=rubyControl start="\<do\>" end="\<end\>" contains=ALLBUT,@rubyNotTop fold
|
syn region rubyDoBlock matchgroup=rubyControl start="\<do\>" end="\<end\>" contains=ALLBUT,@rubyNotTop fold
|
||||||
|
else
|
||||||
|
syn region rubyDoBlock matchgroup=rubyControl start="\<do\>" end="\<end\>" contains=ALLBUT,@rubyNotTop
|
||||||
|
endif
|
||||||
|
|
||||||
" curly bracket block or hash literal
|
" curly bracket block or hash literal
|
||||||
|
if s:foldable('{')
|
||||||
syn region rubyCurlyBlock matchgroup=rubyCurlyBlockDelimiter start="{" end="}" contains=ALLBUT,@rubyNotTop fold
|
syn region rubyCurlyBlock matchgroup=rubyCurlyBlockDelimiter start="{" end="}" contains=ALLBUT,@rubyNotTop fold
|
||||||
|
else
|
||||||
|
syn region rubyCurlyBlock matchgroup=rubyCurlyBlockDelimiter start="{" end="}" contains=ALLBUT,@rubyNotTop
|
||||||
|
endif
|
||||||
|
|
||||||
|
if s:foldable('[')
|
||||||
syn region rubyArrayLiteral matchgroup=rubyArrayDelimiter start="\%(\w\|[\]})]\)\@<!\[" end="]" contains=ALLBUT,@rubyNotTop fold
|
syn region rubyArrayLiteral matchgroup=rubyArrayDelimiter start="\%(\w\|[\]})]\)\@<!\[" end="]" contains=ALLBUT,@rubyNotTop fold
|
||||||
|
else
|
||||||
|
syn region rubyArrayLiteral matchgroup=rubyArrayDelimiter start="\%(\w\|[\]})]\)\@<!\[" end="]" contains=ALLBUT,@rubyNotTop
|
||||||
|
endif
|
||||||
|
|
||||||
" statements without 'do'
|
" statements without 'do'
|
||||||
|
if s:foldable('begin')
|
||||||
syn region rubyBlockExpression matchgroup=rubyControl start="\<begin\>" end="\<end\>" contains=ALLBUT,@rubyNotTop fold
|
syn region rubyBlockExpression matchgroup=rubyControl start="\<begin\>" end="\<end\>" contains=ALLBUT,@rubyNotTop fold
|
||||||
|
else
|
||||||
|
syn region rubyBlockExpression matchgroup=rubyControl start="\<begin\>" end="\<end\>" contains=ALLBUT,@rubyNotTop
|
||||||
|
endif
|
||||||
|
|
||||||
|
if s:foldable('case')
|
||||||
syn region rubyCaseExpression matchgroup=rubyConditional start="\<case\>" end="\<end\>" contains=ALLBUT,@rubyNotTop fold
|
syn region rubyCaseExpression matchgroup=rubyConditional start="\<case\>" end="\<end\>" contains=ALLBUT,@rubyNotTop fold
|
||||||
syn region rubyConditionalExpression matchgroup=rubyConditional start="\%(\%(^\|\.\.\.\=\|[{:,;([<>~\*%&^|+=-]\|\%(\<[_[:lower:]][_[:alnum:]]*\)\@<![?!]\)\s*\)\@<=\%(\\\n\s*\)\@<!\%(if\|unless\)\>" end="\%(\%(\%(\.\@<!\.\)\|::\)\s*\)\@<!\<end\>" contains=ALLBUT,@rubyNotTop fold
|
else
|
||||||
|
syn region rubyCaseExpression matchgroup=rubyConditional start="\<case\>" end="\<end\>" contains=ALLBUT,@rubyNotTop
|
||||||
|
endif
|
||||||
|
|
||||||
|
if s:foldable('if')
|
||||||
|
syn region rubyConditionalExpression matchgroup=rubyConditional start="\%(\%(^\|\.\.\.\=\|[{:,;([<>~\*%&^|+=-]\|\%(\<[_[:lower:]][_[:alnum:]]*\)\@<![?!]\)\s*\)\@<=\%(if\|unless\)\>" end="\%(\%(\%(\.\@1<!\.\)\|::\)\s*\)\@<!\<end\>" contains=ALLBUT,@rubyNotTop fold
|
||||||
|
else
|
||||||
|
syn region rubyConditionalExpression matchgroup=rubyConditional start="\%(\%(^\|\.\.\.\=\|[{:,;([<>~\*%&^|+=-]\|\%(\<[_[:lower:]][_[:alnum:]]*\)\@<![?!]\)\s*\)\@<=\%(if\|unless\)\>" end="\%(\%(\%(\.\@1<!\.\)\|::\)\s*\)\@<!\<end\>" contains=ALLBUT,@rubyNotTop
|
||||||
|
endif
|
||||||
|
|
||||||
syn match rubyConditional "\<\%(then\|else\|when\)\>[?!]\@!" contained containedin=rubyCaseExpression
|
syn match rubyConditional "\<\%(then\|else\|when\)\>[?!]\@!" contained containedin=rubyCaseExpression
|
||||||
syn match rubyConditional "\<\%(then\|else\|elsif\)\>[?!]\@!" contained containedin=rubyConditionalExpression
|
syn match rubyConditional "\<\%(then\|else\|elsif\)\>[?!]\@!" contained containedin=rubyConditionalExpression
|
||||||
@@ -254,7 +406,12 @@ if !exists("b:ruby_no_expensive") && !exists("ruby_no_expensive")
|
|||||||
|
|
||||||
" statements with optional 'do'
|
" statements with optional 'do'
|
||||||
syn region rubyOptionalDoLine matchgroup=rubyRepeat start="\<for\>[?!]\@!" start="\%(\%(^\|\.\.\.\=\|[{:,;([<>~\*/%&^|+-]\|\%(\<[_[:lower:]][_[:alnum:]]*\)\@<![!=?]\)\s*\)\@<=\<\%(until\|while\)\>" matchgroup=rubyOptionalDo end="\%(\<do\>\)" end="\ze\%(;\|$\)" oneline contains=ALLBUT,@rubyNotTop
|
syn region rubyOptionalDoLine matchgroup=rubyRepeat start="\<for\>[?!]\@!" start="\%(\%(^\|\.\.\.\=\|[{:,;([<>~\*/%&^|+-]\|\%(\<[_[:lower:]][_[:alnum:]]*\)\@<![!=?]\)\s*\)\@<=\<\%(until\|while\)\>" matchgroup=rubyOptionalDo end="\%(\<do\>\)" end="\ze\%(;\|$\)" oneline contains=ALLBUT,@rubyNotTop
|
||||||
|
|
||||||
|
if s:foldable('for')
|
||||||
syn region rubyRepeatExpression start="\<for\>[?!]\@!" start="\%(\%(^\|\.\.\.\=\|[{:,;([<>~\*/%&^|+-]\|\%(\<[_[:lower:]][_[:alnum:]]*\)\@<![!=?]\)\s*\)\@<=\<\%(until\|while\)\>" matchgroup=rubyRepeat end="\<end\>" contains=ALLBUT,@rubyNotTop nextgroup=rubyOptionalDoLine fold
|
syn region rubyRepeatExpression start="\<for\>[?!]\@!" start="\%(\%(^\|\.\.\.\=\|[{:,;([<>~\*/%&^|+-]\|\%(\<[_[:lower:]][_[:alnum:]]*\)\@<![!=?]\)\s*\)\@<=\<\%(until\|while\)\>" matchgroup=rubyRepeat end="\<end\>" contains=ALLBUT,@rubyNotTop nextgroup=rubyOptionalDoLine fold
|
||||||
|
else
|
||||||
|
syn region rubyRepeatExpression start="\<for\>[?!]\@!" start="\%(\%(^\|\.\.\.\=\|[{:,;([<>~\*/%&^|+-]\|\%(\<[_[:lower:]][_[:alnum:]]*\)\@<![!=?]\)\s*\)\@<=\<\%(until\|while\)\>" matchgroup=rubyRepeat end="\<end\>" contains=ALLBUT,@rubyNotTop nextgroup=rubyOptionalDoLine
|
||||||
|
endif
|
||||||
|
|
||||||
if !exists("ruby_minlines")
|
if !exists("ruby_minlines")
|
||||||
let ruby_minlines = 500
|
let ruby_minlines = 500
|
||||||
@@ -269,7 +426,7 @@ else
|
|||||||
syn match rubyKeyword "\<\%(alias\|undef\)\>[?!]\@!"
|
syn match rubyKeyword "\<\%(alias\|undef\)\>[?!]\@!"
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" Special Methods
|
" Special Methods {{{1
|
||||||
if !exists("ruby_no_special_methods")
|
if !exists("ruby_no_special_methods")
|
||||||
syn keyword rubyAccess public protected private public_class_method private_class_method public_constant private_constant module_function
|
syn keyword rubyAccess public protected private public_class_method private_class_method public_constant private_constant module_function
|
||||||
" attr is a common variable name
|
" attr is a common variable name
|
||||||
@@ -284,41 +441,36 @@ if !exists("ruby_no_special_methods")
|
|||||||
syn keyword rubyKeyword callcc caller lambda proc
|
syn keyword rubyKeyword callcc caller lambda proc
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" Comments and Documentation
|
" Comments and Documentation {{{1
|
||||||
syn match rubySharpBang "\%^#!.*" display
|
syn match rubySharpBang "\%^#!.*" display
|
||||||
syn keyword rubyTodo FIXME NOTE TODO OPTIMIZE HACK REVIEW XXX todo contained
|
syn keyword rubyTodo FIXME NOTE TODO OPTIMIZE HACK REVIEW XXX todo contained
|
||||||
syn match rubyComment "#.*" contains=rubySharpBang,rubySpaceError,rubyTodo,@Spell
|
syn match rubyComment "#.*" contains=rubySharpBang,rubySpaceError,rubyTodo,@Spell
|
||||||
if !exists("ruby_no_comment_fold")
|
if !exists("ruby_no_comment_fold") && s:foldable('#')
|
||||||
syn region rubyMultilineComment start="^\s*#.*\n\%(^\s*#\)\@=" end="^\s*#.*\n\%(^\s*#\)\@!" contains=rubyComment transparent fold keepend
|
syn region rubyMultilineComment start="^\s*#.*\n\%(^\s*#\)\@=" end="^\s*#.*\n\%(^\s*#\)\@!" contains=rubyComment transparent fold keepend
|
||||||
syn region rubyDocumentation start="^=begin\ze\%(\s.*\)\=$" end="^=end\%(\s.*\)\=$" contains=rubySpaceError,rubyTodo,@Spell fold
|
syn region rubyDocumentation start="^=begin\ze\%(\s.*\)\=$" end="^=end\%(\s.*\)\=$" contains=rubySpaceError,rubyTodo,@Spell fold
|
||||||
else
|
else
|
||||||
syn region rubyDocumentation start="^=begin\s*$" end="^=end\s*$" contains=rubySpaceError,rubyTodo,@Spell
|
syn region rubyDocumentation start="^=begin\s*$" end="^=end\s*$" contains=rubySpaceError,rubyTodo,@Spell
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
" Keyword Nobbling {{{1
|
||||||
" Note: this is a hack to prevent 'keywords' being highlighted as such when called as methods with an explicit receiver
|
" Note: this is a hack to prevent 'keywords' being highlighted as such when called as methods with an explicit receiver
|
||||||
syn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(alias\|and\|begin\|break\|case\|class\|def\|defined\|do\|else\)\>" transparent contains=NONE
|
syn match rubyKeywordAsMethod "\%(\%(\.\@1<!\.\)\|::\)\_s*\%([_[:lower:]][_[:alnum:]]*\|\<\%(BEGIN\|END\)\>\)" transparent contains=NONE
|
||||||
syn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(elsif\|end\|ensure\|false\|for\|if\|in\|module\|next\|nil\)\>" transparent contains=NONE
|
syn match rubyKeywordAsMethod "\(defined?\|exit!\)\@!\<[_[:lower:]][_[:alnum:]]*[?!]" transparent contains=NONE
|
||||||
syn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(not\|or\|redo\|refine\|rescue\|retry\|return\|self\|super\|then\|true\)\>" transparent contains=NONE
|
|
||||||
syn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(undef\|unless\|until\|when\|while\|yield\|BEGIN\|END\|__FILE__\|__LINE__\)\>" transparent contains=NONE
|
|
||||||
|
|
||||||
syn match rubyKeywordAsMethod "\<\%(alias\|begin\|case\|class\|def\|do\|end\)[?!]" transparent contains=NONE
|
" More Symbols {{{1
|
||||||
syn match rubyKeywordAsMethod "\<\%(if\|module\|refine\|undef\|unless\|until\|while\)[?!]" transparent contains=NONE
|
syn match rubySymbol "\%([{(,]\_s*\)\zs\l\w*[!?]\=::\@!"he=e-1
|
||||||
|
syn match rubySymbol "[]})\"':]\@1<!\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*[!?]\=:[[:space:],]\@="he=e-1
|
||||||
syn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(abort\|at_exit\|attr\|attr_accessor\|attr_reader\)\>" transparent contains=NONE
|
syn match rubySymbol "\%([{(,]\_s*\)\zs[[:space:],{]\l\w*[!?]\=::\@!"hs=s+1,he=e-1
|
||||||
syn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(attr_writer\|autoload\|callcc\|catch\|caller\)\>" transparent contains=NONE
|
|
||||||
syn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(eval\|class_eval\|instance_eval\|module_eval\|exit\)\>" transparent contains=NONE
|
|
||||||
syn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(extend\|fail\|fork\|include\|lambda\)\>" transparent contains=NONE
|
|
||||||
syn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(load\|loop\|prepend\|private\|proc\|protected\)\>" transparent contains=NONE
|
|
||||||
syn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(public\|require\|require_relative\|raise\|throw\|trap\|using\)\>" transparent contains=NONE
|
|
||||||
|
|
||||||
syn match rubySymbol "\%([{(,]\_s*\)\@<=\l\w*[!?]\=::\@!"he=e-1
|
|
||||||
syn match rubySymbol "[]})\"':]\@<!\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*[!?]\=:[[:space:],]\@="he=e-1
|
|
||||||
syn match rubySymbol "\%([{(,]\_s*\)\@<=[[:space:],{]\l\w*[!?]\=::\@!"hs=s+1,he=e-1
|
|
||||||
syn match rubySymbol "[[:space:],{(]\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*[!?]\=:[[:space:],]\@="hs=s+1,he=e-1
|
syn match rubySymbol "[[:space:],{(]\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*[!?]\=:[[:space:],]\@="hs=s+1,he=e-1
|
||||||
|
|
||||||
" __END__ Directive
|
" __END__ Directive {{{1
|
||||||
syn region rubyData matchgroup=rubyDataDirective start="^__END__$" end="\%$" fold
|
if s:foldable('__END__')
|
||||||
|
syn region rubyData matchgroup=rubyDataDirective start="^__END__$" end="\%$" fold
|
||||||
|
else
|
||||||
|
syn region rubyData matchgroup=rubyDataDirective start="^__END__$" end="\%$"
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Default Highlighting {{{1
|
||||||
hi def link rubyClass rubyDefine
|
hi def link rubyClass rubyDefine
|
||||||
hi def link rubyModule rubyDefine
|
hi def link rubyModule rubyDefine
|
||||||
hi def link rubyMethodExceptional rubyDefine
|
hi def link rubyMethodExceptional rubyDefine
|
||||||
@@ -389,8 +541,9 @@ hi def link rubyInvalidVariable Error
|
|||||||
hi def link rubyError Error
|
hi def link rubyError Error
|
||||||
hi def link rubySpaceError rubyError
|
hi def link rubySpaceError rubyError
|
||||||
|
|
||||||
|
" Postscript {{{1
|
||||||
let b:current_syntax = "ruby"
|
let b:current_syntax = "ruby"
|
||||||
|
|
||||||
" vim: nowrap sw=2 sts=2 ts=8 noet:
|
" vim: nowrap sw=2 sts=2 ts=8 noet fdm=marker:
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|||||||
@@ -132,7 +132,7 @@ hi link scalaKeywordModifier Function
|
|||||||
syn keyword scalaSpecial this true false ne eq
|
syn keyword scalaSpecial this true false ne eq
|
||||||
syn keyword scalaSpecial new nextgroup=scalaInstanceDeclaration skipwhite
|
syn keyword scalaSpecial new nextgroup=scalaInstanceDeclaration skipwhite
|
||||||
syn match scalaSpecial "\%(=>\|⇒\|<-\|←\|->\|→\)"
|
syn match scalaSpecial "\%(=>\|⇒\|<-\|←\|->\|→\)"
|
||||||
syn match scalaSpecial /`[^`]*`/ " Backtick literals
|
syn match scalaSpecial /`[^`]\+`/ " Backtick literals
|
||||||
hi link scalaSpecial PreProc
|
hi link scalaSpecial PreProc
|
||||||
|
|
||||||
syn keyword scalaExternal package import
|
syn keyword scalaExternal package import
|
||||||
@@ -188,8 +188,8 @@ hi link scalaTypeAnnotationParameter Function
|
|||||||
syn match scalaShebang "\%^#!.*" display
|
syn match scalaShebang "\%^#!.*" display
|
||||||
syn region scalaMultilineComment start="/\*" end="\*/" contains=scalaMultilineComment,scalaDocLinks,scalaParameterAnnotation,scalaCommentAnnotation,scalaTodo,scalaCommentCodeBlock,@Spell keepend fold
|
syn region scalaMultilineComment start="/\*" end="\*/" contains=scalaMultilineComment,scalaDocLinks,scalaParameterAnnotation,scalaCommentAnnotation,scalaTodo,scalaCommentCodeBlock,@Spell keepend fold
|
||||||
syn match scalaCommentAnnotation "@[_A-Za-z0-9$]\+" contained
|
syn match scalaCommentAnnotation "@[_A-Za-z0-9$]\+" contained
|
||||||
syn match scalaParameterAnnotation "@param" nextgroup=scalaParamAnnotationValue skipwhite contained
|
syn match scalaParameterAnnotation "\%(@tparam\|@param\|@see\)" nextgroup=scalaParamAnnotationValue skipwhite contained
|
||||||
syn match scalaParamAnnotationValue /[`_A-Za-z0-9$]\+/ contained
|
syn match scalaParamAnnotationValue /[.`_A-Za-z0-9$]\+/ contained
|
||||||
syn region scalaDocLinks start="\[\[" end="\]\]" contained
|
syn region scalaDocLinks start="\[\[" end="\]\]" contained
|
||||||
syn region scalaCommentCodeBlock matchgroup=Keyword start="{{{" end="}}}" contained
|
syn region scalaCommentCodeBlock matchgroup=Keyword start="{{{" end="}}}" contained
|
||||||
syn match scalaTodo "\vTODO|FIXME|XXX" contained
|
syn match scalaTodo "\vTODO|FIXME|XXX" contained
|
||||||
|
|||||||
@@ -68,6 +68,12 @@ syn region slimInterpolation matchgroup=slimInterpolationDelimiter start="#{" en
|
|||||||
syn region slimInterpolation matchgroup=slimInterpolationDelimiter start="#{{" end="}}" contains=@hamlRubyTop containedin=javascriptStringS,javascriptStringD,slimWrappedAttrs
|
syn region slimInterpolation matchgroup=slimInterpolationDelimiter start="#{{" end="}}" contains=@hamlRubyTop containedin=javascriptStringS,javascriptStringD,slimWrappedAttrs
|
||||||
syn match slimInterpolationEscape "\\\@<!\%(\\\\\)*\\\%(\\\ze#{\|#\ze{\)"
|
syn match slimInterpolationEscape "\\\@<!\%(\\\\\)*\\\%(\\\ze#{\|#\ze{\)"
|
||||||
|
|
||||||
|
syn region slimPlainFilter matchgroup=slimFilter start="^\z(\s*\)\%(rdoc\|textile\|markdown\|wiki\):\s*$" end="^\%(\z1 \| *$\)\@!"
|
||||||
|
syn region slimJavascriptFilter matchgroup=slimFilter start="^\z(\s*\)javascript:\s*$" end="^\%(\z1 \| *$\)\@!" contains=@htmlJavaScript,slimInterpolation keepend
|
||||||
|
syn region slimCoffeeFilter matchgroup=slimFilter start="^\z(\s*\)coffee:\s*$" end="^\%(\z1 \| *$\)\@!" contains=@coffeeAll,slimInterpolation keepend
|
||||||
|
syn region slimCSSFilter matchgroup=slimFilter start="^\z(\s*\)css:\s*$" end="^\%(\z1 \| *$\)\@!" contains=@htmlCss,slimInterpolation keepend
|
||||||
|
syn region slimSassFilter matchgroup=slimFilter start="^\z(\s*\)sass:\s*$" end="^\%(\z1 \| *$\)\@!" contains=@hamlSassTop
|
||||||
|
|
||||||
syn region slimRuby matchgroup=slimRubyOutputChar start="\s*[=]\==[']\=" skip="\%\(,\s*\|\\\)$" end="$" contained contains=@slimRubyTop keepend
|
syn region slimRuby matchgroup=slimRubyOutputChar start="\s*[=]\==[']\=" skip="\%\(,\s*\|\\\)$" end="$" contained contains=@slimRubyTop keepend
|
||||||
syn region slimRuby matchgroup=slimRubyChar start="\s*-" skip="\%\(,\s*\|\\\)$" end="$" contained contains=@slimRubyTop keepend
|
syn region slimRuby matchgroup=slimRubyChar start="\s*-" skip="\%\(,\s*\|\\\)$" end="$" contained contains=@slimRubyTop keepend
|
||||||
|
|
||||||
@@ -100,6 +106,7 @@ hi def link slimTodo Todo
|
|||||||
hi def link slimWrappedAttrValueDelimiter Delimiter
|
hi def link slimWrappedAttrValueDelimiter Delimiter
|
||||||
hi def link slimWrappedAttrsDelimiter Delimiter
|
hi def link slimWrappedAttrsDelimiter Delimiter
|
||||||
hi def link slimInlineTagChar Delimiter
|
hi def link slimInlineTagChar Delimiter
|
||||||
|
hi def link slimFilter PreProc
|
||||||
|
|
||||||
let b:current_syntax = "slim"
|
let b:current_syntax = "slim"
|
||||||
|
|
||||||
|
|||||||
@@ -64,9 +64,9 @@ syntax match swiftNumber "\v<\d+>"
|
|||||||
syntax match swiftNumber "\v<(\d+_+)+\d+(\.\d+(_+\d+)*)?>"
|
syntax match swiftNumber "\v<(\d+_+)+\d+(\.\d+(_+\d+)*)?>"
|
||||||
syntax match swiftNumber "\v<\d+\.\d+>"
|
syntax match swiftNumber "\v<\d+\.\d+>"
|
||||||
syntax match swiftNumber "\v<\d*\.?\d+([Ee]-?)?\d+>"
|
syntax match swiftNumber "\v<\d*\.?\d+([Ee]-?)?\d+>"
|
||||||
syntax match swiftNumber "\v<0x\x+([Pp]-?)?\x+>"
|
syntax match swiftNumber "\v<0x[[:xdigit:]_]+([Pp]-?)?\x+>"
|
||||||
syntax match swiftNumber "\v<0b[01]+>"
|
syntax match swiftNumber "\v<0b[01_]+>"
|
||||||
syntax match swiftNumber "\v<0o\o+>"
|
syntax match swiftNumber "\v<0o[0-7_]+>"
|
||||||
|
|
||||||
" BOOLs
|
" BOOLs
|
||||||
syntax keyword swiftBoolean
|
syntax keyword swiftBoolean
|
||||||
|
|||||||
138
syntax/tmux.vim
138
syntax/tmux.vim
@@ -33,15 +33,16 @@ syn keyword tmuxAction any current none
|
|||||||
syn keyword tmuxBoolean off on
|
syn keyword tmuxBoolean off on
|
||||||
|
|
||||||
syn keyword tmuxCmds
|
syn keyword tmuxCmds
|
||||||
\ attach[-session]
|
\ attach
|
||||||
\ bind[-key]
|
\ attach-session
|
||||||
|
\ bind
|
||||||
|
\ bind-key
|
||||||
\ break-pane
|
\ break-pane
|
||||||
\ breakp
|
\ breakp
|
||||||
\ capture-pane
|
\ capture-pane
|
||||||
\ capturep
|
\ capturep
|
||||||
\ choose-buffer
|
\ choose-buffer
|
||||||
\ choose-client
|
\ choose-client
|
||||||
\ choose-list
|
|
||||||
\ choose-session
|
\ choose-session
|
||||||
\ choose-tree
|
\ choose-tree
|
||||||
\ choose-window
|
\ choose-window
|
||||||
@@ -49,124 +50,149 @@ syn keyword tmuxCmds
|
|||||||
\ clearhist
|
\ clearhist
|
||||||
\ clock-mode
|
\ clock-mode
|
||||||
\ command-prompt
|
\ command-prompt
|
||||||
\ confirm[-before]
|
\ confirm
|
||||||
|
\ confirm-before
|
||||||
\ copy-mode
|
\ copy-mode
|
||||||
\ delete-buffer
|
\ delete-buffer
|
||||||
\ deleteb
|
\ deleteb
|
||||||
\ detach[-client]
|
\ detach
|
||||||
\ display[-message]
|
\ detach-client
|
||||||
|
\ display
|
||||||
|
\ display-message
|
||||||
\ display-panes
|
\ display-panes
|
||||||
\ displayp
|
\ displayp
|
||||||
\ find-window
|
\ find-window
|
||||||
\ findw
|
\ findw
|
||||||
\ has[-session]
|
\ has
|
||||||
\ if[-shell]
|
\ has-session
|
||||||
|
\ if
|
||||||
|
\ if-shell
|
||||||
|
\ info
|
||||||
\ join-pane
|
\ join-pane
|
||||||
\ joinp
|
\ joinp
|
||||||
\ kill-pane
|
\ kill-pane
|
||||||
\ killp
|
|
||||||
\ kill-server
|
\ kill-server
|
||||||
\ kill-session
|
\ kill-session
|
||||||
\ kill-window
|
\ kill-window
|
||||||
|
\ killp
|
||||||
\ killw
|
\ killw
|
||||||
|
\ last
|
||||||
\ last-pane
|
\ last-pane
|
||||||
|
\ last-window
|
||||||
\ lastp
|
\ lastp
|
||||||
\ last[-window]
|
|
||||||
\ link-window
|
\ link-window
|
||||||
\ linkw
|
\ linkw
|
||||||
\ list-buffers
|
\ list-buffers
|
||||||
\ lsb
|
|
||||||
\ list-clients
|
\ list-clients
|
||||||
\ lsc
|
|
||||||
\ list-commands
|
\ list-commands
|
||||||
\ lscm
|
|
||||||
\ list-keys
|
\ list-keys
|
||||||
\ lsk
|
|
||||||
\ list-panes
|
\ list-panes
|
||||||
\ lsp
|
|
||||||
\ list-sessions
|
\ list-sessions
|
||||||
\ ls
|
|
||||||
\ list-windows
|
\ list-windows
|
||||||
\ lsw
|
|
||||||
\ load-buffer
|
\ load-buffer
|
||||||
\ loadb
|
\ loadb
|
||||||
|
\ lock
|
||||||
\ lock-client
|
\ lock-client
|
||||||
\ lockc
|
\ lock-server
|
||||||
\ lock[-server]
|
|
||||||
\ lock-session
|
\ lock-session
|
||||||
|
\ lockc
|
||||||
\ locks
|
\ locks
|
||||||
|
\ ls
|
||||||
|
\ lsb
|
||||||
|
\ lsc
|
||||||
|
\ lscm
|
||||||
|
\ lsk
|
||||||
|
\ lsp
|
||||||
|
\ lsw
|
||||||
\ move-pane
|
\ move-pane
|
||||||
\ movep
|
|
||||||
\ move-window
|
\ move-window
|
||||||
|
\ movep
|
||||||
\ movew
|
\ movew
|
||||||
\ new[-session]
|
\ new
|
||||||
|
\ new-session
|
||||||
|
\ new-window
|
||||||
|
\ neww
|
||||||
|
\ next
|
||||||
\ next-layout
|
\ next-layout
|
||||||
|
\ next-window
|
||||||
\ nextl
|
\ nextl
|
||||||
\ next[-window]
|
|
||||||
\ paste-buffer
|
\ paste-buffer
|
||||||
\ pasteb
|
\ pasteb
|
||||||
|
\ path
|
||||||
\ pipe-pane
|
\ pipe-pane
|
||||||
\ pipep
|
\ pipep
|
||||||
|
\ prev
|
||||||
\ previous-layout
|
\ previous-layout
|
||||||
|
\ previous-window
|
||||||
\ prevl
|
\ prevl
|
||||||
\ prev[ious-window]
|
\ refresh
|
||||||
\ refresh[-client]
|
\ refresh-client
|
||||||
\ rename[-session]
|
\ rename
|
||||||
|
\ rename-session
|
||||||
\ rename-window
|
\ rename-window
|
||||||
\ renamew
|
\ renamew
|
||||||
\ resize-pane
|
\ resize-pane
|
||||||
\ resizep
|
\ resizep
|
||||||
\ respawn-pane
|
\ respawn-pane
|
||||||
\ respawnp
|
|
||||||
\ respawn-window
|
\ respawn-window
|
||||||
|
\ respawnp
|
||||||
\ respawnw
|
\ respawnw
|
||||||
\ rotate-window
|
\ rotate-window
|
||||||
\ rotatew
|
\ rotatew
|
||||||
\ run[-shell]
|
\ run
|
||||||
|
\ run-shell
|
||||||
\ save-buffer
|
\ save-buffer
|
||||||
\ saveb
|
\ saveb
|
||||||
\ select-layout
|
\ select-layout
|
||||||
\ selectl
|
|
||||||
\ select-pane
|
\ select-pane
|
||||||
\ selectp
|
|
||||||
\ select-window
|
\ select-window
|
||||||
|
\ selectl
|
||||||
|
\ selectp
|
||||||
\ selectw
|
\ selectw
|
||||||
\ send[-keys]
|
\ send
|
||||||
|
\ send-keys
|
||||||
\ send-prefix
|
\ send-prefix
|
||||||
\ server-info
|
\ server-info
|
||||||
\ info
|
\ set
|
||||||
\ set-buffer
|
\ set-buffer
|
||||||
\ setb
|
|
||||||
\ set-environment
|
\ set-environment
|
||||||
\ setenv
|
\ set-hook
|
||||||
\ set[-option]
|
\ set-option
|
||||||
\ set-window-option
|
\ set-window-option
|
||||||
|
\ setb
|
||||||
|
\ setenv
|
||||||
\ setw
|
\ setw
|
||||||
|
\ show
|
||||||
\ show-buffer
|
\ show-buffer
|
||||||
\ showb
|
|
||||||
\ show-environment
|
\ show-environment
|
||||||
\ showenv
|
\ show-hooks
|
||||||
\ show-messages
|
\ show-messages
|
||||||
\ showmsgs
|
\ show-options
|
||||||
\ show[-options]
|
|
||||||
\ show-window-options
|
\ show-window-options
|
||||||
|
\ showb
|
||||||
|
\ showenv
|
||||||
|
\ showmsgs
|
||||||
\ showw
|
\ showw
|
||||||
\ source[-file]
|
\ source
|
||||||
|
\ source-file
|
||||||
\ split-window
|
\ split-window
|
||||||
\ splitw
|
\ splitw
|
||||||
\ start[-server]
|
\ start
|
||||||
|
\ start-server
|
||||||
\ suspend-client
|
\ suspend-client
|
||||||
\ suspendc
|
\ suspendc
|
||||||
\ swap-pane
|
\ swap-pane
|
||||||
\ swapp
|
|
||||||
\ swap-window
|
\ swap-window
|
||||||
|
\ swapp
|
||||||
\ swapw
|
\ swapw
|
||||||
\ switch-client
|
\ switch-client
|
||||||
\ switchc
|
\ switchc
|
||||||
\ unbind[-key]
|
\ unbind
|
||||||
|
\ unbind-key
|
||||||
\ unlink-window
|
\ unlink-window
|
||||||
\ unlinkw
|
\ unlinkw
|
||||||
\ wait[-for]
|
\ wait
|
||||||
|
\ wait-for
|
||||||
|
|
||||||
syn keyword tmuxOptsSet
|
syn keyword tmuxOptsSet
|
||||||
\ assume-paste-time
|
\ assume-paste-time
|
||||||
@@ -186,19 +212,14 @@ syn keyword tmuxOptsSet
|
|||||||
\ escape-time
|
\ escape-time
|
||||||
\ exit-unattached
|
\ exit-unattached
|
||||||
\ focus-events
|
\ focus-events
|
||||||
|
\ history-file
|
||||||
\ history-limit
|
\ history-limit
|
||||||
\ lock-after-time
|
\ lock-after-time
|
||||||
\ lock-command
|
\ lock-command
|
||||||
\ lock-server
|
|
||||||
\ message-command-style
|
\ message-command-style
|
||||||
\ message-limit
|
\ message-limit
|
||||||
\ message-style
|
\ message-style
|
||||||
\ mouse-resize-pane
|
\ mouse
|
||||||
\ mouse-select-pane
|
|
||||||
\ mouse-select-window
|
|
||||||
\ mouse-utf8
|
|
||||||
\ pane-active-border-style
|
|
||||||
\ pane-border-style
|
|
||||||
\ prefix
|
\ prefix
|
||||||
\ prefix2
|
\ prefix2
|
||||||
\ quiet
|
\ quiet
|
||||||
@@ -218,8 +239,8 @@ syn keyword tmuxOptsSet
|
|||||||
\ status-position
|
\ status-position
|
||||||
\ status-right
|
\ status-right
|
||||||
\ status-right-length
|
\ status-right-length
|
||||||
\ status-utf8
|
\ status-right-style
|
||||||
\ staus-right-style
|
\ status-style
|
||||||
\ terminal-overrides
|
\ terminal-overrides
|
||||||
\ update-environment
|
\ update-environment
|
||||||
\ visual-activity
|
\ visual-activity
|
||||||
@@ -232,8 +253,7 @@ syn keyword tmuxOptsSetw
|
|||||||
\ allow-rename
|
\ allow-rename
|
||||||
\ alternate-screen
|
\ alternate-screen
|
||||||
\ automatic-rename
|
\ automatic-rename
|
||||||
\ c0-change-interval
|
\ automatic-rename-format
|
||||||
\ c0-change-trigger
|
|
||||||
\ clock-mode-colour
|
\ clock-mode-colour
|
||||||
\ clock-mode-style
|
\ clock-mode-style
|
||||||
\ force-height
|
\ force-height
|
||||||
@@ -241,16 +261,17 @@ syn keyword tmuxOptsSetw
|
|||||||
\ main-pane-height
|
\ main-pane-height
|
||||||
\ main-pane-width
|
\ main-pane-width
|
||||||
\ mode-keys
|
\ mode-keys
|
||||||
\ mode-mouse
|
|
||||||
\ mode-style
|
\ mode-style
|
||||||
\ monitor-activity
|
\ monitor-activity
|
||||||
\ monitor-silence
|
\ monitor-silence
|
||||||
\ other-pane-height
|
\ other-pane-height
|
||||||
\ other-pane-width
|
\ other-pane-width
|
||||||
|
\ pane-active-border-style
|
||||||
\ pane-base-index
|
\ pane-base-index
|
||||||
|
\ pane-border-style
|
||||||
\ remain-on-exit
|
\ remain-on-exit
|
||||||
\ synchronize-panes
|
\ synchronize-panes
|
||||||
\ utf8
|
\ window-active-style
|
||||||
\ window-status-activity-style
|
\ window-status-activity-style
|
||||||
\ window-status-bell-style
|
\ window-status-bell-style
|
||||||
\ window-status-current-format
|
\ window-status-current-format
|
||||||
@@ -259,6 +280,7 @@ syn keyword tmuxOptsSetw
|
|||||||
\ window-status-last-style
|
\ window-status-last-style
|
||||||
\ window-status-separator
|
\ window-status-separator
|
||||||
\ window-status-style
|
\ window-status-style
|
||||||
|
\ window-style
|
||||||
\ wrap-search
|
\ wrap-search
|
||||||
\ xterm-keys
|
\ xterm-keys
|
||||||
|
|
||||||
@@ -270,7 +292,9 @@ syn match tmuxOptions /\s-\a\+/ display
|
|||||||
syn match tmuxVariable /\w\+=/ display
|
syn match tmuxVariable /\w\+=/ display
|
||||||
syn match tmuxVariableExpansion /\${\=\w\+}\=/ display
|
syn match tmuxVariableExpansion /\${\=\w\+}\=/ display
|
||||||
|
|
||||||
syn region tmuxComment start=/#/ end=/$/ contains=tmuxTodo display oneline
|
" Comments can span multiple lines, when the newline is escaped
|
||||||
|
" (with a single) backslash at the end.
|
||||||
|
syn region tmuxComment start=/#/ skip=/\\\@<!\\$/ end=/$/ contains=tmuxTodo
|
||||||
syn region tmuxString start=/"/ end=/"/ display oneline
|
syn region tmuxString start=/"/ end=/"/ display oneline
|
||||||
syn region tmuxString start=/'/ end=/'/ display oneline
|
syn region tmuxString start=/'/ end=/'/ display oneline
|
||||||
|
|
||||||
|
|||||||
@@ -117,7 +117,7 @@ syntax keyword typescriptBranch break continue yield await
|
|||||||
syntax keyword typescriptLabel case default async
|
syntax keyword typescriptLabel case default async
|
||||||
syntax keyword typescriptStatement return with
|
syntax keyword typescriptStatement return with
|
||||||
|
|
||||||
syntax keyword typescriptGlobalObjects Array Boolean Date Function Infinity Math Number NaN Object Packages RegExp String netscape
|
syntax keyword typescriptGlobalObjects Array Boolean Date Function Infinity Math Number NaN Object Packages RegExp String Symbol netscape
|
||||||
|
|
||||||
syntax keyword typescriptExceptions try catch throw finally Error EvalError RangeError ReferenceError SyntaxError TypeError URIError
|
syntax keyword typescriptExceptions try catch throw finally Error EvalError RangeError ReferenceError SyntaxError TypeError URIError
|
||||||
|
|
||||||
@@ -131,7 +131,7 @@ syntax keyword typescriptReserved constructor declare as interface module abstra
|
|||||||
syn match typescriptParameters "([a-zA-Z0-9_?.$][\w?.$]*)\s*:\s*([a-zA-Z0-9_?.$][\w?.$]*)" contained skipwhite
|
syn match typescriptParameters "([a-zA-Z0-9_?.$][\w?.$]*)\s*:\s*([a-zA-Z0-9_?.$][\w?.$]*)" contained skipwhite
|
||||||
"}}}
|
"}}}
|
||||||
" DOM2 Objects"{{{
|
" DOM2 Objects"{{{
|
||||||
syntax keyword typescriptType DOMImplementation DocumentFragment Node NodeList NamedNodeMap CharacterData Attr Element Text Comment CDATASection DocumentType Notation Entity EntityReference ProcessingInstruction void any string boolean number
|
syntax keyword typescriptType DOMImplementation DocumentFragment Node NodeList NamedNodeMap CharacterData Attr Element Text Comment CDATASection DocumentType Notation Entity EntityReference ProcessingInstruction void any string boolean number symbol
|
||||||
syntax keyword typescriptExceptions DOMException
|
syntax keyword typescriptExceptions DOMException
|
||||||
"}}}
|
"}}}
|
||||||
" DOM2 CONSTANT"{{{
|
" DOM2 CONSTANT"{{{
|
||||||
|
|||||||
@@ -12,4 +12,6 @@ syn region goTitle start="\%1l" end=":"
|
|||||||
hi def link goInterface Type
|
hi def link goInterface Type
|
||||||
hi def link goTitle Label
|
hi def link goTitle Label
|
||||||
|
|
||||||
|
" vim: sw=2 ts=2 et
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|||||||
Reference in New Issue
Block a user