Compare commits

..

37 Commits

Author SHA1 Message Date
Adam Stankiewicz
d6866fcced Add systemd support, #25 2014-06-08 13:57:13 +02:00
Adam Stankiewicz
7208e89a13 Add C syntax extensions, #25 2014-06-08 13:52:44 +02:00
Adam Stankiewicz
56a815be94 Add haxe syntax support, closes #29 2014-06-08 13:22:29 +02:00
Adam Stankiewicz
45273d44d4 Major update 2014-06-08 13:18:33 +02:00
Adam Stankiewicz
e961fa8037 Update README 2014-05-14 12:06:27 +02:00
Adam Stankiewicz
1b61c48d46 fix: Typo in readme 2014-04-15 02:16:31 +02:00
Adam Stankiewicz
8f483aee0f Update README 2014-04-15 01:33:45 +02:00
Adam Stankiewicz
b36260d015 Change puppet vendor, closes #24 2014-04-15 01:26:34 +02:00
Adam Stankiewicz
6c198a3ca9 Switch back to css-color, fixes #23 2014-04-15 01:23:13 +02:00
Adam Stankiewicz
a4c9223257 Update python package, closes #21 2014-04-15 01:18:16 +02:00
Adam Stankiewicz
d681cb59d3 Add toml script, closes #20 2014-04-15 01:16:56 +02:00
Adam Stankiewicz
0b50acdddf Add Ember Script 2014-04-15 01:14:47 +02:00
Adam Stankiewicz
daa6fc6958 Add jasmine support 2014-04-15 01:12:18 +02:00
Adam Stankiewicz
610f4c5701 Update 2014-04-15 01:05:44 +02:00
Adam Stankiewicz
f3833f5a39 Use fork for YARD syntax 2014-03-18 01:27:17 +01:00
Adam Stankiewicz
fe26a3a7e6 Add Yard support 2014-03-18 01:04:03 +01:00
Adam Stankiewicz
548f7d672a Update javascript 2014-03-18 01:02:54 +01:00
Adam Stankiewicz
10b28c4175 Add opencl support 2014-03-16 14:52:12 +01:00
Adam Stankiewicz
95bc6710a4 Update elixir, perl and rust 2014-03-16 14:48:30 +01:00
Adam Stankiewicz
94f72a68c3 Update 2014-03-11 00:36:09 +01:00
Adam Stankiewicz
9b3b092d15 Update 2014-03-01 00:15:51 +01:00
Adam Stankiewicz
959a2ffa3d Update README 2014-02-04 19:17:27 +01:00
Adam Stankiewicz
d51b8fd17e Change handlebars syntax vendor, fixes #13 2014-02-04 19:15:58 +01:00
Adam Stankiewicz
fa57320919 Update 2014-02-04 19:13:11 +01:00
Adam Stankiewicz
9a2b4f5cd8 Update 2014-01-24 18:06:22 +01:00
Adam Stankiewicz
f211f02d1e Update 2014-01-09 11:59:09 +01:00
Adam Stankiewicz
e45b23b6ee Allow for reusing vim server locally (testing) 2013-12-27 16:44:34 +01:00
Adam Stankiewicz
a0c5f3ee55 Try to not reuse server for Travis 2013-12-27 16:40:01 +01:00
Adam Stankiewicz
6b8c72637f Set timeout on test cases 2013-12-27 00:06:18 +01:00
Adam Stankiewicz
d330fdc01b Update scala 2013-12-27 00:01:27 +01:00
Adam Stankiewicz
c225bf8826 fix: For some reason stylus test hangs on travis 2013-12-27 00:01:14 +01:00
Adam Stankiewicz
20125ac3ac fix: For some reason stylus test hangs on travis 2013-12-26 23:42:00 +01:00
Adam Stankiewicz
9f19823a30 Enable verbose testing 2013-12-26 23:13:05 +01:00
Adam Stankiewicz
56d5fc498b Test all possible file extensions, fixes #7 2013-12-26 23:03:02 +01:00
Adam Stankiewicz
ab679f37dd Replace css-color with vim-coloresque, closes #11 2013-12-26 21:09:58 +01:00
Adam Stankiewicz
ca95a47a93 Change strategy to appending instead of copying 2013-12-26 04:05:26 +01:00
Adam Stankiewicz
a26bebbeb9 Update 2013-12-26 03:34:22 +01:00
94 changed files with 4527 additions and 1820 deletions

View File

@@ -5,4 +5,4 @@ before_install: sudo apt-get install vim-gtk
before_script: before_script:
- "export DISPLAY=:99.0" - "export DISPLAY=:99.0"
- "sh -e /etc/init.d/xvfb start" - "sh -e /etc/init.d/xvfb start"
script: bundle exec rspec script: bundle exec rspec --format=documentation

View File

@@ -5,14 +5,14 @@
A collection of language packs for Vim. A collection of language packs for Vim.
One to rule them all, one to find them, one to bring them all and in the darkness bind them. > One to rule them all, one to find them, one to bring them all and in the darkness bind them.
- It **won't affect your startup time**, as scripts are loaded only on demand\*. - It **won't affect your startup time**, as scripts are loaded only on demand\*.
- It **installs 40x faster** (unparallelized), as language packs are not submoduled, but merged. - It **installs 50+ times faster** than 50+ packages it consist of.
- It clones even faster as all unnecessary files are ignored (like enormous documentation from php support). - Solid syntax and indentation support. Only the best language packs.
- Best syntax and indentation support. If someone releases better language pack, it will be replaced here. - All unnecessary files are ignored (like enormous documentation from php support).
- No support for esoteric languages (vim-polyglot supports modern ones like `slim` though). - No support for esoteric languages, only most popular ones (modern too, like `slim`).
- Each build is tested by automated Travis CI setup using vimrunner gem. Spee `spec` directory. - Each build is tested by automated vimrunner script on CI. See `spec` directory.
\*To be completely honest, concatenated `ftdetect` script takes around `3ms` to load. \*To be completely honest, concatenated `ftdetect` script takes around `3ms` to load.
@@ -25,24 +25,27 @@ Optionally download one of the [releases](https://github.com/sheerun/vim-polyglo
## Language packs ## Language packs
- [arduino](https://github.com/sudar/vim-arduino-syntax) (syntax, ftdetect) - [arduino](https://github.com/sudar/vim-arduino-syntax) (syntax, indent, ftdetect)
- [c++11](https://github.com/octol/vim-cpp-enhanced-highlight) (syntax) - [c++11](https://github.com/octol/vim-cpp-enhanced-highlight) (syntax)
- [c/c++](https://github.com/vim-jp/cpp-vim) (syntax) - [c/c++](https://github.com/vim-jp/cpp-vim) (syntax)
- [c-extensions](https://github.com/kergoth/aftersyntaxc.vim) (syntax)
- [clojure](https://github.com/guns/vim-clojure-static) (syntax, indent, autoload, ftplugin, ftdetect) - [clojure](https://github.com/guns/vim-clojure-static) (syntax, indent, autoload, ftplugin, ftdetect)
- [coffee-script](https://github.com/kchmck/vim-coffee-script) (syntax, indent, compiler, autoload, ftplugin, ftdetect) - [coffee-script](https://github.com/kchmck/vim-coffee-script) (syntax, indent, compiler, autoload, ftplugin, ftdetect)
- [css-color](https://github.com/ap/vim-css-color) (syntax)
- [csv](https://github.com/chrisbra/csv.vim) (syntax, ftplugin, ftdetect) - [csv](https://github.com/chrisbra/csv.vim) (syntax, ftplugin, ftdetect)
- [cucumber](https://github.com/tpope/vim-cucumber) (syntax, indent, compiler, ftplugin, ftdetect) - [cucumber](https://github.com/tpope/vim-cucumber) (syntax, indent, compiler, ftplugin, ftdetect)
- [dockerfile](https://github.com/honza/dockerfile.vim) (syntax, ftdetect) - [dockerfile](https://github.com/honza/dockerfile.vim) (syntax, ftdetect)
- [elixir](https://github.com/elixir-lang/vim-elixir) (syntax, indent, compiler, ftplugin, ftdetect) - [elixir](https://github.com/elixir-lang/vim-elixir) (syntax, indent, compiler, ftplugin, ftdetect)
- [emberscript](https://github.com/heartsentwined/vim-ember-script) (syntax, indent, ftplugin, ftdetect)
- [erlang](https://github.com/oscarh/vimerl) (syntax, indent, compiler, autoload, ftplugin) - [erlang](https://github.com/oscarh/vimerl) (syntax, indent, compiler, autoload, ftplugin)
- [git](https://github.com/tpope/vim-git) (syntax, indent, ftplugin, ftdetect) - [git](https://github.com/tpope/vim-git) (syntax, indent, ftplugin, ftdetect)
- [go](https://github.com/jnwhiteh/vim-golang) (syntax, indent, autoload, ftplugin, ftdetect) - [go](https://github.com/jnwhiteh/vim-golang) (syntax, indent, compiler, autoload, ftplugin, ftdetect)
- [haml](https://github.com/tpope/vim-haml) (syntax, indent, compiler, ftplugin, ftdetect) - [haml](https://github.com/tpope/vim-haml) (syntax, indent, compiler, ftplugin, ftdetect)
- [handlebars](https://github.com/nono/vim-handlebars) (syntax, ftplugin, ftdetect) - [handlebars](https://github.com/mustache/vim-mustache-handlebars) (syntax, ftplugin, ftdetect)
- [haskell](https://github.com/travitch/hasksyn) (syntax, indent, ftplugin) - [haskell](https://github.com/travitch/hasksyn) (syntax, indent, ftplugin)
- [html5](https://github.com/othree/html5.vim) (syntax, indent, autoload) - [haxe](https://github.com/yaymukund/vim-haxe) (syntax, ftdetect)
- [html5](https://github.com/othree/html5.vim) (syntax, indent, autoload, ftplugin)
- [jade](https://github.com/digitaltoad/vim-jade) (syntax, indent, ftplugin, ftdetect) - [jade](https://github.com/digitaltoad/vim-jade) (syntax, indent, ftplugin, ftdetect)
- [jasmine](https://github.com/glanotte/vim-jasmine) (syntax, ftdetect)
- [javascript](https://github.com/pangloss/vim-javascript) (syntax, indent, ftdetect) - [javascript](https://github.com/pangloss/vim-javascript) (syntax, indent, ftdetect)
- [json](https://github.com/leshill/vim-json) (syntax, ftdetect) - [json](https://github.com/leshill/vim-json) (syntax, ftdetect)
- [jst](https://github.com/briancollins/vim-jst) (syntax, indent, ftdetect) - [jst](https://github.com/briancollins/vim-jst) (syntax, indent, ftdetect)
@@ -52,11 +55,12 @@ Optionally download one of the [releases](https://github.com/sheerun/vim-polyglo
- [nginx](https://github.com/mutewinter/nginx.vim) (syntax, ftdetect) - [nginx](https://github.com/mutewinter/nginx.vim) (syntax, ftdetect)
- [ocaml](https://github.com/jrk/vim-ocaml) (syntax, indent, ftplugin) - [ocaml](https://github.com/jrk/vim-ocaml) (syntax, indent, ftplugin)
- [octave](https://github.com/vim-scripts/octave.vim--) (syntax) - [octave](https://github.com/vim-scripts/octave.vim--) (syntax)
- [perl](https://github.com/vim-perl/vim-perl) (syntax, indent, ftplugin) - [opencl](https://github.com/petRUShka/vim-opencl) (syntax, indent, ftplugin, ftdetect)
- [perl](https://github.com/vim-perl/vim-perl) (syntax, indent, ftplugin, ftdetect)
- [php](https://github.com/StanAngeloff/php.vim) (syntax) - [php](https://github.com/StanAngeloff/php.vim) (syntax)
- [puppet](https://github.com/ajf/puppet-vim) (syntax, indent, ftplugin, ftdetect) - [puppet](https://github.com/rodjek/vim-puppet) (syntax, indent, ftplugin, ftdetect)
- [protobuf](https://github.com/uarun/vim-protobuf) (syntax, ftdetect) - [protobuf](https://github.com/uarun/vim-protobuf) (syntax, ftdetect)
- [python](https://github.com/vim-scripts/python.vim--Vasiliev) (syntax) - [python](https://github.com/mitsuhiko/vim-python-combined) (syntax, indent)
- [r-lang](https://github.com/vim-scripts/R.vim) (syntax, ftplugin) - [r-lang](https://github.com/vim-scripts/R.vim) (syntax, ftplugin)
- [rspec](https://github.com/sheerun/rspec.vim) (syntax, ftdetect) - [rspec](https://github.com/sheerun/rspec.vim) (syntax, ftdetect)
- [ruby](https://github.com/vim-ruby/vim-ruby) (syntax, indent, compiler, autoload, ftplugin, ftdetect) - [ruby](https://github.com/vim-ruby/vim-ruby) (syntax, indent, compiler, autoload, ftplugin, ftdetect)
@@ -65,13 +69,17 @@ Optionally download one of the [releases](https://github.com/sheerun/vim-polyglo
- [scala](https://github.com/derekwyatt/vim-scala) (syntax, indent, ftplugin, ftdetect) - [scala](https://github.com/derekwyatt/vim-scala) (syntax, indent, ftplugin, ftdetect)
- [slim](https://github.com/slim-template/vim-slim) (syntax, indent, ftdetect) - [slim](https://github.com/slim-template/vim-slim) (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)
- [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)
- [tmux](https://github.com/acustodioo/vim-tmux) (syntax, ftdetect) - [tmux](https://github.com/acustodioo/vim-tmux) (syntax, ftdetect)
- [tomdoc](https://github.com/duwanis/tomdoc.vim) (syntax) - [tomdoc](https://github.com/duwanis/tomdoc.vim) (syntax)
- [typescript](https://github.com/leafgarland/typescript-vim) (syntax, compiler, ftplugin, ftdetect) - [typescript](https://github.com/leafgarland/typescript-vim) (syntax, compiler, ftplugin, ftdetect)
- [vbnet](https://github.com/vim-scripts/vbnet.vim) (syntax) - [vbnet](https://github.com/vim-scripts/vbnet.vim) (syntax)
- [toml](https://github.com/cespare/vim-toml) (syntax, ftdetect)
- [twig](https://github.com/beyondwords/vim-twig) (syntax, ftplugin, ftdetect) - [twig](https://github.com/beyondwords/vim-twig) (syntax, ftplugin, ftdetect)
- [xls](https://github.com/vim-scripts/XSLT-syntax) (syntax) - [xls](https://github.com/vim-scripts/XSLT-syntax) (syntax)
- [yard](https://github.com/sheerun/vim-yardoc) (syntax)
- [css-color](https://github.com/ap/vim-css-color) (autoload, syntax)
## Contributing ## Contributing

11
after/ftplugin/puppet.vim Normal file
View File

@@ -0,0 +1,11 @@
inoremap <buffer> <silent> > ><Esc>:call <SID>puppetalign()<CR>A
function! s:puppetalign()
let p = '^\s*\w+\s*[=+]>.*$'
let lineContainsHashrocket = getline('.') =~# '^\s*\w+\s*[=+]>'
let hashrocketOnPrevLine = getline(line('.') - 1) =~# p
let hashrocketOnNextLine = getline(line('.') + 1) =~# p
if exists(':Tabularize') " && lineContainsHashrocket && (hashrocketOnPrevLine || hashrocketOnNextLine)
Tabularize /=>/l1
normal! 0
endif
endfunction

279
after/syntax/c.vim Normal file
View File

@@ -0,0 +1,279 @@
" Vim syntax file
" Language: C Additions
" Maintainer: Mikhail Wolfson <mywolfson@gmail.com>
" URL: http://web.mit.edu/wolfsonm
" Last Change: 2010 Dec. 3
" Version: 0.4
"
" Changelog:
" 0.4 - updates and fixes to cDelimiter to fix break with foldmethod=syntax,
" entirely suggested and solved by Ivan Freitas
" <ivansichfreitas@gmail.com>
" 0.3 - updates and fixes to cUserFunctionPointer, thanks to
" Alexei <lxmzhv@gmail.com>
" 0.2 - change [] to operator
" 0.1 - initial upload, modification from vimscript#1201, Extended c.vim
" Common ANSI-standard functions
syn keyword cAnsiFunction MULU_ DIVU_ MODU_ MUL_ DIV_ MOD_
syn keyword cAnsiFunction main typeof
syn keyword cAnsiFunction open close read write lseek dup dup2
syn keyword cAnsiFunction fcntl ioctl
syn keyword cAnsiFunction wctrans towctrans towupper
syn keyword cAnsiFunction towlower wctype iswctype
syn keyword cAnsiFunction iswxdigit iswupper iswspace
syn keyword cAnsiFunction iswpunct iswprint iswlower
syn keyword cAnsiFunction iswgraph iswdigit iswcntrl
syn keyword cAnsiFunction iswalpha iswalnum wcsrtombs
syn keyword cAnsiFunction mbsrtowcs wcrtomb mbrtowc
syn keyword cAnsiFunction mbrlen mbsinit wctob
syn keyword cAnsiFunction btowc wcsfxtime wcsftime
syn keyword cAnsiFunction wmemset wmemmove wmemcpy
syn keyword cAnsiFunction wmemcmp wmemchr wcstok
syn keyword cAnsiFunction wcsstr wcsspn wcsrchr
syn keyword cAnsiFunction wcspbrk wcslen wcscspn
syn keyword cAnsiFunction wcschr wcsxfrm wcsncmp
syn keyword cAnsiFunction wcscoll wcscmp wcsncat
syn keyword cAnsiFunction wcscat wcsncpy wcscpy
syn keyword cAnsiFunction wcstoull wcstoul wcstoll
syn keyword cAnsiFunction wcstol wcstold wcstof
syn keyword cAnsiFunction wcstod ungetwc putwchar
syn keyword cAnsiFunction putwc getwchar getwc
syn keyword cAnsiFunction fwide fputws fputwc
syn keyword cAnsiFunction fgetws fgetwc wscanf
syn keyword cAnsiFunction wprintf vwscanf vwprintf
syn keyword cAnsiFunction vswscanf vswprintf vfwscanf
syn keyword cAnsiFunction vfwprintf swscanf swprintf
syn keyword cAnsiFunction fwscanf fwprintf zonetime
syn keyword cAnsiFunction strfxtime strftime localtime
syn keyword cAnsiFunction gmtime ctime asctime
syn keyword cAnsiFunction time mkxtime mktime
syn keyword cAnsiFunction difftime clock strlen
syn keyword cAnsiFunction strerror memset strtok
syn keyword cAnsiFunction strstr strspn strrchr
syn keyword cAnsiFunction strpbrk strcspn strchr
syn keyword cAnsiFunction memchr strxfrm strncmp
syn keyword cAnsiFunction strcoll strcmp memcmp
syn keyword cAnsiFunction strncat strcat strncpy
syn keyword cAnsiFunction strcpy memmove memcpy
syn keyword cAnsiFunction wcstombs mbstowcs wctomb
syn keyword cAnsiFunction mbtowc mblen lldiv
syn keyword cAnsiFunction ldiv div llabs
syn keyword cAnsiFunction labs abs qsort
syn keyword cAnsiFunction bsearch system getenv
syn keyword cAnsiFunction exit atexit abort
syn keyword cAnsiFunction realloc malloc free
syn keyword cAnsiFunction calloc srand rand
syn keyword cAnsiFunction strtoull strtoul strtoll
syn keyword cAnsiFunction strtol strtold strtof
syn keyword cAnsiFunction strtod atoll atol
syn keyword cAnsiFunction atoi atof perror
syn keyword cAnsiFunction ferror feof clearerr
syn keyword cAnsiFunction rewind ftell fsetpos
syn keyword cAnsiFunction fseek fgetpos fwrite
syn keyword cAnsiFunction fread ungetc puts
syn keyword cAnsiFunction putchar putc gets
syn keyword cAnsiFunction getchar getc fputs
syn keyword cAnsiFunction fputc fgets fgetc
syn keyword cAnsiFunction vsscanf vsprintf vsnprintf
syn keyword cAnsiFunction vscanf vprintf vfscanf
syn keyword cAnsiFunction vfprintf sscanf sprintf
syn keyword cAnsiFunction snprintf scanf printf
syn keyword cAnsiFunction fscanf fprintf setvbuf
syn keyword cAnsiFunction setbuf freopen fopen
syn keyword cAnsiFunction fflush fclose tmpnam
syn keyword cAnsiFunction tmpfile rename remove
syn keyword cAnsiFunction offsetof va_start va_end
syn keyword cAnsiFunction va_copy va_arg raise signal
syn keyword cAnsiFunction longjmp setjmp isunordered
syn keyword cAnsiFunction islessgreater islessequal isless
syn keyword cAnsiFunction isgreaterequal isgreater fmal
syn keyword cAnsiFunction fmaf fma fminl
syn keyword cAnsiFunction fminf fmin fmaxl
syn keyword cAnsiFunction fmaxf fmax fdiml
syn keyword cAnsiFunction fdimf fdim nextafterxl
syn keyword cAnsiFunction nextafterxf nextafterx nextafterl
syn keyword cAnsiFunction nextafterf nextafter nanl
syn keyword cAnsiFunction nanf nan copysignl
syn keyword cAnsiFunction copysignf copysign remquol
syn keyword cAnsiFunction remquof remquo remainderl
syn keyword cAnsiFunction remainderf remainder fmodl
syn keyword cAnsiFunction fmodf fmod truncl
syn keyword cAnsiFunction truncf trunc llroundl
syn keyword cAnsiFunction llroundf llround lroundl
syn keyword cAnsiFunction lroundf lround roundl
syn keyword cAnsiFunction roundf round llrintl
syn keyword cAnsiFunction llrintf llrint lrintl
syn keyword cAnsiFunction lrintf lrint rintl
syn keyword cAnsiFunction rintf rint nearbyintl
syn keyword cAnsiFunction nearbyintf nearbyint floorl
syn keyword cAnsiFunction floorf floor ceill
syn keyword cAnsiFunction ceilf ceil tgammal
syn keyword cAnsiFunction tgammaf tgamma lgammal
syn keyword cAnsiFunction lgammaf lgamma erfcl
syn keyword cAnsiFunction erfcf erfc erfl
syn keyword cAnsiFunction erff erf sqrtl
syn keyword cAnsiFunction sqrtf sqrt powl
syn keyword cAnsiFunction powf pow hypotl
syn keyword cAnsiFunction hypotf hypot fabsl
syn keyword cAnsiFunction fabsf fabs cbrtl
syn keyword cAnsiFunction cbrtf cbrt scalblnl
syn keyword cAnsiFunction scalblnf scalbln scalbnl
syn keyword cAnsiFunction scalbnf scalbn modfl
syn keyword cAnsiFunction modff modf logbl
syn keyword cAnsiFunction logbf logb log2l
syn keyword cAnsiFunction log2f log2 log1pl
syn keyword cAnsiFunction log1pf log1p log10l
syn keyword cAnsiFunction log10f log10 logl
syn keyword cAnsiFunction logf log ldexpl
syn keyword cAnsiFunction ldexpf ldexp ilogbl
syn keyword cAnsiFunction ilogbf ilogb frexpl
syn keyword cAnsiFunction frexpf frexp expm1l
syn keyword cAnsiFunction expm1f expm1 exp2l
syn keyword cAnsiFunction exp2f exp2 expl
syn keyword cAnsiFunction expf exp tanhl
syn keyword cAnsiFunction tanhf tanh sinhl
syn keyword cAnsiFunction sinhf sinh coshl
syn keyword cAnsiFunction coshf cosh atanhl
syn keyword cAnsiFunction atanhf atanh asinhl
syn keyword cAnsiFunction asinhf asinh acoshl
syn keyword cAnsiFunction acoshf acosh tanl
syn keyword cAnsiFunction tanf tan sinl
syn keyword cAnsiFunction sinf sin cosl
syn keyword cAnsiFunction cosf cos atan2l
syn keyword cAnsiFunction atan2f atan2 atanl
syn keyword cAnsiFunction atanf atan asinl
syn keyword cAnsiFunction asinf asin acosl
syn keyword cAnsiFunction acosf acos signbit
syn keyword cAnsiFunction isnormal isnan isinf
syn keyword cAnsiFunction isfinite fpclassify localeconv
syn keyword cAnsiFunction setlocale wcstoumax wcstoimax
syn keyword cAnsiFunction strtoumax strtoimax feupdateenv
syn keyword cAnsiFunction fesetenv feholdexcept fegetenv
syn keyword cAnsiFunction fesetround fegetround fetestexcept
syn keyword cAnsiFunction fesetexceptflag feraiseexcept fegetexceptflag
syn keyword cAnsiFunction feclearexcept toupper tolower
syn keyword cAnsiFunction isxdigit isupper isspace
syn keyword cAnsiFunction ispunct isprint islower
syn keyword cAnsiFunction isgraph isdigit iscntrl
syn keyword cAnsiFunction isalpha isalnum creall
syn keyword cAnsiFunction crealf creal cprojl
syn keyword cAnsiFunction cprojf cproj conjl
syn keyword cAnsiFunction conjf conj cimagl
syn keyword cAnsiFunction cimagf cimag cargl
syn keyword cAnsiFunction cargf carg csqrtl
syn keyword cAnsiFunction csqrtf csqrt cpowl
syn keyword cAnsiFunction cpowf cpow cabsl
syn keyword cAnsiFunction cabsf cabs clogl
syn keyword cAnsiFunction clogf clog cexpl
syn keyword cAnsiFunction cexpf cexp ctanhl
syn keyword cAnsiFunction ctanhf ctanh csinhl
syn keyword cAnsiFunction csinhf csinh ccoshl
syn keyword cAnsiFunction ccoshf ccosh catanhl
syn keyword cAnsiFunction catanhf catanh casinhl
syn keyword cAnsiFunction casinhf casinh cacoshl
syn keyword cAnsiFunction cacoshf cacosh ctanl
syn keyword cAnsiFunction ctanf ctan csinl
syn keyword cAnsiFunction csinf csin ccosl
syn keyword cAnsiFunction ccosf ccos catanl
syn keyword cAnsiFunction catanf catan casinl
syn keyword cAnsiFunction casinf casin cacosl
syn keyword cAnsiFunction cacosf cacos assert
syn keyword cAnsiFunction UINTMAX_C INTMAX_C UINT64_C
syn keyword cAnsiFunction UINT32_C UINT16_C UINT8_C
syn keyword cAnsiFunction INT64_C INT32_C INT16_C INT8_C
" Common ANSI-standard Names
syn keyword cAnsiName PRId8 PRIi16 PRIo32 PRIu64
syn keyword cAnsiName PRId16 PRIi32 PRIo64 PRIuLEAST8
syn keyword cAnsiName PRId32 PRIi64 PRIoLEAST8 PRIuLEAST16
syn keyword cAnsiName PRId64 PRIiLEAST8 PRIoLEAST16 PRIuLEAST32
syn keyword cAnsiName PRIdLEAST8 PRIiLEAST16 PRIoLEAST32 PRIuLEAST64
syn keyword cAnsiName PRIdLEAST16 PRIiLEAST32 PRIoLEAST64 PRIuFAST8
syn keyword cAnsiName PRIdLEAST32 PRIiLEAST64 PRIoFAST8 PRIuFAST16
syn keyword cAnsiName PRIdLEAST64 PRIiFAST8 PRIoFAST16 PRIuFAST32
syn keyword cAnsiName PRIdFAST8 PRIiFAST16 PRIoFAST32 PRIuFAST64
syn keyword cAnsiName PRIdFAST16 PRIiFAST32 PRIoFAST64 PRIuMAX
syn keyword cAnsiName PRIdFAST32 PRIiFAST64 PRIoMAX PRIuPTR
syn keyword cAnsiName PRIdFAST64 PRIiMAX PRIoPTR PRIx8
syn keyword cAnsiName PRIdMAX PRIiPTR PRIu8 PRIx16
syn keyword cAnsiName PRIdPTR PRIo8 PRIu16 PRIx32
syn keyword cAnsiName PRIi8 PRIo16 PRIu32 PRIx64
syn keyword cAnsiName PRIxLEAST8 SCNd8 SCNiFAST32 SCNuLEAST32
syn keyword cAnsiName PRIxLEAST16 SCNd16 SCNiFAST64 SCNuLEAST64
syn keyword cAnsiName PRIxLEAST32 SCNd32 SCNiMAX SCNuFAST8
syn keyword cAnsiName PRIxLEAST64 SCNd64 SCNiPTR SCNuFAST16
syn keyword cAnsiName PRIxFAST8 SCNdLEAST8 SCNo8 SCNuFAST32
syn keyword cAnsiName PRIxFAST16 SCNdLEAST16 SCNo16 SCNuFAST64
syn keyword cAnsiName PRIxFAST32 SCNdLEAST32 SCNo32 SCNuMAX
syn keyword cAnsiName PRIxFAST64 SCNdLEAST64 SCNo64 SCNuPTR
syn keyword cAnsiName PRIxMAX SCNdFAST8 SCNoLEAST8 SCNx8
syn keyword cAnsiName PRIxPTR SCNdFAST16 SCNoLEAST16 SCNx16
syn keyword cAnsiName PRIX8 SCNdFAST32 SCNoLEAST32 SCNx32
syn keyword cAnsiName PRIX16 SCNdFAST64 SCNoLEAST64 SCNx64
syn keyword cAnsiName PRIX32 SCNdMAX SCNoFAST8 SCNxLEAST8
syn keyword cAnsiName PRIX64 SCNdPTR SCNoFAST16 SCNxLEAST16
syn keyword cAnsiName PRIXLEAST8 SCNi8 SCNoFAST32 SCNxLEAST32
syn keyword cAnsiName PRIXLEAST16 SCNi16 SCNoFAST64 SCNxLEAST64
syn keyword cAnsiName PRIXLEAST32 SCNi32 SCNoMAX SCNxFAST8
syn keyword cAnsiName PRIXLEAST64 SCNi64 SCNoPTR SCNxFAST16
syn keyword cAnsiName PRIXFAST8 SCNiLEAST8 SCNu8 SCNxFAST32
syn keyword cAnsiName PRIXFAST16 SCNiLEAST16 SCNu16 SCNxFAST64
syn keyword cAnsiName PRIXFAST32 SCNiLEAST32 SCNu32 SCNxMAX
syn keyword cAnsiName PRIXFAST64 SCNiLEAST64 SCNu64 SCNxPTR
syn keyword cAnsiName PRIXMAX SCNiFAST8 SCNuLEAST8
syn keyword cAnsiName PRIXPTR SCNiFAST16 SCNuLEAST16
syn keyword cAnsiName errno environ
syn keyword cAnsiName STDC CX_LIMITED_RANGE
syn keyword cAnsiName STDC FENV_ACCESS
syn keyword cAnsiName STDC FP_CONTRACT
syn keyword cAnsiName and bitor not_eq xor
syn keyword cAnsiName and_eq compl or xor_eq
syn keyword cAnsiName bitand not or_eq
hi def link cAnsiFunction cFunction
hi def link cAnsiName cIdentifier
" Operators
syn match cOperator "\(<<\|>>\|[-+*/%&^|<>!=]\)="
syn match cOperator "<<\|>>\|&&\|||\|++\|--\|->"
syn match cOperator "[.!~*&%<>^|=,+-]"
syn match cOperator "/[^/*=]"me=e-1
syn match cOperator "/$"
syn match cOperator "&&\|||"
syn match cOperator "[][]"
" Preprocs
syn keyword cDefined defined contained containedin=cDefine
hi def link cDefined cDefine
" Functions
syn match cUserFunction "\<\h\w*\>\(\s\|\n\)*("me=e-1 contains=cType,cDelimiter,cDefine
syn match cUserFunctionPointer "(\s*\*\s*\h\w*\s*)\(\s\|\n\)*(" contains=cDelimiter,cOperator
hi def link cUserFunction cFunction
hi def link cUserFunctionPointer cFunction
" Delimiters
syn match cDelimiter "[();\\]"
" foldmethod=syntax fix, courtesy of Ivan Freitas
syn match cBraces display "[{}]"
" Booleans
syn keyword cBoolean true false TRUE FALSE
" Links
hi def link cFunction Function
hi def link cIdentifier Identifier
hi def link cDelimiter Delimiter
" foldmethod=syntax fix, courtesy of Ivan Freitas
hi def link cBraces Delimiter
hi def link cBoolean Boolean

View File

@@ -2,14 +2,16 @@
" Language: C++ Additions " Language: C++ Additions
" Maintainer: Jon Haggblad <jon@haeggblad.com> " Maintainer: Jon Haggblad <jon@haeggblad.com>
" URL: http://www.haeggblad.com " URL: http://www.haeggblad.com
" Last Change: 17 May 2013 " Last Change: 21 Apr 2014
" Version: 0.1 " Version: 0.3
" Changelog: " Changelog:
" 0.1 - initial version. " 0.1 - initial version.
" 0.2 - C++14
" 0.3 - Incorporate lastest changes from Mizuchi/STL-Syntax
" "
" Additional Vim syntax highlighting for C++ (including C++11) " Additional Vim syntax highlighting for C++ (including C++11)
" "
" This file contains additional syntax highlighting that I use for my C++11 " This file contains additional syntax highlighting that I use for my C++11/14
" development in Vim. Compared to the standard syntax highlighting for C++ it " development in Vim. Compared to the standard syntax highlighting for C++ it
" adds highlighting of (user defined) functions and the containers and types " adds highlighting of (user defined) functions and the containers and types
" in the standard library / boost. " in the standard library / boost.
@@ -53,6 +55,10 @@ hi def link cCustomFunc Function
" http://www.vim.org/scripts/script.php?script_id=1640 " http://www.vim.org/scripts/script.php?script_id=1640
" ----------------------------------------------------------------------------- " -----------------------------------------------------------------------------
syntax keyword cppSTLconstant badbit syntax keyword cppSTLconstant badbit
syntax keyword cppSTLconstant cerr
syntax keyword cppSTLconstant cin
syntax keyword cppSTLconstant clog
syntax keyword cppSTLconstant cout
syntax keyword cppSTLconstant digits syntax keyword cppSTLconstant digits
syntax keyword cppSTLconstant digits10 syntax keyword cppSTLconstant digits10
syntax keyword cppSTLconstant eofbit syntax keyword cppSTLconstant eofbit
@@ -81,6 +87,10 @@ syntax keyword cppSTLconstant radix
syntax keyword cppSTLconstant round_style syntax keyword cppSTLconstant round_style
syntax keyword cppSTLconstant tinyness_before syntax keyword cppSTLconstant tinyness_before
syntax keyword cppSTLconstant traps syntax keyword cppSTLconstant traps
syntax keyword cppSTLconstant wcerr
syntax keyword cppSTLconstant wcin
syntax keyword cppSTLconstant wclog
syntax keyword cppSTLconstant wcout
syntax keyword cppSTLexception bad_alloc syntax keyword cppSTLexception bad_alloc
syntax keyword cppSTLexception bad_array_new_length syntax keyword cppSTLexception bad_array_new_length
syntax keyword cppSTLexception bad_exception syntax keyword cppSTLexception bad_exception
@@ -139,6 +149,7 @@ syntax keyword cppSTLfunction atexit
syntax keyword cppSTLfunction atof syntax keyword cppSTLfunction atof
syntax keyword cppSTLfunction atoi syntax keyword cppSTLfunction atoi
syntax keyword cppSTLfunction atol syntax keyword cppSTLfunction atol
syntax keyword cppSTLfunction atoll
syntax keyword cppSTLfunction back syntax keyword cppSTLfunction back
syntax keyword cppSTLfunction back_inserter syntax keyword cppSTLfunction back_inserter
syntax keyword cppSTLfunction bad syntax keyword cppSTLfunction bad
@@ -155,12 +166,9 @@ syntax keyword cppSTLfunction bsearch
syntax keyword cppSTLfunction calloc syntax keyword cppSTLfunction calloc
syntax keyword cppSTLfunction capacity syntax keyword cppSTLfunction capacity
syntax keyword cppSTLfunction ceil syntax keyword cppSTLfunction ceil
syntax keyword cppSTLfunction cerr
syntax keyword cppSTLfunction cin
syntax keyword cppSTLfunction clear syntax keyword cppSTLfunction clear
syntax keyword cppSTLfunction clearerr syntax keyword cppSTLfunction clearerr
syntax keyword cppSTLfunction clock syntax keyword cppSTLfunction clock
syntax keyword cppSTLfunction clog
syntax keyword cppSTLfunction close syntax keyword cppSTLfunction close
syntax keyword cppSTLfunction compare syntax keyword cppSTLfunction compare
syntax keyword cppSTLfunction conj syntax keyword cppSTLfunction conj
@@ -171,7 +179,6 @@ syntax keyword cppSTLfunction cos
syntax keyword cppSTLfunction cosh syntax keyword cppSTLfunction cosh
syntax keyword cppSTLfunction count syntax keyword cppSTLfunction count
syntax keyword cppSTLfunction count_if syntax keyword cppSTLfunction count_if
syntax keyword cppSTLfunction cout
syntax keyword cppSTLfunction c_str syntax keyword cppSTLfunction c_str
syntax keyword cppSTLfunction ctime syntax keyword cppSTLfunction ctime
syntax keyword cppSTLfunction data syntax keyword cppSTLfunction data
@@ -312,7 +319,7 @@ syntax keyword cppSTLfunction norm
syntax keyword cppSTLfunction not1 syntax keyword cppSTLfunction not1
syntax keyword cppSTLfunction not2 syntax keyword cppSTLfunction not2
syntax keyword cppSTLfunction nth_element syntax keyword cppSTLfunction nth_element
syntax keyword cppSTLfunction numeric_limits syntax keyword cppSTLtype numeric_limits
syntax keyword cppSTLfunction open syntax keyword cppSTLfunction open
syntax keyword cppSTLfunction partial_sort syntax keyword cppSTLfunction partial_sort
syntax keyword cppSTLfunction partial_sort_copy syntax keyword cppSTLfunction partial_sort_copy
@@ -423,8 +430,11 @@ syntax keyword cppSTLfunction strrchr
syntax keyword cppSTLfunction strspn syntax keyword cppSTLfunction strspn
syntax keyword cppSTLfunction strstr syntax keyword cppSTLfunction strstr
syntax keyword cppSTLfunction strtod syntax keyword cppSTLfunction strtod
syntax keyword cppSTLfunction strtof
syntax keyword cppSTLfunction strtok syntax keyword cppSTLfunction strtok
syntax keyword cppSTLfunction strtol syntax keyword cppSTLfunction strtol
syntax keyword cppSTLfunction strtold
syntax keyword cppSTLfunction strtoll
syntax keyword cppSTLfunction strtoul syntax keyword cppSTLfunction strtoul
syntax keyword cppSTLfunction strxfrm syntax keyword cppSTLfunction strxfrm
syntax keyword cppSTLfunction substr syntax keyword cppSTLfunction substr
@@ -440,7 +450,6 @@ syntax keyword cppSTLfunction tellg
syntax keyword cppSTLfunction tellp syntax keyword cppSTLfunction tellp
syntax keyword cppSTLfunction test syntax keyword cppSTLfunction test
syntax keyword cppSTLfunction time syntax keyword cppSTLfunction time
syntax keyword cppSTLfunction time_t
syntax keyword cppSTLfunction tmpfile syntax keyword cppSTLfunction tmpfile
syntax keyword cppSTLfunction tmpnam syntax keyword cppSTLfunction tmpnam
syntax keyword cppSTLfunction tolower syntax keyword cppSTLfunction tolower
@@ -462,7 +471,6 @@ syntax keyword cppSTLfunction unique_copy
syntax keyword cppSTLfunction unsetf syntax keyword cppSTLfunction unsetf
syntax keyword cppSTLfunction upper_bound syntax keyword cppSTLfunction upper_bound
syntax keyword cppSTLfunction va_arg syntax keyword cppSTLfunction va_arg
syntax keyword cppSTLfunction va_arg
syntax keyword cppSTLfunction va_copy syntax keyword cppSTLfunction va_copy
syntax keyword cppSTLfunction va_end syntax keyword cppSTLfunction va_end
syntax keyword cppSTLfunction value_comp syntax keyword cppSTLfunction value_comp
@@ -539,12 +547,18 @@ syntax keyword cppSTLnamespace rel_ops
syntax keyword cppSTLnamespace std syntax keyword cppSTLnamespace std
syntax keyword cppSTLtype allocator syntax keyword cppSTLtype allocator
syntax keyword cppSTLtype auto_ptr syntax keyword cppSTLtype auto_ptr
syntax keyword cppSTLtype basic_filebuf
syntax keyword cppSTLtype basic_fstream syntax keyword cppSTLtype basic_fstream
syntax keyword cppSTLtype basic_ifstream syntax keyword cppSTLtype basic_ifstream
syntax keyword cppSTLtype basic_iostream
syntax keyword cppSTLtype basic_istream
syntax keyword cppSTLtype basic_istringstream syntax keyword cppSTLtype basic_istringstream
syntax keyword cppSTLtype basic_ofstream syntax keyword cppSTLtype basic_ofstream
syntax keyword cppSTLtype basic_ostream
syntax keyword cppSTLtype basic_ostringstream syntax keyword cppSTLtype basic_ostringstream
syntax keyword cppSTLtype basic_streambuf
syntax keyword cppSTLtype basic_string syntax keyword cppSTLtype basic_string
syntax keyword cppSTLtype basic_stringbuf
syntax keyword cppSTLtype basic_stringstream syntax keyword cppSTLtype basic_stringstream
syntax keyword cppSTLtype binary_compose syntax keyword cppSTLtype binary_compose
syntax keyword cppSTLtype binder1st syntax keyword cppSTLtype binder1st
@@ -573,7 +587,11 @@ syntax keyword cppSTLtype ifstream
syntax keyword cppSTLtype imaxdiv_t syntax keyword cppSTLtype imaxdiv_t
syntax keyword cppSTLtype indirect_array syntax keyword cppSTLtype indirect_array
syntax keyword cppSTLtype int_type syntax keyword cppSTLtype int_type
syntax keyword cppSTLtype ios_base
syntax keyword cppSTLtype iostream
syntax keyword cppSTLtype istream
syntax keyword cppSTLtype istringstream syntax keyword cppSTLtype istringstream
syntax keyword cppSTLtype istrstream
syntax keyword cppSTLtype iterator_traits syntax keyword cppSTLtype iterator_traits
syntax keyword cppSTLtype key_compare syntax keyword cppSTLtype key_compare
syntax keyword cppSTLtype key_type syntax keyword cppSTLtype key_type
@@ -594,6 +612,7 @@ syntax keyword cppSTLtype off_type
syntax keyword cppSTLtype ofstream syntax keyword cppSTLtype ofstream
syntax keyword cppSTLtype ostream syntax keyword cppSTLtype ostream
syntax keyword cppSTLtype ostringstream syntax keyword cppSTLtype ostringstream
syntax keyword cppSTLtype ostrstream
syntax keyword cppSTLtype pair syntax keyword cppSTLtype pair
syntax keyword cppSTLtype pointer syntax keyword cppSTLtype pointer
syntax keyword cppSTLtype pointer_to_binary_function syntax keyword cppSTLtype pointer_to_binary_function
@@ -610,11 +629,15 @@ syntax keyword cppSTLtype size_type
syntax keyword cppSTLtype slice_array syntax keyword cppSTLtype slice_array
syntax keyword cppSTLtype stack syntax keyword cppSTLtype stack
syntax keyword cppSTLtype stream syntax keyword cppSTLtype stream
syntax keyword cppSTLtype streambuf
syntax keyword cppSTLtype string syntax keyword cppSTLtype string
syntax keyword cppSTLtype stringbuf syntax keyword cppSTLtype stringbuf
syntax keyword cppSTLtype stringstream syntax keyword cppSTLtype stringstream
syntax keyword cppSTLtype strstream
syntax keyword cppSTLtype strstreambuf
syntax keyword cppSTLtype temporary_buffer syntax keyword cppSTLtype temporary_buffer
syntax keyword cppSTLtype test_type syntax keyword cppSTLtype test_type
syntax keyword cppSTLtype time_t
syntax keyword cppSTLtype tm syntax keyword cppSTLtype tm
syntax keyword cppSTLtype traits_type syntax keyword cppSTLtype traits_type
syntax keyword cppSTLtype type_info syntax keyword cppSTLtype type_info
@@ -626,15 +649,98 @@ syntax keyword cppSTLtype valarray
syntax keyword cppSTLtype value_compare syntax keyword cppSTLtype value_compare
syntax keyword cppSTLtype value_type syntax keyword cppSTLtype value_type
syntax keyword cppSTLtype vector syntax keyword cppSTLtype vector
syntax keyword cppSTLtype wfilebuf
syntax keyword cppSTLtype wfstream syntax keyword cppSTLtype wfstream
syntax keyword cppSTLtype wifstream syntax keyword cppSTLtype wifstream
syntax keyword cppSTLtype wiostream
syntax keyword cppSTLtype wistream
syntax keyword cppSTLtype wistringstream syntax keyword cppSTLtype wistringstream
syntax keyword cppSTLtype wofstream syntax keyword cppSTLtype wofstream
syntax keyword cppSTLtype wostream
syntax keyword cppSTLtype wostringstream syntax keyword cppSTLtype wostringstream
syntax keyword cppSTLtype wstreambuf
syntax keyword cppSTLtype wstring syntax keyword cppSTLtype wstring
syntax keyword cppSTLtype wstringbuf syntax keyword cppSTLtype wstringbuf
syntax keyword cppSTLtype wstringstream syntax keyword cppSTLtype wstringstream
syntax keyword cppSTLfunction mblen
syntax keyword cppSTLfunction mbtowc
syntax keyword cppSTLfunction wctomb
syntax keyword cppSTLfunction mbstowcs
syntax keyword cppSTLfunction wcstombs
syntax keyword cppSTLfunction mbsinit
syntax keyword cppSTLfunction btowc
syntax keyword cppSTLfunction wctob
syntax keyword cppSTLfunction mbrlen
syntax keyword cppSTLfunction mbrtowc
syntax keyword cppSTLfunction wcrtomb
syntax keyword cppSTLfunction mbsrtowcs
syntax keyword cppSTLfunction wcsrtombs
syntax keyword cppSTLtype mbstate_t
syntax keyword cppSTLconstant MB_LEN_MAX
syntax keyword cppSTLconstant MB_CUR_MAX
syntax keyword cppSTLconstant __STDC_UTF_16__
syntax keyword cppSTLconstant __STDC_UTF_32__
syntax keyword cppSTLfunction iswalnum
syntax keyword cppSTLfunction iswalpha
syntax keyword cppSTLfunction iswlower
syntax keyword cppSTLfunction iswupper
syntax keyword cppSTLfunction iswdigit
syntax keyword cppSTLfunction iswxdigit
syntax keyword cppSTLfunction iswcntrl
syntax keyword cppSTLfunction iswgraph
syntax keyword cppSTLfunction iswspace
syntax keyword cppSTLfunction iswprint
syntax keyword cppSTLfunction iswpunct
syntax keyword cppSTLfunction iswctype
syntax keyword cppSTLfunction wctype
syntax keyword cppSTLfunction towlower
syntax keyword cppSTLfunction towupper
syntax keyword cppSTLfunction towctrans
syntax keyword cppSTLfunction wctrans
syntax keyword cppSTLfunction wcstol
syntax keyword cppSTLfunction wcstoll
syntax keyword cppSTLfunction wcstoul
syntax keyword cppSTLfunction wcstoull
syntax keyword cppSTLfunction wcstof
syntax keyword cppSTLfunction wcstod
syntax keyword cppSTLfunction wcstold
syntax keyword cppSTLfunction wcscpy
syntax keyword cppSTLfunction wcsncpy
syntax keyword cppSTLfunction wcscat
syntax keyword cppSTLfunction wcsncat
syntax keyword cppSTLfunction wcsxfrm
syntax keyword cppSTLfunction wcslen
syntax keyword cppSTLfunction wcscmp
syntax keyword cppSTLfunction wcsncmp
syntax keyword cppSTLfunction wcscoll
syntax keyword cppSTLfunction wcschr
syntax keyword cppSTLfunction wcsrchr
syntax keyword cppSTLfunction wcsspn
syntax keyword cppSTLfunction wcscspn
syntax keyword cppSTLfunction wcspbrk
syntax keyword cppSTLfunction wcsstr
syntax keyword cppSTLfunction wcstok
syntax keyword cppSTLfunction wmemcpy
syntax keyword cppSTLfunction wmemmove
syntax keyword cppSTLfunction wmemcmp
syntax keyword cppSTLfunction wmemchr
syntax keyword cppSTLfunction wmemset
syntax keyword cppSTLtype wctrans_t
syntax keyword cppSTLtype wctype_t
syntax keyword cppSTLtype wint_t
syntax keyword cppSTLconstant WEOF
syntax keyword cppSTLconstant WCHAR_MIN
syntax keyword cppSTLconstant WCHAR_MAX
if !exists("cpp_no_cpp11") if !exists("cpp_no_cpp11")
syntax keyword cppSTLtype nullptr_t max_align_t syntax keyword cppSTLtype nullptr_t max_align_t
syntax keyword cppSTLtype type_index syntax keyword cppSTLtype type_index
@@ -727,6 +833,10 @@ if !exists("cpp_no_cpp11")
syntax keyword cppSTLtype integral_constant syntax keyword cppSTLtype integral_constant
syntax keyword cppSTLtype true_type syntax keyword cppSTLtype true_type
syntax keyword cppSTLtype false_type syntax keyword cppSTLtype false_type
syntax keyword cppSTLfunction declval
syntax keyword cppSTLconstant piecewise_construct
syntax keyword cppSTLtype piecewise_construct_t
" memory " memory
syntax keyword cppSTLtype unique_ptr syntax keyword cppSTLtype unique_ptr
@@ -751,6 +861,12 @@ if !exists("cpp_no_cpp11")
syntax keyword cppSTLtype pointer_traits syntax keyword cppSTLtype pointer_traits
syntax keyword cppSTLfunction addressof syntax keyword cppSTLfunction addressof
syntax keyword cppSTLfunction align syntax keyword cppSTLfunction align
syntax keyword cppSTLfunction make_shared
syntax keyword cppSTLfunction allocate_shared
syntax keyword cppSTLcast static_pointer_cast
syntax keyword cppSTLcast dynamic_pointer_cast
syntax keyword cppSTLcast const_pointer_cast
syntax keyword cppSTLfunction get_deleter
" function object " function object
syntax keyword cppSTLfunction bind syntax keyword cppSTLfunction bind
@@ -776,6 +892,7 @@ if !exists("cpp_no_cpp11")
syntax keyword cppSTLfunction quick_exit syntax keyword cppSTLfunction quick_exit
syntax keyword cppSTLfunction _Exit syntax keyword cppSTLfunction _Exit
syntax keyword cppSTLfunction at_quick_exit syntax keyword cppSTLfunction at_quick_exit
syntax keyword cppSTLfunction forward
" date and time " date and time
syntax keyword cppSTLnamespace chrono syntax keyword cppSTLnamespace chrono
@@ -784,6 +901,8 @@ if !exists("cpp_no_cpp11")
syntax keyword cppSTLtype steady_clock syntax keyword cppSTLtype steady_clock
syntax keyword cppSTLtype high_resolution_clock syntax keyword cppSTLtype high_resolution_clock
syntax keyword cppSTLtype time_point syntax keyword cppSTLtype time_point
syntax keyword cppSTLcast duration_cast
syntax keyword cppSTLcast time_point_cast
" tuple " tuple
syntax keyword cppSTLtype tuple syntax keyword cppSTLtype tuple
@@ -842,6 +961,7 @@ if !exists("cpp_no_cpp11")
syntax keyword cppSTLfunction copy_if syntax keyword cppSTLfunction copy_if
syntax keyword cppSTLfunction copy_n syntax keyword cppSTLfunction copy_n
syntax keyword cppSTLfunction move syntax keyword cppSTLfunction move
syntax keyword cppSTLfunction move_if_noexcept
syntax keyword cppSTLfunction move_backward syntax keyword cppSTLfunction move_backward
syntax keyword cppSTLfunction shuffle syntax keyword cppSTLfunction shuffle
syntax keyword cppSTLfunction is_partitioned syntax keyword cppSTLfunction is_partitioned
@@ -968,6 +1088,7 @@ if !exists("cpp_no_cpp11")
" locale " locale
syntax keyword cppSTLfunction isblank syntax keyword cppSTLfunction isblank
syntax keyword cppSTLfunction iswblank
syntax keyword cppSTLtype wstring_convert syntax keyword cppSTLtype wstring_convert
syntax keyword cppSTLtype wbuffer_convert syntax keyword cppSTLtype wbuffer_convert
syntax keyword cppSTLtype codecvt_utf8 syntax keyword cppSTLtype codecvt_utf8
@@ -1016,16 +1137,55 @@ if !exists("cpp_no_cpp11")
syntax keyword cppSTLfunction atomic_flag_clear syntax keyword cppSTLfunction atomic_flag_clear
syntax keyword cppSTLfunction atomic_flag_clear_explicit syntax keyword cppSTLfunction atomic_flag_clear_explicit
syntax keyword cppSTLtype atomic_bool
syntax keyword cppSTLtype atomic_char
syntax keyword cppSTLtype atomic_schar
syntax keyword cppSTLtype atomic_uchar
syntax keyword cppSTLtype atomic_short
syntax keyword cppSTLtype atomic_ushort
syntax keyword cppSTLtype atomic_int
syntax keyword cppSTLtype atomic_uint
syntax keyword cppSTLtype atomic_long
syntax keyword cppSTLtype atomic_ulong
syntax keyword cppSTLtype atomic_llong
syntax keyword cppSTLtype atomic_ullong
syntax keyword cppSTLtype atomic_char16_t
syntax keyword cppSTLtype atomic_char32_t
syntax keyword cppSTLtype atomic_wchar_t
syntax keyword cppSTLtype atomic_int_least8_t
syntax keyword cppSTLtype atomic_uint_least8_t
syntax keyword cppSTLtype atomic_int_least16_t
syntax keyword cppSTLtype atomic_uint_least16_t
syntax keyword cppSTLtype atomic_int_least32_t
syntax keyword cppSTLtype atomic_uint_least32_t
syntax keyword cppSTLtype atomic_int_least64_t
syntax keyword cppSTLtype atomic_uint_least64_t
syntax keyword cppSTLtype atomic_int_fast8_t
syntax keyword cppSTLtype atomic_uint_fast8_t
syntax keyword cppSTLtype atomic_int_fast16_t
syntax keyword cppSTLtype atomic_uint_fast16_t
syntax keyword cppSTLtype atomic_int_fast32_t
syntax keyword cppSTLtype atomic_uint_fast32_t
syntax keyword cppSTLtype atomic_int_fast64_t
syntax keyword cppSTLtype atomic_uint_fast64_t
syntax keyword cppSTLtype atomic_intptr_t
syntax keyword cppSTLtype atomic_uintptr_t
syntax keyword cppSTLtype atomic_size_t
syntax keyword cppSTLtype atomic_ptrdiff_t
syntax keyword cppSTLtype atomic_intmax_t
syntax keyword cppSTLtype atomic_uintmax_t
syntax keyword cppSTLtype memory_order syntax keyword cppSTLtype memory_order
syntax keyword cppSTLfunction atomic_init syntax keyword cppSTLfunction atomic_init
syntax keyword cppSTLfunction ATOMIC_VAR_INIT syntax keyword cppSTLfunction ATOMIC_VAR_INIT
syntax keyword cppSTLconstant ATOMIC_FLAG_INIT syntax keyword cppSTLconstant ATOMIC_FLAG_INIT
syntax keyword cppSTLconstant kill_dependency syntax keyword cppSTLfunction kill_dependency
syntax keyword cppSTLconstant atomic_thread_fence syntax keyword cppSTLfunction atomic_thread_fence
syntax keyword cppSTLconstant atomic_signal_fence syntax keyword cppSTLfunction atomic_signal_fence
" thread " thread
syntax keyword cppSTLtype thread syntax keyword cppSTLtype thread
syntax keyword cppSTLnamespace this_thread
syntax keyword cppSTLfunction yield syntax keyword cppSTLfunction yield
syntax keyword cppSTLfunction get_id syntax keyword cppSTLfunction get_id
syntax keyword cppSTLfunction sleep_for syntax keyword cppSTLfunction sleep_for
@@ -1061,8 +1221,8 @@ if !exists("cpp_no_cpp11")
syntax keyword cppSTLtype future syntax keyword cppSTLtype future
syntax keyword cppSTLtype shared_future syntax keyword cppSTLtype shared_future
"syntax keyword cppSTLfunction async syntax keyword cppSTLfunction async
"syntax keyword cppSTLenum launch syntax keyword cppSTLenum launch
syntax keyword cppSTLenum future_status syntax keyword cppSTLenum future_status
syntax keyword cppSTLenum future_errc syntax keyword cppSTLenum future_errc
@@ -1114,7 +1274,50 @@ if !exists("cpp_no_cpp11")
"limits "limits
syntax keyword cppSTLfunction lowest syntax keyword cppSTLfunction lowest
endif
"cuchar
syntax keyword cppSTLfunction mbrtoc16
syntax keyword cppSTLfunction c16rtomb
syntax keyword cppSTLfunction mbrtoc32
syntax keyword cppSTLfunction c32rtomb
"cinttypes
syntax keyword cppSTLfunction strtoimax
syntax keyword cppSTLfunction strtoumax
syntax keyword cppSTLfunction wcstoimax
syntax keyword cppSTLfunction wcstoumax
syntax keyword cppSTLtype nanoseconds
syntax keyword cppSTLtype microseconds
syntax keyword cppSTLtype milliseconds
syntax keyword cppSTLtype seconds
syntax keyword cppSTLtype minutes
syntax keyword cppSTLtype hours
endif " C++11
if !exists("cpp_no_cpp14")
"dynarray
syntax keyword cppSTLtype dynarray
"thread
syntax keyword cppSTLtype shared_mutex
syntax keyword cppSTLtype shared_lock
"memory
syntax keyword cppSTLfunction make_unique
endif " C++14
if !exists("cpp_no_boost")
"optional is not a part of C++14 anymore
syntax keyword cppSTLtype optional
"syntax keyword cppSTLfunction value
syntax keyword cppSTLfunction value_or
syntax keyword cppSTLfunction make_optional
syntax keyword cppSTLnamespace boost
syntax keyword cppSTLcast lexical_cast
endif " Boost
" Default highlighting " Default highlighting
if version >= 508 || !exists("did_cpp_syntax_inits") if version >= 508 || !exists("did_cpp_syntax_inits")
@@ -1125,15 +1328,15 @@ if version >= 508 || !exists("did_cpp_syntax_inits")
command -nargs=+ HiLink hi def link <args> command -nargs=+ HiLink hi def link <args>
endif endif
HiLink cppSTLfunction Function HiLink cppSTLfunction Function
HiLink cppSTLfunctional Type HiLink cppSTLfunctional Typedef
HiLink cppSTLconstant Constant HiLink cppSTLconstant Constant
HiLink cppSTLnamespace Constant HiLink cppSTLnamespace Constant
HiLink cppSTLtype Type HiLink cppSTLtype Typedef
HiLink cppSTLexception Type HiLink cppSTLexception Exception
HiLink cppSTLiterator Type HiLink cppSTLiterator Typedef
HiLink cppSTLiterator_tag Type HiLink cppSTLiterator_tag Typedef
HiLink cppSTLenum Type HiLink cppSTLenum Typedef
HiLink cppSTLios Function HiLink cppSTLios Function
HiLink cppSTLcast Statement " be consistent with official syntax
delcommand HiLink delcommand HiLink
endif endif

View File

@@ -1,501 +1,6 @@
" Language: Colorful CSS Color Preview " Language: Colorful CSS Color Preview
" Author: Aristotle Pagaltzis <pagaltzis@gmx.de> " Author: Aristotle Pagaltzis <pagaltzis@gmx.de>
" Last Change: 2013-03-09
" Licence: No Warranties. WTFPL. But please tell me!
" Version: 0.7.3
" vim:et:ts=2 sw=2 sts=2
"
" KNOWN PROBLEMS: compatibility with `cursorline` -- https://github.com/ap/vim-css-color/issues/24
let s:hex={} if !( has('gui_running') || &t_Co==256 ) | finish | endif
for i in range(0, 255)
let s:hex[ printf( '%02x', i ) ] = i
endfor
let s:black = '#000000' call css_color#init('css', 'cssMediaBlock,cssFunction,cssDefinition,cssAttrRegion,cssComment')
let s:white = '#ffffff'
function! s:FGForBG(color)
" pick suitable text color given a background color
let color = tolower(a:color)
let r = s:hex[color[0:1]]
let g = s:hex[color[2:3]]
let b = s:hex[color[4:5]]
return r*30 + g*59 + b*11 > 12000 ? s:black : s:white
endfunction
let b:color_pattern = {}
let s:color_prefix = 'gui'
let s:fg_color_calc = 'let color = "#" . toupper(a:color)'
function! s:MatchColorValue(color, pattern)
if ! len(a:color) | return | endif
if has_key( b:color_pattern, a:pattern ) | return | endif
let b:color_pattern[a:pattern] = 1
let pattern = a:pattern
" iff pattern ends on word character, require word break to match
if pattern =~ '\>$' | let pattern .= '\>' | endif
let group = 'cssColor' . tolower(a:color)
exe 'syn match' group '/'.escape(pattern, '/').'/ contained'
exe 'syn cluster cssColors add='.group
exe s:fg_color_calc
exe 'hi' group s:color_prefix.'bg='.color s:color_prefix.'fg='.s:FGForBG(a:color)
return ''
endfunction
function! s:HexForRGBValue(r,g,b)
" Convert 80% -> 204, 100% -> 255, etc.
let rgb = map( [a:r,a:g,a:b], 'v:val =~ "%$" ? ( 255 * v:val ) / 100 : v:val' )
return printf( '%02x%02x%02x', rgb[0], rgb[1], rgb[2] )
endfunction
function! s:HexForHSLValue(h,s,l)
" Convert 80% -> 0.8, 100% -> 1.0, etc.
let [s,l] = map( [a:s, a:l], 'v:val =~ "%$" ? v:val / 100.0 : str2float(v:val)' )
" algorithm transcoded to vim from http://www.w3.org/TR/css3-color/#hsl-color
let hh = ( a:h % 360 ) / 360.0
let m2 = l <= 0.5 ? l * ( s + 1 ) : l + s - l * s
let m1 = l * 2 - m2
let rgb = []
for h in [ hh + (1/3.0), hh, hh - (1/3.0) ]
let h = h < 0 ? h + 1 : h > 1 ? h - 1 : h
let v =
\ h * 6 < 1 ? m1 + ( m2 - m1 ) * h * 6 :
\ h * 2 < 1 ? m2 :
\ h * 3 < 2 ? m1 + ( m2 - m1 ) * ( 2/3.0 - h ) * 6 :
\ m1
if v > 1.0 | return '' | endif
let rgb += [ float2nr( 255 * v ) ]
endfor
return printf( '%02x%02x%02x', rgb[0], rgb[1], rgb[2] )
endfunction
function! s:PreviewCSSColorInLine()
" TODO use cssColor matchdata
"
" N.B. these substitute() calls are here just for the side effect
" of invoking s:MatchColorValue during substitution -- because
" match() and friends do not allow finding all matches in a single
" scan without examining the start of the string over and over
call substitute( substitute( substitute( substitute( getline('.'),
\ '#\(\x\)\(\x\)\(\x\)\>', '\=s:MatchColorValue(submatch(1).submatch(1).submatch(2).submatch(2).submatch(3).submatch(3), submatch(0))', 'g' ),
\ '#\(\x\{6}\)\>', '\=s:MatchColorValue(submatch(1), submatch(0))', 'g' ),
\ 'rgba\?(\s*\(\d\{1,3}%\?\)\s*,\s*\(\d\{1,3}%\?\)\s*,\s*\(\d\{1,3}%\?\)\s*\%(,[^)]*\)\?)', '\=s:MatchColorValue(s:HexForRGBValue(submatch(1),submatch(2),submatch(3)),submatch(0))', 'g' ),
\ 'hsla\?(\s*\(\d\{1,3}%\?\)\s*,\s*\(\d\{1,3}%\?\)\s*,\s*\(\d\{1,3}%\?\)\s*\%(,[^)]*\)\?)', '\=s:MatchColorValue(s:HexForHSLValue(submatch(1),submatch(2),submatch(3)),submatch(0))', 'g' )
endfunction
if has("gui_running") || &t_Co==256
" HACK modify cssDefinition to add @cssColors to its contains
redir => cssdef
silent! syn list cssDefinition
redir END
if len( cssdef )
for out in split( cssdef, "\n" )
if out !~ '^cssDefinition ' | continue | endif
let out = substitute( out, ' \+xxx \+', ' ', '' )
let out = substitute( out, ' contains=\zs', '@cssColors,', '' )
syn clear cssDefinition
exe 'syn region' out
endfor
endif
if ! has('gui_running')
let s:black = 0
let s:white = 15
let s:color_prefix = 'cterm'
let s:fg_color_calc = 'let color = s:XTermColorForRGB(a:color)'
" preset 16 vt100 colors
let s:xtermcolor = [
\ [ 0x00, 0x00, 0x00, 0 ],
\ [ 0xCD, 0x00, 0x00, 1 ],
\ [ 0x00, 0xCD, 0x00, 2 ],
\ [ 0xCD, 0xCD, 0x00, 3 ],
\ [ 0x00, 0x00, 0xEE, 4 ],
\ [ 0xCD, 0x00, 0xCD, 5 ],
\ [ 0x00, 0xCD, 0xCD, 6 ],
\ [ 0xE5, 0xE5, 0xE5, 7 ],
\ [ 0x7F, 0x7F, 0x7F, 8 ],
\ [ 0xFF, 0x00, 0x00, 9 ],
\ [ 0x00, 0xFF, 0x00, 10 ],
\ [ 0xFF, 0xFF, 0x00, 11 ],
\ [ 0x5C, 0x5C, 0xFF, 12 ],
\ [ 0xFF, 0x00, 0xFF, 13 ],
\ [ 0x00, 0xFF, 0xFF, 14 ],
\ [ 0xFF, 0xFF, 0xFF, 15 ]]
" grayscale ramp
" (value is 8+10*lum for lum in 0..23)
let s:xtermcolor += [
\ [ 0x08, 0x08, 0x08, 232 ],
\ [ 0x12, 0x12, 0x12, 233 ],
\ [ 0x1C, 0x1C, 0x1C, 234 ],
\ [ 0x26, 0x26, 0x26, 235 ],
\ [ 0x30, 0x30, 0x30, 236 ],
\ [ 0x3A, 0x3A, 0x3A, 237 ],
\ [ 0x44, 0x44, 0x44, 238 ],
\ [ 0x4E, 0x4E, 0x4E, 239 ],
\ [ 0x58, 0x58, 0x58, 240 ],
\ [ 0x62, 0x62, 0x62, 241 ],
\ [ 0x6C, 0x6C, 0x6C, 242 ],
\ [ 0x76, 0x76, 0x76, 243 ],
\ [ 0x80, 0x80, 0x80, 244 ],
\ [ 0x8A, 0x8A, 0x8A, 245 ],
\ [ 0x94, 0x94, 0x94, 246 ],
\ [ 0x9E, 0x9E, 0x9E, 247 ],
\ [ 0xA8, 0xA8, 0xA8, 248 ],
\ [ 0xB2, 0xB2, 0xB2, 249 ],
\ [ 0xBC, 0xBC, 0xBC, 250 ],
\ [ 0xC6, 0xC6, 0xC6, 251 ],
\ [ 0xD0, 0xD0, 0xD0, 252 ],
\ [ 0xDA, 0xDA, 0xDA, 253 ],
\ [ 0xE4, 0xE4, 0xE4, 254 ],
\ [ 0xEE, 0xEE, 0xEE, 255 ]]
" the 6 values used in the xterm color cube
" 0 95 135 175 215 255
let s:cubergb = [ 0x00, 0x5F, 0x87, 0xAF, 0xD7, 0xFF ]
" 0..255 mapped to 0..5 based on the color cube values
let s:xvquant = repeat([0],48)
\ + repeat([1],68)
\ + repeat([2],40)
\ + repeat([3],40)
\ + repeat([4],40)
\ + repeat([5],20)
" tweak the mapping for the exact matches (0 and 1 already correct)
let s:xvquant[s:cubergb[2]] = 2
let s:xvquant[s:cubergb[3]] = 3
let s:xvquant[s:cubergb[4]] = 4
let s:xvquant[s:cubergb[5]] = 5
" selects the nearest xterm color for a rgb value like #FF0000
function! s:XTermColorForRGB(color)
let best_match=0
let smallest_distance = 10000000000
let color = tolower(a:color)
let r = s:hex[color[0:1]]
let g = s:hex[color[2:3]]
let b = s:hex[color[4:5]]
let vr = s:xvquant[r]
let vg = s:xvquant[g]
let vb = s:xvquant[b]
let cidx = vr * 36 + vg * 6 + vb + 16
let ccol = [ s:cubergb[vr], s:cubergb[vg], s:cubergb[vb], cidx ]
for [tr,tg,tb,idx] in [ ccol ] + s:xtermcolor
let dr = tr - r
let dg = tg - g
let db = tb - b
let distance = dr*dr + dg*dg + db*db
if distance == 0 | return idx | endif
if distance > smallest_distance | continue | endif
let smallest_distance = distance
let best_match = idx
endfor
return best_match
endfunction
endif
hi cssColor000000 guibg=#000000 guifg=#FFFFFF ctermbg=16 ctermfg=231 | syn cluster cssColors add=cssColor000000
hi cssColor000080 guibg=#000080 guifg=#FFFFFF ctermbg=235 ctermfg=231 | syn cluster cssColors add=cssColor000080
hi cssColor00008b guibg=#00008B guifg=#FFFFFF ctermbg=4 ctermfg=231 | syn cluster cssColors add=cssColor00008b
hi cssColor0000cd guibg=#0000CD guifg=#FFFFFF ctermbg=4 ctermfg=231 | syn cluster cssColors add=cssColor0000cd
hi cssColor0000ff guibg=#0000FF guifg=#FFFFFF ctermbg=4 ctermfg=231 | syn cluster cssColors add=cssColor0000ff
hi cssColor006400 guibg=#006400 guifg=#FFFFFF ctermbg=235 ctermfg=231 | syn cluster cssColors add=cssColor006400
hi cssColor008000 guibg=#008000 guifg=#FFFFFF ctermbg=2 ctermfg=231 | syn cluster cssColors add=cssColor008000
hi cssColor008080 guibg=#008080 guifg=#FFFFFF ctermbg=30 ctermfg=231 | syn cluster cssColors add=cssColor008080
hi cssColor008b8b guibg=#008B8B guifg=#FFFFFF ctermbg=30 ctermfg=231 | syn cluster cssColors add=cssColor008b8b
hi cssColor00bfff guibg=#00BFFF guifg=#000000 ctermbg=6 ctermfg=16 | syn cluster cssColors add=cssColor00bfff
hi cssColor00ced1 guibg=#00CED1 guifg=#000000 ctermbg=6 ctermfg=16 | syn cluster cssColors add=cssColor00ced1
hi cssColor00fa9a guibg=#00FA9A guifg=#000000 ctermbg=6 ctermfg=16 | syn cluster cssColors add=cssColor00fa9a
hi cssColor00ff00 guibg=#00FF00 guifg=#000000 ctermbg=10 ctermfg=16 | syn cluster cssColors add=cssColor00ff00
hi cssColor00ff7f guibg=#00FF7F guifg=#000000 ctermbg=6 ctermfg=16 | syn cluster cssColors add=cssColor00ff7f
hi cssColor00ffff guibg=#00FFFF guifg=#000000 ctermbg=51 ctermfg=16 | syn cluster cssColors add=cssColor00ffff
hi cssColor191970 guibg=#191970 guifg=#FFFFFF ctermbg=237 ctermfg=231 | syn cluster cssColors add=cssColor191970
hi cssColor1e90ff guibg=#1E90FF guifg=#000000 ctermbg=12 ctermfg=16 | syn cluster cssColors add=cssColor1e90ff
hi cssColor20b2aa guibg=#20B2AA guifg=#000000 ctermbg=37 ctermfg=16 | syn cluster cssColors add=cssColor20b2aa
hi cssColor228b22 guibg=#228B22 guifg=#FFFFFF ctermbg=2 ctermfg=231 | syn cluster cssColors add=cssColor228b22
hi cssColor2e8b57 guibg=#2E8B57 guifg=#FFFFFF ctermbg=240 ctermfg=231 | syn cluster cssColors add=cssColor2e8b57
hi cssColor2f4f4f guibg=#2F4F4F guifg=#FFFFFF ctermbg=238 ctermfg=231 | syn cluster cssColors add=cssColor2f4f4f
hi cssColor32cd32 guibg=#32CD32 guifg=#000000 ctermbg=2 ctermfg=16 | syn cluster cssColors add=cssColor32cd32
hi cssColor3cb371 guibg=#3CB371 guifg=#000000 ctermbg=71 ctermfg=16 | syn cluster cssColors add=cssColor3cb371
hi cssColor40e0d0 guibg=#40E0D0 guifg=#000000 ctermbg=80 ctermfg=16 | syn cluster cssColors add=cssColor40e0d0
hi cssColor4169e1 guibg=#4169E1 guifg=#FFFFFF ctermbg=12 ctermfg=231 | syn cluster cssColors add=cssColor4169e1
hi cssColor4682b4 guibg=#4682B4 guifg=#FFFFFF ctermbg=67 ctermfg=231 | syn cluster cssColors add=cssColor4682b4
hi cssColor483d8b guibg=#483D8B guifg=#FFFFFF ctermbg=240 ctermfg=231 | syn cluster cssColors add=cssColor483d8b
hi cssColor48d1cc guibg=#48D1CC guifg=#000000 ctermbg=80 ctermfg=16 | syn cluster cssColors add=cssColor48d1cc
hi cssColor4b0082 guibg=#4B0082 guifg=#FFFFFF ctermbg=238 ctermfg=231 | syn cluster cssColors add=cssColor4b0082
hi cssColor556b2f guibg=#556B2F guifg=#FFFFFF ctermbg=239 ctermfg=231 | syn cluster cssColors add=cssColor556b2f
hi cssColor5f9ea0 guibg=#5F9EA0 guifg=#000000 ctermbg=73 ctermfg=16 | syn cluster cssColors add=cssColor5f9ea0
hi cssColor6495ed guibg=#6495ED guifg=#000000 ctermbg=12 ctermfg=16 | syn cluster cssColors add=cssColor6495ed
hi cssColor66cdaa guibg=#66CDAA guifg=#000000 ctermbg=79 ctermfg=16 | syn cluster cssColors add=cssColor66cdaa
hi cssColor696969 guibg=#696969 guifg=#FFFFFF ctermbg=242 ctermfg=231 | syn cluster cssColors add=cssColor696969
hi cssColor6a5acd guibg=#6A5ACD guifg=#FFFFFF ctermbg=12 ctermfg=231 | syn cluster cssColors add=cssColor6a5acd
hi cssColor6b8e23 guibg=#6B8E23 guifg=#FFFFFF ctermbg=241 ctermfg=231 | syn cluster cssColors add=cssColor6b8e23
hi cssColor708090 guibg=#708090 guifg=#000000 ctermbg=66 ctermfg=16 | syn cluster cssColors add=cssColor708090
hi cssColor778899 guibg=#778899 guifg=#000000 ctermbg=102 ctermfg=16 | syn cluster cssColors add=cssColor778899
hi cssColor7b68ee guibg=#7B68EE guifg=#000000 ctermbg=12 ctermfg=16 | syn cluster cssColors add=cssColor7b68ee
hi cssColor7cfc00 guibg=#7CFC00 guifg=#000000 ctermbg=3 ctermfg=16 | syn cluster cssColors add=cssColor7cfc00
hi cssColor7fff00 guibg=#7FFF00 guifg=#000000 ctermbg=3 ctermfg=16 | syn cluster cssColors add=cssColor7fff00
hi cssColor7fffd4 guibg=#7FFFD4 guifg=#000000 ctermbg=122 ctermfg=16 | syn cluster cssColors add=cssColor7fffd4
hi cssColor800000 guibg=#800000 guifg=#FFFFFF ctermbg=88 ctermfg=231 | syn cluster cssColors add=cssColor800000
hi cssColor800080 guibg=#800080 guifg=#FFFFFF ctermbg=240 ctermfg=231 | syn cluster cssColors add=cssColor800080
hi cssColor808000 guibg=#808000 guifg=#FFFFFF ctermbg=240 ctermfg=231 | syn cluster cssColors add=cssColor808000
hi cssColor808080 guibg=#808080 guifg=#000000 ctermbg=244 ctermfg=16 | syn cluster cssColors add=cssColor808080
hi cssColor87ceeb guibg=#87CEEB guifg=#000000 ctermbg=117 ctermfg=16 | syn cluster cssColors add=cssColor87ceeb
hi cssColor87cefa guibg=#87CEFA guifg=#000000 ctermbg=117 ctermfg=16 | syn cluster cssColors add=cssColor87cefa
hi cssColor8a2be2 guibg=#8A2BE2 guifg=#FFFFFF ctermbg=12 ctermfg=231 | syn cluster cssColors add=cssColor8a2be2
hi cssColor8b0000 guibg=#8B0000 guifg=#FFFFFF ctermbg=88 ctermfg=231 | syn cluster cssColors add=cssColor8b0000
hi cssColor8b008b guibg=#8B008B guifg=#FFFFFF ctermbg=5 ctermfg=231 | syn cluster cssColors add=cssColor8b008b
hi cssColor8b4513 guibg=#8B4513 guifg=#FFFFFF ctermbg=94 ctermfg=231 | syn cluster cssColors add=cssColor8b4513
hi cssColor8fbc8f guibg=#8FBC8F guifg=#000000 ctermbg=108 ctermfg=16 | syn cluster cssColors add=cssColor8fbc8f
hi cssColor90ee90 guibg=#90EE90 guifg=#000000 ctermbg=249 ctermfg=16 | syn cluster cssColors add=cssColor90ee90
hi cssColor9370d8 guibg=#9370D8 guifg=#000000 ctermbg=12 ctermfg=16 | syn cluster cssColors add=cssColor9370d8
hi cssColor9400d3 guibg=#9400D3 guifg=#FFFFFF ctermbg=5 ctermfg=231 | syn cluster cssColors add=cssColor9400d3
hi cssColor98fb98 guibg=#98FB98 guifg=#000000 ctermbg=250 ctermfg=16 | syn cluster cssColors add=cssColor98fb98
hi cssColor9932cc guibg=#9932CC guifg=#FFFFFF ctermbg=5 ctermfg=231 | syn cluster cssColors add=cssColor9932cc
hi cssColor9acd32 guibg=#9ACD32 guifg=#000000 ctermbg=3 ctermfg=16 | syn cluster cssColors add=cssColor9acd32
hi cssColora0522d guibg=#A0522D guifg=#FFFFFF ctermbg=130 ctermfg=231 | syn cluster cssColors add=cssColora0522d
hi cssColora52a2a guibg=#A52A2A guifg=#FFFFFF ctermbg=124 ctermfg=231 | syn cluster cssColors add=cssColora52a2a
hi cssColora9a9a9 guibg=#A9A9A9 guifg=#000000 ctermbg=248 ctermfg=16 | syn cluster cssColors add=cssColora9a9a9
hi cssColoradd8e6 guibg=#ADD8E6 guifg=#000000 ctermbg=152 ctermfg=16 | syn cluster cssColors add=cssColoradd8e6
hi cssColoradff2f guibg=#ADFF2F guifg=#000000 ctermbg=3 ctermfg=16 | syn cluster cssColors add=cssColoradff2f
hi cssColorafeeee guibg=#AFEEEE guifg=#000000 ctermbg=159 ctermfg=16 | syn cluster cssColors add=cssColorafeeee
hi cssColorb0c4de guibg=#B0C4DE guifg=#000000 ctermbg=152 ctermfg=16 | syn cluster cssColors add=cssColorb0c4de
hi cssColorb0e0e6 guibg=#B0E0E6 guifg=#000000 ctermbg=152 ctermfg=16 | syn cluster cssColors add=cssColorb0e0e6
hi cssColorb22222 guibg=#B22222 guifg=#FFFFFF ctermbg=124 ctermfg=231 | syn cluster cssColors add=cssColorb22222
hi cssColorb8860b guibg=#B8860B guifg=#000000 ctermbg=3 ctermfg=16 | syn cluster cssColors add=cssColorb8860b
hi cssColorba55d3 guibg=#BA55D3 guifg=#000000 ctermbg=5 ctermfg=16 | syn cluster cssColors add=cssColorba55d3
hi cssColorbc8f8f guibg=#BC8F8F guifg=#000000 ctermbg=138 ctermfg=16 | syn cluster cssColors add=cssColorbc8f8f
hi cssColorbdb76b guibg=#BDB76B guifg=#000000 ctermbg=247 ctermfg=16 | syn cluster cssColors add=cssColorbdb76b
hi cssColorc0c0c0 guibg=#C0C0C0 guifg=#000000 ctermbg=250 ctermfg=16 | syn cluster cssColors add=cssColorc0c0c0
hi cssColorc71585 guibg=#C71585 guifg=#FFFFFF ctermbg=5 ctermfg=231 | syn cluster cssColors add=cssColorc71585
hi cssColorcd5c5c guibg=#CD5C5C guifg=#000000 ctermbg=167 ctermfg=16 | syn cluster cssColors add=cssColorcd5c5c
hi cssColorcd853f guibg=#CD853F guifg=#000000 ctermbg=173 ctermfg=16 | syn cluster cssColors add=cssColorcd853f
hi cssColord2691e guibg=#D2691E guifg=#000000 ctermbg=166 ctermfg=16 | syn cluster cssColors add=cssColord2691e
hi cssColord2b48c guibg=#D2B48C guifg=#000000 ctermbg=180 ctermfg=16 | syn cluster cssColors add=cssColord2b48c
hi cssColord3d3d3 guibg=#D3D3D3 guifg=#000000 ctermbg=252 ctermfg=16 | syn cluster cssColors add=cssColord3d3d3
hi cssColord87093 guibg=#D87093 guifg=#000000 ctermbg=168 ctermfg=16 | syn cluster cssColors add=cssColord87093
hi cssColord8bfd8 guibg=#D8BFD8 guifg=#000000 ctermbg=252 ctermfg=16 | syn cluster cssColors add=cssColord8bfd8
hi cssColorda70d6 guibg=#DA70D6 guifg=#000000 ctermbg=249 ctermfg=16 | syn cluster cssColors add=cssColorda70d6
hi cssColordaa520 guibg=#DAA520 guifg=#000000 ctermbg=3 ctermfg=16 | syn cluster cssColors add=cssColordaa520
hi cssColordc143c guibg=#DC143C guifg=#FFFFFF ctermbg=161 ctermfg=231 | syn cluster cssColors add=cssColordc143c
hi cssColordcdcdc guibg=#DCDCDC guifg=#000000 ctermbg=253 ctermfg=16 | syn cluster cssColors add=cssColordcdcdc
hi cssColordda0dd guibg=#DDA0DD guifg=#000000 ctermbg=182 ctermfg=16 | syn cluster cssColors add=cssColordda0dd
hi cssColordeb887 guibg=#DEB887 guifg=#000000 ctermbg=180 ctermfg=16 | syn cluster cssColors add=cssColordeb887
hi cssColore0ffff guibg=#E0FFFF guifg=#000000 ctermbg=195 ctermfg=16 | syn cluster cssColors add=cssColore0ffff
hi cssColore6e6fa guibg=#E6E6FA guifg=#000000 ctermbg=255 ctermfg=16 | syn cluster cssColors add=cssColore6e6fa
hi cssColore9967a guibg=#E9967A guifg=#000000 ctermbg=174 ctermfg=16 | syn cluster cssColors add=cssColore9967a
hi cssColoree82ee guibg=#EE82EE guifg=#000000 ctermbg=251 ctermfg=16 | syn cluster cssColors add=cssColoree82ee
hi cssColoreee8aa guibg=#EEE8AA guifg=#000000 ctermbg=223 ctermfg=16 | syn cluster cssColors add=cssColoreee8aa
hi cssColorf08080 guibg=#F08080 guifg=#000000 ctermbg=210 ctermfg=16 | syn cluster cssColors add=cssColorf08080
hi cssColorf0e68c guibg=#F0E68C guifg=#000000 ctermbg=222 ctermfg=16 | syn cluster cssColors add=cssColorf0e68c
hi cssColorf0f8ff guibg=#F0F8FF guifg=#000000 ctermbg=15 ctermfg=16 | syn cluster cssColors add=cssColorf0f8ff
hi cssColorf0fff0 guibg=#F0FFF0 guifg=#000000 ctermbg=255 ctermfg=16 | syn cluster cssColors add=cssColorf0fff0
hi cssColorf0ffff guibg=#F0FFFF guifg=#000000 ctermbg=15 ctermfg=16 | syn cluster cssColors add=cssColorf0ffff
hi cssColorf4a460 guibg=#F4A460 guifg=#000000 ctermbg=215 ctermfg=16 | syn cluster cssColors add=cssColorf4a460
hi cssColorf5deb3 guibg=#F5DEB3 guifg=#000000 ctermbg=223 ctermfg=16 | syn cluster cssColors add=cssColorf5deb3
hi cssColorf5f5dc guibg=#F5F5DC guifg=#000000 ctermbg=255 ctermfg=16 | syn cluster cssColors add=cssColorf5f5dc
hi cssColorf5f5f5 guibg=#F5F5F5 guifg=#000000 ctermbg=255 ctermfg=16 | syn cluster cssColors add=cssColorf5f5f5
hi cssColorf5fffa guibg=#F5FFFA guifg=#000000 ctermbg=15 ctermfg=16 | syn cluster cssColors add=cssColorf5fffa
hi cssColorf8f8ff guibg=#F8F8FF guifg=#000000 ctermbg=15 ctermfg=16 | syn cluster cssColors add=cssColorf8f8ff
hi cssColorfa8072 guibg=#FA8072 guifg=#000000 ctermbg=209 ctermfg=16 | syn cluster cssColors add=cssColorfa8072
hi cssColorfaebd7 guibg=#FAEBD7 guifg=#000000 ctermbg=7 ctermfg=16 | syn cluster cssColors add=cssColorfaebd7
hi cssColorfaf0e6 guibg=#FAF0E6 guifg=#000000 ctermbg=255 ctermfg=16 | syn cluster cssColors add=cssColorfaf0e6
hi cssColorfafad2 guibg=#FAFAD2 guifg=#000000 ctermbg=255 ctermfg=16 | syn cluster cssColors add=cssColorfafad2
hi cssColorfdf5e6 guibg=#FDF5E6 guifg=#000000 ctermbg=255 ctermfg=16 | syn cluster cssColors add=cssColorfdf5e6
hi cssColorff0000 guibg=#FF0000 guifg=#FFFFFF ctermbg=196 ctermfg=231 | syn cluster cssColors add=cssColorff0000
hi cssColorff00ff guibg=#FF00FF guifg=#FFFFFF ctermbg=13 ctermfg=231 | syn cluster cssColors add=cssColorff00ff
hi cssColorff1493 guibg=#FF1493 guifg=#FFFFFF ctermbg=5 ctermfg=231 | syn cluster cssColors add=cssColorff1493
hi cssColorff4500 guibg=#FF4500 guifg=#FFFFFF ctermbg=9 ctermfg=231 | syn cluster cssColors add=cssColorff4500
hi cssColorff6347 guibg=#FF6347 guifg=#000000 ctermbg=203 ctermfg=16 | syn cluster cssColors add=cssColorff6347
hi cssColorff69b4 guibg=#FF69B4 guifg=#000000 ctermbg=205 ctermfg=16 | syn cluster cssColors add=cssColorff69b4
hi cssColorff7f50 guibg=#FF7F50 guifg=#000000 ctermbg=209 ctermfg=16 | syn cluster cssColors add=cssColorff7f50
hi cssColorff8c00 guibg=#FF8C00 guifg=#000000 ctermbg=3 ctermfg=16 | syn cluster cssColors add=cssColorff8c00
hi cssColorffa07a guibg=#FFA07A guifg=#000000 ctermbg=216 ctermfg=16 | syn cluster cssColors add=cssColorffa07a
hi cssColorffa500 guibg=#FFA500 guifg=#000000 ctermbg=3 ctermfg=16 | syn cluster cssColors add=cssColorffa500
hi cssColorffb6c1 guibg=#FFB6C1 guifg=#000000 ctermbg=217 ctermfg=16 | syn cluster cssColors add=cssColorffb6c1
hi cssColorffc0cb guibg=#FFC0CB guifg=#000000 ctermbg=218 ctermfg=16 | syn cluster cssColors add=cssColorffc0cb
hi cssColorffd700 guibg=#FFD700 guifg=#000000 ctermbg=11 ctermfg=16 | syn cluster cssColors add=cssColorffd700
hi cssColorffdab9 guibg=#FFDAB9 guifg=#000000 ctermbg=223 ctermfg=16 | syn cluster cssColors add=cssColorffdab9
hi cssColorffdead guibg=#FFDEAD guifg=#000000 ctermbg=223 ctermfg=16 | syn cluster cssColors add=cssColorffdead
hi cssColorffe4b5 guibg=#FFE4B5 guifg=#000000 ctermbg=223 ctermfg=16 | syn cluster cssColors add=cssColorffe4b5
hi cssColorffe4c4 guibg=#FFE4C4 guifg=#000000 ctermbg=224 ctermfg=16 | syn cluster cssColors add=cssColorffe4c4
hi cssColorffe4e1 guibg=#FFE4E1 guifg=#000000 ctermbg=224 ctermfg=16 | syn cluster cssColors add=cssColorffe4e1
hi cssColorffebcd guibg=#FFEBCD guifg=#000000 ctermbg=7 ctermfg=16 | syn cluster cssColors add=cssColorffebcd
hi cssColorffefd5 guibg=#FFEFD5 guifg=#000000 ctermbg=255 ctermfg=16 | syn cluster cssColors add=cssColorffefd5
hi cssColorfff0f5 guibg=#FFF0F5 guifg=#000000 ctermbg=15 ctermfg=16 | syn cluster cssColors add=cssColorfff0f5
hi cssColorfff5ee guibg=#FFF5EE guifg=#000000 ctermbg=255 ctermfg=16 | syn cluster cssColors add=cssColorfff5ee
hi cssColorfff8dc guibg=#FFF8DC guifg=#000000 ctermbg=255 ctermfg=16 | syn cluster cssColors add=cssColorfff8dc
hi cssColorfffacd guibg=#FFFACD guifg=#000000 ctermbg=255 ctermfg=16 | syn cluster cssColors add=cssColorfffacd
hi cssColorfffaf0 guibg=#FFFAF0 guifg=#000000 ctermbg=15 ctermfg=16 | syn cluster cssColors add=cssColorfffaf0
hi cssColorfffafa guibg=#FFFAFA guifg=#000000 ctermbg=15 ctermfg=16 | syn cluster cssColors add=cssColorfffafa
hi cssColorffff00 guibg=#FFFF00 guifg=#000000 ctermbg=11 ctermfg=16 | syn cluster cssColors add=cssColorffff00
hi cssColorffffe0 guibg=#FFFFE0 guifg=#000000 ctermbg=255 ctermfg=16 | syn cluster cssColors add=cssColorffffe0
hi cssColorfffff0 guibg=#FFFFF0 guifg=#000000 ctermbg=15 ctermfg=16 | syn cluster cssColors add=cssColorfffff0
hi cssColorffffff guibg=#FFFFFF guifg=#000000 ctermbg=231 ctermfg=16 | syn cluster cssColors add=cssColorffffff
" w3c Colors
syn keyword cssColor000000 black contained
syn keyword cssColorc0c0c0 silver contained
syn keyword cssColor808080 gray contained
syn match cssColorffffff "\<white\(-\)\@!\>" contained
syn keyword cssColor800000 maroon contained
syn keyword cssColorff0000 red contained
syn keyword cssColor800080 purple contained
syn keyword cssColorff00ff fuchsia contained
syn keyword cssColor008000 green contained
syn keyword cssColor00ff00 lime contained
syn keyword cssColor808000 olive contained
syn keyword cssColorffff00 yellow contained
syn keyword cssColor000080 navy contained
syn keyword cssColor0000ff blue contained
syn keyword cssColor008080 teal contained
syn keyword cssColor00ffff aqua contained
" extra colors
syn keyword cssColorf0f8ff AliceBlue contained
syn keyword cssColorfaebd7 AntiqueWhite contained
syn keyword cssColor7fffd4 Aquamarine contained
syn keyword cssColorf0ffff Azure contained
syn keyword cssColorf5f5dc Beige contained
syn keyword cssColorffe4c4 Bisque contained
syn keyword cssColorffebcd BlanchedAlmond contained
syn keyword cssColor8a2be2 BlueViolet contained
syn keyword cssColora52a2a Brown contained
syn keyword cssColordeb887 BurlyWood contained
syn keyword cssColor5f9ea0 CadetBlue contained
syn keyword cssColor7fff00 Chartreuse contained
syn keyword cssColord2691e Chocolate contained
syn keyword cssColorff7f50 Coral contained
syn keyword cssColor6495ed CornflowerBlue contained
syn keyword cssColorfff8dc Cornsilk contained
syn keyword cssColordc143c Crimson contained
syn keyword cssColor00ffff Cyan contained
syn keyword cssColor00008b DarkBlue contained
syn keyword cssColor008b8b DarkCyan contained
syn keyword cssColorb8860b DarkGoldenRod contained
syn keyword cssColora9a9a9 DarkGray contained
syn keyword cssColor006400 DarkGreen contained
syn keyword cssColora9a9a9 DarkGrey contained
syn keyword cssColorbdb76b DarkKhaki contained
syn keyword cssColor8b008b DarkMagenta contained
syn keyword cssColor556b2f DarkOliveGreen contained
syn keyword cssColor9932cc DarkOrchid contained
syn keyword cssColor8b0000 DarkRed contained
syn keyword cssColore9967a DarkSalmon contained
syn keyword cssColor8fbc8f DarkSeaGreen contained
syn keyword cssColor483d8b DarkSlateBlue contained
syn keyword cssColor2f4f4f DarkSlateGray contained
syn keyword cssColor2f4f4f DarkSlateGrey contained
syn keyword cssColor00ced1 DarkTurquoise contained
syn keyword cssColor9400d3 DarkViolet contained
syn keyword cssColorff8c00 Darkorange contained
syn keyword cssColorff1493 DeepPink contained
syn keyword cssColor00bfff DeepSkyBlue contained
syn keyword cssColor696969 DimGray contained
syn keyword cssColor696969 DimGrey contained
syn keyword cssColor1e90ff DodgerBlue contained
syn keyword cssColorb22222 FireBrick contained
syn keyword cssColorfffaf0 FloralWhite contained
syn keyword cssColor228b22 ForestGreen contained
syn keyword cssColordcdcdc Gainsboro contained
syn keyword cssColorf8f8ff GhostWhite contained
syn keyword cssColorffd700 Gold contained
syn keyword cssColordaa520 GoldenRod contained
syn keyword cssColoradff2f GreenYellow contained
syn keyword cssColor808080 Grey contained
syn keyword cssColorf0fff0 HoneyDew contained
syn keyword cssColorff69b4 HotPink contained
syn keyword cssColorcd5c5c IndianRed contained
syn keyword cssColor4b0082 Indigo contained
syn keyword cssColorfffff0 Ivory contained
syn keyword cssColorf0e68c Khaki contained
syn keyword cssColore6e6fa Lavender contained
syn keyword cssColorfff0f5 LavenderBlush contained
syn keyword cssColor7cfc00 LawnGreen contained
syn keyword cssColorfffacd LemonChiffon contained
syn keyword cssColoradd8e6 LightBlue contained
syn keyword cssColorf08080 LightCoral contained
syn keyword cssColore0ffff LightCyan contained
syn keyword cssColorfafad2 LightGoldenRodYellow contained
syn keyword cssColord3d3d3 LightGray contained
syn keyword cssColor90ee90 LightGreen contained
syn keyword cssColord3d3d3 LightGrey contained
syn keyword cssColorffb6c1 LightPink contained
syn keyword cssColorffa07a LightSalmon contained
syn keyword cssColor20b2aa LightSeaGreen contained
syn keyword cssColor87cefa LightSkyBlue contained
syn keyword cssColor778899 LightSlateGray contained
syn keyword cssColor778899 LightSlateGrey contained
syn keyword cssColorb0c4de LightSteelBlue contained
syn keyword cssColorffffe0 LightYellow contained
syn keyword cssColor32cd32 LimeGreen contained
syn keyword cssColorfaf0e6 Linen contained
syn keyword cssColorff00ff Magenta contained
syn keyword cssColor66cdaa MediumAquaMarine contained
syn keyword cssColor0000cd MediumBlue contained
syn keyword cssColorba55d3 MediumOrchid contained
syn keyword cssColor9370d8 MediumPurple contained
syn keyword cssColor3cb371 MediumSeaGreen contained
syn keyword cssColor7b68ee MediumSlateBlue contained
syn keyword cssColor00fa9a MediumSpringGreen contained
syn keyword cssColor48d1cc MediumTurquoise contained
syn keyword cssColorc71585 MediumVioletRed contained
syn keyword cssColor191970 MidnightBlue contained
syn keyword cssColorf5fffa MintCream contained
syn keyword cssColorffe4e1 MistyRose contained
syn keyword cssColorffe4b5 Moccasin contained
syn keyword cssColorffdead NavajoWhite contained
syn keyword cssColorfdf5e6 OldLace contained
syn keyword cssColor6b8e23 OliveDrab contained
syn keyword cssColorffa500 Orange contained
syn keyword cssColorff4500 OrangeRed contained
syn keyword cssColorda70d6 Orchid contained
syn keyword cssColoreee8aa PaleGoldenRod contained
syn keyword cssColor98fb98 PaleGreen contained
syn keyword cssColorafeeee PaleTurquoise contained
syn keyword cssColord87093 PaleVioletRed contained
syn keyword cssColorffefd5 PapayaWhip contained
syn keyword cssColorffdab9 PeachPuff contained
syn keyword cssColorcd853f Peru contained
syn keyword cssColorffc0cb Pink contained
syn keyword cssColordda0dd Plum contained
syn keyword cssColorb0e0e6 PowderBlue contained
syn keyword cssColorbc8f8f RosyBrown contained
syn keyword cssColor4169e1 RoyalBlue contained
syn keyword cssColor8b4513 SaddleBrown contained
syn keyword cssColorfa8072 Salmon contained
syn keyword cssColorf4a460 SandyBrown contained
syn keyword cssColor2e8b57 SeaGreen contained
syn keyword cssColorfff5ee SeaShell contained
syn keyword cssColora0522d Sienna contained
syn keyword cssColor87ceeb SkyBlue contained
syn keyword cssColor6a5acd SlateBlue contained
syn keyword cssColor708090 SlateGray contained
syn keyword cssColor708090 SlateGrey contained
syn keyword cssColorfffafa Snow contained
syn keyword cssColor00ff7f SpringGreen contained
syn keyword cssColor4682b4 SteelBlue contained
syn keyword cssColord2b48c Tan contained
syn keyword cssColord8bfd8 Thistle contained
syn keyword cssColorff6347 Tomato contained
syn keyword cssColor40e0d0 Turquoise contained
syn keyword cssColoree82ee Violet contained
syn keyword cssColorf5deb3 Wheat contained
syn keyword cssColorf5f5f5 WhiteSmoke contained
syn keyword cssColor9acd32 YellowGreen contained
let view = winsaveview()
%call s:PreviewCSSColorInLine()
call winrestview(view)
autocmd CursorMoved <buffer> silent call s:PreviewCSSColorInLine()
autocmd CursorMovedI <buffer> silent call s:PreviewCSSColorInLine()
endif

View File

@@ -9,3 +9,10 @@ syn region coffeeScript start=#<script [^>]*type="text/coffeescript"[^>]*>#
\ end=#</script>#me=s-1 keepend \ end=#</script>#me=s-1 keepend
\ contains=@htmlCoffeeScript,htmlScriptTag,@htmlPreproc \ contains=@htmlCoffeeScript,htmlScriptTag,@htmlPreproc
\ containedin=htmlHead \ containedin=htmlHead
" Language: Colorful CSS Color Preview
" Author: Aristotle Pagaltzis <pagaltzis@gmx.de>
if !( has('gui_running') || &t_Co==256 ) | finish | endif
" default html syntax should already be including the css syntax
syn cluster colorableGroup add=htmlString,htmlCommentPart

6
after/syntax/less.vim Normal file
View File

@@ -0,0 +1,6 @@
" Language: Colorful CSS Color Preview
" Author: Aristotle Pagaltzis <pagaltzis@gmx.de>
if !( has('gui_running') || &t_Co==256 ) | finish | endif
call css_color#init('css', 'lessVariableValue')

View File

@@ -18,3 +18,129 @@ syn match tomdocDescriptions +\s*Deprecated:+he=e-1 containedin=rubyComment cont
hi default link tomdocDescriptions String hi default link tomdocDescriptions String
hi default link tomdocKeywords String hi default link tomdocKeywords String
hi default link tomdocArguments HELP hi default link tomdocArguments HELP
" Ruby syntax extensions for highlighting YARD documentation.
"
" Author: Joel Holdbrooks <https://github.com/noprompt>
" URI: https://github.com/noprompt/vim-yardoc
" Version: 0.0.1
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Tags
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
syn match yardGenericTag "@\h\+" contained
syn match yardAbstract "@abstract" contained
syn match yardApi "@api" contained
syn match yardAttr "@attr" contained
syn match yardAttrReader "@attr_reader" contained
syn match yardAttrWriter "@attr_writer" contained
syn match yardAuthor "@author" contained
syn match yardDeprecated "@deprecated" contained
syn match yardExample "@example" contained
syn match yardNote "@note" contained
syn match yardOption "@option" contained
syn match yardOverload "@overload" contained
syn match yardParam "@param" contained
syn match yardPrivate "@private" contained
syn match yardRaise "@raise" contained
syn match yardReturn "@return" contained
syn match yardSee "@see" contained
syn match yardSince "@since" contained
syn match yardTodo "@todo" contained
syn match yardVersion "@version" contained
syn match yardYield "@yield" contained
syn match yardYieldParam "@yieldparam" contained
syn match yardYieldReturn "@yieldreturn" contained
syn cluster yardTags contains=yardGenericTag,yardAbstract,yardApi,yardAttr,yardAttrReader,yardAttrWriter,yardAuthor,yardDeprecated,yardExample,yardNote,yardOption,yardOverload,yardParam,yardPrivate,yardRaise,yardReturn,yardSee,yardSince,yardTodo,yardVersion,yardYield,yardYieldParam,yardYieldReturn
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Directives
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
syn match yardGenericDirective "@!\h\+" contained
syn match yardAttribute "@!attribute" contained
syn match yardEndGroup "@!endgroup" contained
syn match yardGroup "@!group" contained
syn match yardMacro "@!macro" contained
syn match yardMethod "@!method" contained
syn match yardParse "@!parse" contained
syn match yardScope "@!scope" contained
syn match yardVisibility "@!visibility" contained
syn cluster yardDirectives contains=yardGenericDirective,yardAttribute,yardEndGroup,yardGroup,yardMacro,yardMethod,yardParse,yardScope,yardVisibility
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Types, Lists, and Hashes
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
syn match yardDuckType "#\h\+" contained
syn match yardType "[A-Z]\h\+" contained
syn match yardLiteral "\(true\|false\|nil\|self\|void\)" contained
syn match yardComma "," nextgroup=@yardTypes contained
syn match yardArrow "=>" nextgroup=@yardTypes contained
syn region yardParametricType start="[A-Z]\+\h\+<" end=">" contains=yardType,yardOrderDependentList,yardComma skipwhite contained
syn region yardOrderDependentList start="(" end=")" contains=@yardTypes,yardComma skipwhite contained
syn region yardTypeList start="\[" end="]" contains=@yardTypes,yardOrderDependentList,@yardHashes skipwhite contained
syn region yardHashAngle start="Hash<" end=">" contains=yardDuckType,yardType,yardLiteral,yardArrow,yardComma skipwhite contained
syn region yardHashCurly start="Hash{" end="}" contains=@yardTypes,yardArrow,yardComma skipwhite contained
syn cluster yardTypes contains=yardDuckType,yardType,yardLiteral,yardParametricType
syn cluster yardHashes contains=yardArrow,yardHashAngle,yardHashCurly
syn cluster yardLists contains=yardComma,yardTypeList,yardOrderDependentList
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Yard
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
syn match yardComment "#\s*@!\{,1}\h\+.*" contains=@yardTags,@yardDirectives,yardTypeList
syn match rubyComment "#.*" contains=rubySharpBang,rubySpaceError,rubyTodo,@Spell,yardComment
syn region rubyMultilineComment start="\%(\%(^\s*#.*\n\)\@<!\%(^\s*#.*\n\)\)\%(\(^\s*#.*\n\)\{1,}\)\@=" end="\%(^\s*#.*\n\)\@<=\%(^\s*#.*\n\)\%(^\s*#\)\@!" contains=rubyComment transparent fold keepend
syn cluster rubyNotTop add=@yardTags,@yardDirectives,@yardTypes,@yardLists,@yardHashes
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Links
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
hi def link yardComment rubyComment
" Tags
hi def link yardGenericTag rubyKeyword
hi def link yardAbstract yardGenericTag
hi def link yardApi yardGenericTag
hi def link yardAttr yardGenericTag
hi def link yardAttrReader yardGenericTag
hi def link yardAttrWriter yardGenericTag
hi def link yardAuthor yardGenericTag
hi def link yardDeprecated yardGenericTag
hi def link yardExample yardGenericTag
hi def link yardNote yardGenericTag
hi def link yardOption yardGenericTag
hi def link yardOverload yardGenericTag
hi def link yardParam yardGenericTag
hi def link yardPrivate yardGenericTag
hi def link yardRaise yardGenericTag
hi def link yardReturn yardGenericTag
hi def link yardSee yardGenericTag
hi def link yardSince yardGenericTag
hi def link yardTodo yardGenericTag
hi def link yardVersion yardGenericTag
hi def link yield yardGenericTag
hi def link yieldparam yardGenericTag
hi def link yieldreturn yardGenericTag
" Directives
hi def link yardGenericDirective rubyKeyword
hi def link yardAttribute yardGenericDirective
hi def link yardEndGroup yardGenericDirective
hi def link yardGroup yardGenericDirective
hi def link yardMacro yardGenericDirective
hi def link yardMethod yardGenericDirective
hi def link yardParse yardGenericDirective
hi def link yardScope yardGenericDirective
hi def link yardVisibility yardGenericDirective
" Types
hi def link yardComma yardComment
hi def link yardType yardComment
hi def link yardDuckType yardComment
hi def link yardLiteral yardComment
" Lists
hi def link yardTypeList yardComment
hi def link yardParametricType yardComment
" Hashes
hi def link yardArrow yardComment
hi def link yardHashAngle yardComment
hi def link yardHashCurly yardComment

View File

@@ -1 +1,6 @@
syn cluster sassCssAttributes add=@cssColors " Language: Colorful CSS Color Preview
" Author: Aristotle Pagaltzis <pagaltzis@gmx.de>
if !( has('gui_running') || &t_Co==256 ) | finish | endif
call css_color#init('css', 'sassCssAttribute,sassComment,sassCssComment')

View File

@@ -1 +1,6 @@
syn cluster stylusCssAttributes add=@cssColors " Language: Colorful CSS Color Preview
" Author: Aristotle Pagaltzis <pagaltzis@gmx.de>
if !( has('gui_running') || &t_Co==256 ) | finish | endif
call css_color#init('css', 'stylusCssAttribute,stylusComment,cssComment')

View File

@@ -2,3 +2,8 @@
" \Cref, \cref, \cpageref, \labelcref, \labelcpageref " \Cref, \cref, \cpageref, \labelcref, \labelcpageref
syn region texRefZone matchgroup=texStatement start="\\Cref{" end="}\|%stopzone\>" contains=@texRefGroup syn region texRefZone matchgroup=texStatement start="\\Cref{" end="}\|%stopzone\>" contains=@texRefGroup
syn region texRefZone matchgroup=texStatement start="\\\(label\|\)c\(page\|\)ref{" end="}\|%stopzone\>" contains=@texRefGroup syn region texRefZone matchgroup=texStatement start="\\\(label\|\)c\(page\|\)ref{" end="}\|%stopzone\>" contains=@texRefGroup
" adds support for listings package
syn region texZone start="\\begin{lstlisting}" end="\\end{lstlisting}\|%stopzone\>"
syn match texInputFile "\\lstinputlisting\s*\(\[.*\]\)\={.\{-}}" contains=texStatement,texInputCurlies,texInputFileOpt
syn match texZone "\\lstinline\s*\(\[.*\]\)\={.\{-}}"

6
after/syntax/vim.vim Normal file
View File

@@ -0,0 +1,6 @@
" Language: Colorful CSS Color Preview
" Author: Aristotle Pagaltzis <pagaltzis@gmx.de>
if !( has('gui_running') || &t_Co==256 ) | finish | endif
call css_color#init('any', 'vimHiGuiRgb,vimComment,vimLineComment')

File diff suppressed because one or more lines are too long

559
autoload/css_color.vim Normal file
View File

@@ -0,0 +1,559 @@
" Language: Colorful CSS Color Preview
" Author: Aristotle Pagaltzis <pagaltzis@gmx.de>
" Last Change: 2014-01-14
" Licence: No Warranties. WTFPL. But please tell me!
" Version: 1.0
if v:version < 700
echoerr printf('Vim 7 is required for css-color (this is only %d.%d)',v:version/100,v:version%100)
finish
endif
if !( has('gui_running') || &t_Co==256 ) | finish | endif
function! s:rgb2color(r,g,b)
" Convert 80% -> 204, 100% -> 255, etc.
let rgb = map( [a:r,a:g,a:b], 'v:val =~ "%$" ? ( 255 * v:val ) / 100 : v:val' )
return printf( '%02x%02x%02x', rgb[0], rgb[1], rgb[2] )
endfunction
function! s:hsl2color(h,s,l)
" Convert 80% -> 0.8, 100% -> 1.0, etc.
let [s,l] = map( [a:s, a:l], 'v:val =~ "%$" ? v:val / 100.0 : v:val + 0.0' )
" algorithm transcoded to vim from http://www.w3.org/TR/css3-color/#hsl-color
let hh = ( a:h % 360 ) / 360.0
let m2 = l <= 0.5 ? l * ( s + 1 ) : l + s - l * s
let m1 = l * 2 - m2
let rgb = []
for h in [ hh + (1/3.0), hh, hh - (1/3.0) ]
let h = h < 0 ? h + 1 : h > 1 ? h - 1 : h
let v =
\ h * 6 < 1 ? m1 + ( m2 - m1 ) * h * 6 :
\ h * 2 < 1 ? m2 :
\ h * 3 < 2 ? m1 + ( m2 - m1 ) * ( 2/3.0 - h ) * 6 :
\ m1
if v > 1.0 | return '' | endif
let rgb += [ float2nr( 255 * v ) ]
endfor
return printf( '%02x%02x%02x', rgb[0], rgb[1], rgb[2] )
endfunction
let s:hex={}
for i in range(0, 255)
let s:hex[ printf( '%02x', i ) ] = i
endfor
if has('gui_running')
let s:is_gui = 1
else
let s:is_gui = 0
" preset 16 vt100 colors
let s:xtermcolor = [
\ [ 0x00, 0x00, 0x00, 0 ],
\ [ 0xCD, 0x00, 0x00, 1 ],
\ [ 0x00, 0xCD, 0x00, 2 ],
\ [ 0xCD, 0xCD, 0x00, 3 ],
\ [ 0x00, 0x00, 0xEE, 4 ],
\ [ 0xCD, 0x00, 0xCD, 5 ],
\ [ 0x00, 0xCD, 0xCD, 6 ],
\ [ 0xE5, 0xE5, 0xE5, 7 ],
\ [ 0x7F, 0x7F, 0x7F, 8 ],
\ [ 0xFF, 0x00, 0x00, 9 ],
\ [ 0x00, 0xFF, 0x00, 10 ],
\ [ 0xFF, 0xFF, 0x00, 11 ],
\ [ 0x5C, 0x5C, 0xFF, 12 ],
\ [ 0xFF, 0x00, 0xFF, 13 ],
\ [ 0x00, 0xFF, 0xFF, 14 ],
\ [ 0xFF, 0xFF, 0xFF, 15 ]]
" grayscale ramp
" (value is 8+10*lum for lum in 0..23)
let s:xtermcolor += [
\ [ 0x08, 0x08, 0x08, 232 ],
\ [ 0x12, 0x12, 0x12, 233 ],
\ [ 0x1C, 0x1C, 0x1C, 234 ],
\ [ 0x26, 0x26, 0x26, 235 ],
\ [ 0x30, 0x30, 0x30, 236 ],
\ [ 0x3A, 0x3A, 0x3A, 237 ],
\ [ 0x44, 0x44, 0x44, 238 ],
\ [ 0x4E, 0x4E, 0x4E, 239 ],
\ [ 0x58, 0x58, 0x58, 240 ],
\ [ 0x62, 0x62, 0x62, 241 ],
\ [ 0x6C, 0x6C, 0x6C, 242 ],
\ [ 0x76, 0x76, 0x76, 243 ],
\ [ 0x80, 0x80, 0x80, 244 ],
\ [ 0x8A, 0x8A, 0x8A, 245 ],
\ [ 0x94, 0x94, 0x94, 246 ],
\ [ 0x9E, 0x9E, 0x9E, 247 ],
\ [ 0xA8, 0xA8, 0xA8, 248 ],
\ [ 0xB2, 0xB2, 0xB2, 249 ],
\ [ 0xBC, 0xBC, 0xBC, 250 ],
\ [ 0xC6, 0xC6, 0xC6, 251 ],
\ [ 0xD0, 0xD0, 0xD0, 252 ],
\ [ 0xDA, 0xDA, 0xDA, 253 ],
\ [ 0xE4, 0xE4, 0xE4, 254 ],
\ [ 0xEE, 0xEE, 0xEE, 255 ]]
" the 6 values used in the xterm color cube
" 0 95 135 175 215 255
let s:cubergb = [ 0x00, 0x5F, 0x87, 0xAF, 0xD7, 0xFF ]
" 0..255 mapped to 0..5 based on the color cube values
let s:xvquant = repeat([0],48)
\ + repeat([1],68)
\ + repeat([2],40)
\ + repeat([3],40)
\ + repeat([4],40)
\ + repeat([5],20)
" tweak the mapping for the exact matches (0 and 1 already correct)
let s:xvquant[s:cubergb[2]] = 2
let s:xvquant[s:cubergb[3]] = 3
let s:xvquant[s:cubergb[4]] = 4
let s:xvquant[s:cubergb[5]] = 5
" selects the nearest xterm color for a rgb value like #FF0000
function! s:rgb2xterm(color)
let best_match=0
let smallest_distance = 10000000000
let color = tolower(a:color)
let r = s:hex[color[0:1]]
let g = s:hex[color[2:3]]
let b = s:hex[color[4:5]]
let vr = s:xvquant[r]
let vg = s:xvquant[g]
let vb = s:xvquant[b]
let cidx = vr * 36 + vg * 6 + vb + 16
let ccol = [ s:cubergb[vr], s:cubergb[vg], s:cubergb[vb], cidx ]
for [tr,tg,tb,idx] in [ ccol ] + s:xtermcolor
let dr = tr - r
let dg = tg - g
let db = tb - b
let distance = dr*dr + dg*dg + db*db
if distance == 0 | return idx | endif
if distance > smallest_distance | continue | endif
let smallest_distance = distance
let best_match = idx
endfor
return best_match
endfunction
endif
let s:pattern_color = {}
let s:color_fg = {}
let s:color_bg = {}
let [s:hi_cmd, s:black, s:white] = s:is_gui
\ ? ['hi %s guibg=#%s guifg=%s', '#000000', '#ffffff']
\ : ['hi %s ctermbg=%s ctermfg=%s', 0, 15]
function! s:create_syn_match()
let pattern = submatch(0)
if has_key( b:has_pattern_syn, pattern ) | return | endif
let b:has_pattern_syn[pattern] = 1
let rgb_color = get( s:pattern_color, pattern, '' )
if ! strlen( rgb_color )
let hexcolor = submatch(1)
let funcname = submatch(2)
if funcname == 'rgb'
let rgb_color = s:rgb2color(submatch(3),submatch(4),submatch(5))
elseif funcname == 'hsl'
let rgb_color = s:hsl2color(submatch(3),submatch(4),submatch(5))
elseif strlen(hexcolor) == 6
let rgb_color = tolower(hexcolor)
elseif strlen(hexcolor) == 3
let rgb_color = substitute(tolower(hexcolor), '\(.\)', '\1\1', 'g')
else
throw 'css_color: create_syn_match invoked on bad match data'
endif
let s:pattern_color[pattern] = rgb_color
endif
if ! has_key( b:has_color_hi, rgb_color )
" check GUI flag early here to avoid pure-overhead caching
let syn_bg = s:is_gui ? rgb_color : get( s:color_bg, rgb_color, '' )
if ! strlen(syn_bg)
let syn_bg = s:rgb2xterm(rgb_color)
let s:color_bg[rgb_color] = syn_bg
endif
let syn_fg = get( s:color_fg, rgb_color, '' )
if ! strlen(syn_fg)
let r = s:hex[rgb_color[0:1]]
let g = s:hex[rgb_color[2:3]]
let b = s:hex[rgb_color[4:5]]
let syn_fg = r*30 + g*59 + b*11 > 12000 ? s:black : s:white
let s:color_fg[rgb_color] = syn_fg
endif
endif
let group = 'BG' . rgb_color
if ! has_key( b:has_color_hi, rgb_color )
exe printf( s:hi_cmd, group, syn_bg, syn_fg )
let b:has_color_hi[rgb_color] = 1
endif
" iff pattern ends on word character, require word break to match
if pattern =~ '\>$' | let pattern .= '\>' | endif
exe 'syn match' group '/'.escape(pattern, '/').'/ contained containedin=@colorableGroup'
return ''
endfunction
function! s:update_matches()
call filter(b:color_match_id, 'matchdelete(v:val)')
if &l:cursorline
" adds matches based that duplicate the highlighted colors on the current line
let lnr = line('.')
let group = ''
let groupstart = 0
let endcol = col('$')
for col in range( 1, endcol )
let nextgroup = col < endcol ? synIDattr( synID( lnr, col, 1 ), 'name' ) : ''
if group == nextgroup | continue | endif
if group =~ '^BG\x\{6}$'
let regex = '\%'.lnr.'l\%'.groupstart.'c'.repeat( '.', col - groupstart )
let match = matchadd( group, regex, -1 )
let b:color_match_id += [ match ]
endif
let group = nextgroup
let groupstart = col
endfor
endif
endfunction
let s:_hexcolor = '#\(\x\{3}\|\x\{6}\)\>' " submatch 1
let s:_funcname = '\(rgb\|hsl\)a\?' " submatch 2
let s:_numval = '\(\d\{1,3}%\?\)' " submatch 3,4,5
let s:_ws_ = '\s*'
let s:_listsep = s:_ws_ . ',' . s:_ws_
let s:_otherargs_ = '\%(,[^)]*\)\?'
let s:_funcexpr = s:_funcname . '[(]' . s:_numval . s:_listsep . s:_numval . s:_listsep . s:_numval . s:_ws_ . s:_otherargs_ . '[)]'
let s:_csscolor = s:_hexcolor . '\|' . s:_funcexpr
" N.B. these substitute() calls are here just for the side effect
" of invoking s:create_syn_match during substitution -- because
" match() and friends do not allow finding all matches in a single
" scan without examining the start of the string over and over
function! s:parse_css_screen()
call substitute( join( getline('w0','w$'), "\n" ), s:_csscolor, '\=s:create_syn_match()', 'g' )
call s:update_matches()
endfunction
function! s:parse_any_screen()
call substitute( join( getline('w0','w$'), "\n" ), s:_hexcolor, '\=s:create_syn_match()', 'g' )
call s:update_matches()
endfunction
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
function! css_color#init(type, groups)
exe 'syn cluster colorableGroup contains=' . a:groups
let b:has_color_hi = {}
let b:has_pattern_syn = {}
let b:color_match_id = []
augroup CSSColor
autocmd! * <buffer>
exe 'autocmd CursorMoved,CursorMovedI <buffer> call s:parse_'.a:type.'_screen()'
augroup END
do CSSColor CursorMoved <buffer>
if a:type != 'css' | return | endif
hi BG000000 guibg=#000000 guifg=#FFFFFF ctermbg=16 ctermfg=231
hi BG000080 guibg=#000080 guifg=#FFFFFF ctermbg=235 ctermfg=231
hi BG00008b guibg=#00008B guifg=#FFFFFF ctermbg=4 ctermfg=231
hi BG0000cd guibg=#0000CD guifg=#FFFFFF ctermbg=4 ctermfg=231
hi BG0000ff guibg=#0000FF guifg=#FFFFFF ctermbg=4 ctermfg=231
hi BG006400 guibg=#006400 guifg=#FFFFFF ctermbg=235 ctermfg=231
hi BG008000 guibg=#008000 guifg=#FFFFFF ctermbg=2 ctermfg=231
hi BG008080 guibg=#008080 guifg=#FFFFFF ctermbg=30 ctermfg=231
hi BG008b8b guibg=#008B8B guifg=#FFFFFF ctermbg=30 ctermfg=231
hi BG00bfff guibg=#00BFFF guifg=#000000 ctermbg=6 ctermfg=16
hi BG00ced1 guibg=#00CED1 guifg=#000000 ctermbg=6 ctermfg=16
hi BG00fa9a guibg=#00FA9A guifg=#000000 ctermbg=6 ctermfg=16
hi BG00ff00 guibg=#00FF00 guifg=#000000 ctermbg=10 ctermfg=16
hi BG00ff7f guibg=#00FF7F guifg=#000000 ctermbg=6 ctermfg=16
hi BG00ffff guibg=#00FFFF guifg=#000000 ctermbg=51 ctermfg=16
hi BG191970 guibg=#191970 guifg=#FFFFFF ctermbg=237 ctermfg=231
hi BG1e90ff guibg=#1E90FF guifg=#000000 ctermbg=12 ctermfg=16
hi BG20b2aa guibg=#20B2AA guifg=#000000 ctermbg=37 ctermfg=16
hi BG228b22 guibg=#228B22 guifg=#FFFFFF ctermbg=2 ctermfg=231
hi BG2e8b57 guibg=#2E8B57 guifg=#FFFFFF ctermbg=240 ctermfg=231
hi BG2f4f4f guibg=#2F4F4F guifg=#FFFFFF ctermbg=238 ctermfg=231
hi BG32cd32 guibg=#32CD32 guifg=#000000 ctermbg=2 ctermfg=16
hi BG3cb371 guibg=#3CB371 guifg=#000000 ctermbg=71 ctermfg=16
hi BG40e0d0 guibg=#40E0D0 guifg=#000000 ctermbg=80 ctermfg=16
hi BG4169e1 guibg=#4169E1 guifg=#FFFFFF ctermbg=12 ctermfg=231
hi BG4682b4 guibg=#4682B4 guifg=#FFFFFF ctermbg=67 ctermfg=231
hi BG483d8b guibg=#483D8B guifg=#FFFFFF ctermbg=240 ctermfg=231
hi BG48d1cc guibg=#48D1CC guifg=#000000 ctermbg=80 ctermfg=16
hi BG4b0082 guibg=#4B0082 guifg=#FFFFFF ctermbg=238 ctermfg=231
hi BG556b2f guibg=#556B2F guifg=#FFFFFF ctermbg=239 ctermfg=231
hi BG5f9ea0 guibg=#5F9EA0 guifg=#000000 ctermbg=73 ctermfg=16
hi BG6495ed guibg=#6495ED guifg=#000000 ctermbg=12 ctermfg=16
hi BG66cdaa guibg=#66CDAA guifg=#000000 ctermbg=79 ctermfg=16
hi BG696969 guibg=#696969 guifg=#FFFFFF ctermbg=242 ctermfg=231
hi BG6a5acd guibg=#6A5ACD guifg=#FFFFFF ctermbg=12 ctermfg=231
hi BG6b8e23 guibg=#6B8E23 guifg=#FFFFFF ctermbg=241 ctermfg=231
hi BG708090 guibg=#708090 guifg=#000000 ctermbg=66 ctermfg=16
hi BG778899 guibg=#778899 guifg=#000000 ctermbg=102 ctermfg=16
hi BG7b68ee guibg=#7B68EE guifg=#000000 ctermbg=12 ctermfg=16
hi BG7cfc00 guibg=#7CFC00 guifg=#000000 ctermbg=3 ctermfg=16
hi BG7fff00 guibg=#7FFF00 guifg=#000000 ctermbg=3 ctermfg=16
hi BG7fffd4 guibg=#7FFFD4 guifg=#000000 ctermbg=122 ctermfg=16
hi BG800000 guibg=#800000 guifg=#FFFFFF ctermbg=88 ctermfg=231
hi BG800080 guibg=#800080 guifg=#FFFFFF ctermbg=240 ctermfg=231
hi BG808000 guibg=#808000 guifg=#FFFFFF ctermbg=240 ctermfg=231
hi BG808080 guibg=#808080 guifg=#000000 ctermbg=244 ctermfg=16
hi BG87ceeb guibg=#87CEEB guifg=#000000 ctermbg=117 ctermfg=16
hi BG87cefa guibg=#87CEFA guifg=#000000 ctermbg=117 ctermfg=16
hi BG8a2be2 guibg=#8A2BE2 guifg=#FFFFFF ctermbg=12 ctermfg=231
hi BG8b0000 guibg=#8B0000 guifg=#FFFFFF ctermbg=88 ctermfg=231
hi BG8b008b guibg=#8B008B guifg=#FFFFFF ctermbg=5 ctermfg=231
hi BG8b4513 guibg=#8B4513 guifg=#FFFFFF ctermbg=94 ctermfg=231
hi BG8fbc8f guibg=#8FBC8F guifg=#000000 ctermbg=108 ctermfg=16
hi BG90ee90 guibg=#90EE90 guifg=#000000 ctermbg=249 ctermfg=16
hi BG9370d8 guibg=#9370D8 guifg=#000000 ctermbg=12 ctermfg=16
hi BG9400d3 guibg=#9400D3 guifg=#FFFFFF ctermbg=5 ctermfg=231
hi BG98fb98 guibg=#98FB98 guifg=#000000 ctermbg=250 ctermfg=16
hi BG9932cc guibg=#9932CC guifg=#FFFFFF ctermbg=5 ctermfg=231
hi BG9acd32 guibg=#9ACD32 guifg=#000000 ctermbg=3 ctermfg=16
hi BGa0522d guibg=#A0522D guifg=#FFFFFF ctermbg=130 ctermfg=231
hi BGa52a2a guibg=#A52A2A guifg=#FFFFFF ctermbg=124 ctermfg=231
hi BGa9a9a9 guibg=#A9A9A9 guifg=#000000 ctermbg=248 ctermfg=16
hi BGadd8e6 guibg=#ADD8E6 guifg=#000000 ctermbg=152 ctermfg=16
hi BGadff2f guibg=#ADFF2F guifg=#000000 ctermbg=3 ctermfg=16
hi BGafeeee guibg=#AFEEEE guifg=#000000 ctermbg=159 ctermfg=16
hi BGb0c4de guibg=#B0C4DE guifg=#000000 ctermbg=152 ctermfg=16
hi BGb0e0e6 guibg=#B0E0E6 guifg=#000000 ctermbg=152 ctermfg=16
hi BGb22222 guibg=#B22222 guifg=#FFFFFF ctermbg=124 ctermfg=231
hi BGb8860b guibg=#B8860B guifg=#000000 ctermbg=3 ctermfg=16
hi BGba55d3 guibg=#BA55D3 guifg=#000000 ctermbg=5 ctermfg=16
hi BGbc8f8f guibg=#BC8F8F guifg=#000000 ctermbg=138 ctermfg=16
hi BGbdb76b guibg=#BDB76B guifg=#000000 ctermbg=247 ctermfg=16
hi BGc0c0c0 guibg=#C0C0C0 guifg=#000000 ctermbg=250 ctermfg=16
hi BGc71585 guibg=#C71585 guifg=#FFFFFF ctermbg=5 ctermfg=231
hi BGcd5c5c guibg=#CD5C5C guifg=#000000 ctermbg=167 ctermfg=16
hi BGcd853f guibg=#CD853F guifg=#000000 ctermbg=173 ctermfg=16
hi BGd2691e guibg=#D2691E guifg=#000000 ctermbg=166 ctermfg=16
hi BGd2b48c guibg=#D2B48C guifg=#000000 ctermbg=180 ctermfg=16
hi BGd3d3d3 guibg=#D3D3D3 guifg=#000000 ctermbg=252 ctermfg=16
hi BGd87093 guibg=#D87093 guifg=#000000 ctermbg=168 ctermfg=16
hi BGd8bfd8 guibg=#D8BFD8 guifg=#000000 ctermbg=252 ctermfg=16
hi BGda70d6 guibg=#DA70D6 guifg=#000000 ctermbg=249 ctermfg=16
hi BGdaa520 guibg=#DAA520 guifg=#000000 ctermbg=3 ctermfg=16
hi BGdc143c guibg=#DC143C guifg=#FFFFFF ctermbg=161 ctermfg=231
hi BGdcdcdc guibg=#DCDCDC guifg=#000000 ctermbg=253 ctermfg=16
hi BGdda0dd guibg=#DDA0DD guifg=#000000 ctermbg=182 ctermfg=16
hi BGdeb887 guibg=#DEB887 guifg=#000000 ctermbg=180 ctermfg=16
hi BGe0ffff guibg=#E0FFFF guifg=#000000 ctermbg=195 ctermfg=16
hi BGe6e6fa guibg=#E6E6FA guifg=#000000 ctermbg=255 ctermfg=16
hi BGe9967a guibg=#E9967A guifg=#000000 ctermbg=174 ctermfg=16
hi BGee82ee guibg=#EE82EE guifg=#000000 ctermbg=251 ctermfg=16
hi BGeee8aa guibg=#EEE8AA guifg=#000000 ctermbg=223 ctermfg=16
hi BGf08080 guibg=#F08080 guifg=#000000 ctermbg=210 ctermfg=16
hi BGf0e68c guibg=#F0E68C guifg=#000000 ctermbg=222 ctermfg=16
hi BGf0f8ff guibg=#F0F8FF guifg=#000000 ctermbg=15 ctermfg=16
hi BGf0fff0 guibg=#F0FFF0 guifg=#000000 ctermbg=255 ctermfg=16
hi BGf0ffff guibg=#F0FFFF guifg=#000000 ctermbg=15 ctermfg=16
hi BGf4a460 guibg=#F4A460 guifg=#000000 ctermbg=215 ctermfg=16
hi BGf5deb3 guibg=#F5DEB3 guifg=#000000 ctermbg=223 ctermfg=16
hi BGf5f5dc guibg=#F5F5DC guifg=#000000 ctermbg=255 ctermfg=16
hi BGf5f5f5 guibg=#F5F5F5 guifg=#000000 ctermbg=255 ctermfg=16
hi BGf5fffa guibg=#F5FFFA guifg=#000000 ctermbg=15 ctermfg=16
hi BGf8f8ff guibg=#F8F8FF guifg=#000000 ctermbg=15 ctermfg=16
hi BGfa8072 guibg=#FA8072 guifg=#000000 ctermbg=209 ctermfg=16
hi BGfaebd7 guibg=#FAEBD7 guifg=#000000 ctermbg=7 ctermfg=16
hi BGfaf0e6 guibg=#FAF0E6 guifg=#000000 ctermbg=255 ctermfg=16
hi BGfafad2 guibg=#FAFAD2 guifg=#000000 ctermbg=255 ctermfg=16
hi BGfdf5e6 guibg=#FDF5E6 guifg=#000000 ctermbg=255 ctermfg=16
hi BGff0000 guibg=#FF0000 guifg=#FFFFFF ctermbg=196 ctermfg=231
hi BGff00ff guibg=#FF00FF guifg=#FFFFFF ctermbg=13 ctermfg=231
hi BGff1493 guibg=#FF1493 guifg=#FFFFFF ctermbg=5 ctermfg=231
hi BGff4500 guibg=#FF4500 guifg=#FFFFFF ctermbg=9 ctermfg=231
hi BGff6347 guibg=#FF6347 guifg=#000000 ctermbg=203 ctermfg=16
hi BGff69b4 guibg=#FF69B4 guifg=#000000 ctermbg=205 ctermfg=16
hi BGff7f50 guibg=#FF7F50 guifg=#000000 ctermbg=209 ctermfg=16
hi BGff8c00 guibg=#FF8C00 guifg=#000000 ctermbg=3 ctermfg=16
hi BGffa07a guibg=#FFA07A guifg=#000000 ctermbg=216 ctermfg=16
hi BGffa500 guibg=#FFA500 guifg=#000000 ctermbg=3 ctermfg=16
hi BGffb6c1 guibg=#FFB6C1 guifg=#000000 ctermbg=217 ctermfg=16
hi BGffc0cb guibg=#FFC0CB guifg=#000000 ctermbg=218 ctermfg=16
hi BGffd700 guibg=#FFD700 guifg=#000000 ctermbg=11 ctermfg=16
hi BGffdab9 guibg=#FFDAB9 guifg=#000000 ctermbg=223 ctermfg=16
hi BGffdead guibg=#FFDEAD guifg=#000000 ctermbg=223 ctermfg=16
hi BGffe4b5 guibg=#FFE4B5 guifg=#000000 ctermbg=223 ctermfg=16
hi BGffe4c4 guibg=#FFE4C4 guifg=#000000 ctermbg=224 ctermfg=16
hi BGffe4e1 guibg=#FFE4E1 guifg=#000000 ctermbg=224 ctermfg=16
hi BGffebcd guibg=#FFEBCD guifg=#000000 ctermbg=7 ctermfg=16
hi BGffefd5 guibg=#FFEFD5 guifg=#000000 ctermbg=255 ctermfg=16
hi BGfff0f5 guibg=#FFF0F5 guifg=#000000 ctermbg=15 ctermfg=16
hi BGfff5ee guibg=#FFF5EE guifg=#000000 ctermbg=255 ctermfg=16
hi BGfff8dc guibg=#FFF8DC guifg=#000000 ctermbg=255 ctermfg=16
hi BGfffacd guibg=#FFFACD guifg=#000000 ctermbg=255 ctermfg=16
hi BGfffaf0 guibg=#FFFAF0 guifg=#000000 ctermbg=15 ctermfg=16
hi BGfffafa guibg=#FFFAFA guifg=#000000 ctermbg=15 ctermfg=16
hi BGffff00 guibg=#FFFF00 guifg=#000000 ctermbg=11 ctermfg=16
hi BGffffe0 guibg=#FFFFE0 guifg=#000000 ctermbg=255 ctermfg=16
hi BGfffff0 guibg=#FFFFF0 guifg=#000000 ctermbg=15 ctermfg=16
hi BGffffff guibg=#FFFFFF guifg=#000000 ctermbg=231 ctermfg=16
" W3C Colors
syn keyword BG000000 black contained containedin=@colorableGroup
syn keyword BGc0c0c0 silver contained containedin=@colorableGroup
syn keyword BG808080 gray contained containedin=@colorableGroup
syn match BGffffff "\<white\(-\)\@!\>" contained containedin=@colorableGroup
syn keyword BG800000 maroon contained containedin=@colorableGroup
syn keyword BGff0000 red contained containedin=@colorableGroup
syn keyword BG800080 purple contained containedin=@colorableGroup
syn keyword BGff00ff fuchsia contained containedin=@colorableGroup
syn keyword BG008000 green contained containedin=@colorableGroup
syn keyword BG00ff00 lime contained containedin=@colorableGroup
syn keyword BG808000 olive contained containedin=@colorableGroup
syn keyword BGffff00 yellow contained containedin=@colorableGroup
syn keyword BG000080 navy contained containedin=@colorableGroup
syn keyword BG0000ff blue contained containedin=@colorableGroup
syn keyword BG008080 teal contained containedin=@colorableGroup
syn keyword BG00ffff aqua contained containedin=@colorableGroup
" extra colors
syn keyword BGf0f8ff AliceBlue contained containedin=@colorableGroup
syn keyword BGfaebd7 AntiqueWhite contained containedin=@colorableGroup
syn keyword BG7fffd4 Aquamarine contained containedin=@colorableGroup
syn keyword BGf0ffff Azure contained containedin=@colorableGroup
syn keyword BGf5f5dc Beige contained containedin=@colorableGroup
syn keyword BGffe4c4 Bisque contained containedin=@colorableGroup
syn keyword BGffebcd BlanchedAlmond contained containedin=@colorableGroup
syn keyword BG8a2be2 BlueViolet contained containedin=@colorableGroup
syn keyword BGa52a2a Brown contained containedin=@colorableGroup
syn keyword BGdeb887 BurlyWood contained containedin=@colorableGroup
syn keyword BG5f9ea0 CadetBlue contained containedin=@colorableGroup
syn keyword BG7fff00 Chartreuse contained containedin=@colorableGroup
syn keyword BGd2691e Chocolate contained containedin=@colorableGroup
syn keyword BGff7f50 Coral contained containedin=@colorableGroup
syn keyword BG6495ed CornflowerBlue contained containedin=@colorableGroup
syn keyword BGfff8dc Cornsilk contained containedin=@colorableGroup
syn keyword BGdc143c Crimson contained containedin=@colorableGroup
syn keyword BG00ffff Cyan contained containedin=@colorableGroup
syn keyword BG00008b DarkBlue contained containedin=@colorableGroup
syn keyword BG008b8b DarkCyan contained containedin=@colorableGroup
syn keyword BGb8860b DarkGoldenRod contained containedin=@colorableGroup
syn keyword BGa9a9a9 DarkGray contained containedin=@colorableGroup
syn keyword BG006400 DarkGreen contained containedin=@colorableGroup
syn keyword BGa9a9a9 DarkGrey contained containedin=@colorableGroup
syn keyword BGbdb76b DarkKhaki contained containedin=@colorableGroup
syn keyword BG8b008b DarkMagenta contained containedin=@colorableGroup
syn keyword BG556b2f DarkOliveGreen contained containedin=@colorableGroup
syn keyword BG9932cc DarkOrchid contained containedin=@colorableGroup
syn keyword BG8b0000 DarkRed contained containedin=@colorableGroup
syn keyword BGe9967a DarkSalmon contained containedin=@colorableGroup
syn keyword BG8fbc8f DarkSeaGreen contained containedin=@colorableGroup
syn keyword BG483d8b DarkSlateBlue contained containedin=@colorableGroup
syn keyword BG2f4f4f DarkSlateGray contained containedin=@colorableGroup
syn keyword BG2f4f4f DarkSlateGrey contained containedin=@colorableGroup
syn keyword BG00ced1 DarkTurquoise contained containedin=@colorableGroup
syn keyword BG9400d3 DarkViolet contained containedin=@colorableGroup
syn keyword BGff8c00 Darkorange contained containedin=@colorableGroup
syn keyword BGff1493 DeepPink contained containedin=@colorableGroup
syn keyword BG00bfff DeepSkyBlue contained containedin=@colorableGroup
syn keyword BG696969 DimGray contained containedin=@colorableGroup
syn keyword BG696969 DimGrey contained containedin=@colorableGroup
syn keyword BG1e90ff DodgerBlue contained containedin=@colorableGroup
syn keyword BGb22222 FireBrick contained containedin=@colorableGroup
syn keyword BGfffaf0 FloralWhite contained containedin=@colorableGroup
syn keyword BG228b22 ForestGreen contained containedin=@colorableGroup
syn keyword BGdcdcdc Gainsboro contained containedin=@colorableGroup
syn keyword BGf8f8ff GhostWhite contained containedin=@colorableGroup
syn keyword BGffd700 Gold contained containedin=@colorableGroup
syn keyword BGdaa520 GoldenRod contained containedin=@colorableGroup
syn keyword BGadff2f GreenYellow contained containedin=@colorableGroup
syn keyword BG808080 Grey contained containedin=@colorableGroup
syn keyword BGf0fff0 HoneyDew contained containedin=@colorableGroup
syn keyword BGff69b4 HotPink contained containedin=@colorableGroup
syn keyword BGcd5c5c IndianRed contained containedin=@colorableGroup
syn keyword BG4b0082 Indigo contained containedin=@colorableGroup
syn keyword BGfffff0 Ivory contained containedin=@colorableGroup
syn keyword BGf0e68c Khaki contained containedin=@colorableGroup
syn keyword BGe6e6fa Lavender contained containedin=@colorableGroup
syn keyword BGfff0f5 LavenderBlush contained containedin=@colorableGroup
syn keyword BG7cfc00 LawnGreen contained containedin=@colorableGroup
syn keyword BGfffacd LemonChiffon contained containedin=@colorableGroup
syn keyword BGadd8e6 LightBlue contained containedin=@colorableGroup
syn keyword BGf08080 LightCoral contained containedin=@colorableGroup
syn keyword BGe0ffff LightCyan contained containedin=@colorableGroup
syn keyword BGfafad2 LightGoldenRodYellow contained containedin=@colorableGroup
syn keyword BGd3d3d3 LightGray contained containedin=@colorableGroup
syn keyword BG90ee90 LightGreen contained containedin=@colorableGroup
syn keyword BGd3d3d3 LightGrey contained containedin=@colorableGroup
syn keyword BGffb6c1 LightPink contained containedin=@colorableGroup
syn keyword BGffa07a LightSalmon contained containedin=@colorableGroup
syn keyword BG20b2aa LightSeaGreen contained containedin=@colorableGroup
syn keyword BG87cefa LightSkyBlue contained containedin=@colorableGroup
syn keyword BG778899 LightSlateGray contained containedin=@colorableGroup
syn keyword BG778899 LightSlateGrey contained containedin=@colorableGroup
syn keyword BGb0c4de LightSteelBlue contained containedin=@colorableGroup
syn keyword BGffffe0 LightYellow contained containedin=@colorableGroup
syn keyword BG32cd32 LimeGreen contained containedin=@colorableGroup
syn keyword BGfaf0e6 Linen contained containedin=@colorableGroup
syn keyword BGff00ff Magenta contained containedin=@colorableGroup
syn keyword BG66cdaa MediumAquaMarine contained containedin=@colorableGroup
syn keyword BG0000cd MediumBlue contained containedin=@colorableGroup
syn keyword BGba55d3 MediumOrchid contained containedin=@colorableGroup
syn keyword BG9370d8 MediumPurple contained containedin=@colorableGroup
syn keyword BG3cb371 MediumSeaGreen contained containedin=@colorableGroup
syn keyword BG7b68ee MediumSlateBlue contained containedin=@colorableGroup
syn keyword BG00fa9a MediumSpringGreen contained containedin=@colorableGroup
syn keyword BG48d1cc MediumTurquoise contained containedin=@colorableGroup
syn keyword BGc71585 MediumVioletRed contained containedin=@colorableGroup
syn keyword BG191970 MidnightBlue contained containedin=@colorableGroup
syn keyword BGf5fffa MintCream contained containedin=@colorableGroup
syn keyword BGffe4e1 MistyRose contained containedin=@colorableGroup
syn keyword BGffe4b5 Moccasin contained containedin=@colorableGroup
syn keyword BGffdead NavajoWhite contained containedin=@colorableGroup
syn keyword BGfdf5e6 OldLace contained containedin=@colorableGroup
syn keyword BG6b8e23 OliveDrab contained containedin=@colorableGroup
syn keyword BGffa500 Orange contained containedin=@colorableGroup
syn keyword BGff4500 OrangeRed contained containedin=@colorableGroup
syn keyword BGda70d6 Orchid contained containedin=@colorableGroup
syn keyword BGeee8aa PaleGoldenRod contained containedin=@colorableGroup
syn keyword BG98fb98 PaleGreen contained containedin=@colorableGroup
syn keyword BGafeeee PaleTurquoise contained containedin=@colorableGroup
syn keyword BGd87093 PaleVioletRed contained containedin=@colorableGroup
syn keyword BGffefd5 PapayaWhip contained containedin=@colorableGroup
syn keyword BGffdab9 PeachPuff contained containedin=@colorableGroup
syn keyword BGcd853f Peru contained containedin=@colorableGroup
syn keyword BGffc0cb Pink contained containedin=@colorableGroup
syn keyword BGdda0dd Plum contained containedin=@colorableGroup
syn keyword BGb0e0e6 PowderBlue contained containedin=@colorableGroup
syn keyword BGbc8f8f RosyBrown contained containedin=@colorableGroup
syn keyword BG4169e1 RoyalBlue contained containedin=@colorableGroup
syn keyword BG8b4513 SaddleBrown contained containedin=@colorableGroup
syn keyword BGfa8072 Salmon contained containedin=@colorableGroup
syn keyword BGf4a460 SandyBrown contained containedin=@colorableGroup
syn keyword BG2e8b57 SeaGreen contained containedin=@colorableGroup
syn keyword BGfff5ee SeaShell contained containedin=@colorableGroup
syn keyword BGa0522d Sienna contained containedin=@colorableGroup
syn keyword BG87ceeb SkyBlue contained containedin=@colorableGroup
syn keyword BG6a5acd SlateBlue contained containedin=@colorableGroup
syn keyword BG708090 SlateGray contained containedin=@colorableGroup
syn keyword BG708090 SlateGrey contained containedin=@colorableGroup
syn keyword BGfffafa Snow contained containedin=@colorableGroup
syn keyword BG00ff7f SpringGreen contained containedin=@colorableGroup
syn keyword BG4682b4 SteelBlue contained containedin=@colorableGroup
syn keyword BGd2b48c Tan contained containedin=@colorableGroup
syn keyword BGd8bfd8 Thistle contained containedin=@colorableGroup
syn keyword BGff6347 Tomato contained containedin=@colorableGroup
syn keyword BG40e0d0 Turquoise contained containedin=@colorableGroup
syn keyword BGee82ee Violet contained containedin=@colorableGroup
syn keyword BGf5deb3 Wheat contained containedin=@colorableGroup
syn keyword BGf5f5f5 WhiteSmoke contained containedin=@colorableGroup
syn keyword BG9acd32 YellowGreen contained containedin=@colorableGroup
endfunction

View File

@@ -58,7 +58,7 @@ function! go#complete#Package(ArgLead, CmdLine, CursorPos)
if executable('go') if executable('go')
let goroot = substitute(system('go env GOROOT'), '\n', '', 'g') let goroot = substitute(system('go env GOROOT'), '\n', '', 'g')
if v:shell_error if v:shell_error
echomsg '\'go env GOROOT\' failed' echomsg '''go env GOROOT'' failed'
endif endif
else else
let goroot = $GOROOT let goroot = $GOROOT

View File

@@ -10,6 +10,8 @@ if !exists('g:aria_attributes_complete')
let g:aria_attributes_complete = 1 let g:aria_attributes_complete = 1
endif endif
let b:html_omni_flavor = 'html5'
function! htmlcomplete#CompleteTags(findstart, base) function! htmlcomplete#CompleteTags(findstart, base)
if a:findstart if a:findstart
" locate the start of the word " locate the start of the word
@@ -763,9 +765,9 @@ endfunction
function! htmlcomplete#LoadData() " {{{ function! htmlcomplete#LoadData() " {{{
if !exists("b:html_omni_flavor") if !exists("b:html_omni_flavor")
if &filetype == 'html' if &filetype == 'html'
let b:html_omni_flavor = 'html401t' let b:html_omni_flavor = 'html5'
else else
let b:html_omni_flavor = 'xhtml10s' let b:html_omni_flavor = 'html5'
endif endif
endif endif
" With that if we still have bloated memory but create new buffer " With that if we still have bloated memory but create new buffer

View File

@@ -342,7 +342,7 @@ let abutton_dec = 'details\\|embed\\|iframe\\|keygen\\|label\\|menu\\|select\\|t
let g:xmldata_html5 = { let g:xmldata_html5 = {
\ 'vimxmlentities': ['AElig', 'Aacute', 'Acirc', 'Agrave', 'Alpha', 'Aring', 'Atilde', 'Auml', 'Beta', 'Ccedil', 'Chi', 'Dagger', 'Delta', 'ETH', 'Eacute', 'Ecirc', 'Egrave', 'Epsilon', 'Eta', 'Euml', 'Gamma', 'Iacute', 'Icirc', 'Igrave', 'Iota', 'Iuml', 'Kappa', 'Lambda', 'Mu', 'Ntilde', 'Nu', 'OElig', 'Oacute', 'Ocirc', 'Ograve', 'Omega', 'Omicron', 'Oslash', 'Otilde', 'Ouml', 'Phi', 'Pi', 'Prime', 'Psi', 'Rho', 'Scaron', 'Sigma', 'THORN', 'Tau', 'Theta', 'Uacute', 'Ucirc', 'Ugrave', 'Upsilon', 'Uuml', 'Xi', 'Yacute', 'Yuml', 'Zeta', 'aacute', 'acirc', 'acute', 'aelig', 'agrave', 'alefsym', 'alpha', 'amp', 'and', 'ang', 'apos', 'aring', 'asymp', 'atilde', 'auml', 'bdquo', 'beta', 'brvbar', 'bull', 'cap', 'ccedil', 'cedil', 'cent', 'chi', 'circ', 'clubs', 'cong', 'copy', 'crarr', 'cup', 'curren', 'dArr', 'dagger', 'darr', 'deg', 'delta', 'diams', 'divide', 'eacute', 'ecirc', 'egrave', 'empty', 'emsp', 'ensp', 'epsilon', 'equiv', 'eta', 'eth', 'euml', 'euro', 'exist', 'fnof', 'forall', 'frac12', 'frac14', 'frac34', 'frasl', 'gamma', 'ge', 'gt', 'hArr', 'harr', 'hearts', 'hellip', 'iacute', 'icirc', 'iexcl', 'igrave', 'image', 'infin', 'int', 'iota', 'iquest', 'isin', 'iuml', 'kappa', 'lArr', 'lambda', 'lang', 'laquo', 'larr', 'lceil', 'ldquo', 'le', 'lfloor', 'lowast', 'loz', 'lrm', 'lsaquo', 'lsquo', 'lt', 'macr', 'mdash', 'micro', 'middot', 'minus', 'mu', 'nabla', 'nbsp', 'ndash', 'ne', 'ni', 'not', 'notin', 'nsub', 'ntilde', 'nu', 'oacute', 'ocirc', 'oelig', 'ograve', 'oline', 'omega', 'omicron', 'oplus', 'or', 'ordf', 'ordm', 'oslash', 'otilde', 'otimes', 'ouml', 'para', 'part', 'permil', 'perp', 'phi', 'pi', 'piv', 'plusmn', 'pound', 'prime', 'prod', 'prop', 'psi', 'quot', 'rArr', 'radic', 'rang', 'raquo', 'rarr', 'rceil', 'rdquo', 'real', 'reg', 'rfloor', 'rho', 'rlm', 'rsaquo', 'rsquo', 'sbquo', 'scaron', 'sdot', 'sect', 'shy', 'sigma', 'sigmaf', 'sim', 'spades', 'sub', 'sube', 'sum', 'sup', 'sup1', 'sup2', 'sup3', 'supe', 'szlig', 'tau', 'there4', 'theta', 'thetasym', 'thinsp', 'thorn', 'tilde', 'times', 'trade', 'uArr', 'uacute', 'uarr', 'ucirc', 'ugrave', 'uml', 'upsih', 'upsilon', 'uuml', 'weierp', 'xi', 'yacute', 'yen', 'yuml', 'zeta', 'zwj', 'zwnj'], \ 'vimxmlentities': ['AElig', 'Aacute', 'Acirc', 'Agrave', 'Alpha', 'Aring', 'Atilde', 'Auml', 'Beta', 'Ccedil', 'Chi', 'Dagger', 'Delta', 'ETH', 'Eacute', 'Ecirc', 'Egrave', 'Epsilon', 'Eta', 'Euml', 'Gamma', 'Iacute', 'Icirc', 'Igrave', 'Iota', 'Iuml', 'Kappa', 'Lambda', 'Mu', 'Ntilde', 'Nu', 'OElig', 'Oacute', 'Ocirc', 'Ograve', 'Omega', 'Omicron', 'Oslash', 'Otilde', 'Ouml', 'Phi', 'Pi', 'Prime', 'Psi', 'Rho', 'Scaron', 'Sigma', 'THORN', 'Tau', 'Theta', 'Uacute', 'Ucirc', 'Ugrave', 'Upsilon', 'Uuml', 'Xi', 'Yacute', 'Yuml', 'Zeta', 'aacute', 'acirc', 'acute', 'aelig', 'agrave', 'alefsym', 'alpha', 'amp', 'and', 'ang', 'apos', 'aring', 'asymp', 'atilde', 'auml', 'bdquo', 'beta', 'brvbar', 'bull', 'cap', 'ccedil', 'cedil', 'cent', 'chi', 'circ', 'clubs', 'cong', 'copy', 'crarr', 'cup', 'curren', 'dArr', 'dagger', 'darr', 'deg', 'delta', 'diams', 'divide', 'eacute', 'ecirc', 'egrave', 'empty', 'emsp', 'ensp', 'epsilon', 'equiv', 'eta', 'eth', 'euml', 'euro', 'exist', 'fnof', 'forall', 'frac12', 'frac14', 'frac34', 'frasl', 'gamma', 'ge', 'gt', 'hArr', 'harr', 'hearts', 'hellip', 'iacute', 'icirc', 'iexcl', 'igrave', 'image', 'infin', 'int', 'iota', 'iquest', 'isin', 'iuml', 'kappa', 'lArr', 'lambda', 'lang', 'laquo', 'larr', 'lceil', 'ldquo', 'le', 'lfloor', 'lowast', 'loz', 'lrm', 'lsaquo', 'lsquo', 'lt', 'macr', 'mdash', 'micro', 'middot', 'minus', 'mu', 'nabla', 'nbsp', 'ndash', 'ne', 'ni', 'not', 'notin', 'nsub', 'ntilde', 'nu', 'oacute', 'ocirc', 'oelig', 'ograve', 'oline', 'omega', 'omicron', 'oplus', 'or', 'ordf', 'ordm', 'oslash', 'otilde', 'otimes', 'ouml', 'para', 'part', 'permil', 'perp', 'phi', 'pi', 'piv', 'plusmn', 'pound', 'prime', 'prod', 'prop', 'psi', 'quot', 'rArr', 'radic', 'rang', 'raquo', 'rarr', 'rceil', 'rdquo', 'real', 'reg', 'rfloor', 'rho', 'rlm', 'rsaquo', 'rsquo', 'sbquo', 'scaron', 'sdot', 'sect', 'shy', 'sigma', 'sigmaf', 'sim', 'spades', 'sub', 'sube', 'sum', 'sup', 'sup1', 'sup2', 'sup3', 'supe', 'szlig', 'tau', 'there4', 'theta', 'thetasym', 'thinsp', 'thorn', 'tilde', 'times', 'trade', 'uArr', 'uacute', 'uarr', 'ucirc', 'ugrave', 'uml', 'upsih', 'upsilon', 'uuml', 'weierp', 'xi', 'yacute', 'yen', 'yuml', 'zeta', 'zwj', 'zwnj'],
\ 'vimxmlroot': ['html'], \ 'vimxmlroot': ['html', 'head', 'body'] + flow_elements,
\ 'a': [ \ 'a': [
\ filter(copy(flow_elements), "!(v:val =~ '". abutton_dec ."')"), \ filter(copy(flow_elements), "!(v:val =~ '". abutton_dec ."')"),
\ extend(copy(global_attributes), {'name': [], 'href': [], 'target': [], 'rel': linktypes, 'hreflang': lang_tag, 'media': [], 'type': []}) \ extend(copy(global_attributes), {'name': [], 'href': [], 'target': [], 'rel': linktypes, 'hreflang': lang_tag, 'media': [], 'type': []})

19
build
View File

@@ -54,7 +54,8 @@ copy_dir() {
for file in $(find "$1/$2" -name '*.vim'); do for file in $(find "$1/$2" -name '*.vim'); do
file_path="$(dirname "${file##$1/}")" file_path="$(dirname "${file##$1/}")"
mkdir -p "$file_path" mkdir -p "$file_path"
cp $file $file_path/ touch "$file_path/$(basename "$file")"
cat $file >> $file_path/$(basename "$file")
done done
} }
@@ -68,21 +69,24 @@ PACKS="
arduino:sudar/vim-arduino-syntax arduino:sudar/vim-arduino-syntax
c++11:octol/vim-cpp-enhanced-highlight c++11:octol/vim-cpp-enhanced-highlight
c/c++:vim-jp/cpp-vim c/c++:vim-jp/cpp-vim
c-extensions:kergoth/aftersyntaxc.vim
clojure:guns/vim-clojure-static clojure:guns/vim-clojure-static
coffee-script:kchmck/vim-coffee-script coffee-script:kchmck/vim-coffee-script
css-color:ap/vim-css-color
csv:chrisbra/csv.vim csv:chrisbra/csv.vim
cucumber:tpope/vim-cucumber cucumber:tpope/vim-cucumber
dockerfile:honza/dockerfile.vim dockerfile:honza/dockerfile.vim
elixir:elixir-lang/vim-elixir elixir:elixir-lang/vim-elixir
emberscript:heartsentwined/vim-ember-script
erlang:oscarh/vimerl erlang:oscarh/vimerl
git:tpope/vim-git git:tpope/vim-git
go:jnwhiteh/vim-golang go:jnwhiteh/vim-golang
haml:tpope/vim-haml haml:tpope/vim-haml
handlebars:nono/vim-handlebars handlebars:mustache/vim-mustache-handlebars
haskell:travitch/hasksyn haskell:travitch/hasksyn
haxe:yaymukund/vim-haxe
html5:othree/html5.vim html5:othree/html5.vim
jade:digitaltoad/vim-jade jade:digitaltoad/vim-jade
jasmine:glanotte/vim-jasmine
javascript:pangloss/vim-javascript javascript:pangloss/vim-javascript
json:leshill/vim-json json:leshill/vim-json
jst:briancollins/vim-jst jst:briancollins/vim-jst
@@ -92,11 +96,12 @@ PACKS="
nginx:mutewinter/nginx.vim nginx:mutewinter/nginx.vim
ocaml:jrk/vim-ocaml ocaml:jrk/vim-ocaml
octave:vim-scripts/octave.vim-- octave:vim-scripts/octave.vim--
opencl:petRUShka/vim-opencl
perl:vim-perl/vim-perl perl:vim-perl/vim-perl
php:StanAngeloff/php.vim php:StanAngeloff/php.vim
puppet:ajf/puppet-vim puppet:rodjek/vim-puppet
protobuf:uarun/vim-protobuf protobuf:uarun/vim-protobuf
python:vim-scripts/python.vim--Vasiliev python:mitsuhiko/vim-python-combined
r-lang:vim-scripts/R.vim r-lang:vim-scripts/R.vim
rspec:sheerun/rspec.vim rspec:sheerun/rspec.vim
ruby:vim-ruby/vim-ruby ruby:vim-ruby/vim-ruby
@@ -105,13 +110,17 @@ PACKS="
scala:derekwyatt/vim-scala scala:derekwyatt/vim-scala
slim:slim-template/vim-slim slim:slim-template/vim-slim
stylus:wavded/vim-stylus stylus:wavded/vim-stylus
systemd:kurayama/systemd-vim-syntax
textile:timcharper/textile.vim textile:timcharper/textile.vim
tmux:acustodioo/vim-tmux tmux:acustodioo/vim-tmux
tomdoc:duwanis/tomdoc.vim tomdoc:duwanis/tomdoc.vim
typescript:leafgarland/typescript-vim typescript:leafgarland/typescript-vim
vbnet:vim-scripts/vbnet.vim vbnet:vim-scripts/vbnet.vim
toml:cespare/vim-toml
twig:beyondwords/vim-twig twig:beyondwords/vim-twig
xls:vim-scripts/XSLT-syntax xls:vim-scripts/XSLT-syntax
yard:sheerun/vim-yardoc
css-color:ap/vim-css-color
" "
rm -rf tmp rm -rf tmp

View File

@@ -75,8 +75,8 @@ augroup CoffeeUpdateMakePrg
" Set autocmd locally if compiler was set locally. " Set autocmd locally if compiler was set locally.
if &l:makeprg =~ s:pat if &l:makeprg =~ s:pat
autocmd BufFilePost,BufWritePost <buffer> call s:UpdateMakePrg() autocmd BufWritePre,BufFilePost <buffer> call s:UpdateMakePrg()
else else
autocmd BufFilePost,BufWritePost call s:UpdateMakePrg() autocmd BufWritePre,BufFilePost call s:UpdateMakePrg()
endif endif
augroup END augroup END

30
compiler/go.vim Normal file
View File

@@ -0,0 +1,30 @@
" Copyright 2013 The Go Authors. All rights reserved.
" Use of this source code is governed by a BSD-style
" license that can be found in the LICENSE file.
"
" compiler/go.vim: Vim compiler file for Go.
if exists("current_compiler")
finish
endif
let current_compiler = "go"
if exists(":CompilerSet") != 2
command -nargs=* CompilerSet setlocal <args>
endif
let s:save_cpo = &cpo
set cpo-=C
CompilerSet makeprg=go\ build
CompilerSet errorformat=
\%-G#\ %.%#,
\%A%f:%l:%c:\ %m,
\%A%f:%l:\ %m,
\%C%*\\s%m,
\%-G%.%#
let &cpo = s:save_cpo
unlet s:save_cpo
" vim:ts=4:sw=4:et

View File

@@ -15,7 +15,7 @@ endif
let s:cpo_save = &cpo let s:cpo_save = &cpo
set cpo-=C set cpo-=C
CompilerSet makeprg=haml\ -c CompilerSet makeprg=haml
CompilerSet errorformat= CompilerSet errorformat=
\Haml\ %trror\ on\ line\ %l:\ %m, \Haml\ %trror\ on\ line\ %l:\ %m,

View File

@@ -17,6 +17,8 @@ let s:cpo_save = &cpo
set cpo-=C set cpo-=C
CompilerSet makeprg=testrb CompilerSet makeprg=testrb
" CompilerSet makeprg=ruby\ -Itest
" CompilerSet makeprg=m
CompilerSet errorformat=\%W\ %\\+%\\d%\\+)\ Failure:, CompilerSet errorformat=\%W\ %\\+%\\d%\\+)\ Failure:,
\%C%m\ [%f:%l]:, \%C%m\ [%f:%l]:,

View File

@@ -15,7 +15,7 @@ endif
let s:cpo_save = &cpo let s:cpo_save = &cpo
set cpo-=C set cpo-=C
CompilerSet makeprg=sass\ -c CompilerSet makeprg=sass
CompilerSet errorformat= CompilerSet errorformat=
\%f:%l:%m\ (Sass::Syntax%trror), \%f:%l:%m\ (Sass::Syntax%trror),

View File

@@ -1,5 +1,5 @@
au BufRead,BufNewFile *.ino,*.pde set filetype=arduino au BufRead,BufNewFile *.ino,*.pde set filetype=arduino
au BufNewFile,BufRead *.clj,*.cljs,*.edn setf clojure autocmd BufNewFile,BufRead *.clj,*.cljs,*.edn setlocal filetype=clojure
autocmd BufNewFile,BufRead *.coffee set filetype=coffee autocmd BufNewFile,BufRead *.coffee set filetype=coffee
autocmd BufNewFile,BufRead *Cakefile set filetype=coffee autocmd BufNewFile,BufRead *Cakefile set filetype=coffee
autocmd BufNewFile,BufRead *.coffeekup,*.ck set filetype=coffee autocmd BufNewFile,BufRead *.coffeekup,*.ck set filetype=coffee
@@ -15,15 +15,14 @@ autocmd BufNewFile,BufReadPost *.feature,*.story set filetype=cucumber
au BufNewFile,BufRead Dockerfile set filetype=dockerfile au BufNewFile,BufRead Dockerfile set filetype=dockerfile
au BufRead,BufNewFile *.ex,*.exs set filetype=elixir au BufRead,BufNewFile *.ex,*.exs set filetype=elixir
au FileType elixir setl sw=2 sts=2 et iskeyword+=!,? au FileType elixir setl sw=2 sts=2 et iskeyword+=!,?
autocmd BufNewFile,BufRead *.git/{,modules/**/}{COMMIT_EDIT,MERGE_}MSG set ft=gitcommit autocmd BufNewFile,BufRead *.em set filetype=ember-script
autocmd FileType ember-script set tabstop=2|set shiftwidth=2|set expandtab
autocmd BufNewFile,BufRead *.git/{,modules/**/}{COMMIT_EDIT,TAG_EDIT,MERGE_,}MSG set ft=gitcommit
autocmd BufNewFile,BufRead *.git/config,.gitconfig,.gitmodules set ft=gitconfig autocmd BufNewFile,BufRead *.git/config,.gitconfig,.gitmodules set ft=gitconfig
autocmd BufNewFile,BufRead */.config/git/config set ft=gitconfig autocmd BufNewFile,BufRead */.config/git/config set ft=gitconfig
autocmd BufNewFile,BufRead *.git/modules/**/config set ft=gitconfig autocmd BufNewFile,BufRead *.git/modules/**/config set ft=gitconfig
autocmd BufNewFile,BufRead git-rebase-todo set ft=gitrebase autocmd BufNewFile,BufRead git-rebase-todo set ft=gitrebase
autocmd BufNewFile,BufRead .msg.[0-9]* autocmd BufNewFile,BufRead .gitsendemail.* set ft=gitsendemail
\ if getline(1) =~ '^From.*# This line is ignored.$' |
\ set ft=gitsendemail |
\ endif
autocmd BufNewFile,BufRead *.git/** autocmd BufNewFile,BufRead *.git/**
\ if getline(1) =~ '^\x\{40\}\>\|^ref: ' | \ if getline(1) =~ '^\x\{40\}\>\|^ref: ' |
\ set ft=git | \ set ft=git |
@@ -47,13 +46,12 @@ endfunction
au BufNewFile *.go setlocal filetype=go fileencoding=utf-8 fileformat=unix au BufNewFile *.go setlocal filetype=go fileencoding=utf-8 fileformat=unix
au BufRead *.go call s:gofiletype_pre() au BufRead *.go call s:gofiletype_pre()
au BufReadPost *.go call s:gofiletype_post() au BufReadPost *.go call s:gofiletype_post()
autocmd BufNewFile,BufRead *.haml,*.hamlbars setf haml autocmd BufNewFile,BufRead *.haml,*.hamlbars,*.hamlc setf haml
autocmd BufNewFile,BufRead *.sass setf sass autocmd BufNewFile,BufRead *.sass setf sass
autocmd BufNewFile,BufRead *.scss setf scss autocmd BufNewFile,BufRead *.scss setf scss
if has("autocmd") autocmd BufNewFile,BufRead *.hx setf haxe
au BufNewFile,BufRead *.{handlebars,hb,hbs,hbt}{,.erb} set ft=handlebars.html syntax=handlebars | runtime! ftplugin/handlebars.vim ftplugin/handlebars*.vim ftplugin/handlebars/*.vim
endif
autocmd BufNewFile,BufReadPost *.jade set filetype=jade autocmd BufNewFile,BufReadPost *.jade set filetype=jade
autocmd BufNewFile,BufRead *Spec.js,*_spec.js set filetype=jasmine.javascript syntax=jasmine
au BufNewFile,BufRead *.js setf javascript 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
@@ -84,31 +82,41 @@ autocmd BufRead *.html
\ if getline(1) =~ '^\(%\|<[%&].*>\)' | \ if getline(1) =~ '^\(%\|<[%&].*>\)' |
\ set filetype=mason | \ set filetype=mason |
\ endif \ endif
if has("autocmd")
au BufNewFile,BufRead *.mustache,*.handlebars,*.hbs,*.hogan,*.hulk,*.hjs set filetype=html syntax=mustache | runtime! ftplugin/mustache.vim ftplugin/mustache*.vim ftplugin/mustache/*.vim
endif
au BufRead,BufNewFile /etc/nginx/*,/usr/local/nginx/*,*/nginx/vhosts.d/*,nginx.conf if &ft == '' | setfiletype nginx | endif au BufRead,BufNewFile /etc/nginx/*,/usr/local/nginx/*,*/nginx/vhosts.d/*,nginx.conf if &ft == '' | setfiletype nginx | endif
au BufRead,BufNewFile *.cl set filetype=opencl
autocmd BufNewFile,BufRead *.proto setfiletype proto autocmd BufNewFile,BufRead *.proto setfiletype proto
au BufRead,BufNewFile *.pp set filetype=puppet au! BufRead,BufNewFile *.pp setfiletype puppet
au BufNewFile,BufRead *.rb,*.rbw,*.gemspec set filetype=ruby function! s:setf(filetype) abort
au BufNewFile,BufRead *.builder,*.rxml,*.rjs set filetype=ruby if &filetype !=# a:filetype
au BufNewFile,BufRead [rR]akefile,*.rake set filetype=ruby let &filetype = a:filetype
au BufNewFile,BufRead [rR]antfile,*.rant set filetype=ruby endif
au BufNewFile,BufRead .irbrc,irbrc set filetype=ruby endfunction
au BufNewFile,BufRead .pryrc set filetype=ruby au BufNewFile,BufRead *.rb,*.rbw,*.gemspec call s:setf('ruby')
au BufNewFile,BufRead *.ru set filetype=ruby au BufNewFile,BufRead *.builder,*.rxml,*.rjs,*.ruby call s:setf('ruby')
au BufNewFile,BufRead Capfile set filetype=ruby au BufNewFile,BufRead [rR]akefile,*.rake call s:setf('ruby')
au BufNewFile,BufRead Gemfile set filetype=ruby au BufNewFile,BufRead [rR]antfile,*.rant call s:setf('ruby')
au BufNewFile,BufRead Guardfile,.Guardfile set filetype=ruby au BufNewFile,BufRead .irbrc,irbrc call s:setf('ruby')
au BufNewFile,BufRead Cheffile set filetype=ruby au BufNewFile,BufRead .pryrc call s:setf('ruby')
au BufNewFile,BufRead Berksfile set filetype=ruby au BufNewFile,BufRead *.ru call s:setf('ruby')
au BufNewFile,BufRead [vV]agrantfile set filetype=ruby au BufNewFile,BufRead Capfile call s:setf('ruby')
au BufNewFile,BufRead .autotest set filetype=ruby au BufNewFile,BufRead Gemfile call s:setf('ruby')
au BufNewFile,BufRead *.erb,*.rhtml set filetype=eruby au BufNewFile,BufRead Guardfile,.Guardfile call s:setf('ruby')
au BufNewFile,BufRead [tT]horfile,*.thor set filetype=ruby au BufNewFile,BufRead Cheffile call s:setf('ruby')
au BufNewFile,BufRead *.rabl set filetype=ruby au BufNewFile,BufRead Berksfile call s:setf('ruby')
au BufNewFile,BufRead *.jbuilder set filetype=ruby au BufNewFile,BufRead [vV]agrantfile call s:setf('ruby')
au BufNewFile,BufRead Puppetfile set filetype=ruby au BufNewFile,BufRead .autotest call s:setf('ruby')
au BufNewFile,BufRead [Bb]uildfile set filetype=ruby au BufNewFile,BufRead *.erb,*.rhtml call s:setf('eruby')
au BufNewFile,BufRead Appraisals set filetype=ruby au BufNewFile,BufRead [tT]horfile,*.thor call s:setf('ruby')
au BufRead,BufNewFile *.rs,*.rc set filetype=rust 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 BufRead,BufNewFile *.rs set filetype=rust
au BufRead,BufNewFile *.sbt set filetype=sbt au BufRead,BufNewFile *.sbt set filetype=sbt
fun! s:DetectScala() fun! s:DetectScala()
if getline(1) == '#!/usr/bin/env scala' if getline(1) == '#!/usr/bin/env scala'
@@ -117,11 +125,20 @@ fun! s:DetectScala()
endfun endfun
au BufRead,BufNewFile *.scala,*.sbt set filetype=scala au BufRead,BufNewFile *.scala,*.sbt set filetype=scala
au BufRead,BufNewFile * call s:DetectScala() au BufRead,BufNewFile * call s:DetectScala()
autocmd BufNewFile,BufRead *.slim setf slim autocmd BufNewFile,BufRead *.slim set filetype=slim
autocmd BufNewFile,BufReadPost *.styl set filetype=stylus autocmd BufNewFile,BufReadPost *.styl set filetype=stylus
autocmd BufNewFile,BufReadPost *.stylus set filetype=stylus autocmd BufNewFile,BufReadPost *.stylus set filetype=stylus
au BufNewFile,BufRead *.automount set filetype=systemd
au BufNewFile,BufRead *.mount set filetype=systemd
au BufNewFile,BufRead *.path set filetype=systemd
au BufNewFile,BufRead *.service set filetype=systemd
au BufNewFile,BufRead *.socket set filetype=systemd
au BufNewFile,BufRead *.swap set filetype=systemd
au BufNewFile,BufRead *.target set filetype=systemd
au BufNewFile,BufRead *.timer set filetype=systemd
au BufRead,BufNewFile *.textile set filetype=textile au BufRead,BufNewFile *.textile set filetype=textile
autocmd BufNewFile,BufRead .tmux.conf*,tmux.conf* setf tmux autocmd BufNewFile,BufRead .tmux.conf*,tmux.conf* setf tmux
autocmd BufNewFile,BufRead *.toml set filetype=toml
autocmd BufNewFile,BufRead *.twig set filetype=twig autocmd BufNewFile,BufRead *.twig set filetype=twig
autocmd BufNewFile,BufRead *.html.twig set filetype=html.twig autocmd BufNewFile,BufRead *.html.twig set filetype=html.twig
autocmd BufNewFile,BufRead *.ts setlocal filetype=typescript autocmd BufNewFile,BufRead *.ts setlocal filetype=typescript

View File

@@ -15,7 +15,7 @@ let b:did_ftplugin = 1
let s:cpo_save = &cpo let s:cpo_save = &cpo
set cpo&vim set cpo&vim
let b:undo_ftplugin = 'setlocal iskeyword< define< formatoptions< comments< commentstring<' let b:undo_ftplugin = 'setlocal iskeyword< define< formatoptions< comments< commentstring< lispwords<'
setlocal iskeyword+=?,-,*,!,+,/,=,<,>,.,:,$ setlocal iskeyword+=?,-,*,!,+,/,=,<,>,.,:,$
@@ -23,14 +23,29 @@ setlocal iskeyword+=?,-,*,!,+,/,=,<,>,.,:,$
" of user-defined def* definitions. " of user-defined def* definitions.
setlocal define=\\v[(/]def(ault)@!\\S* setlocal define=\\v[(/]def(ault)@!\\S*
" Remove 't' from 'formatoptions' to avoid auto-wrapping code. The '+=croql' " Remove 't' from 'formatoptions' to avoid auto-wrapping code.
" is standard ftplugin boilerplate, although it is arguably intrusive. setlocal formatoptions-=t
setlocal formatoptions-=t formatoptions+=croql
" Lisp comments are routinely nested (e.g. ;;; SECTION HEADING) " Lisp comments are routinely nested (e.g. ;;; SECTION HEADING)
setlocal comments=n:; setlocal comments=n:;
setlocal commentstring=;\ %s setlocal commentstring=;\ %s
" Specially indented symbols from clojure.core and clojure.test.
"
" Clojure symbols are indented in the defn style when they:
"
" * Define vars and anonymous functions
" * Create new lexical scopes or scopes with altered environments
" * Create conditional branches from a predicate function or value
"
" The arglists for these functions are generally in the form of [x & body];
" Functions that accept a flat list of forms do not treat the first argument
" specially and hence are not indented specially.
"
" -*- LISPWORDS -*-
" Generated from https://github.com/guns/vim-clojure-static/blob/%%RELEASE_TAG%%/clj/src/vim_clojure_static/generate.clj
setlocal lispwords=as->,binding,bound-fn,case,catch,cond->,cond->>,condp,def,definline,definterface,defmacro,defmethod,defmulti,defn,defn-,defonce,defprotocol,defrecord,defstruct,deftest,deftest-,deftype,doseq,dotimes,doto,extend,extend-protocol,extend-type,fn,for,if,if-let,if-not,if-some,let,letfn,locking,loop,ns,proxy,reify,set-test,testing,when,when-first,when-let,when-not,when-some,while,with-bindings,with-in-str,with-local-vars,with-open,with-precision,with-redefs,with-redefs-fn,with-test
" Provide insert mode completions for special forms and clojure.core. As " Provide insert mode completions for special forms and clojure.core. As
" 'omnifunc' is set by popular Clojure REPL client plugins, we also set " 'omnifunc' is set by popular Clojure REPL client plugins, we also set
" 'completefunc' so that the user has some form of completion available when " 'completefunc' so that the user has some form of completion available when

View File

@@ -1,20 +1,20 @@
" Filetype plugin for editing CSV files. "{{{1 " Filetype plugin for editing CSV files. "{{{1
" Author: Christian Brabandt <cb@256bit.org> " Author: Christian Brabandt <cb@256bit.org>
" Version: 0.29 " Version: 0.30
" Script: http://www.vim.org/scripts/script.php?script_id=2830 " Script: http://www.vim.org/scripts/script.php?script_id=2830
" License: VIM License " License: VIM License
" Last Change: Wed, 14 Aug 2013 22:05:39 +0200 " Last Change: Thu, 27 Mar 2014 23:28:40 +0100
" Documentation: see :help ft-csv.txt " Documentation: see :help ft-csv.txt
" GetLatestVimScripts: 2830 28 :AutoInstall: csv.vim " GetLatestVimScripts: 2830 29 :AutoInstall: csv.vim
" "
" Some ideas are taken from the wiki http://vim.wikia.com/wiki/VimTip667 " Some ideas are taken from the wiki http://vim.wikia.com/wiki/VimTip667
" though, implementation differs. " though, implementation differs.
" Plugin folklore "{{{2 " Plugin folklore "{{{2
if v:version < 700 || exists('b:did_csv_ftplugin') if v:version < 700 || exists('b:did_ftplugin')
finish finish
endif endif
let b:did_csv_ftplugin = 1 let b:did_ftplugin = 1
let s:cpo_save = &cpo let s:cpo_save = &cpo
set cpo&vim set cpo&vim
@@ -137,6 +137,7 @@ fu! <sid>Init(startline, endline) "{{{3
\ . "| unlet! b:csv_SplitWindow b:csv_headerline" \ . "| unlet! b:csv_SplitWindow b:csv_headerline"
\ . "| unlet! b:csv_thousands_sep b:csv_decimal_sep" \ . "| unlet! b:csv_thousands_sep b:csv_decimal_sep"
\. " | unlet! b:browsefilter b:csv_cmt" \. " | unlet! b:browsefilter b:csv_cmt"
\. " | unlet! b:csv_arrange_leftalign"
" Delete all functions " Delete all functions
" disabled currently, because otherwise when switching ft " disabled currently, because otherwise when switching ft
@@ -482,7 +483,7 @@ fu! <sid>GetDelimiter(first, last) "{{{3
if !exists("b:csv_fixed_width_cols") if !exists("b:csv_fixed_width_cols")
let _cur = getpos('.') let _cur = getpos('.')
let _s = @/ let _s = @/
let Delim= {0: ';', 1: ',', 2: '|', 3: ' '} let Delim= {0: ';', 1: ',', 2: '|', 3: ' ', 4: '\^'}
let temp = {} let temp = {}
" :silent :s does not work with lazyredraw " :silent :s does not work with lazyredraw
let _lz = &lz let _lz = &lz
@@ -524,13 +525,17 @@ fu! <sid>WColumn(...) "{{{3
let fields=(split(line[0:end],b:col.'\zs')) let fields=(split(line[0:end],b:col.'\zs'))
let ret=len(fields) let ret=len(fields)
if exists("a:1") && a:1 > 0 if exists("a:1") && a:1 > 0
" bang attribute " bang attribute: Try to get the column name
let head = split(getline(1),b:col.'\zs') let head = split(getline(1),b:col.'\zs')
" remove preceeding whitespace " remove preceeding whitespace
if len(head) < ret
call <sid>Warn("Header has no field ". ret)
else
let ret = substitute(head[ret-1], '^\s\+', '', '') let ret = substitute(head[ret-1], '^\s\+', '', '')
" remove delimiter " remove delimiter
let ret = substitute(ret, b:delimiter. '$', '', '') let ret = substitute(ret, b:delimiter. '$', '', '')
endif endif
endif
else else
let temp=getpos('.')[2] let temp=getpos('.')[2]
let j=1 let j=1
@@ -696,7 +701,11 @@ endfu
fu! <sid>UnArrangeCol(match) "{{{3 fu! <sid>UnArrangeCol(match) "{{{3
" Strip leading white space, also trims empty records: " Strip leading white space, also trims empty records:
if get(b:, 'csv_arrange_leftalign',0)
return substitute(a:match, '\s\+\ze'. b:delimiter. '\?$', '', '')
else
return substitute(a:match, '^\s\+', '', '') return substitute(a:match, '^\s\+', '', '')
endif
" only strip leading white space, if a non-white space follows: " only strip leading white space, if a non-white space follows:
"return substitute(a:match, '^\s\+\ze\S', '', '') "return substitute(a:match, '^\s\+\ze\S', '', '')
endfu endfu
@@ -744,9 +753,18 @@ fu! <sid>Columnize(field) "{{{3
let width=get(b:col_width, (s:columnize_count % s:max_cols), 20) let width=get(b:col_width, (s:columnize_count % s:max_cols), 20)
let s:columnize_count += 1 let s:columnize_count += 1
let has_delimiter = (a:field =~# b:delimiter.'$')
if v:version > 703 || v:version == 703 && has("patch713") if v:version > 703 || v:version == 703 && has("patch713")
" printf knows about %S (e.g. can handle char length " printf knows about %S (e.g. can handle char length
if get(b:, 'csv_arrange_leftalign',0)
" left-align content
return printf("%-*S%s", width+1 ,
\ (has_delimiter ?
\ matchstr(a:field, '.*\%('.b:delimiter.'\)\@=') : a:field),
\ (has_delimiter ? b:delimiter : ''))
else
return printf("%*S", width+1 , a:field) return printf("%*S", width+1 , a:field)
endif
else else
" printf only handles bytes " printf only handles bytes
if !exists("g:csv_no_multibyte") && if !exists("g:csv_no_multibyte") &&
@@ -767,10 +785,17 @@ fu! <sid>Columnize(field) "{{{3
if width == strlen(a:field) if width == strlen(a:field)
" Column has correct length, don't use printf() " Column has correct length, don't use printf()
return a:field return a:field
else
if get(b:, 'csv_arrange_leftalign',0)
" left-align content
return printf("%-*s%s", width,
\ (has_delimiter ? matchstr(a:field, '.*\%('.b:delimiter.'\)\@=') : a:field),
\ (has_delimiter ? b:delimiter : ''))
else else
return printf("%*s", width , a:field) return printf("%*s", width , a:field)
endif endif
endif endif
endif
endfun endfun
fu! <sid>GetColPat(colnr, zs_flag) "{{{3 fu! <sid>GetColPat(colnr, zs_flag) "{{{3
@@ -981,7 +1006,8 @@ fu! <sid>MoveCol(forward, line, ...) "{{{3
elseif a:forward < 0 elseif a:forward < 0
if colnr > 0 || cpos == spos if colnr > 0 || cpos == spos
call search('.\ze'.pat, 'bWe') call search('.\ze'.pat, 'bWe')
while getpos('.')[2] == cpos let stime=localtime()
while getpos('.')[2] == cpos && <sid>Timeout(stime) " make sure loop terminates
" cursor didn't move, move cursor one cell to the left " cursor didn't move, move cursor one cell to the left
norm! h norm! h
if colnr > 0 if colnr > 0
@@ -1187,8 +1213,10 @@ fu! <sid>AddColumn(start, stop, ...) range "{{{3
if exists("a:1") if exists("a:1")
if a:1 == '$' || a:1 >= max if a:1 == '$' || a:1 >= max
let pos = max let pos = max
elseif a:1 <= 0 elseif a:1 < 0
let pos = col let pos = col
else
let pos = a:1
endif endif
else else
let pos = col let pos = col
@@ -1196,7 +1224,7 @@ fu! <sid>AddColumn(start, stop, ...) range "{{{3
let cnt=(exists("a:2") && a:2 > 0 ? a:2 : 1) let cnt=(exists("a:2") && a:2 > 0 ? a:2 : 1)
" translate 1 based columns into zero based list index " translate 1 based columns into zero based list index
let pos -= 1 "let pos -= 1
let col -= 1 let col -= 1
if pos == 0 if pos == 0
@@ -1250,8 +1278,8 @@ fu! <sid>SumColumn(list) "{{{3
if empty(item) if empty(item)
continue continue
endif endif
let nr = matchstr(item, '\d\(.*\d\)\?$') let nr = matchstr(item, '-\?\d\(.*\d\)\?$')
let format1 = '^\d\+\zs\V' . s:nr_format[0] . '\m\ze\d' let format1 = '^-\?\d\+\zs\V' . s:nr_format[0] . '\m\ze\d'
let format2 = '\d\+\zs\V' . s:nr_format[1] . '\m\ze\d' let format2 = '\d\+\zs\V' . s:nr_format[1] . '\m\ze\d'
try try
let nr = substitute(nr, format1, '', '') let nr = substitute(nr, format1, '', '')
@@ -1606,6 +1634,9 @@ fu! <sid>AnalyzeColumn(...) "{{{3
let qty = len(data) let qty = len(data)
let res = {} let res = {}
for item in data for item in data
if empty(item)
let item = 'NULL'
endif
if !get(res, item) if !get(res, item)
let res[item] = 0 let res[item] = 0
endif endif
@@ -1613,6 +1644,7 @@ fu! <sid>AnalyzeColumn(...) "{{{3
endfor endfor
let max_items = reverse(sort(values(res))) let max_items = reverse(sort(values(res)))
let count_items = keys(res)
if len(max_items) > 5 if len(max_items) > 5
call remove(max_items, 5, -1) call remove(max_items, 5, -1)
call filter(res, 'v:val =~ ''^''.join(max_items, ''\|'').''$''') call filter(res, 'v:val =~ ''^''.join(max_items, ''\|'').''$''')
@@ -1623,9 +1655,9 @@ fu! <sid>AnalyzeColumn(...) "{{{3
else else
let title="Nr\tCount\tValue" let title="Nr\tCount\tValue"
endif endif
echohl "Title" echohl Title
echo printf("%s", title) echo printf("%s", title)
echohl "Normal" echohl Normal
echo printf("%s", repeat('=', strdisplaywidth(title))) echo printf("%s", repeat('=', strdisplaywidth(title)))
let i=1 let i=1
@@ -1650,6 +1682,8 @@ fu! <sid>AnalyzeColumn(...) "{{{3
endif endif
endfor endfor
endfor endfor
echo printf("%s", repeat('=', strdisplaywidth(title)))
echo printf("different values: %d", len(count_items))
unlet max_items unlet max_items
endfunc endfunc
@@ -1745,7 +1779,7 @@ endfu
fu! <sid>NewRecord(line1, line2, count) "{{{3 fu! <sid>NewRecord(line1, line2, count) "{{{3
if a:count =~ "\D" if a:count =~ "\D"
call <sid>WarningMsg("Invalid count specified") call <sid>Warn("Invalid count specified")
return return
endif endif
@@ -1821,20 +1855,13 @@ fu! <sid>CSVMappings() "{{{3
call <sid>Map('noremap', 'E', ':<C-U>call <SID>MoveCol(-1, line("."))<CR>') call <sid>Map('noremap', 'E', ':<C-U>call <SID>MoveCol(-1, line("."))<CR>')
call <sid>Map('noremap', '<C-Left>', ':<C-U>call <SID>MoveCol(-1, line("."))<CR>') call <sid>Map('noremap', '<C-Left>', ':<C-U>call <SID>MoveCol(-1, line("."))<CR>')
call <sid>Map('noremap', 'H', ':<C-U>call <SID>MoveCol(-1, line("."), 1)<CR>') call <sid>Map('noremap', 'H', ':<C-U>call <SID>MoveCol(-1, line("."), 1)<CR>')
call <sid>Map('noremap', 'K', ':<C-U>call <SID>MoveCol(0, call <sid>Map('noremap', 'K', ':<C-U>call <SID>MoveCol(0, line(".")-v:count1)<CR>')
\ line(".")-v:count1)<CR>') call <sid>Map('noremap', '<Up>', ':<C-U>call <SID>MoveCol(0, line(".")-v:count1)<CR>')
call <sid>Map('noremap', '<Up>', ':<C-U>call <SID>MoveCol(0, call <sid>Map('noremap', 'J', ':<C-U>call <SID>MoveCol(0, line(".")+v:count1)<CR>')
\ line(".")-v:count1)<CR>') call <sid>Map('noremap', '<Down>', ':<C-U>call <SID>MoveCol(0, line(".")+v:count1)<CR>')
call <sid>Map('noremap', 'J', ':<C-U>call <SID>MoveCol(0, call <sid>Map('nnoremap', '<CR>', ':<C-U>call <SID>PrepareFolding(1, 1)<CR>')
\ line(".")+v:count1)<CR>') call <sid>Map('nnoremap', '<Space>', ':<C-U>call <SID>PrepareFolding(1, 0)<CR>')
call <sid>Map('noremap', '<Down>', ':<C-U>call <SID>MoveCol(0, call <sid>Map('nnoremap', '<BS>', ':<C-U>call <SID>PrepareFolding(0, 1)<CR>')
\ line(".")+v:count1)<CR>')
call <sid>Map('nnoremap', '<CR>', ':<C-U>call <SID>PrepareFolding(1,
\ 1)<CR>')
call <sid>Map('nnoremap', '<Space>', ':<C-U>call <SID>PrepareFolding(1,
\ 0)<CR>')
call <sid>Map('nnoremap', '<BS>', ':<C-U>call <SID>PrepareFolding(0,
\ 1)<CR>')
call <sid>Map('imap', '<CR>', '<sid>ColumnMode()', 'expr') call <sid>Map('imap', '<CR>', '<sid>ColumnMode()', 'expr')
" Text object: Field " Text object: Field
call <sid>Map('vnoremap', 'if', ':<C-U>call <sid>MoveOver(0)<CR>') call <sid>Map('vnoremap', 'if', ':<C-U>call <sid>MoveOver(0)<CR>')
@@ -1910,9 +1937,6 @@ fu! <sid>CommandDefinitions() "{{{3
\ '-nargs=1 -complete=custom,<sid>CompleteColumnNr') \ '-nargs=1 -complete=custom,<sid>CompleteColumnNr')
call <sid>LocalCmd('Transpose', ':call <sid>Transpose(<line1>, <line2>)', call <sid>LocalCmd('Transpose', ':call <sid>Transpose(<line1>, <line2>)',
\ '-range=%') \ '-range=%')
call <sid>LocalCmd('Tabularize', ':call <sid>Tabularize(<bang>0,<line1>,<line2>)',
\ '-bang -range=%')
" Alias for :Tabularize, might be taken by Tabular plugin
call <sid>LocalCmd('CSVTabularize', ':call <sid>Tabularize(<bang>0,<line1>,<line2>)', call <sid>LocalCmd('CSVTabularize', ':call <sid>Tabularize(<bang>0,<line1>,<line2>)',
\ '-bang -range=%') \ '-bang -range=%')
call <sid>LocalCmd("AddColumn", call <sid>LocalCmd("AddColumn",
@@ -2354,15 +2378,19 @@ fu! <sid>SubstituteInColumn(command, line1, line2) range "{{{3
endfu endfu
fu! <sid>ColumnMode() "{{{3 fu! <sid>ColumnMode() "{{{3
if mode() =~# 'R' let mode = mode()
if mode =~# 'R'
" (virtual) Replace mode " (virtual) Replace mode
let new_line = (line('.') == line('$') || let new_line = (line('.') == line('$') ||
\ (synIDattr(synIDtrans(synID(line("."), col("."), 1)), "name") !~# "comment")) \ (synIDattr(synIDtrans(synID(line("."), col("."), 1)), "name") =~? "comment"))
return "\<ESC>". (new_line ? "o" : "JE".mode()) return "\<ESC>g`[". (new_line ? "o" : "J".mode)
else else
return "\<CR>" return "\<CR>"
endif endif
endfu endfu
fu! <sid>Timeout(start) "{{{3
return localtime()-a:start < 2
endfu
" Global functions "{{{2 " Global functions "{{{2
fu! csv#EvalColumn(nr, func, first, last) range "{{{3 fu! csv#EvalColumn(nr, func, first, last) range "{{{3
@@ -2373,7 +2401,7 @@ fu! csv#EvalColumn(nr, func, first, last) range "{{{3
endif endif
let save = winsaveview() let save = winsaveview()
call <sid>CheckHeaderLine() call <sid>CheckHeaderLine()
let nr = matchstr(a:nr, '^\d\+') let nr = matchstr(a:nr, '^\-\?\d\+')
let col = (empty(nr) ? <sid>WColumn() : nr) let col = (empty(nr) ? <sid>WColumn() : nr)
" don't take the header line into consideration " don't take the header line into consideration
let start = a:first - 1 + s:csv_fold_headerline let start = a:first - 1 + s:csv_fold_headerline

View File

@@ -1,7 +1,7 @@
" Vim filetype plugin " Vim filetype plugin
" Language: Cucumber " Language: Cucumber
" Maintainer: Tim Pope <vimNOSPAM@tpope.org> " Maintainer: Tim Pope <vimNOSPAM@tpope.org>
" Last Change: 2010 Aug 09 " Last Change: 2013 Jun 01
" Only do this when not done yet for this buffer " Only do this when not done yet for this buffer
if (exists("b:did_ftplugin")) if (exists("b:did_ftplugin"))
@@ -9,6 +9,9 @@ if (exists("b:did_ftplugin"))
endif endif
let b:did_ftplugin = 1 let b:did_ftplugin = 1
let s:keepcpo= &cpo
set cpo&vim
setlocal formatoptions-=t formatoptions+=croql setlocal formatoptions-=t formatoptions+=croql
setlocal comments=:# commentstring=#\ %s setlocal comments=:# commentstring=#\ %s
setlocal omnifunc=CucumberComplete setlocal omnifunc=CucumberComplete
@@ -18,25 +21,17 @@ let b:undo_ftplugin = "setl fo< com< cms< ofu<"
let b:cucumber_root = expand('%:p:h:s?.*[\/]\%(features\|stories\)\zs[\/].*??') let b:cucumber_root = expand('%:p:h:s?.*[\/]\%(features\|stories\)\zs[\/].*??')
if !exists("g:no_plugin_maps") && !exists("g:no_cucumber_maps") if !exists("g:no_plugin_maps") && !exists("g:no_cucumber_maps")
nnoremap <silent><buffer> <C-]> :<C-U>exe <SID>jump('edit',v:count)<CR>
nnoremap <silent><buffer> [<C-D> :<C-U>exe <SID>jump('edit',v:count)<CR> nnoremap <silent><buffer> [<C-D> :<C-U>exe <SID>jump('edit',v:count)<CR>
nnoremap <silent><buffer> ]<C-D> :<C-U>exe <SID>jump('edit',v:count)<CR> nnoremap <silent><buffer> ]<C-D> :<C-U>exe <SID>jump('edit',v:count)<CR>
nnoremap <silent><buffer> <C-W>] :<C-U>exe <SID>jump('split',v:count)<CR>
nnoremap <silent><buffer> <C-W><C-]> :<C-U>exe <SID>jump('split',v:count)<CR>
nnoremap <silent><buffer> <C-W>d :<C-U>exe <SID>jump('split',v:count)<CR> nnoremap <silent><buffer> <C-W>d :<C-U>exe <SID>jump('split',v:count)<CR>
nnoremap <silent><buffer> <C-W><C-D> :<C-U>exe <SID>jump('split',v:count)<CR> nnoremap <silent><buffer> <C-W><C-D> :<C-U>exe <SID>jump('split',v:count)<CR>
nnoremap <silent><buffer> <C-W>} :<C-U>exe <SID>jump('pedit',v:count)<CR>
nnoremap <silent><buffer> [d :<C-U>exe <SID>jump('pedit',v:count)<CR> nnoremap <silent><buffer> [d :<C-U>exe <SID>jump('pedit',v:count)<CR>
nnoremap <silent><buffer> ]d :<C-U>exe <SID>jump('pedit',v:count)<CR> nnoremap <silent><buffer> ]d :<C-U>exe <SID>jump('pedit',v:count)<CR>
let b:undo_ftplugin .= let b:undo_ftplugin .=
\ "|sil! nunmap <buffer> <C-]>" .
\ "|sil! nunmap <buffer> [<C-D>" . \ "|sil! nunmap <buffer> [<C-D>" .
\ "|sil! nunmap <buffer> ]<C-D>" . \ "|sil! nunmap <buffer> ]<C-D>" .
\ "|sil! nunmap <buffer> <C-W>]" .
\ "|sil! nunmap <buffer> <C-W><C-]>" .
\ "|sil! nunmap <buffer> <C-W>d" . \ "|sil! nunmap <buffer> <C-W>d" .
\ "|sil! nunmap <buffer> <C-W><C-D>" . \ "|sil! nunmap <buffer> <C-W><C-D>" .
\ "|sil! nunmap <buffer> <C-W>}" .
\ "|sil! nunmap <buffer> [d" . \ "|sil! nunmap <buffer> [d" .
\ "|sil! nunmap <buffer> ]d" \ "|sil! nunmap <buffer> ]d"
endif endif
@@ -145,4 +140,7 @@ function! CucumberComplete(findstart,base) abort
return sort(steps) return sort(steps)
endfunction endfunction
let &cpo = s:keepcpo
unlet s:keepcpo
" vim:set sts=2 sw=2: " vim:set sts=2 sw=2:

17
ftplugin/ember-script.vim Normal file
View File

@@ -0,0 +1,17 @@
" Language: ember-script
" Maintainer: heartsentwined <heartsentwined@cogito-lab.com>
" URL: http://github.com/heartsentwined/vim-ember-script
" Version: 1.0.1
" Last Change: 2013 Apr 17
" License: GPL-3.0
setlocal tabstop=2
setlocal softtabstop=2
setlocal shiftwidth=2
setlocal smarttab
setlocal expandtab
setlocal smartindent
setlocal formatoptions-=t formatoptions+=croqlj
setlocal comments=:#
setlocal commentstring=#\ %s

19
ftplugin/go.vim Normal file
View File

@@ -0,0 +1,19 @@
" Copyright 2013 The Go Authors. All rights reserved.
" Use of this source code is governed by a BSD-style
" license that can be found in the LICENSE file.
"
" go.vim: Vim filetype plugin for Go.
if exists("b:did_ftplugin")
finish
endif
let b:did_ftplugin = 1
setlocal formatoptions-=t
setlocal comments=s1:/*,mb:*,ex:*/,://
setlocal commentstring=//\ %s
let b:undo_ftplugin = "setl fo< com< cms<"
" vim:ts=4:sw=4:et

View File

@@ -1,22 +0,0 @@
" Taken from https://github.com/juvenn/mustache.vim/blob/master/ftplugin/mustache.vim
let s:cpo_save = &cpo
set cpo&vim
" Matchit support for Handlebars
" extending HTML matchit groups
if exists("loaded_matchit") && exists("b:match_words")
let b:match_words = b:match_words
\ . ',{:},[:],(:),'
\ . '\%({{\)\@<=#\s*\%(if\|unless\)\s*.\{-}}}'
\ . ':'
\ . '\%({{\)\@<=\s*else\s*}}'
\ . ':'
\ . '\%({{\)\@<=/\s*\%(if\|unless\)\s*}},'
\ . '\%({{\)\@<=[#^]\s*\([-0-9a-zA-Z_?!/.]\+\).\{-}}}'
\ . ':'
\ . '\%({{\)\@<=/\s*\1\s*}}'
endif
let &cpo = s:cpo_save
unlet s:cpo_save

7
ftplugin/html.vim Normal file
View File

@@ -0,0 +1,7 @@
" Maintainer: othree <othree@gmail.com>
" URL: http://github.com/othree/html5.vim
" Last Change: 2014-05-02
" License: MIT
" Changes: Add - to keyword
setlocal iskeyword+=-

View File

@@ -102,17 +102,24 @@ function! LatexBox_GetMainTexFile()
endfor endfor
" 3. scan current file for "\begin{document}" " 3. scan current file for "\begin{document}"
if &filetype == 'tex' && search('\C\\begin\_\s*{document}', 'nw') != 0 if &filetype == 'tex' && search('\m\C\\begin\_\s*{document}', 'nw') != 0
return expand('%:p') return expand('%:p')
endif endif
" 4 borrow the Vim-Latex-Suite method of finding it " 4. use 'main.tex' if it exists in the same directory (and is readable)
let s:main_dot_tex_file=expand('%:p:h') . '/main.tex'
if filereadable(s:main_dot_tex_file)
let b:main_tex_file=s:main_dot_tex_file
return b:main_tex_file
endif
" 5. borrow the Vim-Latex-Suite method of finding it
if Tex_GetMainFileName() != expand('%:p') if Tex_GetMainFileName() != expand('%:p')
let b:main_tex_file = Tex_GetMainFileName() let b:main_tex_file = Tex_GetMainFileName()
return b:main_tex_file return b:main_tex_file
endif endif
" 5. prompt for file with completion " 6. prompt for file with completion
let b:main_tex_file = s:PromptForMainFile() let b:main_tex_file = s:PromptForMainFile()
return b:main_tex_file return b:main_tex_file
endfunction endfunction

View File

@@ -106,13 +106,13 @@ function! LatexBox_Complete(findstart, base)
endwhile endwhile
let line_start = line[:pos-1] let line_start = line[:pos-1]
if line_start =~ '\C\\begin\_\s*{$' if line_start =~ '\m\C\\begin\_\s*{$'
let s:completion_type = 'begin' let s:completion_type = 'begin'
elseif line_start =~ '\C\\end\_\s*{$' elseif line_start =~ '\m\C\\end\_\s*{$'
let s:completion_type = 'end' let s:completion_type = 'end'
elseif line_start =~ g:LatexBox_ref_pattern . '$' elseif line_start =~ '\m' . g:LatexBox_ref_pattern . '$'
let s:completion_type = 'ref' let s:completion_type = 'ref'
elseif line_start =~ g:LatexBox_cite_pattern . '$' elseif line_start =~ '\m' . g:LatexBox_cite_pattern . '$'
let s:completion_type = 'bib' let s:completion_type = 'bib'
" check for multiple citations " check for multiple citations
let pos = col('.') - 1 let pos = col('.') - 1
@@ -365,11 +365,11 @@ function! s:ExtractLabels()
let curname = strpart( getline( lblline ), lblbegin, nameend - lblbegin - 1 ) let curname = strpart( getline( lblline ), lblbegin, nameend - lblbegin - 1 )
" Ignore cref entries (because they are duplicates) " Ignore cref entries (because they are duplicates)
if curname =~ "\@cref" if curname =~ "\@cref\|cref\@"
continue continue
endif endif
if 0 == search( '{\w*{', 'ce', lblline ) if 0 == search( '\m{\w*{', 'ce', lblline )
let [lblline, lblbegin] = searchpos( '\\newlabel{', 'ecW' ) let [lblline, lblbegin] = searchpos( '\\newlabel{', 'ecW' )
continue continue
endif endif
@@ -382,7 +382,7 @@ function! s:ExtractLabels()
endif endif
let curnumber = strpart( getline( lblline ), numberbegin, numberend - numberbegin - 1 ) let curnumber = strpart( getline( lblline ), numberbegin, numberend - numberbegin - 1 )
if 0 == search( '\w*{', 'ce', lblline ) if 0 == search( '\m\w*{', 'ce', lblline )
let [lblline, lblbegin] = searchpos( '\\newlabel{', 'ecW' ) let [lblline, lblbegin] = searchpos( '\\newlabel{', 'ecW' )
continue continue
endif endif
@@ -755,6 +755,70 @@ function! s:PromptEnvWrapSelection(...)
endfunction endfunction
" }}} " }}}
" List Labels with Prompt {{{
function! s:PromptLabelList(...)
" Check if window already exists
let winnr = bufwinnr(bufnr('LaTeX Labels'))
if winnr >= 0
if a:0 == 0
silent execute winnr . 'wincmd w'
else
" Supplying an argument to this function causes toggling instead
" of jumping to the labels window
if g:LatexBox_split_resize
silent exe "set columns-=" . g:LatexBox_split_width
endif
silent execute 'bwipeout' . bufnr('LaTeX Labels')
endif
return
endif
" Get label suggestions
let regexp = input('filter labels with regexp: ', '')
let labels = s:CompleteLabels(regexp)
let calling_buf = bufnr('%')
" Create labels window and set local settings
if g:LatexBox_split_resize
silent exe "set columns+=" . g:LatexBox_split_width
endif
silent exe g:LatexBox_split_side g:LatexBox_split_width . 'vnew LaTeX\ Labels'
let b:toc = []
let b:toc_numbers = 1
let b:calling_win = bufwinnr(calling_buf)
setlocal filetype=latextoc
" Add label entries and jump to the closest section
for entry in labels
let number = matchstr(entry['menu'], '^\s*(\zs[^)]\+\ze)')
let page = matchstr(entry['menu'], '^[^)]*)\s*\[\zs[^]]\+\ze\]')
let e = {'file': bufname(calling_buf),
\ 'level': 'label',
\ 'number': number,
\ 'text': entry['abbr'],
\ 'page': page}
call add(b:toc, e)
if b:toc_numbers
call append('$', e['number'] . "\t" . e['text'])
else
call append('$', e['text'])
endif
endfor
if !g:LatexBox_toc_hidehelp
call append('$', "")
call append('$', "<Esc>/q: close")
call append('$', "<Space>: jump")
call append('$', "<Enter>: jump and close")
call append('$', "s: hide numbering")
endif
0delete _
" Lock buffer
setlocal nomodifiable
endfunction
" }}}
" Change Environment {{{ " Change Environment {{{
function! s:ChangeEnvPrompt() function! s:ChangeEnvPrompt()
@@ -858,4 +922,8 @@ nnoremap <silent> <Plug>LatexChangeEnv :call <SID>ChangeEnvPrompt()<CR>
nnoremap <silent> <Plug>LatexToggleStarEnv :call <SID>LatexToggleStarEnv()<CR> nnoremap <silent> <Plug>LatexToggleStarEnv :call <SID>LatexToggleStarEnv()<CR>
" }}} " }}}
" Commands {{{
command! LatexLabels call <SID>PromptLabelList()
" }}}
" vim:fdm=marker:ff=unix:noet:ts=4:sw=4 " vim:fdm=marker:ff=unix:noet:ts=4:sw=4

View File

@@ -31,6 +31,9 @@ endif
if !exists('g:LatexBox_fold_envs') if !exists('g:LatexBox_fold_envs')
let g:LatexBox_fold_envs=1 let g:LatexBox_fold_envs=1
endif endif
if !exists('g:LatexBox_fold_envs_force')
let g:LatexBox_fold_envs_force = []
endif
if !exists('g:LatexBox_fold_parts') if !exists('g:LatexBox_fold_parts')
let g:LatexBox_fold_parts=[ let g:LatexBox_fold_parts=[
\ "appendix", \ "appendix",
@@ -159,11 +162,27 @@ function! LatexBox_FoldLevel(lnum)
endif endif
" Fold environments " Fold environments
if g:LatexBox_fold_envs == 1
if line =~# s:envbeginpattern if line =~# s:envbeginpattern
if g:LatexBox_fold_envs == 1
return "a1" return "a1"
else
let env = matchstr(line,'\\begin\*\?{\zs\w*\*\?\ze}')
if index(g:LatexBox_fold_envs_force, env) >= 0
return "a1"
else
return "="
endif
endif
elseif line =~# s:envendpattern elseif line =~# s:envendpattern
if g:LatexBox_fold_envs == 1
return "s1" return "s1"
else
let env = matchstr(line,'\\end\*\?{\zs\w*\*\?\ze}')
if index(g:LatexBox_fold_envs_force, env) >= 0
return "s1"
else
return "="
endif
endif endif
endif endif

View File

@@ -325,7 +325,7 @@ function! LatexBox_Latexmk(force)
let g:latexmk_running_pids[basepath] = pid let g:latexmk_running_pids[basepath] = pid
else else
let pid = substitute(system('pgrep -f "perl.*' let pid = substitute(system('pgrep -f "perl.*'
\ . mainfile . '"'),'\D','','') \ . mainfile . '" | head -n 1'),'\D','','')
let g:latexmk_running_pids[basepath] = pid let g:latexmk_running_pids[basepath] = pid
endif endif
else else

View File

@@ -23,6 +23,10 @@ map <buffer> <LocalLeader>lv :LatexView<CR>
map <silent> <buffer> <LocalLeader>lt :LatexTOC<CR> map <silent> <buffer> <LocalLeader>lt :LatexTOC<CR>
" }}} " }}}
" List of labels {{{
map <silent> <buffer> <LocalLeader>lj :LatexLabels<CR>
" }}}
" Jump to match {{{ " Jump to match {{{
if !exists('g:LatexBox_loaded_matchparen') if !exists('g:LatexBox_loaded_matchparen')
nmap <buffer> % <Plug>LatexBox_JumpToMatch nmap <buffer> % <Plug>LatexBox_JumpToMatch

View File

@@ -40,13 +40,9 @@ endfunction
" {{{2 EscapeTitle " {{{2 EscapeTitle
function! s:EscapeTitle(titlestr) function! s:EscapeTitle(titlestr)
" Credit goes to Marcin Szamotulski for the following fix. It allows to let titlestr = substitute(a:titlestr, '\\[a-zA-Z@]*\>\s*{\?', '.*', 'g')
" match through commands added by TeX. let titlestr = substitute(titlestr, '}', '', 'g')
let titlestr = substitute(a:titlestr, '\\\w*\>\s*\%({[^}]*}\)\?', '.*', 'g') let titlestr = substitute(titlestr, '\%(\.\*\s*\)\{2,}', '.*', 'g')
let titlestr = escape(titlestr, '\')
let titlestr = substitute(titlestr, ' ', '\\_\\s\\+', 'g')
return titlestr return titlestr
endfunction endfunction
@@ -101,6 +97,10 @@ endfunction
" {{{2 TOCFindMatch " {{{2 TOCFindMatch
function! s:TOCFindMatch(strsearch,duplicates,files) function! s:TOCFindMatch(strsearch,duplicates,files)
if len(a:files) == 0
echoerr "Could not find: " . a:strsearch
return
endif
call s:TOCOpenBuf(a:files[0]) call s:TOCOpenBuf(a:files[0])
let dups = a:duplicates let dups = a:duplicates
@@ -120,7 +120,6 @@ function! s:TOCFindMatch(strsearch,duplicates,files)
endif endif
call s:TOCFindMatch(a:strsearch,dups,a:files[1:]) call s:TOCFindMatch(a:strsearch,dups,a:files[1:])
endfunction endfunction
" {{{2 TOCFoldLevel " {{{2 TOCFoldLevel
@@ -170,6 +169,7 @@ function! s:TOCOpenBuf(file)
let bnr = bufnr(a:file) let bnr = bufnr(a:file)
endif endif
execute 'buffer! ' . bnr execute 'buffer! ' . bnr
normal! gg
endfunction endfunction

View File

@@ -1,6 +1,7 @@
" Vim filetype plugin " Vim filetype plugin
" Language: Markdown " Language: Markdown
" Maintainer: Tim Pope <vimNOSPAM@tpope.org> " Maintainer: Tim Pope <vimNOSPAM@tpope.org>
" Last Change: 2013 May 30
if exists("b:did_ftplugin") if exists("b:did_ftplugin")
finish finish
@@ -18,4 +19,32 @@ else
let b:undo_ftplugin = "setl cms< com< fo< flp<" let b:undo_ftplugin = "setl cms< com< fo< flp<"
endif 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: " vim:set sw=2:

115
ftplugin/mustache.vim Normal file
View File

@@ -0,0 +1,115 @@
let s:cpo_save = &cpo
set cpo&vim
" Matchit support for Mustache & Handlebars
" extending HTML matchit groups
if exists("loaded_matchit") && exists("b:match_words")
let b:match_words = b:match_words
\ . ',{:},[:],(:),'
\ . '\%({{\)\@<=#\s*\%(if\|unless\)\s*.\{-}}}'
\ . ':'
\ . '\%({{\)\@<=\s*else\s*}}'
\ . ':'
\ . '\%({{\)\@<=/\s*\%(if\|unless\)\s*}},'
\ . '\%({{\)\@<=[#^]\s*\([-0-9a-zA-Z_?!/.]\+\).\{-}}}'
\ . ':'
\ . '\%({{\)\@<=/\s*\1\s*}}'
endif
if exists("g:mustache_abbreviations")
inoremap <buffer> {{{ {{{}}}<left><left><left>
inoremap <buffer> {{ {{}}<left><left>
inoremap <buffer> {{! {{!}}<left><left>
inoremap <buffer> {{< {{<}}<left><left>
inoremap <buffer> {{> {{>}}<left><left>
inoremap <buffer> {{# {{#}}<cr>{{/}}<up><left><left>
inoremap <buffer> {{if {{#if }}<cr>{{/if}}<up><left>
inoremap <buffer> {{ife {{#if }}<cr>{{else}}<cr>{{/if}}<up><up><left>
endif
" Section movement
" Adapted from vim-ruby - many thanks to the maintainers of that plugin
function! s:sectionmovement(pattern,flags,mode,count)
norm! m'
if a:mode ==# 'v'
norm! gv
endif
let i = 0
while i < a:count
let i = i + 1
" saving current position
let line = line('.')
let col = col('.')
let pos = search(a:pattern,'W'.a:flags)
" if there's no more matches, return to last position
if pos == 0
call cursor(line,col)
return
endif
endwhile
endfunction
nnoremap <silent> <buffer> [[ :<C-U>call <SID>sectionmovement('{{','b','n',v:count1)<CR>
nnoremap <silent> <buffer> ]] :<C-U>call <SID>sectionmovement('{{','' ,'n',v:count1)<CR>
xnoremap <silent> <buffer> [[ :<C-U>call <SID>sectionmovement('{{','b','v',v:count1)<CR>
xnoremap <silent> <buffer> ]] :<C-U>call <SID>sectionmovement('{{','' ,'v',v:count1)<CR>
" Operator pending mappings
" Operators are available by default. Set `let g:mustache_operators = 0` in
" your .vimrc to disable them.
if ! exists("g:mustache_operators")
let g:mustache_operators = 1
endif
if exists("g:mustache_operators") && g:mustache_operators
onoremap <silent> <buffer> ie :<C-U>call <SID>wrap_inside()<CR>
onoremap <silent> <buffer> ae :<C-U>call <SID>wrap_around()<CR>
xnoremap <silent> <buffer> ie :<C-U>call <SID>wrap_inside()<CR>
xnoremap <silent> <buffer> ae :<C-U>call <SID>wrap_around()<CR>
endif
function! s:wrap_around()
" If the cursor is at the end of the tag element, move back
" so that the end tag can be detected.
while getline('.')[col('.')-1] ==# '}'
execute 'norm h'
endwhile
" Moves to the end of the closing tag
let pos = search('}}','We')
if pos != 0
if getline('.')[col('.')] ==# '}'
" Ending tag contains 3 closing brackets '}}}',
" move to the last bracket.
execute 'norm l'
endif
" select the whole tag
execute 'norm v%'
endif
endfunction
function! s:wrap_inside()
" If the cursor is at the end of the tag element, move back
" so that the end tag can be detected.
while getline('.')[col('.')-1] ==# '}'
execute 'norm h'
endwhile
" Moves to the end of the closing tag
let pos = search('}}','W')
if pos != 0
" select only inside the tag
execute 'norm v%loho'
endif
endfunction
let &cpo = s:cpo_save
unlet s:cpo_save
" vim: nofoldenable

15
ftplugin/opencl.vim Normal file
View File

@@ -0,0 +1,15 @@
if exists("b:did_ftplugin") | finish | endif
if version > 600
runtime! ftplugin/c.vim
endif
" Smaller tab stops.
setlocal tabstop=4
setlocal shiftwidth=4
" Smart tabbing/indenting
setlocal smarttab
setlocal smartindent
let b:did_ftplugin = 1

View File

@@ -82,6 +82,7 @@ let b:undo_ftplugin = "setlocal fo< com< cms< inc< inex< def< isf< kp< path<" .
" proper matching for matchit plugin " proper matching for matchit plugin
let b:match_skip = 's:comment\|string\|perlQQ\|perlShellCommand\|perlHereDoc\|perlSubstitution\|perlTranslation\|perlMatch\|perlFormatField' let b:match_skip = 's:comment\|string\|perlQQ\|perlShellCommand\|perlHereDoc\|perlSubstitution\|perlTranslation\|perlMatch\|perlFormatField'
let b:match_words = '\<if\>:\<elsif\>:\<else\>'
" Restore the saved compatibility options. " Restore the saved compatibility options.
let &cpo = s:save_cpo let &cpo = s:save_cpo

View File

@@ -1,137 +1,6 @@
" Vim filetype plugin setl ts=2
" Language: Puppet setl sts=2
" Maintainer: Todd Zullinger <tmz@pobox.com> setl sw=2
" Last Change: 2009 Aug 19 setl et
" vim: set sw=4 sts=4: setl keywordprg=puppet\ describe\ --providers
setl iskeyword=-,:,@,48-57,_,192-255
if exists("b:did_ftplugin")
finish
endif
let b:did_ftplugin = 1
if !exists("no_plugin_maps") && !exists("no_puppet_maps")
if !hasmapto("<Plug>AlignRange")
map <buffer> <LocalLeader>= <Plug>AlignRange
endif
endif
noremap <buffer> <unique> <script> <Plug>AlignArrows :call <SID>AlignArrows()<CR>
noremap <buffer> <unique> <script> <Plug>AlignRange :call <SID>AlignRange()<CR>
iabbrev => =><C-R>=<SID>AlignArrows('=>')<CR>
iabbrev +> +><C-R>=<SID>AlignArrows('+>')<CR>
if exists('*s:AlignArrows')
finish
endif
let s:arrow_re = '[=+]>'
let s:selector_re = '[=+]>\s*\$.*\s*?\s*{\s*$'
" set keywordprg to 'pi' (alias for puppet describe)
" this lets K invoke pi for word under cursor
setlocal keywordprg=puppet\ describe
function! s:AlignArrows(op)
let cursor_pos = getpos('.')
let lnum = line('.')
let line = getline(lnum)
if line !~ s:arrow_re
return
endif
let pos = stridx(line, a:op)
let start = lnum
let end = lnum
let pnum = lnum - 1
while 1
let pline = getline(pnum)
if pline !~ s:arrow_re || pline =~ s:selector_re
break
endif
let start = pnum
let pnum -= 1
endwhile
let cnum = end
while 1
let cline = getline(cnum)
if cline !~ s:arrow_re ||
\ (indent(cnum) != indent(cnum+1) && getline(cnum+1) !~ '\s*}')
break
endif
let end = cnum
let cnum += 1
endwhile
call s:AlignSection(start, end)
let cursor_pos[2] = stridx(getline('.'), a:op) + strlen(a:op) + 1
call setpos('.', cursor_pos)
return ''
endfunction
function! s:AlignRange() range
call s:AlignSection(a:firstline, a:lastline)
endfunction
" AlignSection and AlignLine are from the vim wiki:
" http://vim.wikia.com/wiki/Regex-based_text_alignment
function! s:AlignSection(start, end)
let extra = 1
let sep = s:arrow_re
let maxpos = 0
let section = getline(a:start, a:end)
for line in section
let pos = match(line, ' *'.sep)
if maxpos < pos
let maxpos = pos
endif
endfor
call map(section, 's:AlignLine(v:val, sep, maxpos, extra)')
call setline(a:start, section)
endfunction
function! s:AlignLine(line, sep, maxpos, extra)
let m = matchlist(a:line, '\(.\{-}\) \{-}\('.a:sep.'.*\)')
if empty(m)
return a:line
endif
let spaces = repeat(' ', a:maxpos - strlen(m[1]) + a:extra)
return m[1] . spaces . m[2]
endfunction
" detect if we are in a module and set variables for classpath (autoloader),
" modulename, modulepath, and classname
" useful to use in templates
function! s:SetModuleVars()
" set these to any dirs you want to stop searching on
" useful to stop vim from spinning disk looking all over for init.pp
" probably only a macosx problem with /tmp since it's really /private/tmp
" but it's here if you find vim spinning on new files in certain places
if !exists("g:puppet_stop_dirs")
let g:puppet_stop_dirs = '/tmp;/private/tmp'
endif
" search path for init.pp
let b:search_path = './**'
let b:search_path = b:search_path . ';' . getcwd() . ';' . g:puppet_stop_dirs
" find what we assume to be our module dir
let b:initpp = findfile("init.pp", b:search_path) " find an init.pp up or down
let b:module_path = fnamemodify(b:initpp, ":p:h:h") " full path to module name
let b:module_name = fnamemodify(b:module_path, ":t") " just the module name
" sub out the full path to the module with the name and replace slashes with ::
let b:classpath = fnamemodify(expand("%:p:r"), ':s#' . b:module_path . '/manifests#' . b:module_name . '#'. ":gs?/?::?")
let b:classname = expand("%:t:r")
" if we don't start with a word we didn't replace the module_path
" probably b/c we couldn't find an init.pp / not a module
" so we assume that root of the filename is the class (sane for throwaway
" manifests
if b:classpath =~ '^::'
let b:classpath = b:classname
endif
endfunction
if exists("g:puppet_module_detect")
call s:SetModuleVars()
endif

View File

@@ -34,6 +34,7 @@ if exists("loaded_matchit") && !exists("b:match_words")
let b:match_skip = let b:match_skip =
\ "synIDattr(synID(line('.'),col('.'),0),'name') =~ '" . \ "synIDattr(synID(line('.'),col('.'),0),'name') =~ '" .
\ "\\<ruby\\%(String\\|StringDelimiter\\|ASCIICode\\|Escape\\|" . \ "\\<ruby\\%(String\\|StringDelimiter\\|ASCIICode\\|Escape\\|" .
\ "Regexp\\|RegexpDelimiter\\|" .
\ "Interpolation\\|NoInterpolation\\|Comment\\|Documentation\\|" . \ "Interpolation\\|NoInterpolation\\|Comment\\|Documentation\\|" .
\ "ConditionalModifier\\|RepeatModifier\\|OptionalDo\\|" . \ "ConditionalModifier\\|RepeatModifier\\|OptionalDo\\|" .
\ "Function\\|BlockArgument\\|KeywordAsMethod\\|ClassVariable\\|" . \ "Function\\|BlockArgument\\|KeywordAsMethod\\|ClassVariable\\|" .

View File

@@ -1,7 +1,7 @@
" Vim syntax file " Vim syntax file
" Language: Rust " Language: Rust
" Maintainer: Chris Morgan <me@chrismorgan.info> " Maintainer: Chris Morgan <me@chrismorgan.info>
" Last Change: 2013 Jul 10 " Last Change: 2014 Feb 27
if exists("b:did_ftplugin") if exists("b:did_ftplugin")
finish finish
@@ -42,4 +42,55 @@ if exists("g:loaded_delimitMate")
let b:delimitMate_excluded_regions = delimitMate#Get("excluded_regions") . ',rustLifetimeCandidate,rustGenericLifetimeCandidate' let b:delimitMate_excluded_regions = delimitMate#Get("excluded_regions") . ',rustLifetimeCandidate,rustGenericLifetimeCandidate'
endif endif
let b:undo_ftplugin = "setlocal formatoptions< comments< commentstring< includeexpr< suffixesadd< | if exists('b:rust_original_delimitMate_excluded_regions') | let b:delimitMate_excluded_regions = b:rust_original_delimitMate_excluded_regions | unlet b:rust_original_delimitMate_excluded_regions | elseif exists('b:delimitMate_excluded_regions') | unlet b:delimitMate_excluded_regions | endif" " Bind motion commands to support hanging indents
nnoremap <silent> <buffer> [[ :call <SID>Rust_Jump('n', 'Back')<CR>
nnoremap <silent> <buffer> ]] :call <SID>Rust_Jump('n', 'Forward')<CR>
xnoremap <silent> <buffer> [[ :call <SID>Rust_Jump('v', 'Back')<CR>
xnoremap <silent> <buffer> ]] :call <SID>Rust_Jump('v', 'Forward')<CR>
onoremap <silent> <buffer> [[ :call <SID>Rust_Jump('o', 'Back')<CR>
onoremap <silent> <buffer> ]] :call <SID>Rust_Jump('o', 'Forward')<CR>
let b:undo_ftplugin = "
\setlocal formatoptions< comments< commentstring< includeexpr< suffixesadd<
\|if exists('b:rust_original_delimitMate_excluded_regions')
\|let b:delimitMate_excluded_regions = b:rust_original_delimitMate_excluded_regions
\|unlet b:rust_original_delimitMate_excluded_regions
\|elseif exists('b:delimitMate_excluded_regions')
\|unlet b:delimitMate_excluded_regions
\|endif
\|nunmap <buffer> [[
\|nunmap <buffer> ]]
\|xunmap <buffer> [[
\|xunmap <buffer> ]]
\|ounmap <buffer> [[
\|ounmap <buffer> ]]
\"
if exists('*<SID>Rust_Jump') | finish | endif
function! <SID>Rust_Jump(mode, function) range
let cnt = v:count1
normal! m'
if a:mode ==# 'v'
norm! gv
endif
let foldenable = &foldenable
set nofoldenable
while cnt > 0
execute "call <SID>Rust_Jump_" . a:function . "()"
let cnt = cnt - 1
endwhile
let &foldenable = foldenable
endfunction
function! <SID>Rust_Jump_Back()
call search('{', 'b')
keepjumps normal! w99[{
endfunction
function! <SID>Rust_Jump_Forward()
normal! j0
call search('{', 'b')
keepjumps normal! w99[{%
call search('{')
endfunction

View File

@@ -1,9 +1,8 @@
setlocal textwidth=140
setlocal shiftwidth=2
setlocal softtabstop=2
setlocal expandtab
setlocal formatoptions=tcqr
setlocal commentstring=//%s setlocal commentstring=//%s
let &l:include = '^\s*import'
let &l:includeexpr = 'substitute(v:fname,"\\.","/","g")'
setlocal path+=src/main/scala,src/test/scala
setlocal suffixesadd=.scala
set makeprg=sbt\ -Dsbt.log.noformat=true\ compile set makeprg=sbt\ -Dsbt.log.noformat=true\ compile
set efm=%E\ %#[error]\ %f:%l:\ %m,%C\ %#[error]\ %p^,%-C%.%#,%Z, set efm=%E\ %#[error]\ %f:%l:\ %m,%C\ %#[error]\ %p^,%-C%.%#,%Z,
@@ -169,3 +168,27 @@ let g:tagbar_type_scala = {
\ 'case class' : 'r' \ 'case class' : 'r'
\ } \ }
\ } \ }
function! s:CreateOrExpression(keywords)
return '('.join(a:keywords, '|').')'
endfunction
function! s:NextSection(backwards)
if a:backwards
let dir = '?'
else
let dir = '/'
endif
let keywords = [ 'def', 'class', 'trait', 'object' ]
let keywordsOrExpression = s:CreateOrExpression(keywords)
let modifiers = [ 'public', 'private', 'private\[\w*\]', 'protected', 'abstract', 'case', 'override', 'implicit', 'final', 'sealed']
let modifierOrExpression = s:CreateOrExpression(modifiers)
let regex = '^ *('.modifierOrExpression.' )* *'.keywordsOrExpression."\r"
execute 'silent normal! ' . dir . '\v'.regex
endfunction
noremap <script> <buffer> <silent> ]] :call <SID>NextSection(0)<cr>
noremap <script> <buffer> <silent> [[ :call <SID>NextSection(1)<cr>

15
indent/arduino.vim Normal file
View File

@@ -0,0 +1,15 @@
" Vim indent file
" Language: Arduino
" Maintainer: Kevin Sjöberg <kev.sjoberg@gmail.com>
" Last Change: 2014 Feb 28
" Only load this indent file when no other was loaded.
if exists("b:did_indent")
finish
endif
let b:did_indent = 1
" C++ indenting is built-in, thus this is very simple
setlocal cindent
let b:undo_indent = "setl cin<"

View File

@@ -8,11 +8,6 @@
" License: Same as Vim " License: Same as Vim
" Last Change: %%RELEASE_DATE%% " Last Change: %%RELEASE_DATE%%
" TODO: Indenting after multibyte characters is broken:
" (let [Δ (if foo
" bar ; Indent error
" baz)])
if exists("b:did_indent") if exists("b:did_indent")
finish finish
endif endif
@@ -21,7 +16,7 @@ let b:did_indent = 1
let s:save_cpo = &cpo let s:save_cpo = &cpo
set cpo&vim set cpo&vim
let b:undo_indent = 'setlocal autoindent< smartindent< lispwords< expandtab< softtabstop< shiftwidth< indentexpr< indentkeys<' let b:undo_indent = 'setlocal autoindent< smartindent< expandtab< softtabstop< shiftwidth< indentexpr< indentkeys<'
setlocal noautoindent nosmartindent setlocal noautoindent nosmartindent
setlocal softtabstop=2 shiftwidth=2 expandtab setlocal softtabstop=2 shiftwidth=2 expandtab
@@ -53,36 +48,43 @@ if exists("*searchpairpos")
let g:clojure_align_multiline_strings = 0 let g:clojure_align_multiline_strings = 0
endif endif
function! s:SynIdName() if !exists('g:clojure_align_subforms')
let g:clojure_align_subforms = 0
endif
function! s:syn_id_name()
return synIDattr(synID(line("."), col("."), 0), "name") return synIDattr(synID(line("."), col("."), 0), "name")
endfunction endfunction
function! s:CurrentChar() function! s:ignored_region()
return s:syn_id_name() =~? '\vstring|regex|comment|character'
endfunction
function! s:current_char()
return getline('.')[col('.')-1] return getline('.')[col('.')-1]
endfunction endfunction
function! s:CurrentWord() function! s:current_word()
return getline('.')[col('.')-1 : searchpos('\v>', 'n', line('.'))[1]-2] return getline('.')[col('.')-1 : searchpos('\v>', 'n', line('.'))[1]-2]
endfunction endfunction
function! s:IsParen() function! s:is_paren()
return s:CurrentChar() =~ '\v[\(\)\[\]\{\}]' && return s:current_char() =~# '\v[\(\)\[\]\{\}]' && !s:ignored_region()
\ s:SynIdName() !~? '\vstring|regex|comment|character'
endfunction endfunction
" Returns 1 if string matches a pattern in 'patterns', which may be a " Returns 1 if string matches a pattern in 'patterns', which may be a
" list of patterns, or a comma-delimited string of implicitly anchored " list of patterns, or a comma-delimited string of implicitly anchored
" patterns. " patterns.
function! s:MatchesOne(patterns, string) function! s:match_one(patterns, string)
let list = type(a:patterns) == type([]) let list = type(a:patterns) == type([])
\ ? a:patterns \ ? a:patterns
\ : map(split(a:patterns, ','), '"^" . v:val . "$"') \ : map(split(a:patterns, ','), '"^" . v:val . "$"')
for pat in list for pat in list
if a:string =~ pat | return 1 | endif if a:string =~# pat | return 1 | endif
endfor endfor
endfunction endfunction
function! s:MatchPairs(open, close, stopat) function! s:match_pairs(open, close, stopat)
" Stop only on vector and map [ resp. {. Ignore the ones in strings and " Stop only on vector and map [ resp. {. Ignore the ones in strings and
" comments. " comments.
if a:stopat == 0 if a:stopat == 0
@@ -91,11 +93,11 @@ if exists("*searchpairpos")
let stopat = a:stopat let stopat = a:stopat
endif endif
let pos = searchpairpos(a:open, '', a:close, 'bWn', "!s:IsParen()", stopat) let pos = searchpairpos(a:open, '', a:close, 'bWn', "!s:is_paren()", stopat)
return [pos[0], virtcol(pos)] return [pos[0], col(pos)]
endfunction endfunction
function! s:ClojureCheckForStringWorker() function! s:clojure_check_for_string_worker()
" Check whether there is the last character of the previous line is " Check whether there is the last character of the previous line is
" highlighted as a string. If so, we check whether it's a ". In this " highlighted as a string. If so, we check whether it's a ". In this
" case we have to check also the previous character. The " might be the " case we have to check also the previous character. The " might be the
@@ -109,17 +111,17 @@ if exists("*searchpairpos")
call cursor(nb, 0) call cursor(nb, 0)
call cursor(0, col("$") - 1) call cursor(0, col("$") - 1)
if s:SynIdName() !~? "string" if s:syn_id_name() !~? "string"
return -1 return -1
endif endif
" This will not work for a " in the first column... " This will not work for a " in the first column...
if s:CurrentChar() == '"' if s:current_char() == '"'
call cursor(0, col("$") - 2) call cursor(0, col("$") - 2)
if s:SynIdName() !~? "string" if s:syn_id_name() !~? "string"
return -1 return -1
endif endif
if s:CurrentChar() != '\\' if s:current_char() != '\\'
return -1 return -1
endif endif
call cursor(0, col("$") - 1) call cursor(0, col("$") - 1)
@@ -134,63 +136,74 @@ if exists("*searchpairpos")
return indent(".") return indent(".")
endfunction endfunction
function! s:CheckForString() function! s:check_for_string()
let pos = getpos('.') let pos = getpos('.')
try try
let val = s:ClojureCheckForStringWorker() let val = s:clojure_check_for_string_worker()
finally finally
call setpos('.', pos) call setpos('.', pos)
endtry endtry
return val return val
endfunction endfunction
function! s:ClojureIsMethodSpecialCaseWorker(position) function! s:strip_namespace_and_macro_chars(word)
return substitute(a:word, "\\v%(.*/|[#'`~@^,]*)(.*)", '\1', '')
endfunction
function! s:clojure_is_method_special_case_worker(position)
" Find the next enclosing form. " Find the next enclosing form.
call search('\S', 'Wb') call search('\S', 'Wb')
" Special case: we are at a '(('. " Special case: we are at a '(('.
if s:CurrentChar() == '(' if s:current_char() == '('
return 0 return 0
endif endif
call cursor(a:position) call cursor(a:position)
let nextParen = s:MatchPairs('(', ')', 0) let next_paren = s:match_pairs('(', ')', 0)
" Special case: we are now at toplevel. " Special case: we are now at toplevel.
if nextParen == [0, 0] if next_paren == [0, 0]
return 0 return 0
endif endif
call cursor(nextParen) call cursor(next_paren)
call search('\S', 'W') call search('\S', 'W')
if g:clojure_special_indent_words =~ '\<' . s:CurrentWord() . '\>' let w = s:strip_namespace_and_macro_chars(s:current_word())
if g:clojure_special_indent_words =~# '\V\<' . w . '\>'
return 1 return 1
endif endif
return 0 return 0
endfunction endfunction
function! s:IsMethodSpecialCase(position) function! s:is_method_special_case(position)
let pos = getpos('.') let pos = getpos('.')
try try
let val = s:ClojureIsMethodSpecialCaseWorker(a:position) let val = s:clojure_is_method_special_case_worker(a:position)
finally finally
call setpos('.', pos) call setpos('.', pos)
endtry endtry
return val return val
endfunction endfunction
function! GetClojureIndent() " Returns 1 for opening brackets, -1 for _anything else_.
function! s:bracket_type(char)
return stridx('([{', a:char) > -1 ? 1 : -1
endfunction
" Returns: [opening-bracket-lnum, indent]
function! s:clojure_indent_pos()
" Get rid of special case. " Get rid of special case.
if line(".") == 1 if line(".") == 1
return 0 return [0, 0]
endif endif
" We have to apply some heuristics here to figure out, whether to use " We have to apply some heuristics here to figure out, whether to use
" normal lisp indenting or not. " normal lisp indenting or not.
let i = s:CheckForString() let i = s:check_for_string()
if i > -1 if i > -1
return i + !!g:clojure_align_multiline_strings return [0, i + !!g:clojure_align_multiline_strings]
endif endif
call cursor(0, 1) call cursor(0, 1)
@@ -198,28 +211,28 @@ if exists("*searchpairpos")
" Find the next enclosing [ or {. We can limit the second search " Find the next enclosing [ or {. We can limit the second search
" to the line, where the [ was found. If no [ was there this is " to the line, where the [ was found. If no [ was there this is
" zero and we search for an enclosing {. " zero and we search for an enclosing {.
let paren = s:MatchPairs('(', ')', 0) let paren = s:match_pairs('(', ')', 0)
let bracket = s:MatchPairs('\[', '\]', paren[0]) let bracket = s:match_pairs('\[', '\]', paren[0])
let curly = s:MatchPairs('{', '}', bracket[0]) let curly = s:match_pairs('{', '}', bracket[0])
" In case the curly brace is on a line later then the [ or - in " In case the curly brace is on a line later then the [ or - in
" case they are on the same line - in a higher column, we take the " case they are on the same line - in a higher column, we take the
" curly indent. " curly indent.
if curly[0] > bracket[0] || curly[1] > bracket[1] if curly[0] > bracket[0] || curly[1] > bracket[1]
if curly[0] > paren[0] || curly[1] > paren[1] if curly[0] > paren[0] || curly[1] > paren[1]
return curly[1] return curly
endif endif
endif endif
" If the curly was not chosen, we take the bracket indent - if " If the curly was not chosen, we take the bracket indent - if
" there was one. " there was one.
if bracket[0] > paren[0] || bracket[1] > paren[1] if bracket[0] > paren[0] || bracket[1] > paren[1]
return bracket[1] return bracket
endif endif
" There are neither { nor [ nor (, ie. we are at the toplevel. " There are neither { nor [ nor (, ie. we are at the toplevel.
if paren == [0, 0] if paren == [0, 0]
return 0 return paren
endif endif
" Now we have to reimplement lispindent. This is surprisingly easy, as " Now we have to reimplement lispindent. This is surprisingly easy, as
@@ -237,58 +250,116 @@ if exists("*searchpairpos")
" - In any other case we use the column of the end of the word + 2. " - In any other case we use the column of the end of the word + 2.
call cursor(paren) call cursor(paren)
if s:IsMethodSpecialCase(paren) if s:is_method_special_case(paren)
return paren[1] + &shiftwidth - 1 return [paren[0], paren[1] + &shiftwidth - 1]
endif endif
" In case we are at the last character, we use the paren position. " In case we are at the last character, we use the paren position.
if col("$") - 1 == paren[1] if col("$") - 1 == paren[1]
return paren[1] return paren
endif endif
" In case after the paren is a whitespace, we search for the next word. " In case after the paren is a whitespace, we search for the next word.
call cursor(0, col('.') + 1) call cursor(0, col('.') + 1)
if s:CurrentChar() == ' ' if s:current_char() == ' '
call search('\v\S', 'W') call search('\v\S', 'W')
endif endif
" If we moved to another line, there is no word after the (. We " If we moved to another line, there is no word after the (. We
" use the ( position for indent. " use the ( position for indent.
if line(".") > paren[0] if line(".") > paren[0]
return paren[1] return paren
endif endif
" We still have to check, whether the keyword starts with a (, [ or {. " We still have to check, whether the keyword starts with a (, [ or {.
" In that case we use the ( position for indent. " In that case we use the ( position for indent.
let w = s:CurrentWord() let w = s:current_word()
if stridx('([{', w[0]) > -1 if s:bracket_type(w[0]) == 1
return paren[1] return paren
endif endif
" Test words without namespace qualifiers and leading reader macro " Test words without namespace qualifiers and leading reader macro
" metacharacters. " metacharacters.
" "
" e.g. clojure.core/defn and #'defn should both indent like defn. " e.g. clojure.core/defn and #'defn should both indent like defn.
let ww = substitute(w, "\\v%(.*/|[#'`~@^,]*)(.*)", '\1', '') let ww = s:strip_namespace_and_macro_chars(w)
if &lispwords =~ '\V\<' . ww . '\>' if &lispwords =~# '\V\<' . ww . '\>'
return paren[1] + &shiftwidth - 1 return [paren[0], paren[1] + &shiftwidth - 1]
endif endif
if g:clojure_fuzzy_indent if g:clojure_fuzzy_indent
\ && !s:MatchesOne(g:clojure_fuzzy_indent_blacklist, ww) \ && !s:match_one(g:clojure_fuzzy_indent_blacklist, ww)
\ && s:MatchesOne(g:clojure_fuzzy_indent_patterns, ww) \ && s:match_one(g:clojure_fuzzy_indent_patterns, ww)
return paren[1] + &shiftwidth - 1 return [paren[0], paren[1] + &shiftwidth - 1]
endif endif
call search('\v\_s', 'cW') call search('\v\_s', 'cW')
call search('\v\S', 'W') call search('\v\S', 'W')
if paren[0] < line(".") if paren[0] < line(".")
return paren[1] + &shiftwidth - 1 return [paren[0], paren[1] + (g:clojure_align_subforms ? 0 : &shiftwidth - 1)]
endif endif
call search('\v\S', 'bW') call search('\v\S', 'bW')
return virtcol(".") + 1 return [line('.'), col('.') + 1]
endfunction
function! GetClojureIndent()
let lnum = line('.')
let orig_lnum = lnum
let orig_col = col('.')
let [opening_lnum, indent] = s:clojure_indent_pos()
" Account for multibyte characters
if opening_lnum > 0
let indent -= indent - virtcol([opening_lnum, indent])
endif
" Return if there are no previous lines to inherit from
if opening_lnum < 1 || opening_lnum >= lnum - 1
call cursor(orig_lnum, orig_col)
return indent
endif
let bracket_count = 0
" Take the indent of the first previous non-white line that is
" at the same sexp level. cf. src/misc1.c:get_lisp_indent()
while 1
let lnum = prevnonblank(lnum - 1)
let col = 1
if lnum <= opening_lnum
break
endif
call cursor(lnum, col)
" Handle bracket counting edge case
if s:is_paren()
let bracket_count += s:bracket_type(s:current_char())
endif
while 1
if search('\v[(\[{}\])]', '', lnum) < 1
break
elseif !s:ignored_region()
let bracket_count += s:bracket_type(s:current_char())
endif
endwhile
if bracket_count == 0
" Check if this is part of a multiline string
call cursor(lnum, 1)
if s:syn_id_name() !~? '\vstring|regex'
call cursor(orig_lnum, orig_col)
return indent(lnum)
endif
endif
endwhile
call cursor(orig_lnum, orig_col)
return indent
endfunction endfunction
setlocal indentexpr=GetClojureIndent() setlocal indentexpr=GetClojureIndent()
@@ -303,85 +374,6 @@ else
endif endif
" Specially indented symbols from clojure.core and clojure.test.
"
" Clojure symbols are indented in the defn style when they:
"
" * Define vars and anonymous functions
" * Create new lexical scopes or scopes with altered environments
" * Create conditional branches from a predicate function or value
"
" The arglists for these functions are generally in the form of [x & body];
" Functions that accept a flat list of forms do not treat the first argument
" specially and hence are not indented specially.
" Definitions
setlocal lispwords=
setlocal lispwords+=bound-fn
setlocal lispwords+=def
setlocal lispwords+=definline
setlocal lispwords+=definterface
setlocal lispwords+=defmacro
setlocal lispwords+=defmethod
setlocal lispwords+=defmulti
setlocal lispwords+=defn
setlocal lispwords+=defn-
setlocal lispwords+=defonce
setlocal lispwords+=defprotocol
setlocal lispwords+=defrecord
setlocal lispwords+=defstruct
setlocal lispwords+=deftest " clojure.test
setlocal lispwords+=deftest- " clojure.test
setlocal lispwords+=deftype
setlocal lispwords+=extend
setlocal lispwords+=extend-protocol
setlocal lispwords+=extend-type
setlocal lispwords+=fn
setlocal lispwords+=ns
setlocal lispwords+=proxy
setlocal lispwords+=reify
setlocal lispwords+=set-test " clojure.test
" Binding forms
setlocal lispwords+=as->
setlocal lispwords+=binding
setlocal lispwords+=doall
setlocal lispwords+=dorun
setlocal lispwords+=doseq
setlocal lispwords+=dotimes
setlocal lispwords+=doto
setlocal lispwords+=for
setlocal lispwords+=if-let
setlocal lispwords+=let
setlocal lispwords+=letfn
setlocal lispwords+=locking
setlocal lispwords+=loop
setlocal lispwords+=testing " clojure.test
setlocal lispwords+=when-first
setlocal lispwords+=when-let
setlocal lispwords+=with-bindings
setlocal lispwords+=with-in-str
setlocal lispwords+=with-local-vars
setlocal lispwords+=with-open
setlocal lispwords+=with-precision
setlocal lispwords+=with-redefs
setlocal lispwords+=with-redefs-fn
setlocal lispwords+=with-test " clojure.test
" Conditional branching
setlocal lispwords+=case
setlocal lispwords+=cond->
setlocal lispwords+=cond->>
setlocal lispwords+=condp
setlocal lispwords+=if
setlocal lispwords+=if-not
setlocal lispwords+=when
setlocal lispwords+=when-not
setlocal lispwords+=while
" Exception handling
setlocal lispwords+=catch
let &cpo = s:save_cpo let &cpo = s:save_cpo
unlet! s:save_cpo unlet! s:save_cpo

View File

@@ -1,7 +1,7 @@
" Vim indent file " Vim indent file
" Language: Cucumber " Language: Cucumber
" Maintainer: Tim Pope <vimNOSPAM@tpope.org> " Maintainer: Tim Pope <vimNOSPAM@tpope.org>
" Last Change: 2010 May 21 " Last Change: 2013 May 30
if exists("b:did_indent") if exists("b:did_indent")
finish finish

View File

@@ -10,7 +10,7 @@ let b:did_indent = 1
setlocal nosmartindent setlocal nosmartindent
setlocal indentexpr=GetElixirIndent(v:lnum) setlocal indentexpr=GetElixirIndent()
setlocal indentkeys+==end,=else:,=match:,=elsif:,=catch:,=after:,=rescue: setlocal indentkeys+==end,=else:,=match:,=elsif:,=catch:,=after:,=rescue:
if exists("*GetElixirIndent") if exists("*GetElixirIndent")
@@ -25,12 +25,13 @@ let s:block_skip = "synIDattr(synID(line('.'),col('.'),1),'name') =~? '" . s:s
let s:block_start = 'do\|fn' let s:block_start = 'do\|fn'
let s:block_middle = 'else\|match\|elsif\|catch\|after\|rescue' let s:block_middle = 'else\|match\|elsif\|catch\|after\|rescue'
let s:block_end = 'end' let s:block_end = 'end'
let s:arrow = '^.*->$'
let s:pipeline = '^\s*|>.*$' let s:pipeline = '^\s*|>.*$'
let s:indent_keywords = '\<\%(' . s:block_start . '\|' . s:block_middle . '\)$' let s:indent_keywords = '\<\%(' . s:block_start . '\|' . s:block_middle . '\)$' . '\|' . s:arrow
let s:deindent_keywords = '^\s*\<\%(' . s:block_end . '\|' . s:block_middle . '\)\>' let s:deindent_keywords = '^\s*\<\%(' . s:block_end . '\|' . s:block_middle . '\)\>' . '\|' . s:arrow
function! GetElixirIndent(...) function! GetElixirIndent()
let lnum = prevnonblank(v:lnum - 1) let lnum = prevnonblank(v:lnum - 1)
let ind = indent(lnum) let ind = indent(lnum)
@@ -39,50 +40,64 @@ function! GetElixirIndent(...)
return 0 return 0
endif endif
" TODO: Remove these 2 lines
" I don't know why, but for the test on spec/indent/lists_spec.rb:24.
" Vim is making some mess on parsing the syntax of 'end', it is being
" recognized as 'elixirString' when should be recognized as 'elixirBlock'.
" This forces vim to sync the syntax.
call synID(v:lnum, 1, 1)
syntax sync fromstart
if synIDattr(synID(v:lnum, 1, 1), "name") !~ s:skip_syntax if synIDattr(synID(v:lnum, 1, 1), "name") !~ s:skip_syntax
let splited_line = split(getline(lnum), '\zs') let current_line = getline(v:lnum)
let last_line = getline(lnum)
let splited_line = split(last_line, '\zs')
let opened_symbol = 0 let opened_symbol = 0
let opened_symbol += count(splited_line, '[') - count(splited_line, ']') let opened_symbol += count(splited_line, '[') - count(splited_line, ']')
let opened_symbol += count(splited_line, '{') - count(splited_line, '}') let opened_symbol += count(splited_line, '{') - count(splited_line, '}')
let ind += opened_symbol * &sw let ind += opened_symbol * &sw
if getline(lnum) =~ s:indent_keywords . if current_line =~ '^\s*\(\]\|}\)'
\ '\|^\s*\%(.*->\)$' let ind -= &sw
endif
if last_line =~ s:indent_keywords
let ind += &sw let ind += &sw
endif endif
" if line starts with pipeline " if line starts with pipeline
" and last line doesn't start with pipeline " and last line is an attribution
if getline(v:lnum) =~ s:pipeline && " indents pipeline in same level as attribution
\ getline(lnum) !~ s:pipeline if current_line =~ s:pipeline &&
let ind += &sw \ last_line =~ '^[^=]\+=.\+$'
endif let b:old_ind = ind
let ind = float2nr(matchend(last_line, '=\s*[^ ]') / &sw) * &sw
" if last line starts with pipeline
" and currentline doesn't start with pipeline
if getline(lnum) =~ s:pipeline &&
\ getline(v:lnum) !~ s:pipeline
let ind -= &sw
endif endif
" if last line starts with pipeline " if last line starts with pipeline
" and current line doesn't start with pipeline " and current line doesn't start with pipeline
" but last line started a block " returns the indentation before the pipeline
if getline(lnum) =~ s:pipeline && if last_line =~ s:pipeline &&
\ getline(v:lnum) !~ s:pipeline && \ current_line !~ s:pipeline
\ getline(lnum) =~ s:block_start let ind = b:old_ind
let ind += &sw
endif endif
if getline(v:lnum) =~ s:deindent_keywords if current_line =~ s:deindent_keywords
let bslnum = searchpair( '\<\%(' . s:block_start . '\):\@!\>', let bslnum = searchpair( '\<\%(' . s:block_start . '\):\@!\>',
\ '\<\%(' . s:block_middle . '\):\@!\>\zs', \ '\<\%(' . s:block_middle . '\):\@!\>\zs',
\ '\<:\@<!' . s:block_end . '\>\zs', \ '\<:\@<!' . s:block_end . '\>\zs',
\ 'nbW', \ 'nbW',
\ s:block_skip ) \ s:block_skip )
let ind = indent(bslnum) let ind = indent(bslnum)
endif endif
" indent case statements '->'
if current_line =~ s:arrow
let ind += &sw
endif
endif endif
return ind return ind

14
indent/ember-script.vim Normal file
View File

@@ -0,0 +1,14 @@
" Language: ember-script
" Maintainer: heartsentwined <heartsentwined@cogito-lab.com>
" URL: http://github.com/heartsentwined/vim-ember-script
" Version: 1.0.1
" Last Change: 2013 Apr 17
" License: GPL-3.0
if exists('b:did_indent')
finish
endif
runtime! indent/coffee.vim
unlet! b:did_indent
let b:did_indent = 1

View File

@@ -19,6 +19,9 @@ else
endif endif
unlet! b:did_indent unlet! b:did_indent
" Force HTML indent to not keep state.
let b:html_indent_usestate = 0
if &l:indentexpr == '' if &l:indentexpr == ''
if &l:cindent if &l:cindent
let &l:indentexpr = 'cindent(v:lnum)' let &l:indentexpr = 'cindent(v:lnum)'
@@ -53,7 +56,8 @@ function! GetErubyIndent(...)
else else
exe "let ind = ".b:eruby_subtype_indentexpr exe "let ind = ".b:eruby_subtype_indentexpr
" Workaround for Andy Wokula's HTML indent " Workaround for Andy Wokula's HTML indent. This should be removed after
" some time, since the newest version is fixed in a different way.
if b:eruby_subtype_indentexpr =~# '^HtmlIndent(' if b:eruby_subtype_indentexpr =~# '^HtmlIndent('
\ && exists('b:indent') \ && exists('b:indent')
\ && type(b:indent) == type({}) \ && type(b:indent) == type({})

View File

@@ -24,6 +24,18 @@ if exists("*GoIndent")
finish finish
endif endif
" The shiftwidth() function is relatively new.
" Don't require it to exist.
if exists('*shiftwidth')
func s:sw()
return shiftwidth()
endfunc
else
func s:sw()
return &shiftwidth
endfunc
endif
function! GoIndent(lnum) function! GoIndent(lnum)
let prevlnum = prevnonblank(a:lnum-1) let prevlnum = prevnonblank(a:lnum-1)
if prevlnum == 0 if prevlnum == 0
@@ -40,17 +52,17 @@ function! GoIndent(lnum)
if prevl =~ '[({]\s*$' if prevl =~ '[({]\s*$'
" previous line opened a block " previous line opened a block
let ind += &sw let ind += s:sw()
endif endif
if prevl =~# '^\s*\(case .*\|default\):$' if prevl =~# '^\s*\(case .*\|default\):$'
" previous line is part of a switch statement " previous line is part of a switch statement
let ind += &sw let ind += s:sw()
endif endif
" TODO: handle if the previous line is a label. " TODO: handle if the previous line is a label.
if thisl =~ '^\s*[)}]' if thisl =~ '^\s*[)}]'
" this line closed a block " this line closed a block
let ind -= &sw let ind -= s:sw()
endif endif
" Colons are tricky. " Colons are tricky.
@@ -58,7 +70,7 @@ function! GoIndent(lnum)
" We ignore trying to deal with jump labels because (a) they're rare, and " We ignore trying to deal with jump labels because (a) they're rare, and
" (b) they're hard to disambiguate from a composite literal key. " (b) they're hard to disambiguate from a composite literal key.
if thisl =~# '^\s*\(case .*\|default\):$' if thisl =~# '^\s*\(case .*\|default\):$'
let ind -= &sw let ind -= s:sw()
endif endif
return ind return ind

View File

@@ -36,7 +36,7 @@ let b:did_indent = 1
" [-- local settings (must come before aborting the script) --] " [-- local settings (must come before aborting the script) --]
setlocal indentexpr=HtmlIndentGet(v:lnum) setlocal indentexpr=HtmlIndentGet(v:lnum)
setlocal indentkeys=o,O,*<Return>,<>>,{,} setlocal indentkeys=o,O,*<Return>,<>>,{,},!^F
let s:tags = [] let s:tags = []

View File

@@ -6,36 +6,5 @@
if exists("b:did_indent") if exists("b:did_indent")
finish finish
endif endif
let b:did_indent = 1
setlocal autoindent sw=2 et
setlocal indentexpr=GetLessIndent()
setlocal indentkeys=o,O,*<Return>,<:>,!^F
" Only define the function once.
if exists("*GetLessIndent")
finish
endif
let s:property = '^\s*:\|^\s*[[:alnum:]#{}-]\+\%(:\|\s*=\)'
function! GetLessIndent()
let lnum = prevnonblank(v:lnum-1)
let line = substitute(getline(lnum),'\s\+$','','')
let cline = substitute(substitute(getline(v:lnum),'\s\+$','',''),'^\s\+','','')
let lastcol = strlen(line)
let line = substitute(line,'^\s\+','','')
let indent = indent(lnum)
let cindent = indent(v:lnum)
if line !~ s:property && cline =~ s:property
return indent + &sw
"elseif line =~ s:property && cline !~ s:property
"return indent - &sw
else
return -1
endif
endfunction
" vim:set sw=2:
runtime! indent/css.vim

10
indent/opencl.vim Normal file
View File

@@ -0,0 +1,10 @@
" Only load this indent file when no other was loaded.
if exists("b:did_indent")
finish
endif
if version > 600
runtime! indent/c.vim
endif
let b:did_indent = 1

View File

@@ -134,6 +134,7 @@ function! GetPerlIndent()
\ || synid == "perlMatchStartEnd" \ || synid == "perlMatchStartEnd"
\ || synid == "perlHereDoc" \ || synid == "perlHereDoc"
\ || synid == "perlBraces" \ || synid == "perlBraces"
\ || synid == "perlStatementIndirObj"
\ || synid =~ "^perlFiledescStatement" \ || synid =~ "^perlFiledescStatement"
\ || synid =~ '^perl\(Sub\|Block\|Package\)Fold' \ || synid =~ '^perl\(Sub\|Block\|Package\)Fold'
let brace = strpart(line, bracepos, 1) let brace = strpart(line, bracepos, 1)
@@ -151,6 +152,7 @@ function! GetPerlIndent()
if synid == "" if synid == ""
\ || synid == "perlMatchStartEnd" \ || synid == "perlMatchStartEnd"
\ || synid == "perlBraces" \ || synid == "perlBraces"
\ || synid == "perlStatementIndirObj"
\ || synid =~ '^perl\(Sub\|Block\|Package\)Fold' \ || synid =~ '^perl\(Sub\|Block\|Package\)Fold'
let ind = ind - &sw let ind = ind - &sw
endif endif

View File

@@ -67,10 +67,15 @@ function! GetPuppetIndent()
let ind -= &sw let ind -= &sw
endif endif
" Match } }, }; ] ]: ) " Match } }, }; ] ]: ], ]; )
if line =~ '^\s*\(}\(,\|;\)\?$\|]:\?$\|)\)' if line =~ '^\s*\(}\(,\|;\)\?$\|]:\|],\|}]\|];\?$\|)\)'
let ind = indent(s:OpenBrace(v:lnum)) let ind = indent(s:OpenBrace(v:lnum))
endif endif
" Don't actually shift over for } else {
if line =~ '^\s*}\s*els\(e\|if\).*{\s*$'
let ind -= &sw
endif
return ind return ind
endfunction endfunction

213
indent/python.vim Normal file
View File

@@ -0,0 +1,213 @@
" PEP8 compatible Python indent file
" Only load this indent file when no other was loaded.
if exists("b:did_indent")
finish
endif
let b:did_indent = 1
setlocal expandtab
setlocal nolisp
setlocal autoindent
setlocal indentexpr=GetPythonPEPIndent(v:lnum)
setlocal indentkeys=!^F,o,O,<:>,0),0],0},=elif,=except
let s:maxoff = 50
" Find backwards the closest open parenthesis/bracket/brace.
function! s:SearchParensPair()
let line = line('.')
let col = col('.')
" Skip strings and comments and don't look too far
let skip = "line('.') < " . (line - s:maxoff) . " ? dummy :" .
\ 'synIDattr(synID(line("."), col("."), 0), "name") =~? ' .
\ '"string\\|comment"'
" Search for parentheses
call cursor(line, col)
let parlnum = searchpair('(', '', ')', 'bW', skip)
let parcol = col('.')
" Search for brackets
call cursor(line, col)
let par2lnum = searchpair('\[', '', '\]', 'bW', skip)
let par2col = col('.')
" Search for braces
call cursor(line, col)
let par3lnum = searchpair('{', '', '}', 'bW', skip)
let par3col = col('.')
" Get the closest match
if par2lnum > parlnum || (par2lnum == parlnum && par2col > parcol)
let parlnum = par2lnum
let parcol = par2col
endif
if par3lnum > parlnum || (par3lnum == parlnum && par3col > parcol)
let parlnum = par3lnum
let parcol = par3col
endif
" Put the cursor on the match
if parlnum > 0
call cursor(parlnum, parcol)
endif
return parlnum
endfunction
" Find the start of a multi-line statement
function! s:StatementStart(lnum)
let lnum = a:lnum
while 1
if getline(lnum - 1) =~ '\\$'
let lnum = lnum - 1
else
call cursor(lnum, 1)
let maybe_lnum = s:SearchParensPair()
if maybe_lnum < 1
return lnum
else
let lnum = maybe_lnum
endif
endif
endwhile
endfunction
" Find the block starter that matches the current line
function! s:BlockStarter(lnum, block_start_re)
let lnum = a:lnum
let maxindent = 10000 " whatever
while lnum > 1
let lnum = prevnonblank(lnum - 1)
if indent(lnum) < maxindent
if getline(lnum) =~ a:block_start_re
return lnum
else
let maxindent = indent(lnum)
" It's not worth going further if we reached the top level
if maxindent == 0
return -1
endif
endif
endif
endwhile
return -1
endfunction
function! GetPythonPEPIndent(lnum)
let scol = col('.')
" First line has indent 0
if a:lnum == 1
return 0
endif
" If we can find an open parenthesis/bracket/brace, line up with it.
call cursor(a:lnum, 1)
let parlnum = s:SearchParensPair()
if parlnum > 0
let parcol = col('.')
let matches = matchlist(getline(a:lnum), '^\(\s*\)[])}]')
if len(matches) == 0
let closing_paren = 0
let closing_paren_pos = 0
else
let closing_paren = 1
let closing_paren_pos = len(matches[1])
endif
if match(getline(parlnum), '[([{]\s*$', parcol - 1) != -1
if closing_paren
return indent(parlnum)
else
return indent(parlnum) + &shiftwidth
endif
elseif a:lnum - 1 != parlnum
if closing_paren && closing_paren_pos > scol
return indent(parlnum)
else
let lastindent = match(getline(a:lnum - 1), '\S')
if lastindent != -1 && lastindent < parcol
return lastindent
endif
endif
endif
" If we line up with an opening column there is a special case
" we want to handle: a docstring as argument. In that case we
" don't want to line up with the paren but with the statement
" imagine foo(doc=""" as example
echo getline(parlnum)
if match(getline(parlnum), '\("""\|' . "'''" . '\)\s*$') != -1
return indent(parlnum)
endif
return parcol
endif
" Examine this line
let thisline = getline(a:lnum)
let thisindent = indent(a:lnum)
" If the line starts with 'elif' or 'else', line up with 'if' or 'elif'
if thisline =~ '^\s*\(elif\|else\)\>'
let bslnum = s:BlockStarter(a:lnum, '^\s*\(if\|elif\)\>')
if bslnum > 0
return indent(bslnum)
else
return -1
endif
endif
" If the line starts with 'except' or 'finally', line up with 'try'
" or 'except'
if thisline =~ '^\s*\(except\|finally\)\>'
let bslnum = s:BlockStarter(a:lnum, '^\s*\(try\|except\)\>')
if bslnum > 0
return indent(bslnum)
else
return -1
endif
endif
" Examine previous line
let plnum = a:lnum - 1
let pline = getline(plnum)
let sslnum = s:StatementStart(plnum)
" If the previous line is blank, keep the same indentation
if pline =~ '^\s*$'
return -1
endif
" If this line is explicitly joined, try to find an indentation that looks
" good.
if pline =~ '\\$'
let compound_statement = '^\s*\(if\|while\|from\|import\|for\s.*\sin\|except\)\s*'
let maybe_indent = matchend(getline(sslnum), compound_statement)
if maybe_indent != -1
return maybe_indent
else
return indent(sslnum) + &sw * 2
endif
endif
" If the previous line ended with a colon and is not a comment, indent
" relative to statement start.
if pline =~ '^[^#]*:\s*\(#.*\)\?$'
return indent(sslnum) + &sw
endif
" If the previous line was a stop-execution statement or a pass
if getline(sslnum) =~ '^\s*\(break\|continue\|raise\|return\|pass\)\>'
" See if the user has already dedented
if indent(a:lnum) > indent(sslnum) - &sw
" If not, recommend one dedent
return indent(sslnum) - &sw
endif
" Otherwise, trust the user
return -1
endif
" In all other cases, line up with the start of the previous statement.
return indent(sslnum)
endfunction

View File

@@ -22,7 +22,7 @@ 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=GetRubyIndent(v:lnum) setlocal indentexpr=GetRubyIndent(v:lnum)
setlocal indentkeys=0{,0},0),0],!^F,o,O,e,: setlocal indentkeys=0{,0},0),0],!^F,o,O,e,:,.
setlocal indentkeys+==end,=else,=elsif,=when,=ensure,=rescue,==begin,==end setlocal indentkeys+==end,=else,=elsif,=when,=ensure,=rescue,==begin,==end
setlocal indentkeys+==private,=protected,=public setlocal indentkeys+==private,=protected,=public
@@ -55,9 +55,10 @@ let s:skip_expr =
\ "synIDattr(synID(line('.'),col('.'),1),'name') =~ '".s:syng_strcom."'" \ "synIDattr(synID(line('.'),col('.'),1),'name') =~ '".s:syng_strcom."'"
" Regex used for words that, at the start of a line, add a level of indent. " Regex used for words that, at the start of a line, add a level of indent.
let s:ruby_indent_keywords = '^\s*\zs\<\%(module\|class\|def\|if\|for' . let s:ruby_indent_keywords =
\ '\|while\|until\|else\|elsif\|case\|when\|unless\|begin\|ensure' . \ '^\s*\zs\<\%(module\|class\|if\|for' .
\ '\|rescue\):\@!\>' . \ '\|while\|until\|else\|elsif\|case\|when\|unless\|begin\|ensure\|rescue' .
\ '\|\%(public\|protected\|private\)\=\s*def\):\@!\>' .
\ '\|\%([=,*/%+-]\|<<\|>>\|:\s\)\s*\zs' . \ '\|\%([=,*/%+-]\|<<\|>>\|:\s\)\s*\zs' .
\ '\<\%(if\|for\|while\|until\|case\|unless\|begin\):\@!\>' \ '\<\%(if\|for\|while\|until\|case\|unless\|begin\):\@!\>'
@@ -70,7 +71,8 @@ let s:ruby_deindent_keywords =
" TODO: the do here should be restricted somewhat (only at end of line)? " TODO: the do here should be restricted somewhat (only at end of line)?
let s:end_start_regex = let s:end_start_regex =
\ '\C\%(^\s*\|[=,*/%+\-|;{]\|<<\|>>\|:\s\)\s*\zs' . \ '\C\%(^\s*\|[=,*/%+\-|;{]\|<<\|>>\|:\s\)\s*\zs' .
\ '\<\%(module\|class\|def\|if\|for\|while\|until\|case\|unless\|begin\):\@!\>' . \ '\<\%(module\|class\|if\|for\|while\|until\|case\|unless\|begin' .
\ '\|\%(public\|protected\|private\)\=\s*def\):\@!\>' .
\ '\|\%(^\|[^.:@$]\)\@<=\<do:\@!\>' \ '\|\%(^\|[^.:@$]\)\@<=\<do:\@!\>'
" Regex that defines the middle-match for the 'end' keyword. " Regex that defines the middle-match for the 'end' keyword.
@@ -99,10 +101,10 @@ let s:bracket_continuation_regex = '%\@<!\%([({[]\)\s*\%(#.*\)\=$'
let s:splat_regex = '[[,(]\s*\*\s*\%(#.*\)\=$' let s:splat_regex = '[[,(]\s*\*\s*\%(#.*\)\=$'
" Regex that describes all indent access modifiers " Regex that describes all indent access modifiers
let s:access_modifier_regex = '\C^\s*\%(private\|public\|protected\)\s*\%(#.*\)\=$' let s:access_modifier_regex = '\C^\s*\%(public\|protected\|private\)\s*\%(#.*\)\=$'
" Regex that describes the indent access modifiers (excludes public) " Regex that describes the indent access modifiers (excludes public)
let s:indent_access_modifier_regex = '\C^\s*\%(private\|protected\)\s*\%(#.*\)\=$' let s:indent_access_modifier_regex = '\C^\s*\%(protected\|private\)\s*\%(#.*\)\=$'
" Regex that defines blocks. " Regex that defines blocks.
" "
@@ -118,6 +120,9 @@ let s:block_regex =
let s:block_continuation_regex = '^\s*[^])}\t ].*'.s:block_regex let s:block_continuation_regex = '^\s*[^])}\t ].*'.s:block_regex
" Regex that describes a leading operator (only a method call's dot for now)
let s:leading_operator_regex = '^\s*[.]'
" 2. Auxiliary Functions {{{1 " 2. Auxiliary Functions {{{1
" ====================== " ======================
@@ -177,7 +182,11 @@ function s:GetMSL(lnum)
" 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)
if s:Match(lnum, s:splat_regex) if s:Match(msl, s:leading_operator_regex)
" If the current line starts with a leading operator, keep its indent
" and keep looking for an MSL.
let msl = lnum
elseif s:Match(lnum, s:splat_regex)
" If the above line looks like the "*" of a splat, use the current one's " If the above line looks like the "*" of a splat, use the current one's
" indentation. " indentation.
" "
@@ -440,6 +449,11 @@ function GetRubyIndent(...)
return 0 return 0
endif endif
" If the current line starts with a leading operator, add a level of indent.
if s:Match(clnum, s:leading_operator_regex)
return indent(s:GetMSL(clnum)) + &sw
endif
" 3.3. Work on the previous line. {{{2 " 3.3. Work on the previous line. {{{2
" ------------------------------- " -------------------------------
@@ -479,6 +493,12 @@ function GetRubyIndent(...)
return indent(s:GetMSL(lnum)) + &sw return indent(s:GetMSL(lnum)) + &sw
endif endif
" If the previous line started with a leading operator, use its MSL's level
" of indent
if s:Match(lnum, s:leading_operator_regex)
return indent(s:GetMSL(lnum))
endif
" If the previous line ended with the "*" of a splat, add a level of indent " If the previous line ended with the "*" of a splat, add a level of indent
if line =~ s:splat_regex if line =~ s:splat_regex
return indent(lnum) + &sw return indent(lnum) + &sw

View File

@@ -13,7 +13,7 @@ setlocal cindent
setlocal cinoptions=L0,(0,Ws,JN,j1 setlocal cinoptions=L0,(0,Ws,JN,j1
setlocal cinkeys=0{,0},!^F,o,O,0[,0] setlocal cinkeys=0{,0},!^F,o,O,0[,0]
" Don't think cinwords will actually do anything at all... never mind " Don't think cinwords will actually do anything at all... never mind
setlocal cinwords=do,for,if,else,while,loop,impl,mod,unsafe,trait,struct,enum,fn,extern setlocal cinwords=for,if,else,while,loop,impl,mod,unsafe,trait,struct,enum,fn,extern
" Some preliminary settings " Some preliminary settings
setlocal nolisp " Make sure lisp indenting doesn't supersede us setlocal nolisp " Make sure lisp indenting doesn't supersede us
@@ -30,7 +30,7 @@ endif
" Come here when loading the script the first time. " Come here when loading the script the first time.
function s:get_line_trimmed(lnum) function! s:get_line_trimmed(lnum)
" Get the line and remove a trailing comment. " Get the line and remove a trailing comment.
" Use syntax highlighting attributes when possible. " Use syntax highlighting attributes when possible.
" NOTE: this is not accurate; /* */ or a line continuation could trick it " NOTE: this is not accurate; /* */ or a line continuation could trick it
@@ -40,12 +40,12 @@ function s:get_line_trimmed(lnum)
" If the last character in the line is a comment, do a binary search for " If the last character in the line is a comment, do a binary search for
" the start of the comment. synID() is slow, a linear search would take " the start of the comment. synID() is slow, a linear search would take
" too long on a long line. " too long on a long line.
if synIDattr(synID(a:lnum, line_len, 1), "name") =~ "Comment\|Todo" if synIDattr(synID(a:lnum, line_len, 1), "name") =~ 'Comment\|Todo'
let min = 1 let min = 1
let max = line_len let max = line_len
while min < max while min < max
let col = (min + max) / 2 let col = (min + max) / 2
if synIDattr(synID(a:lnum, col, 1), "name") =~ "Comment\|Todo" if synIDattr(synID(a:lnum, col, 1), "name") =~ 'Comment\|Todo'
let max = col let max = col
else else
let min = col + 1 let min = col + 1
@@ -61,6 +61,20 @@ function s:get_line_trimmed(lnum)
endif endif
endfunction endfunction
function! s:is_string_comment(lnum, col)
if has('syntax_items')
for id in synstack(a:lnum, a:col)
let synname = synIDattr(id, "name")
if synname == "rustString" || synname =~ "^rustComment"
return 1
endif
endfor
else
" without syntax, let's not even try
return 0
endif
endfunction
function GetRustIndent(lnum) function GetRustIndent(lnum)
" Starting assumption: cindent (called at the end) will do it right " Starting assumption: cindent (called at the end) will do it right
@@ -73,10 +87,10 @@ function GetRustIndent(lnum)
if synname == "rustString" if synname == "rustString"
" If the start of the line is in a string, don't change the indent " If the start of the line is in a string, don't change the indent
return -1 return -1
elseif synname =~ "\\(Comment\\|Todo\\)" elseif synname =~ '\(Comment\|Todo\)'
\ && line !~ "^\\s*/\\*" " not /* opening line \ && line !~ '^\s*/\*' " not /* opening line
if synname =~ "CommentML" " multi-line if synname =~ "CommentML" " multi-line
if line !~ "^\\s*\\*" && getline(a:lnum - 1) =~ "^\\s*/\\*" if line !~ '^\s*\*' && getline(a:lnum - 1) =~ '^\s*/\*'
" This is (hopefully) the line after a /*, and it has no " This is (hopefully) the line after a /*, and it has no
" leader, so the correct indentation is that of the " leader, so the correct indentation is that of the
" previous line. " previous line.
@@ -101,10 +115,16 @@ function GetRustIndent(lnum)
" }; " };
" Search backwards for the previous non-empty line. " Search backwards for the previous non-empty line.
let prevline = s:get_line_trimmed(prevnonblank(a:lnum - 1)) let prevlinenum = prevnonblank(a:lnum - 1)
let prevline = s:get_line_trimmed(prevlinenum)
while prevlinenum > 1 && prevline !~ '[^[:blank:]]'
let prevlinenum = prevnonblank(prevlinenum - 1)
let prevline = s:get_line_trimmed(prevlinenum)
endwhile
if prevline[len(prevline) - 1] == "," if prevline[len(prevline) - 1] == ","
\ && s:get_line_trimmed(a:lnum) !~ "^\\s*[\\[\\]{}]" \ && s:get_line_trimmed(a:lnum) !~ '^\s*[\[\]{}]'
\ && prevline !~ "^\\s*fn\\s" \ && prevline !~ '^\s*fn\s'
\ && prevline !~ '([^()]\+,$'
" Oh ho! The previous line ended in a comma! I bet cindent will try to " Oh ho! The previous line ended in a comma! I bet cindent will try to
" take this too far... For now, let's normally use the previous line's " take this too far... For now, let's normally use the previous line's
" indent. " indent.
@@ -119,6 +139,16 @@ function GetRustIndent(lnum)
" fn foo(baz: Baz, " fn foo(baz: Baz,
" baz: Baz) // <-- cindent gets this right by itself " baz: Baz) // <-- cindent gets this right by itself
" "
" Another case is similar to the previous, except calling a function
" instead of defining it, or any conditional expression that leaves
" an open paren:
"
" foo(baz,
" baz);
"
" if baz && (foo ||
" bar) {
"
" There are probably other cases where we don't want to do this as " There are probably other cases where we don't want to do this as
" well. Add them as needed. " well. Add them as needed.
return GetRustIndent(a:lnum - 1) return GetRustIndent(a:lnum - 1)
@@ -141,8 +171,10 @@ function GetRustIndent(lnum)
" column zero) " column zero)
call cursor(a:lnum, 1) call cursor(a:lnum, 1)
if searchpair('{\|(', '', '}\|)', 'nbW') == 0 if searchpair('{\|(', '', '}\|)', 'nbW',
if searchpair('\[', '', '\]', 'nbW') == 0 \ 's:is_string_comment(line("."), col("."))') == 0
if searchpair('\[', '', '\]', 'nbW',
\ 's:is_string_comment(line("."), col("."))') == 0
" Global scope, should be zero " Global scope, should be zero
return 0 return 0
else else

View File

@@ -515,7 +515,7 @@ function! GetScalaIndent()
endif endif
let prevCurlyCount = scala#CountCurlies(prevline) let prevCurlyCount = scala#CountCurlies(prevline)
if prevCurlyCount == 0 && prevline =~ '^.*=>\s*$' && prevline !~ '^\s*this\s*:.*=>\s*$' && curline !~ '^\s*\<case\>' if prevCurlyCount == 0 && prevline =~ '^.*\%(=>\|⇒\)\s*$' && prevline !~ '^\s*this\s*:.*\%(=>\|⇒\)\s*$' && curline !~ '^\s*\<case\>'
call scala#ConditionalConfirm("16") call scala#ConditionalConfirm("16")
let ind = ind + &shiftwidth let ind = ind + &shiftwidth
endif endif

View File

@@ -1,14 +1,22 @@
require 'spec_helper' require 'spec_helper'
require 'timeout'
describe "My Vim plugin" do describe "My Vim plugin" do
languages = Dir["#{$plugin_path}/syntax/*.vim"].map { |f| f.split('/').last.gsub('.vim', '') }
languages.each do |lang| extensions = `cat ftdetect/polyglot.vim | grep '^au' | tr "\t" ' ' | cut -d ' ' -f 3 | grep -v / | grep -v '^\*$' | grep -v '^$'`.strip
it "should parse .#{lang} file" do
write_file "test.#{lang}", "" extensions.gsub!(/\[(.).+\]/) { $1 }.gsub!('*', 'test')
vim.edit "test.#{lang}"
extensions = extensions.split(/[\n,]/)
extensions.each do |ext|
it "should parse #{ext} file" do
Timeout::timeout(5) do
write_file "#{ext}", ""
vim.edit "#{ext}"
vim.insert "sample" vim.insert "sample"
vim.write vim.write
end end
end end
end
end end

View File

@@ -6,7 +6,7 @@ $plugin_path = File.expand_path('../..', __FILE__)
Vimrunner::RSpec.configure do |config| Vimrunner::RSpec.configure do |config|
# Use a single Vim instance for the test suite. Set to false to use an # Use a single Vim instance for the test suite. Set to false to use an
# instance per test (slower, but can be easier to manage). # instance per test (slower, but can be easier to manage).
config.reuse_server = true config.reuse_server = !ENV['REUSE_SERVER'].nil?
# Decide how to start a Vim instance. In this block, an instance should be # Decide how to start a Vim instance. In this block, an instance should be
# spawned and set up with anything project-specific. # spawned and set up with anything project-specific.

View File

@@ -379,8 +379,13 @@ endif
syn cluster cLabelGroup contains=cUserLabel syn cluster cLabelGroup contains=cUserLabel
syn match cUserCont display "^\s*\I\i*\s*:$" contains=@cLabelGroup syn match cUserCont display "^\s*\I\i*\s*:$" contains=@cLabelGroup
syn match cUserCont display ";\s*\I\i*\s*:$" contains=@cLabelGroup syn match cUserCont display ";\s*\I\i*\s*:$" contains=@cLabelGroup
syn match cUserCont display "^\s*\I\i*\s*:[^:]"me=e-1 contains=@cLabelGroup if s:ft ==# 'cpp'
syn match cUserCont display ";\s*\I\i*\s*:[^:]"me=e-1 contains=@cLabelGroup syn match cUserCont display "^\s*\%(class\|struct\|enum\)\@!\I\i*\s*:[^:]"me=e-1 contains=@cLabelGroup
syn match cUserCont display ";\s*\%(class\|struct\|enum\)\@!\I\i*\s*:[^:]"me=e-1 contains=@cLabelGroup
else
syn match cUserCont display "^\s*\I\i*\s*:[^:]"me=e-1 contains=@cLabelGroup
syn match cUserCont display ";\s*\I\i*\s*:[^:]"me=e-1 contains=@cLabelGroup
endif
syn match cUserLabel display "\I\i*" contained syn match cUserLabel display "\I\i*" contained

File diff suppressed because one or more lines are too long

0
syntax/coffee.vim Executable file → Normal file
View File

View File

@@ -2,7 +2,7 @@
" Language: C++ " Language: C++
" Current Maintainer: vim-jp (https://github.com/vim-jp/cpp-vim) " Current Maintainer: vim-jp (https://github.com/vim-jp/cpp-vim)
" Previous Maintainer: Ken Shan <ccshan@post.harvard.edu> " Previous Maintainer: Ken Shan <ccshan@post.harvard.edu>
" Last Change: 2012 Jun 14 " Last Change: 2014 May 13
" For version 5.x: Clear all syntax items " For version 5.x: Clear all syntax items
" For version 6.x: Quit when a syntax file was already loaded " For version 6.x: Quit when a syntax file was already loaded
@@ -39,9 +39,7 @@ if !exists("cpp_no_cpp11")
syn keyword cppExceptions noexcept syn keyword cppExceptions noexcept
syn keyword cppStorageClass constexpr decltype syn keyword cppStorageClass constexpr decltype
syn keyword cppConstant nullptr syn keyword cppConstant nullptr
" A C++11 raw-string literal. It tries to follow 2.14.5 and 2.14.5.2 of the syn region cppRawString matchgroup=cppRawDelimiter start=+\%(u8\|[uLU]\)\=R"\z([[:alnum:]_{}[\]#<>%:;.?*\+\-/\^&|~!=,"']\{,16}\)(+ end=+)\z1"+ contains=@Spell
" standard.
syn region cppRawString matchgroup=cppRawDelim start=+\%(u8\=\|[LU]\)\=R"\z(\%([ ()\\\d9-\d12]\@![\d0-\d127]\)\{,16}\)(+ end=+)\z1"+ contains=@Spell
endif endif
" The minimum and maximum operators in GNU C++ " The minimum and maximum operators in GNU C++
@@ -65,7 +63,7 @@ if version >= 508 || !exists("did_cpp_syntax_inits")
HiLink cppStructure Structure HiLink cppStructure Structure
HiLink cppBoolean Boolean HiLink cppBoolean Boolean
HiLink cppConstant Constant HiLink cppConstant Constant
HiLink cppRawDelim cFormat HiLink cppRawDelimiter Delimiter
HiLink cppRawString String HiLink cppRawString String
delcommand HiLink delcommand HiLink
endif endif

View File

@@ -2,11 +2,14 @@
" Language: Cucumber " Language: Cucumber
" Maintainer: Tim Pope <vimNOSPAM@tpope.org> " Maintainer: Tim Pope <vimNOSPAM@tpope.org>
" Filenames: *.feature " Filenames: *.feature
" Last Change: 2010 May 21 " Last Change: 2013 May 30
if exists("b:current_syntax") if exists("b:current_syntax")
finish finish
endif endif
let s:keepcpo= &cpo
set cpo&vim
syn case match syn case match
syn sync minlines=20 syn sync minlines=20
@@ -133,4 +136,7 @@ hi def link cucumberThen Type
let b:current_syntax = "cucumber" let b:current_syntax = "cucumber"
let &cpo = s:keepcpo
unlet s:keepcpo
" vim:set sts=2 sw=2: " vim:set sts=2 sw=2:

View File

@@ -16,31 +16,40 @@ syn match elixirComment '#.*' contains=elixirTodo
syn keyword elixirTodo FIXME NOTE TODO OPTIMIZE XXX HACK contained syn keyword elixirTodo FIXME NOTE TODO OPTIMIZE XXX HACK contained
syn keyword elixirKeyword is_atom is_binary is_bitstring is_boolean is_float is_function is_integer is_list is_number is_pid is_port is_record is_reference is_tuple is_exception syn keyword elixirKeyword is_atom is_binary is_bitstring is_boolean is_float is_function is_integer is_list is_number is_pid is_port is_record is_reference is_tuple is_exception
syn keyword elixirKeyword case cond bc lc inlist inbits if unless try receive function syn keyword elixirKeyword case cond for if unless try receive send
syn keyword elixirKeyword exit raise throw after rescue catch else syn keyword elixirKeyword exit raise throw after rescue catch else do end
syn keyword elixirKeyword quote unquote super syn keyword elixirKeyword quote unquote super
syn match elixirKeyword '\<\%(->\)\>\s*'
syn keyword elixirInclude import require alias use syn keyword elixirInclude import require alias use
syn keyword elixirOperator and not or when xor in syn match elixirId '\<[_a-zA-Z]\w*[!?]\?\>'
syn match elixirOperator '%=\|\*=\|\*\*=\|+=\|-=\|\^=\|||='
syn match elixirOperator "\%(<=>\|<\%(<\|=\)\@!\|>\%(<\|=\|>\)\@!\|<=\|>=\|===\|==\|=\~\|!=\|!\~\|\s?[ \t]\@=\)"
syn match elixirOperator "!+[ \t]\@=\|&&\|||\|\^\|\*\|+\|-\|/"
syn match elixirOperator "|\|++\|--\|\*\*\|\/\/\|<-\|<>\|<<\|>>\|=\|\.\|::"
syn match elixirSymbol '\(:\)\@<!:\%([a-zA-Z_]\w*\%([?!]\|=[>=]\@!\)\?\|<>\|===\?\|>=\?\|<=\?\)'
syn match elixirSymbol '\(:\)\@<!:\%(<=>\|&&\?\|%\(()\|\[\]\|{}\)\|++\?\|--\?\|||\?\|!\|//\|[%&`/|]\)'
syn match elixirSymbol "\%([a-zA-Z_]\w*\([?!]\)\?\):\(:\)\@!"
syn keyword elixirName nil
syn match elixirName '\<[A-Z]\w*\>'
" This unfortunately also matches function names in function calls
syn match elixirUnusedVariable '\<_\w*\>' syn match elixirUnusedVariable '\<_\w*\>'
syn keyword elixirBoolean true false syn keyword elixirOperator and not or when xor in
syn match elixirOperator '!==\|!=\|!'
syn match elixirOperator '=\~\|===\|==\|='
syn match elixirOperator '<<<\|<<\|<=\|<-\|<'
syn match elixirOperator '>>>\|>>\|>=\|>'
syn match elixirOperator '->\|--\|-'
syn match elixirOperator '++\|+'
syn match elixirOperator '&&&\|&&\|&'
syn match elixirOperator '|||\|||\||>\||'
syn match elixirOperator '\.\.\|\.'
syn match elixirOperator "\^\^\^\|\^"
syn match elixirOperator '\\\\\|::\|\*\|/\|\~\~\~\|@'
syn match elixirVariable '@[a-zA-Z_]\w*\|&\d' syn match elixirAtom '\(:\)\@<!:\%([a-zA-Z_]\w*\%([?!]\|=[>=]\@!\)\?\|<>\|===\?\|>=\?\|<=\?\)'
syn match elixirAtom '\(:\)\@<!:\%(<=>\|&&\?\|%\(()\|\[\]\|{}\)\|++\?\|--\?\|||\?\|!\|//\|[%&`/|]\)'
syn match elixirAtom "\%([a-zA-Z_]\w*[?!]\?\):\(:\)\@!"
syn match elixirAlias '\<[A-Z]\w*\(\.[A-Z]\w*\)*\>'
syn keyword elixirBoolean true false nil
syn match elixirVariable '@[a-z]\w*'
syn match elixirVariable '&\d\+'
syn keyword elixirPseudoVariable __FILE__ __DIR__ __MODULE__ __ENV__ __CALLER__ syn keyword elixirPseudoVariable __FILE__ __DIR__ __MODULE__ __ENV__ __CALLER__
@@ -65,35 +74,37 @@ syn region elixirInterpolation matchgroup=elixirDelimiter start="#{" end="}" con
syn region elixirDocStringStart matchgroup=elixirDocString start=+"""+ end=+$+ oneline contains=ALLBUT,@elixirNotTop syn region elixirDocStringStart matchgroup=elixirDocString start=+"""+ end=+$+ oneline contains=ALLBUT,@elixirNotTop
syn region elixirDocStringStart matchgroup=elixirDocString start=+'''+ end=+$+ oneline contains=ALLBUT,@elixirNotTop syn region elixirDocStringStart matchgroup=elixirDocString start=+'''+ end=+$+ oneline contains=ALLBUT,@elixirNotTop
syn region elixirDocString start=+\z("""\)+ end=+^\s*\zs\z1+ contains=elixirDocStringStart,elixirTodo fold keepend syn region elixirDocString start=+\z("""\)+ end=+^\s*\zs\z1+ contains=elixirDocStringStart,elixirTodo,elixirInterpolation fold keepend
syn region elixirDocString start=+\z('''\)+ end=+^\s*\zs\z1+ contains=elixirDocStringStart,elixirTodo fold keepend syn region elixirDocString start=+\z('''\)+ end=+^\s*\zs\z1+ contains=elixirDocStringStart,elixirTodo,elixirInterpolation fold keepend
syn match elixirSymbolInterpolated ':\("\)\@=' contains=elixirString syn match elixirAtomInterpolated ':\("\)\@=' contains=elixirString
syn match elixirString "\(\w\)\@<!?\%(\\\(x\d{1,2}\|\h{1,2}\h\@!\>\|0[0-7]{0,2}[0-7]\@!\>\|[^x0MC]\)\|(\\[MC]-)+\w\|[^\s\\]\)" syn match elixirString "\(\w\)\@<!?\%(\\\(x\d{1,2}\|\h{1,2}\h\@!\>\|0[0-7]{0,2}[0-7]\@!\>\|[^x0MC]\)\|(\\[MC]-)+\w\|[^\s\\]\)"
syn region elixirBlock matchgroup=elixirKeyword start="\<do\>\(:\)\@!" end="\<end\>" contains=ALLBUT,@elixirNotTop fold syn region elixirBlock matchgroup=elixirKeyword start="\<do\>\(:\)\@!" end="\<end\>" contains=ALLBUT,@elixirNotTop fold
syn region elixirAnonymousFunction matchgroup=elixirKeyword start="\<fn\>" end="\<end\>" contains=ALLBUT,@elixirNotTop fold syn region elixirAnonymousFunction matchgroup=elixirKeyword start="\<fn\>" end="\<end\>" contains=ALLBUT,@elixirNotTop fold
syn region elixirArguments start="(" end=")" contained contains=elixirOperator,elixirSymbol,elixirPseudoVariable,elixirName,elixirBoolean,elixirVariable,elixirUnusedVariable,elixirNumber,elixirDocString,elixirSymbolInterpolated,elixirRegex,elixirRegexEscape,elixirRegexEscapePunctuation,elixirRegexCharClass,elixirRegexQuantifier,elixirSpecial,elixirString,elixirDelimiter syn region elixirArguments start="(" end=")" contained contains=elixirOperator,elixirAtom,elixirPseudoVariable,elixirAlias,elixirBoolean,elixirVariable,elixirUnusedVariable,elixirNumber,elixirDocString,elixirAtomInterpolated,elixirRegex,elixirString,elixirDelimiter
syn match elixirDelimEscape "\\[(<{\[)>}\]]" transparent display contained contains=NONE syn match elixirDelimEscape "\\[(<{\[)>}\]/\"'|]" transparent display contained contains=NONE
syn region elixirSigil matchgroup=elixirDelimiter start="%\z([~`!@#$%^&*_\-+|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" fold syn region elixirSigil matchgroup=elixirDelimiter start="\~\u\z(/\|\"\|'\||\)" end="\z1" skip="\\\\\|\\\z1" contains=elixirDelimEscape fold
syn region elixirSigil matchgroup=elixirDelimiter start="%[BCRW]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" fold syn region elixirSigil matchgroup=elixirDelimiter start="\~\u{" end="}" skip="\\\\\|\\}" contains=elixirDelimEscape fold
syn region elixirSigil matchgroup=elixirDelimiter start="%[BCRW]\={" end="}" skip="\\\\\|\\}" contains=elixirDelimEscape fold syn region elixirSigil matchgroup=elixirDelimiter start="\~\u<" end=">" skip="\\\\\|\\>" contains=elixirDelimEscape fold
syn region elixirSigil matchgroup=elixirDelimiter start="%[BCRW]\=<" end=">" skip="\\\\\|\\>" contains=elixirDelimEscape fold syn region elixirSigil matchgroup=elixirDelimiter start="\~\u\[" end="\]" skip="\\\\\|\\\]" contains=elixirDelimEscape fold
syn region elixirSigil matchgroup=elixirDelimiter start="%[BCRW]\=\[" end="\]" skip="\\\\\|\\\]" contains=elixirDelimEscape fold syn region elixirSigil matchgroup=elixirDelimiter start="\~\u(" end=")" skip="\\\\\|\\)" contains=elixirDelimEscape fold
syn region elixirSigil matchgroup=elixirDelimiter start="%[BCRW]\=(" end=")" skip="\\\\\|\\)" contains=elixirDelimEscape fold
syn region elixirSigil matchgroup=elixirDelimiter start="%[bcrw]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" fold syn region elixirSigil matchgroup=elixirDelimiter start="\~\l\z(/\|\"\|'\||\)" end="\z1" skip="\\\\\|\\\z1" fold
syn region elixirSigil matchgroup=elixirDelimiter start="%[bcrw]{" end="}" skip="\\\\\|\\}" fold contains=@elixirStringContained,elixirRegexEscapePunctuation syn region elixirSigil matchgroup=elixirDelimiter start="\~\l{" end="}" skip="\\\\\|\\}" fold contains=@elixirStringContained,elixirRegexEscapePunctuation
syn region elixirSigil matchgroup=elixirDelimiter start="%[bcrw]<" end=">" skip="\\\\\|\\>" fold contains=@elixirStringContained,elixirRegexEscapePunctuation syn region elixirSigil matchgroup=elixirDelimiter start="\~\l<" end=">" skip="\\\\\|\\>" fold contains=@elixirStringContained,elixirRegexEscapePunctuation
syn region elixirSigil matchgroup=elixirDelimiter start="%[bcrw]\[" end="\]" skip="\\\\\|\\\]" fold contains=@elixirStringContained,elixirRegexEscapePunctuation syn region elixirSigil matchgroup=elixirDelimiter start="\~\l\[" end="\]" skip="\\\\\|\\\]" fold contains=@elixirStringContained,elixirRegexEscapePunctuation
syn region elixirSigil matchgroup=elixirDelimiter start="%[bcrw](" end=")" skip="\\\\\|\\)" fold contains=@elixirStringContained,elixirRegexEscapePunctuation syn region elixirSigil matchgroup=elixirDelimiter start="\~\l(" end=")" skip="\\\\\|\\)" fold contains=@elixirStringContained,elixirRegexEscapePunctuation
" Sigils surrounded with docString
syn region elixirSigil matchgroup=elixirDelimiter start=+\~\a\z("""\)+ end=+^\s*\zs\z1+ skip=+\\"+ fold
syn region elixirSigil matchgroup=elixirDelimiter start=+\~\a\z('''\)+ end=+^\s*\zs\z1+ skip=+\\'+ fold
" Defines " Defines
syn keyword elixirDefine def nextgroup=elixirFunctionDeclaration skipwhite skipnl syn keyword elixirDefine def nextgroup=elixirFunctionDeclaration skipwhite skipnl
syn keyword elixirDefine def nextgroup=elixirFunctionDeclaration skipwhite skipnl
syn keyword elixirPrivateDefine defp nextgroup=elixirFunctionDeclaration skipwhite skipnl syn keyword elixirPrivateDefine defp nextgroup=elixirFunctionDeclaration skipwhite skipnl
syn keyword elixirModuleDefine defmodule nextgroup=elixirModuleDeclaration skipwhite skipnl syn keyword elixirModuleDefine defmodule nextgroup=elixirModuleDeclaration skipwhite skipnl
syn keyword elixirProtocolDefine defprotocol nextgroup=elixirProtocolDeclaration skipwhite skipnl syn keyword elixirProtocolDefine defprotocol nextgroup=elixirProtocolDeclaration skipwhite skipnl
@@ -106,21 +117,23 @@ syn keyword elixirDelegateDefine defdelegate nextgroup=elixirDelegateDec
syn keyword elixirOverridableDefine defoverridable nextgroup=elixirOverridableDeclaration skipwhite skipnl syn keyword elixirOverridableDefine defoverridable nextgroup=elixirOverridableDeclaration skipwhite skipnl
syn keyword elixirExceptionDefine defexception nextgroup=elixirExceptionDeclaration skipwhite skipnl syn keyword elixirExceptionDefine defexception nextgroup=elixirExceptionDeclaration skipwhite skipnl
syn keyword elixirCallbackDefine defcallback nextgroup=elixirCallbackDeclaration skipwhite skipnl syn keyword elixirCallbackDefine defcallback nextgroup=elixirCallbackDeclaration skipwhite skipnl
syn keyword elixirStructDefine defstruct nextgroup=elixirStructDeclaration skipwhite skipnl
" Declarations " Declarations
syn match elixirModuleDeclaration "[^[:space:];#<]\+" contained contains=elixirName nextgroup=elixirBlock skipwhite skipnl syn match elixirModuleDeclaration "[^[:space:];#<]\+" contained contains=elixirAlias nextgroup=elixirBlock skipwhite skipnl
syn match elixirFunctionDeclaration "[^[:space:];#<,()\[\]]\+" contained nextgroup=elixirArguments skipwhite skipnl syn match elixirFunctionDeclaration "[^[:space:];#<,()\[\]]\+" contained nextgroup=elixirArguments skipwhite skipnl
syn match elixirProtocolDeclaration "[^[:space:];#<]\+" contained contains=elixirName skipwhite skipnl syn match elixirProtocolDeclaration "[^[:space:];#<]\+" contained contains=elixirAlias skipwhite skipnl
syn match elixirImplDeclaration "[^[:space:];#<]\+" contained contains=elixirName skipwhite skipnl syn match elixirImplDeclaration "[^[:space:];#<]\+" contained contains=elixirAlias skipwhite skipnl
syn match elixirRecordDeclaration "[^[:space:];#<]\+" contained contains=elixirName,elixirSymbol skipwhite skipnl syn match elixirRecordDeclaration "[^[:space:];#<]\+" contained contains=elixirAlias,elixirAtom skipwhite skipnl
syn match elixirMacroDeclaration "[^[:space:];#<,()\[\]]\+" contained nextgroup=elixirArguments skipwhite skipnl syn match elixirMacroDeclaration "[^[:space:];#<,()\[\]]\+" contained nextgroup=elixirArguments skipwhite skipnl
syn match elixirDelegateDeclaration "[^[:space:];#<,()\[\]]\+" contained contains=elixirFunctionDeclaration skipwhite skipnl syn match elixirDelegateDeclaration "[^[:space:];#<,()\[\]]\+" contained contains=elixirFunctionDeclaration skipwhite skipnl
syn region elixirDelegateDeclaration start='\[' end='\]' contained contains=elixirFunctionDeclaration skipwhite skipnl syn region elixirDelegateDeclaration start='\[' end='\]' contained contains=elixirFunctionDeclaration skipwhite skipnl
syn match elixirOverridableDeclaration "[^[:space:];#<]\+" contained contains=elixirName skipwhite skipnl syn match elixirOverridableDeclaration "[^[:space:];#<]\+" contained contains=elixirAlias skipwhite skipnl
syn match elixirExceptionDeclaration "[^[:space:];#<]\+" contained contains=elixirName skipwhite skipnl syn match elixirExceptionDeclaration "[^[:space:];#<]\+" contained contains=elixirAlias skipwhite skipnl
syn match elixirCallbackDeclaration "[^[:space:];#<,()\[\]]\+" contained contains=elixirFunctionDeclaration skipwhite skipnl syn match elixirCallbackDeclaration "[^[:space:];#<,()\[\]]\+" contained contains=elixirFunctionDeclaration skipwhite skipnl
syn match elixirStructDeclaration "[^[:space:];#<]\+" contained nextgroup=elixirArguments skipwhite skipnl
syn cluster elixirDeclaration contains=elixirFunctionDeclaration,elixirModuleDeclaration,elixirProtocolDeclaration,elixirImplDeclaration,elixirRecordDeclaration,elixirMacroDeclaration,elixirDelegateDeclaration,elixirOverridableDeclaration,elixirExceptionDeclaration,elixirCallbackDeclaration syn cluster elixirDeclaration contains=elixirFunctionDeclaration,elixirModuleDeclaration,elixirProtocolDeclaration,elixirImplDeclaration,elixirRecordDeclaration,elixirMacroDeclaration,elixirDelegateDeclaration,elixirOverridableDeclaration,elixirExceptionDeclaration,elixirCallbackDeclaration,elixirStructDeclaration
hi def link elixirDefine Define hi def link elixirDefine Define
hi def link elixirPrivateDefine Define hi def link elixirPrivateDefine Define
@@ -135,6 +148,7 @@ hi def link elixirDelegateDefine Define
hi def link elixirOverridableDefine Define hi def link elixirOverridableDefine Define
hi def link elixirExceptionDefine Define hi def link elixirExceptionDefine Define
hi def link elixirCallbackDefine Define hi def link elixirCallbackDefine Define
hi def link elixirStructDefine Define
hi def link elixirFunctionDeclaration Function hi def link elixirFunctionDeclaration Function
hi def link elixirMacroDeclaration Macro hi def link elixirMacroDeclaration Macro
hi def link elixirInclude Include hi def link elixirInclude Include
@@ -142,15 +156,15 @@ hi def link elixirComment Comment
hi def link elixirTodo Todo hi def link elixirTodo Todo
hi def link elixirKeyword Keyword hi def link elixirKeyword Keyword
hi def link elixirOperator Operator hi def link elixirOperator Operator
hi def link elixirSymbol Constant hi def link elixirAtom Constant
hi def link elixirPseudoVariable Constant hi def link elixirPseudoVariable Constant
hi def link elixirName Type hi def link elixirAlias Type
hi def link elixirBoolean Boolean hi def link elixirBoolean Boolean
hi def link elixirVariable Identifier hi def link elixirVariable Identifier
hi def link elixirUnusedVariable Comment hi def link elixirUnusedVariable Comment
hi def link elixirNumber Number hi def link elixirNumber Number
hi def link elixirDocString Comment hi def link elixirDocString String
hi def link elixirSymbolInterpolated elixirSymbol hi def link elixirAtomInterpolated elixirAtom
hi def link elixirRegex elixirString hi def link elixirRegex elixirString
hi def link elixirRegexEscape elixirSpecial hi def link elixirRegexEscape elixirSpecial
hi def link elixirRegexEscapePunctuation elixirSpecial hi def link elixirRegexEscapePunctuation elixirSpecial

31
syntax/ember-script.vim Normal file
View File

@@ -0,0 +1,31 @@
" Language: ember-script
" Maintainer: heartsentwined <heartsentwined@cogito-lab.com>
" URL: http://github.com/heartsentwined/vim-ember-script
" Version: 1.0.1
" Last Change: 2013 Apr 17
" License: GPL-3.0
if exists('b:current_syntax') && b:current_syntax == 'ember-script'
finish
endif
runtime! syntax/coffee.vim
unlet b:current_syntax
" mixin and with
syn match emKeyword /\vmixin|with/ display
hi def link emKeyword Keyword
" annotations
syn match emAnnotation /\v\+(computed|observer|volatile)/ display
hi def link emAnnotation Define
" ~> and *. operators
syn match emOperator /\v\~\>|\*\./ display
hi def link emOperator Operator
" @each is special
syn match emEach /\v\@each/ display
hi def link emEach Special
let b:current_syntax = 'ember-script'

View File

@@ -67,7 +67,7 @@ syn region hamlJavascriptFilter matchgroup=hamlFilter start="^\z(\s*\):javascri
syn region hamlCSSFilter matchgroup=hamlFilter start="^\z(\s*\):css\s*$" end="^\%(\z1 \| *$\)\@!" contains=@htmlCss,hamlInterpolation keepend syn region hamlCSSFilter matchgroup=hamlFilter start="^\z(\s*\):css\s*$" end="^\%(\z1 \| *$\)\@!" contains=@htmlCss,hamlInterpolation keepend
syn region hamlSassFilter matchgroup=hamlFilter start="^\z(\s*\):sass\s*$" end="^\%(\z1 \| *$\)\@!" contains=@hamlSassTop syn region hamlSassFilter matchgroup=hamlFilter start="^\z(\s*\):sass\s*$" end="^\%(\z1 \| *$\)\@!" contains=@hamlSassTop
syn region hamlJavascriptBlock start="^\z(\s*\)%script" nextgroup=@hamlComponent,hamlError end="^\%(\z1 \| *$\)\@!" contains=@hamlTop,@htmlJavaScript keepend syn region hamlJavascriptBlock start="^\z(\s*\)%script\%((type=[\"']text/javascript[\"'])\)\=\s*$" nextgroup=@hamlComponent,hamlError end="^\%(\z1 \| *$\)\@!" contains=@hamlTop,@htmlJavaScript keepend
syn region hamlCssBlock start="^\z(\s*\)%style" nextgroup=@hamlComponent,hamlError end="^\%(\z1 \| *$\)\@!" contains=@hamlTop,@htmlCss keepend syn region hamlCssBlock start="^\z(\s*\)%style" nextgroup=@hamlComponent,hamlError end="^\%(\z1 \| *$\)\@!" contains=@hamlTop,@htmlCss keepend
syn match hamlError "\$" contained syn match hamlError "\$" contained

View File

@@ -1,93 +0,0 @@
" Handlebars syntax
" Language: Handlebars
" Maintainer: Bruno Michel <brmichel@free.fr>
" Last Change: Mar 8th, 2013
" Version: 0.3
" URL: https://github.com/nono/vim-handlebars
if version < 600
syntax clear
elseif exists("b:current_syntax")
finish
endif
if !exists("main_syntax")
let main_syntax = 'html'
endif
ru! syntax/html.vim
unlet b:current_syntax
syn region hbsInside start=/{{/ end=/}}/ keepend
syn keyword hbsTodo TODO FIXME XXX contained
syn match hbsError /}}}\?/
syn match hbsInsideError /{{[{#<>=!\/]\?/ contained containedin=@hbsInside
syn match hbsHandlebars "{{\|}}" contained containedin=hbsInside
syn match hbsUnescape "{{{\|}}}" contained containedin=hbsInside extend
syn match hbsOperators "=\|\.\|/" contained containedin=hbsInside
syn region hbsSection start="{{[#/]"lc=2 end=/}}/me=e-2 contained containedin=hbsInside
syn region hbsPartial start=/{{[<>]/lc=2 end=/}}/me=e-2 contained containedin=hbsInside
syn region hbsMarkerSet start=/{{=/lc=2 end=/=}}/me=e-2 contained containedin=hbsInside
syn region hbsComment start=/{{!/rs=s+2 end=/}}/re=e-2 contained containedin=hbsInside contains=hbsTodo,Todo
syn region hbsBlockComment start=/{{!--/rs=s+2 end=/--}}/re=e-2 contained containedin=hbsInside contains=hbsTodo,Todo extend
syn region hbsQString start=/'/ skip=/\\'/ end=/'/ contained containedin=hbsInside
syn region hbsDQString start=/"/ skip=/\\"/ end=/"/ contained containedin=hbsInside
syn match hbsConditionals "\([/#]\(if\|unless\)\|else\)" contained containedin=hbsInside
syn match hbsHelpers "[/#]\(with\|each\)" contained containedin=hbsInside
syn cluster allHbsItems add=hbsTodo,hbsError,hbsInsideError,hbsInside,hbsHandlebars,
\ hbsUnescape,hbsOperators,hbsSection,hbsPartial,hbsMarkerSet,
\ hbsComment,hbsBlockComment,hbsQString,hbsDQString,hbsConditionals,
\ hbsHelpers,hbsPartial,hbsMarkerSet,hbsComment,hbsBlockComment,
\ hbsQString,hbsDQString,hbsConditionals,hbsHelpers
syn cluster htmlAdditional add=htmlTag,htmlEndTag,htmlTagName,htmlSpecialChar
syn region hbsScriptTemplate start=+<script [^>]*type *=[^>]*text/x-handlebars-template[^>]*>+
\ end=+</script>+me=s-1 keepend contains=@htmlHbsContainer,@allHbsItems,@htmlAdditional
" Define the default highlighting.
" For version 5.7 and earlier: only when not done already
" For version 5.8 and later: only when an item doesn't have highlighting yet
if version >= 508 || !exists("did_lisp_syntax_inits")
if version < 508
let did_lisp_syntax_inits = 1
command -nargs=+ HiLink hi link <args>
else
command -nargs=+ HiLink hi def link <args>
endif
HiLink hbsTodo Todo
HiLink hbsError Error
HiLink hbsInsideError Error
HiLink hbsHandlebars Identifier
HiLink hbsUnescape Special
HiLink hbsOperators Operator
HiLink hbsConditionals Conditional
HiLink hbsHelpers Repeat
HiLink hbsSection Number
HiLink hbsPartial Include
HiLink hbsMarkerSet Number
HiLink hbsBlockComment Comment
HiLink hbsComment Comment
HiLink hbsQString String
HiLink hbsDQString String
delcommand HiLink
endif
let b:current_syntax = 'handlebars'

427
syntax/haxe.vim Normal file
View File

@@ -0,0 +1,427 @@
" Vim syntax file
" Language: haxe
" Derived from:
" http://tech.motion-twin.com/zip/haxe.vim
" and http://www.cactusflower.org/haxe.vim
" Please check :help haxe.vim for comments on some of the options available.
set errorformat=%f\:%l\:\ characters\ %c-%*[^\ ]\ %m,%f\:%l\:\ %m
" Quit when a syntax file was already loaded
if !exists("main_syntax")
if version < 600
syntax clear
elseif exists("b:current_syntax")
finish
endif
let main_syntax='haxe'
endif
if version < 508
command! -nargs=+ HaxeHiLink hi link <args>
else
command! -nargs=+ HaxeHiLink hi def link <args>
endif
" some characters that cannot be in a haxe program (outside a string)
syn match haxeError "[\\@`]"
syn match haxeError "<<<\|=>\|<>\|||=\|&&=\|\*\/"
" use separate name so that it can be deleted in haxecc.vim
syn match haxeError2 "#\|=<"
HaxeHiLink haxeError2 haxeError
syn keyword haxeExternal import extern using
syn keyword haxeDefine package
syn keyword haxeConditional if else switch
syn keyword haxeRepeat while for do in
syn keyword haxeBoolean true false
syn keyword haxeConstant null
syn keyword haxeTypedef this super
syn keyword haxeOperator new cast
syn keyword haxeCoreType Void Bool Int Float Dynamic
syn keyword haxeStatement return
syn keyword haxeTypedef1 typedef
syn keyword haxeStructure var enum
syn keyword haxeScopeDecl private public
syn keyword haxeScopeDecl2 static override final dynamic
syn keyword haxeFunctionDef function
syn keyword haxeExceptions throw try catch finally untyped
syn keyword haxeAssert assert
syn keyword haxeMethodDecl synchronized throws
syn keyword haxeClassDecl extends implements interface
syn match haxeDelimiter "[;:=\.]"
syn match haxeOperator "\(\.\.\.\|\*\|+\|-\|<<\|>>\|\/\|!\|||\|&&\|%\)"
syn match haxeComparison "\(==\|<=\|>=\|<\|>\|!=\)"
syn match haxeOptionalVars contained "?[a-zA-Z_]\+"
syn match haxeFunctionRef "[_$a-zA-Z][_$a-zA-Z0-9_]*("me=e-1
" We use a match here to differentiate the keyword class from MyClass.class
syn match haxeTypedef "\.\s*\<class\>"ms=s+1
syn match haxeClassDecl "^class\>"
syn match haxeClassDecl "[^.]\s*\<class\>"ms=s+1
syn keyword haxeBranch break continue nextgroup=haxeUserLabelRef skipwhite
syn match haxeUserLabelRef "\k\+" contained
syn match haxeClassDef "\(^\s*class\s*\)\@<=[_$a-zA-Z][_$a-zA-Z0-9_]*" contains=haxeTypedef,haxeClassDecl
syn match haxeLangClass "\<System\>"
syn keyword haxeLangClass Array ArrayAccess Class Date DateTools EReg Enum
syn keyword haxeLangClass Hash IntHash IntIter Iterable Iterator Lambda
syn keyword haxeLangClass List Math Null Reflect Std String StringBug
syn keyword haxeLangClass StringTools Type UInt ValueType Xml XmlType
syn keyword haxeFlashTop flash
syn keyword haxeFlashInner accessibility deskdop display errors events
syn keyword haxeFlashInner external filters geom media net printing sampler
syn keyword haxeFlashInner system text ui utils xml display engine
syn keyword haxeFlashFinal BitmapData ExternalInterface BevelFilter
syn keyword haxeFlashFinal BitmapFilter BlurFilter ColorMatrixFilter ConvolutionFilter
syn keyword haxeFlashFinal DisplacementMapFilter DropShadowFilter GlowFilter GradientBevelFilter
syn keyword haxeFlashFinal GradientGlowFilter ColorTransform Matrix Point Rectangle Transform
syn keyword haxeFlashFinal FileReference FileReferenceList Capabilities IME Security StyleSheet
syn keyword haxeFlashFinal TextRenderer Accessibility Boot Button Camera Color ContextMenu
syn keyword haxeFlashFinal ContextMenuItem ExtendedKey Key Lib LoadVars
syn keyword haxeFlashFinal LocalConnection Microphone Mouse MovieClip
syn keyword haxeFlashFinal MovieClipLoader NetConnection NetStream PrintJob
syn keyword haxeFlashFinal Selection SelectionListener SharedObject Sound
syn keyword haxeFlashFinal Stage System TextField TextFormat TextSnapshot
syn keyword haxeFlashFinal Video XMLRequest XMLSocket
syn keyword haxeFlash9Final Accessibility AccessibilityImplementation
syn keyword haxeFlash9Final AccessibilityProperties Clipboard
syn keyword haxeFlash9Final ClipboardFormats ClipboardTransferMode AVM1Movie
syn keyword haxeFlash9Final ActionScriptVersion Bitmap BitmapData
syn keyword haxeFlash9Final BitmapDataChannel BlendMode CapsStyle
syn keyword haxeFlash9Final DisplayObject DisplayObjectContainer FrameLabel
syn keyword haxeFlash9Final GradientType Graphics GraphicsBitmapFill
syn keyword haxeFlash9Final GraphicsEndFill GraphicsGradientFill GraphicsPath
syn keyword haxeFlash9Final GraphicsPathCommand GraphicsPathWinding
syn keyword haxeFlash9Final GraphicsShaderFill GraphicsSolidFill
syn keyword haxeFlash9Final GraphicsStroke GraphicsTrianglePath
syn keyword haxeFlash9Final IBitmapDrawable IGraphicsData IGraphicsFill
syn keyword haxeFlash9Final IGraphicsPath IGraphicsStroke InteractiveObject
syn keyword haxeFlash9Final InterpolationMethod JointStyle
syn keyword haxeFlash9Final LineScaleMode Loader LoaderInfo MorphShape
syn keyword haxeFlash9Final MovieClip PixelSnapping SWFVersion
syn keyword haxeFlash9Final Scene Shader ShaderData ShaderInput ShaderJob ShaderParameter
syn keyword haxeFlash9Final ShaderParameterType ShaderPrecision Shape
syn keyword haxeFlash9Final SimpleButton SpreadMethod Sprite
syn keyword haxeFlash9Final Stage StageAlign StageDisplayState StageQuality
syn keyword haxeFlash9Final StageScaleMode TriangleCulling
syn keyword haxeFlash9Final EOFError Error IOError Illegal OperationError
syn keyword haxeFlash9Final InvalidSWFError MemoryError ScriptTimeoutError
syn keyword haxeFlash9Final StackOverflowError ActivityEventAsyncErrorEvent
syn keyword haxeFlash9Final ContextMenuEvent DataEvent ErrorEvent Event
syn keyword haxeFlash9Final EventDispatcher EventPhase FocusEvent
syn keyword haxeFlash9Final FullScreenEvent HTTPStatusEvent IEventDispatcher IMEEvent
syn keyword haxeFlash9Final IOErrorEvent KeyboardEvent MouseEvent
syn keyword haxeFlash9Final NetFilterEvent NetStatusEvent ProgressEvent
syn keyword haxeFlash9Final SampleDataEvent SecurityErrorEvent ShaderEvent StatusEvent
syn keyword haxeFlash9Final SyncEvent TextEvent TimerEvent WeakFunctionClosure WeakMethodClosure
syn keyword haxeFlash9Final ExternalInterface BevelFilter BitmapFilter
syn keyword haxeFlash9Final BitmapFilterQuality BitmapFilterType
syn keyword haxeFlash9Final BlurFilter ColorMatrixFilter ConvolutionFilter DisplacementMapFilter
syn keyword haxeFlash9Final DisplacementMapFilterMode DropShadowFilter
syn keyword haxeFlash9Final GlowFilter GradientBevelFilter
syn keyword haxeFlash9Final GradientGlowFilter ShaderFilter ColorTransform
syn keyword haxeFlash9Final Matrix Matrix3D Orientation3D
syn keyword haxeFlash9Final PerspectiveProjection Point Rectangle Transform
syn keyword haxeFlash9Final Utils3D Vector3D Camera ID3Info
syn keyword haxeFlash9Final Microphone Sound SoundChannel SoundCodec SoundLoaderContext SoundMixer
syn keyword haxeFlash9Final SoundTransform Video DynamicPropertyOutput FileFilter FileReference
syn keyword haxeFlash9Final FileReferenceList IDynamicPropertyOutput
syn keyword haxeFlash9Final IDynamicPropertyWriter LocalConnection
syn keyword haxeFlash9Final NetConnection NetStream NetStreamInfo NetSTreamPlayOptions
syn keyword haxeFlash9Final NetSTreamPlayTransitions ObjectEncoding Responder SharedObject
syn keyword haxeFlash9Final SharedObjectFlushStatus Socket URLLoader URLLoaderDataFormat URLRequest
syn keyword haxeFlash9Final URLRequestHeader URLRequestMethod URLStream
syn keyword haxeFlash9Final URLVariables XMLSocket PrintJob
syn keyword haxeFlash9Final PrintJobOptions PrintJobOrientation Api
syn keyword haxeFlash9Final DeleteObjectSample NewObjectSample
syn keyword haxeFlash9Final Sample StackFrame ApplicationDomain Capabilities FSCommand IME
syn keyword haxeFlash9Final IMEConversionMode JPEGLoaderContext
syn keyword haxeFlash9Final LoaderContext Security SecurityDomain
syn keyword haxeFlash9Final SecurityPanel System
syn keyword haxeFlash9Final BreakOpportunity CFFHinting ContentElement
syn keyword haxeFlash9Final DigitCase DigitWidth EastAsianJustifier ElementFormat FontDescription
syn keyword haxeFlash9Final FontLookup FontMetrics FontPosture FontWeight
syn keyword haxeFlash9Final GraphicElement GroupElement
syn keyword haxeFlash9Final JustificationStyle Kerning LIgatureLevel
syn keyword haxeFlash9Final LineJustification RenderingMode
syn keyword haxeFlash9Final SpaceJustifier TabAlignment TabStop TextBaseline TextBlock TextElement
syn keyword haxeFlash9Final TextJustifier TextLine TextLineCreationResult TextLineMirrorRegion
syn keyword haxeFlash9Final TextLineValidity TextRotation TypographicCase
syn keyword haxeFlash9Final AntiAliasType CSMSettings Font
syn keyword haxeFlash9Final FontStyle FontType GridFitType StaticText StyleSheet TextColorType
syn keyword haxeFlash9Final TextDisplayMode TextExtent TextField
syn keyword haxeFlash9Final TextFieldAutoSize TextFieldType TextFormat
syn keyword haxeFlash9Final TextFormatAlign TextFormatDisplay TextLineMetrics TextRenderer TextRun
syn keyword haxeFlash9Final TextSnapshot Trace ContextMenu ContextMenuBuiltInItems
syn keyword haxeFlash9Final ContextMenuClipboardItems ContextMenuItem KeyLocation Keyboard Mouse
syn keyword haxeFlash9Final MouseCursor ByteArray Dictionary Endian
syn keyword haxeFlash9Final IDataInput IDataOutput IExternalizable
syn keyword haxeFlash9Final Namespace ObjectInput ObjectOutput Proxy QName SetIntervalTimer Timer
syn keyword haxeFlash9Final TypedDictionary XML XMLDocument XMLList XMLNode
syn keyword haxeFlash9Final XMLNodeType XMLParser XMLTag
syn keyword haxeFlash9Final Boot Lib Memory Vector
HaxeHiLink haxeLangObject haxeConstant
syn cluster haxeTop add=haxeLangObject,haxeLangClass
syn cluster haxeClasses add=haxeLangClass,haxeFlashClass
if filereadable(expand("<sfile>:p:h")."/haxeid.vim")
source <sfile>:p:h/haxeid.vim
endif
if !exists("haxe_no_trail_space_error")
syn match haxeSpaceError "\s\+$"
endif
if !exists("haxe_no_tab_space_error")
syn match haxeSpaceError " \+\t"me=e-1
endif
syn region haxeLabelRegion transparent matchgroup=haxeLabel start="\<case\>"
\ matchgroup=NONE end=":"
\ contains=haxeNumber,haxeChr,haxeNumber2
syn match haxeUserLabel "\({\s*\|^\s*\|,\s*\)\@<=[_$a-zA-Z][_$a-zA-Z0-9_]*:\s"he=e-1 contains=haxeDelimiter
\ contains=haxeLabel
syn keyword haxeLabel default never
" Everything - used in parenthases checking or something
syn cluster haxeTop add=haxeExternal,haxeError,haxeError,haxeBranch,
\ haxeLabelRegion,haxeLabel,haxeConditional,
\ haxeRepeat,haxeBoolean,haxeConstant,
\ haxeTypedef,haxeOperator,haxeType,haxeCoreType,
\ haxeStatement,haxeStorageClass,haxeAssert,
\ haxeExceptions,haxeMethodDecl,haxeClassDecl,
\ haxeClassDecl,haxeClassDecl,haxeScopeDecl,
\ haxeError,haxeError2,haxeUserLabel,
\ haxeLangObject,haxeFlashTop,haxeFlashInner,
\ haxeFlashFinal,haxeFlash9Final,haxeFunctionRef,
\ haxeComparison,haxeOptionalVars
" Comments
syn keyword haxeTodo contained TODO FIXME XXX
if exists("haxe_comment_strings")
syn region haxeCmString contained start=+"+ end=+"+ end=+$+
\ end=+\*/+me=s-1,he=s-1
\ contains=haxeSpecial,haxeCmStar,haxeSpecChr,@Spell
syn region haxeCm2String contained start=+"+ end=+$\|"+
\ contains=haxeSpecial,haxeSpecChr,@Spell
syn match haxeCmCharacter contained "'\\[^']\{1,6\}'" contains=haxeSpecChr
syn match haxeCmCharacter contained "'\\''" contains=haxeSpecChr
syn match haxeCmCharacter contained "'[^\\]'"
syn cluster haxeCmSpecial add=haxeCmString,haxeCmCharacter,haxeNumber,haxeNumber2
syn cluster haxeCmSpecial2 add=haxeCm2String,haxeCmCharacter,haxeNumber,haxeNumber2
endif
syn region haxeCm start="/\*" end="\*/"
\ contains=@haxeCmSpecial,haxeTodo,@Spell
syn match haxeCmStar contained "^\s*\*[^/]"me=e-1
syn match haxeCmStar contained "^\s*\*$"
syn match haxeLineCm "//.*" contains=@haxeCmSpecial2,haxeTodo,@Spell
HaxeHiLink haxeCmString haxeDocTags
HaxeHiLink haxeCm2String haxeString
HaxeHiLink haxeCmCharacter haxeChr
syn cluster haxeTop add=haxeCm,haxeLineCm
if exists("haxe_haxedoc") || main_syntax == 'jsp'
syntax case ignore
" syntax coloring for haxedoc comments (HTML)
" syntax include @haxeHtml <sfile>:p:h/html.vim
" unlet b:current_syntax
syn region haxeDocCm start="/\*\*" end="\*/" keepend
\ contains=haxeCmTitle,@haxeHtml,haxeDocTags,haxeTodo,@Spell,haxeProposedTags
syn region haxeCmTitle contained matchgroup=haxeDocCm start="/\*\*"
\ matchgroup=haxeCmTitle keepend end="\.$"
\ end="\.[ \t\r<]"me=e-1
\ end="[^{]@"me=s-2,he=s-1 end="\*/"me=s-1,he=s-1
\ contains=@haxeHtml,haxeCmStar,haxeTodo,@Spell,haxeDocTags,haxeProposedTags
syn region haxeDocTags contained start="{@\(link\|linkplain\|inherit[Dd]oc\|doc[rR]oot\|value\)"
\ end="}"
syn match haxeDocTags contained "@\(see\|param\|exception\|throws\|since\)\s\+\S\+"
\ contains=haxeDocParam
syn match haxeDocParam contained "\s\S\+"
syn match haxeDocTags contained "@\(version\|author\|return\|deprecated\|serial\|serialField\|serialData\)\>"
syn match haxeProposedTags contained "@\(category\|example\|tutorial\|index\|exclude\|todo\|internal\|obsolete\)\>"
syntax case match
endif
syn match haxeCm "/\*\*/" " Edge case
" Strings and constants
syn match haxeSpecError contained "\\."
"syn match haxeSpecChrError contained "[^']"
syn match haxeSpecChr contained "\\\([4-9]\d\|[0-3]\d\d\|[\"\\'ntbrf]\|u\x\{4\}\)"
syn match haxeEregEscape contained "\(\\\\\|\\/\)"
syn region haxeEreg start=+\~\/+ end=+\/[gims]*+ contains=haxeEregEscape
syn region haxeString start=+"+ end=+"+ contains=haxeSpecChr,haxeSpecError,@Spell
syn region haxeSingleString start=+'+ end=+'+
syn match haxeChr "'[^']*'" contains=haxeSpecChr,haxeSpecChrError
syn match haxeChr "'\\''" contains=haxeSpecChr
syn match haxeChr "'[^\\]'"
syn match haxeNumber "\<\(0[0-7]*\|0[xX]\x\+\|\d\+\)[lL]\=\>" contains=haxeSpecNum
"syn match haxeNumber "\(\<\d\+\.\d*\|\.\d\+\)\([eE][-+]\=\d\+\)\=[fFdD]\="
syn match haxeNumber2 "\(\<\d\+\.\d\+\)\([eE][-+]\=\d\+\)\=[fFdD]\=" contains=haxeSpecNum
syn match haxeNumber2 "\<\d\+[eE][-+]\=\d\+[fFdD]\=\>" contains=haxeSpecNum
syn match haxeNumber2 "\<\d\+\([eE][-+]\=\d\+\)\=[fFdD]\>" contains=haxeSpecNum
syn match haxeSpecNum contained "\(0[xX]\|[\.+-]\)"
syn region haxeCondIf start="#if \+!\?" end="\(\W\|$\)" skip="([A-Za-z0-9_ |&!]\+)"
syn region haxeCondElseIf start="#elseif \+!\?" end="\(\W\|$\)" skip="([A-Za-z0-9_ |&!]\+)"
syn match haxeCondElse "#else\s*$"
syn match haxeCondEnd "#end"
syn match haxeCondError "#else .*$"
" unicode characters
syn match haxeSpecial "\\u\d\{4\}"
syn match haxeType ":[a-zA-Z_\.]\+"
\ contains=haxeDelimiter,haxeCoreType,haxeFlashTop,haxeFlashInner,haxeFlashFinal,haxeFlash9Final
syn cluster haxeTop add=haxeString,haxeChr,haxeNumber,haxeNumber2
syn cluster haxeTop add=haxeSpecial,haxeStringError,haxeDelimiter,haxeType
syn keyword haxeTraceFun trace contained
syn region haxeTrace start=+\(^\s*\)\@<=trace(+ end=+);+ contains=haxeTraceFun
if exists("haxe_highlight_functions")
if haxe_highlight_functions == "indent"
syn match haxeFuncDef "^\(\t\| \{4\}\)[_$a-zA-Z][_$a-zA-Z0-9_. \[\]]*([^-+*/()]*)"
\ contains=haxeType,haxeStorageClass,@haxeClasses
syn region haxeFuncDef start=+^\(\t\| \{4\}\)[$_a-zA-Z][$_a-zA-Z0-9_. \[\]]*([^-+*/()]*,\s*+
\ end=+)+ contains=haxeType,haxeStorageClass,@haxeClasses
syn match haxeFuncDef "^ [$_a-zA-Z][$_a-zA-Z0-9_. \[\]]*([^-+*/()]*)"
\ contains=haxeType,haxeStorageClass,@haxeClasses
syn region haxeFuncDef start=+^ [$_a-zA-Z][$_a-zA-Z0-9_. \[\]]*([^-+*/()]*,\s*+
\ end=+)+
\ contains=haxeType,haxeStorageClass,@haxeClasses
else
" This line catches method declarations at any indentation>0, but it assumes
" two things:
" 1. class names are always capitalized (ie: Button)
" 2. method names are never capitalized (except constructors, of course)
syn region haxeFuncDef start=+\s\+\(\(void\|boolean\|char\|byte\|short\|int\|long\|float\|double\|\([A-Za-z_][A-Za-z0-9_$]*\.\)*[A-Z][A-Za-z0-9_$]*\)\(\[\]\)*\s\+[a-z][A-Za-z0-9_$]*\|[A-Z][A-Za-z0-9_$]*\)\s*(+
\ end=+)+
\ contains=haxeType,haxeStorageClass,haxeCm,haxeLineCm,@haxeClasses
endif
syn match haxeBraces "[{}]"
syn cluster haxeTop add=haxeFuncDef,haxeBraces
endif
if exists("haxe_mark_braces_in_parens_as_errors")
syn match haxeInParen contained "[{}]"
HaxeHiLink haxeInParen haxeError
syn cluster haxeTop add=haxeInParen
endif
" catch errors caused by wrong parenthesis
syn region haxeParenT transparent matchgroup=haxeParen start="("
\ end=")" contains=@haxeTop,haxeParenT1
syn region haxeParenT1 transparent matchgroup=haxeParen1 start="("
\ end=")" contains=@haxeTop,haxeParenT2 contained
syn region haxeParenT2 transparent matchgroup=haxeParen2 start="("
\ end=")" contains=@haxeTop,haxeParenT contained
syn match haxeParenError ")"
HaxeHiLink haxeParenError haxeError
if !exists("haxe_minlines")
let haxe_minlines = 5000
endif
exec "syn sync ccomment haxeCm minlines=" . haxe_minlines
syn sync linebreaks=30
" The default highlighting.
if version >= 508 || !exists("did_haxe_syn_inits")
if version < 508
let did_haxe_syn_inits = 1
endif
HaxeHiLink haxeFunctionDef Identifier
HaxeHiLink haxeFuncDef Identifier
HaxeHiLink haxeFunctionRef Function
HaxeHiLink haxeBraces Function
HaxeHiLink haxeBranch Conditional
HaxeHiLink haxeUserLabelRef haxeUserLabel
HaxeHiLink haxeLabel Label
HaxeHiLink haxeUserLabel Label
HaxeHiLink haxeConditional Conditional
HaxeHiLink haxeRepeat Repeat
HaxeHiLink haxeExceptions Exception
HaxeHiLink haxeAssert Statement
HaxeHiLink haxeClassDef Underlined
HaxeHiLink haxeStructure Structure
HaxeHiLink haxeMethodDecl haxeStorageClass
HaxeHiLink haxeClassDecl Structure
HaxeHiLink haxeScopeDecl StorageClass
HaxeHiLink haxeScopeDecl2 Tag
HaxeHiLink haxeBoolean Boolean
HaxeHiLink haxeSpecial Special
HaxeHiLink haxeSpecError Error
HaxeHiLink haxeSpecChrError Error
HaxeHiLink haxeString String
HaxeHiLink haxeSingleString Character
HaxeHiLink haxeEreg Number
HaxeHiLink haxeEregEscape Debug
HaxeHiLink haxeChr Character
HaxeHiLink haxeSpecChr SpecialChar
HaxeHiLink haxeNumber Number
HaxeHiLink haxeNumber2 Float
HaxeHiLink haxeSpecNum Boolean
HaxeHiLink haxeError Error
HaxeHiLink haxeStringError Debug
HaxeHiLink haxeStatement Statement
HaxeHiLink haxeOperator Operator
HaxeHiLink haxeComparison Repeat
HaxeHiLink haxeTraceFun SpecialComment
HaxeHiLink haxeTrace Comment
HaxeHiLink haxeDelimiter Delimiter
HaxeHiLink haxeCm Comment
HaxeHiLink haxeDocCm Comment
HaxeHiLink haxeLineCm Comment
HaxeHiLink haxeConstant Constant
HaxeHiLink haxeTypedef Typedef
HaxeHiLink haxeTypedef1 Typedef
HaxeHiLink haxeTodo Todo
HaxeHiLink haxeLangClass Special
HaxeHiLink haxeFlashClass Keyword
HaxeHiLink haxeFunction Function
HaxeHiLink haxeCmTitle Special
HaxeHiLink haxeDocTags SpecialComment
HaxeHiLink haxeProposedTags SpecialComment
HaxeHiLink haxeCmStar Comment
HaxeHiLink haxeDocParam Function
HaxeHiLink haxeCoreType Keyword
HaxeHiLink haxeType Type
HaxeHiLink haxeExternal Include
HaxeHiLink haxeDefine Define
HaxeHiLink htmlComment Special
HaxeHiLink htmlCommentPart Special
HaxeHiLink haxeSpaceError Error
HaxeHiLink haxeCondIf PreCondit
HaxeHiLink haxeCondElseIf PreCondit
HaxeHiLink haxeCondElse PreProc
HaxeHiLink haxeCondEnd PreProc
HaxeHiLink haxeCondError Error
HaxeHiLink haxeFlashTop PreProc
HaxeHiLink haxeFlashInner Macro
HaxeHiLink haxeFlashFinal Define
HaxeHiLink haxeFlash9Final Define
HaxeHiLink haxeOptionalVars Identifier
endif
delcommand HaxeHiLink
let b:current_syntax = "haxe"
if main_syntax == 'haxe'
unlet main_syntax
endif
let b:spell_options="contained"

View File

@@ -41,6 +41,7 @@ syn keyword htmlTagName contained linearGradient marker mask pattern radialGradi
syn keyword htmlTagName contained missing-glyph mpath syn keyword htmlTagName contained missing-glyph mpath
syn keyword htmlTagName contained text textPath tref tspan vkern syn keyword htmlTagName contained text textPath tref tspan vkern
" Custom Element
syn match htmlTagName contained "\<[a-z_]\+\(\-[a-z_]\+\)\+\>" syn match htmlTagName contained "\<[a-z_]\+\(\-[a-z_]\+\)\+\>"
" HTML 5 arguments " HTML 5 arguments

View File

@@ -2,11 +2,10 @@
" Language: WAI-ARIA " Language: WAI-ARIA
" Maintainer: othree <othree@gmail.com> " Maintainer: othree <othree@gmail.com>
" URL: http://github.com/othree/html5-syntax.vim " URL: http://github.com/othree/html5-syntax.vim
" Last Change: 2010-09-25 " Last Change: 2014-05-02
" License: MIT " License: MIT
" Changes: update to Draft 16 September 2010 " Changes: Add match rules
" update to Draft 16 September 2010
setlocal iskeyword+=-
" WAI-ARIA States and Properties " WAI-ARIA States and Properties
" http://www.w3.org/TR/wai-aria/states_and_properties " http://www.w3.org/TR/wai-aria/states_and_properties
@@ -35,3 +34,29 @@ syn keyword htmlArg contained aria-dropeffect aria-grabbed
syn keyword htmlArg contained aria-activedescendant aria-controls aria-describedby aria-flowto syn keyword htmlArg contained aria-activedescendant aria-controls aria-describedby aria-flowto
syn keyword htmlArg contained aria-labelledby aria-owns aria-posinset aria-setsize syn keyword htmlArg contained aria-labelledby aria-owns aria-posinset aria-setsize
" Use match: https://github.com/othree/html5.vim/issues/39
" Global States and Properties
syn match htmlArg contained "\<aria-\%(\|atomic\|busy\|controls\|describedby\)\>"
syn match htmlArg contained "\<aria-\%(\|disabled\|dropeffect\|flowto\|grabbed\)\>"
syn match htmlArg contained "\<aria-\%(\|haspopup\|hidden\|invalid\|label\)\>"
syn match htmlArg contained "\<aria-\%(\|labelledby\|live\|owns\|relevant\)\>"
" Widget Attributes
syn match htmlArg contained "\<aria-\%(\|autocomplete\|checked\|disabled\|expanded\)\>"
syn match htmlArg contained "\<aria-\%(\|haspopup\|hidden\|invalid\|label\)\>"
syn match htmlArg contained "\<aria-\%(\|level\|multiline\|multiselectable\|orientation\)\>"
syn match htmlArg contained "\<aria-\%(\|pressed\|readonly\|required\|selected\)\>"
syn match htmlArg contained "\<aria-\%(\|sort\|valuemax\|valuemin\|valuenow\|valuetext\)\>"
" Live Region Attributes
syn match htmlArg contained "\<aria-\%(\|atomic\|busy\|live\|relevant\)\>"
" Drag-and-Drop attributes
syn match htmlArg contained "\<aria-\%(\|dropeffect\|grabbed\)\>"
" Relationship Attributes
syn match htmlArg contained "\<aria-\%(\|activedescendant\|controls\|describedby\|flowto\)\>"
syn match htmlArg contained "\<aria-\%(\|labelledby\|owns\|posinset\|setsize\)\>"

View File

@@ -12,8 +12,6 @@ if !exists("main_syntax")
let main_syntax = 'jade' let main_syntax = 'jade'
endif endif
runtime! syntax/html.vim
runtime! syntax/html/html5.vim
silent! syntax include @htmlCoffeescript syntax/coffee.vim silent! syntax include @htmlCoffeescript syntax/coffee.vim
unlet! b:current_syntax unlet! b:current_syntax
silent! syntax include @htmlStylus syntax/stylus.vim silent! syntax include @htmlStylus syntax/stylus.vim
@@ -56,8 +54,10 @@ syn region jadeMarkdownFilter matchgroup=jadeFilter start=/^\z(\s*\):markdown\s
syn region jadeStylusFilter matchgroup=jadeFilter start="^\z(\s*\):stylus\s*$" end="^\%(\z1\s\|\s*$\)\@!" contains=@htmlStylus syn region jadeStylusFilter matchgroup=jadeFilter start="^\z(\s*\):stylus\s*$" end="^\%(\z1\s\|\s*$\)\@!" contains=@htmlStylus
syn region jadePlainFilter matchgroup=jadeFilter start="^\z(\s*\):\%(sass\|less\|cdata\)\s*$" end="^\%(\z1\s\|\s*$\)\@!" syn region jadePlainFilter matchgroup=jadeFilter start="^\z(\s*\):\%(sass\|less\|cdata\)\s*$" end="^\%(\z1\s\|\s*$\)\@!"
syn match jadeScriptConditional "\<\%(if\|else\|unless\|while\|for\|until\|case\|when\|default\)\>[?!]\@!" syn match jadeScriptConditional "^\s*\<\%(if\|else\|unless\|while\|until\|case\|when\|default\)\>[?!]\@!"
syn match jadeScriptStatement "\<\%(each\|block\|prepend\|append\|mixin\|extends\|include\)\>[?!]\@!" syn region jadeScriptLoopRegion start="^\s*\(for\)" end="$" contains=jadeScriptLoopKeywords
syn keyword jadeScriptLoopKeywords for in contained
syn match jadeScriptStatement "^\s*\<\%(each\|block\|prepend\|append\|mixin\|extends\|include\)\>[?!]\@!"
syn region jadeJavascript start="^\z(\s*\)script\%(:\w\+\)\=" end="^\%(\z1\s\|\s*$\)\@!" contains=@htmlJavascript,jadeJavascriptTag keepend syn region jadeJavascript start="^\z(\s*\)script\%(:\w\+\)\=" end="^\%(\z1\s\|\s*$\)\@!" contains=@htmlJavascript,jadeJavascriptTag keepend
syn region jadeJavascriptTag contained start="^\z(\s*\)script\%(:\w\+\)\=" end="$" contains=jadeBegin,jadeTag syn region jadeJavascriptTag contained start="^\z(\s*\)script\%(:\w\+\)\=" end="$" contains=jadeBegin,jadeTag
@@ -67,6 +67,7 @@ syn match jadeError "\$" contained
hi def link jadePlainChar Special hi def link jadePlainChar Special
hi def link jadeScriptConditional PreProc hi def link jadeScriptConditional PreProc
hi def link jadeScriptLoopKeywords PreProc
hi def link jadeScriptStatement PreProc hi def link jadeScriptStatement PreProc
hi def link jadeHtmlArg htmlArg hi def link jadeHtmlArg htmlArg
hi def link jadeAttributeString String hi def link jadeAttributeString String

34
syntax/jasmine.vim Normal file
View File

@@ -0,0 +1,34 @@
" Syntax highlighting for jasmine specs (used by http://github.com/thomd/vim-jasmine).
" if b:current_syntax is defined, some other syntax files, earlier in 'runtimepath' was already loaded
if exists("b:current_syntax")
finish
endif
" match the case of syntax elements
syntax case match
" keywords
syntax keyword jasmineSuite describe it beforeEach afterEach
syntax keyword jasmineDisabled xdescribe xit
syntax keyword jasmineExpectation expect
syntax region jasmineNot start=/not/ end=/\.to/me=s-1
syntax match jasmineMatcher /\.to\h\+/
syntax keyword jasmineSpy spyOn
syntax match jasmineSpyMatcher /and\h\+/
" jasmine is a subset of the javascript language, thus we need to activate
" javascript syntax highlighting and add new jasmin group names to the
" JavaScriptAll cluster which is defined there
runtime! syntax/javascript.vim
syntax cluster JavaScriptAll add=jasmineSuite,jasmineDisabled,jasmineExpectation,jasmineNot,jasmineMatcher,jasmineSpy,jasmineSpyMatcher
let b:current_syntax = "jasmine"
hi def link jasmineSuite Statement
hi def link jasmineDisabled Error
hi def link jasmineExpectation Statement
hi def link jasmineNot Special
hi def link jasmineMatcher Statement
hi def link jasmineSpy Special
hi def link jasmineSpyMatcher Statement

View File

@@ -55,15 +55,15 @@ if !exists("javascript_ignore_javaScriptdoc")
syntax region jsDocComment matchgroup=jsComment start="/\*\*\s*" end="\*/" contains=jsDocTags,jsCommentTodo,jsCvsTag,@jsHtml,@Spell fold syntax region jsDocComment matchgroup=jsComment start="/\*\*\s*" end="\*/" contains=jsDocTags,jsCommentTodo,jsCvsTag,@jsHtml,@Spell fold
" tags containing a param " tags containing a param
syntax match jsDocTags contained "@\(alias\|augments\|borrows\|class\|constructs\|default\|defaultvalue\|emits\|exception\|exports\|extends\|file\|fires\|kind\|listens\|member\|memberOf\|mixes\|module\|name\|namespace\|requires\|throws\|var\|variation\|version\)\>" nextgroup=jsDocParam skipwhite syntax match jsDocTags contained "@\(alias\|augments\|borrows\|class\|constructs\|default\|defaultvalue\|emits\|exception\|exports\|extends\|file\|fires\|kind\|listens\|member\|member[oO]f\|mixes\|module\|name\|namespace\|requires\|throws\|var\|variation\|version\)\>" nextgroup=jsDocParam skipwhite
" tags containing type and param " tags containing type and param
syntax match jsDocTags contained "@\(arg\|argument\|param\|property\)\>" nextgroup=jsDocType skipwhite syntax match jsDocTags contained "@\(arg\|argument\|param\|property\)\>" nextgroup=jsDocType skipwhite
" tags containing type but no param " tags containing type but no param
syntax match jsDocTags contained "@\(callback\|enum\|external\|this\|type\|typedef\|return\|returns\)\>" nextgroup=jsDocTypeNoParam skipwhite syntax match jsDocTags contained "@\(callback\|enum\|external\|this\|type\|typedef\|return\|returns\)\>" nextgroup=jsDocTypeNoParam skipwhite
" tags containing references " tags containing references
syntax match jsDocTags contained "@\(lends\|see\)\>" nextgroup=jsDocSeeTag skipwhite syntax match jsDocTags contained "@\(lends\|see\|tutorial\)\>" nextgroup=jsDocSeeTag skipwhite
" other tags (no extra syntax) " other tags (no extra syntax)
syntax match jsDocTags contained "@\(abstract\|access\|author\|classdesc\|constant\|const\|constructor\|copyright\|deprecated\|desc\|description\|event\|example\|fileOverview\|function\|global\|ignore\|inner\|instance\|license\|method\|mixin\|overview\|private\|protected\|public\|readonly\|since\|static\|todo\|summary\|undocumented\|virtual\)\>" syntax match jsDocTags contained "@\(abstract\|access\|author\|classdesc\|constant\|const\|constructor\|copyright\|deprecated\|desc\|description\|event\|example\|file[oO]verview\|function\|global\|ignore\|inner\|instance\|license\|method\|mixin\|overview\|private\|protected\|public\|readonly\|since\|static\|todo\|summary\|undocumented\|virtual\)\>"
syntax region jsDocType start="{" end="}" oneline contained nextgroup=jsDocParam skipwhite syntax region jsDocType start="{" end="}" oneline contained nextgroup=jsDocParam skipwhite
syntax match jsDocType contained "\%(#\|\"\|\w\|\.\|:\|\/\)\+" nextgroup=jsDocParam skipwhite syntax match jsDocType contained "\%(#\|\"\|\w\|\.\|:\|\/\)\+" nextgroup=jsDocParam skipwhite
@@ -79,39 +79,40 @@ syntax case match
"" Syntax in the JavaScript code "" Syntax in the JavaScript code
syntax match jsFuncCall /\k\+\%(\s*(\)\@=/ syntax match jsFuncCall /\k\+\%(\s*(\)\@=/
syntax match jsSpecial "\v\\%(0|\\x\x\{2\}\|\\u\x\{4\}\|\c[A-Z]|.)" syntax match jsSpecial "\v\\%(0|\\x\x\{2\}\|\\u\x\{4\}\|\c[A-Z]|.)" contained
syntax region jsStringD start=+"+ skip=+\\\\\|\\$"+ end=+"+ contains=jsSpecial,@htmlPreproc syntax match jsTemplateVar "\${.\{-}}" contained
syntax region jsStringS start=+'+ skip=+\\\\\|\\$'+ end=+'+ contains=jsSpecial,@htmlPreproc syntax region jsStringD start=+"+ skip=+\\\\\|\\$"+ end=+"+ contains=jsSpecial,@htmlPreproc,@Spell
syntax region jsRegexpCharClass start=+\[+ end=+\]+ contained syntax region jsStringS start=+'+ skip=+\\\\\|\\$'+ end=+'+ contains=jsSpecial,@htmlPreproc,@Spell
syntax region jsTemplateString start=+`+ skip=+\\\\\|\\$`+ end=+`+ contains=jsTemplateVar,jsSpecial,@htmlPreproc
syntax region jsRegexpCharClass start=+\[+ skip=+\\.+ end=+\]+ contained
syntax match jsRegexpBoundary "\v%(\<@![\^$]|\\[bB])" contained syntax match jsRegexpBoundary "\v%(\<@![\^$]|\\[bB])" contained
syntax match jsRegexpBackRef "\v\\[1-9][0-9]*" contained syntax match jsRegexpBackRef "\v\\[1-9][0-9]*" contained
syntax match jsRegexpQuantifier "\v\\@<!%([?*+]|\{\d+%(,|,\d+)?})\??" contained syntax match jsRegexpQuantifier "\v\\@<!%([?*+]|\{\d+%(,|,\d+)?})\??" contained
syntax match jsRegexpOr "\v\<@!\|" contained syntax match jsRegexpOr "\v\<@!\|" contained
syntax match jsRegexpMod "\v\(@<=\?[:=!>]" contained syntax match jsRegexpMod "\v\(@<=\?[:=!>]" contained
syntax cluster jsRegexpSpecial contains=jsRegexpBoundary,jsRegexpBackRef,jsRegexpQuantifier,jsRegexpOr,jsRegexpMod syntax cluster jsRegexpSpecial contains=jsSpecial,jsRegexpBoundary,jsRegexpBackRef,jsRegexpQuantifier,jsRegexpOr,jsRegexpMod
syntax region jsRegexpGroup start="\\\@<!(" end="\\\@<!)" contained contains=jsRegexpCharClass,@jsRegexpSpecial keepend syntax region jsRegexpGroup start="\\\@<!(" end="\\\@<!)" contained contains=jsRegexpCharClass,@jsRegexpSpecial keepend
syntax region jsRegexpString start=+\(\(\(return\|case\)\s\+\)\@<=\|\(\([)\]"']\|\d\|\w\)\s*\)\@<!\)/\(\*\|/\)\@!+ skip=+\\\\\|\\/+ end=+/[gimy]\{,4}+ contains=jsSpecial,jsRegexpCharClass,jsRegexpGroup,@jsRegexpSpecial,@htmlPreproc oneline keepend syntax region jsRegexpString start=+\(\(\(return\|case\)\s\+\)\@<=\|\(\([)\]"']\|\d\|\w\)\s*\)\@<!\)/\(\*\|/\)\@!+ skip=+\\.\|\[\(\\.\|[^]]\)*\]+ end=+/[gimy]\{,4}+ contains=jsRegexpCharClass,jsRegexpGroup,@jsRegexpSpecial,@htmlPreproc oneline keepend
syntax match jsNumber /\<-\=\d\+L\=\>\|\<0[xX]\x\+\>/ syntax match jsNumber /\<-\=\d\+L\=\>\|\<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 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 syntax match jsFunctionKey /\<[a-zA-Z_$][0-9a-zA-Z_$]*\(\s*:\s*function\s*\)\@=/ contained
"" JavaScript Prototype
syntax keyword jsPrototype prototype
if g:javascript_conceal == 1 if g:javascript_conceal == 1
syntax keyword jsNull null conceal cchar=ø syntax keyword jsNull null conceal cchar=ø
syntax keyword jsThis this conceal cchar=@ syntax keyword jsThis this conceal cchar=@
syntax keyword jsReturn return conceal cchar= syntax keyword jsReturn return conceal cchar=
syntax keyword jsUndefined undefined conceal cchar=¿ syntax keyword jsUndefined undefined conceal cchar=¿
syntax keyword jsNan NaN conceal cchar= syntax keyword jsNan NaN conceal cchar=
syntax keyword jsPrototype prototype conceal cchar=
else else
syntax keyword jsNull null syntax keyword jsNull null
syntax keyword jsThis this syntax keyword jsThis this
syntax keyword jsReturn return syntax keyword jsReturn return
syntax keyword jsUndefined undefined syntax keyword jsUndefined undefined
syntax keyword jsNan NaN syntax keyword jsNan NaN
syntax keyword jsPrototype prototype
endif endif
"" Statement Keywords "" Statement Keywords
@@ -133,18 +134,18 @@ syntax keyword jsFutureKeys abstract enum int short boolean export interface
"" DOM/HTML/CSS specified things "" 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
" 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
" HTML events and internal variables " HTML events and internal variables
syntax case ignore 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 syntax case match
" Follow stuff should be highligh within a special context " Follow stuff should be highligh within a special context
" While it can't be handled with context depended with Regex based highlight " While it can't be handled with context depended with Regex based highlight
@@ -181,7 +182,7 @@ endif "DOM/HTML/CSS
"" Code blocks "" Code blocks
syntax cluster jsExpression contains=jsComment,jsLineComment,jsDocComment,jsStringD,jsStringS,jsRegexpString,jsNumber,jsFloat,jsThis,jsOperator,jsBooleanTrue,jsBooleanFalse,jsNull,jsFunction,jsGlobalObjects,jsExceptions,jsFutureKeys,jsDomErrNo,jsDomNodeConsts,jsHtmlEvents,jsDotNotation,jsBracket,jsParen,jsBlock,jsFuncCall,jsUndefined,jsNan,jsKeyword,jsStorageClass,jsPrototype,jsBuiltins,jsNoise syntax cluster jsExpression contains=jsComment,jsLineComment,jsDocComment,jsTemplateString,jsStringD,jsStringS,jsRegexpString,jsNumber,jsFloat,jsThis,jsOperator,jsBooleanTrue,jsBooleanFalse,jsNull,jsFunction,jsArrowFunction,jsGlobalObjects,jsExceptions,jsFutureKeys,jsDomErrNo,jsDomNodeConsts,jsHtmlEvents,jsDotNotation,jsBracket,jsParen,jsBlock,jsFuncCall,jsUndefined,jsNan,jsKeyword,jsStorageClass,jsPrototype,jsBuiltins,jsNoise
syntax cluster jsAll contains=@jsExpression,jsLabel,jsConditional,jsRepeat,jsReturn,jsStatement,jsTernaryIf,jsException syntax cluster jsAll contains=@jsExpression,jsLabel,jsConditional,jsRepeat,jsReturn,jsStatement,jsTernaryIf,jsException
syntax region jsBracket matchgroup=jsBrackets start="\[" end="\]" contains=@jsAll,jsParensErrB,jsParensErrC,jsBracket,jsParen,jsBlock,@htmlPreproc fold syntax region jsBracket matchgroup=jsBrackets start="\[" end="\]" contains=@jsAll,jsParensErrB,jsParensErrC,jsBracket,jsParen,jsBlock,@htmlPreproc fold
syntax region jsParen matchgroup=jsParens start="(" end=")" contains=@jsAll,jsParensErrA,jsParensErrC,jsParen,jsBracket,jsBlock,@htmlPreproc fold syntax region jsParen matchgroup=jsParens start="(" end=")" contains=@jsAll,jsParensErrA,jsParensErrC,jsParen,jsBracket,jsBlock,@htmlPreproc fold
@@ -208,10 +209,13 @@ else
endif endif
syntax match jsFuncName contained /\<[a-zA-Z_$][0-9a-zA-Z_$]*/ nextgroup=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 nextgroup=jsFuncBlock keepend skipwhite skipempty syntax region jsFuncArgs contained matchgroup=jsFuncParens start='(' end=')' contains=jsFuncArgCommas,jsFuncArgRest nextgroup=jsFuncBlock keepend skipwhite skipempty
syntax match jsFuncArgCommas contained ',' syntax match jsFuncArgCommas contained ','
syntax match jsFuncArgRest contained /\%(\.\.\.[a-zA-Z_$][0-9a-zA-Z_$]*\))/
syntax keyword jsArgsObj arguments contained containedin=jsFuncBlock syntax keyword jsArgsObj arguments contained containedin=jsFuncBlock
syntax match jsArrowFunction /=>/
" 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
" For version 5.8 and later: only when an item doesn't have highlighting yet " For version 5.8 and later: only when an item doesn't have highlighting yet
@@ -222,6 +226,7 @@ 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 jsLineComment Comment
HiLink jsEnvComment PreProc HiLink jsEnvComment PreProc
@@ -235,6 +240,7 @@ if version >= 508 || !exists("did_javascript_syn_inits")
HiLink jsDocParam Label HiLink jsDocParam Label
HiLink jsStringS String HiLink jsStringS String
HiLink jsStringD String HiLink jsStringD String
HiLink jsTemplateString String
HiLink jsTernaryIfOperator Conditional HiLink jsTernaryIfOperator Conditional
HiLink jsRegexpString String HiLink jsRegexpString String
HiLink jsRegexpBoundary SpecialChar HiLink jsRegexpBoundary SpecialChar
@@ -254,6 +260,7 @@ if version >= 508 || !exists("did_javascript_syn_inits")
HiLink jsStatement Statement HiLink jsStatement Statement
HiLink jsException Exception HiLink jsException Exception
HiLink jsKeyword Keyword HiLink jsKeyword Keyword
HiLink jsArrowFunction Type
HiLink jsFunction Type HiLink jsFunction Type
HiLink jsFuncName Function HiLink jsFuncName Function
HiLink jsArgsObj Special HiLink jsArgsObj Special
@@ -279,6 +286,7 @@ if version >= 508 || !exists("did_javascript_syn_inits")
HiLink jsFuncBraces Noise HiLink jsFuncBraces Noise
HiLink jsFuncParens Noise HiLink jsFuncParens Noise
HiLink jsSpecial Special HiLink jsSpecial Special
HiLink jsTemplateVar Special
HiLink jsGlobalObjects Special HiLink jsGlobalObjects Special
HiLink jsExceptions Special HiLink jsExceptions Special
HiLink jsFutureKeys Special HiLink jsFutureKeys Special

View File

@@ -2,6 +2,7 @@
" Language: Markdown " Language: Markdown
" Maintainer: Tim Pope <vimNOSPAM@tpope.org> " Maintainer: Tim Pope <vimNOSPAM@tpope.org>
" Filenames: *.markdown " Filenames: *.markdown
" Last Change: 2013 May 30
if exists("b:current_syntax") if exists("b:current_syntax")
finish finish
@@ -69,7 +70,7 @@ syn region markdownUrlTitle matchgroup=markdownUrlTitleDelimiter start=+"+ end=+
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 markdownUrlTitle matchgroup=markdownUrlTitleDelimiter start=+(+ end=+)+ keepend contained
syn region markdownLinkText matchgroup=markdownLinkTextDelimiter start="!\=\[\%(\_[^]]*]\%( \=[[(]\)\)\@=" end="\]\%( \=[[(]\)\@=" keepend nextgroup=markdownLink,markdownId skipwhite contains=@markdownInline,markdownLineStart 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 markdownLink matchgroup=markdownLinkDelimiter start="(" end=")" contains=markdownUrl keepend contained
syn region markdownId matchgroup=markdownIdDelimiter start="\[" end="\]" keepend contained syn region markdownId matchgroup=markdownIdDelimiter start="\[" end="\]" keepend contained
syn region markdownAutomaticLink matchgroup=markdownUrlDelimiter start="<\%(\w\+:\|[[:alnum:]_+-]\+@\)\@=" end=">" keepend oneline syn region markdownAutomaticLink matchgroup=markdownUrlDelimiter start="<\%(\w\+:\|[[:alnum:]_+-]\+@\)\@=" end=">" keepend oneline
@@ -84,6 +85,9 @@ syn region markdownCode matchgroup=markdownCodeDelimiter start="`" end="`" keepe
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 region markdownCode matchgroup=markdownCodeDelimiter start="^\s*```.*$" end="^\s*```\ze\s*$" keepend
syn match markdownFootnote "\[^[^\]]\]\s*$"
syn match markdownFootnoteDefinition "^\[^[^\]]\]:"
if main_syntax ==# 'markdown' if main_syntax ==# 'markdown'
for s:type in g:markdown_fenced_languages for s:type in g:markdown_fenced_languages
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') 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')
@@ -107,6 +111,9 @@ hi def link markdownListMarker htmlTagName
hi def link markdownBlockquote Comment hi def link markdownBlockquote Comment
hi def link markdownRule PreProc hi def link markdownRule PreProc
hi def link markdownFootnote Typedef
hi def link markdownFootnoteDefinition Typedef
hi def link markdownLinkText htmlLink hi def link markdownLinkText htmlLink
hi def link markdownIdDeclaration Typedef hi def link markdownIdDeclaration Typedef
hi def link markdownId Type hi def link markdownId Type

89
syntax/mustache.vim Normal file
View File

@@ -0,0 +1,89 @@
" Mustache & Handlebars syntax
" Language: Mustache, Handlebars
" Maintainer: Juvenn Woo <machese@gmail.com>
" Screenshot: http://imgur.com/6F408
" Version: 2
" Last Change: Oct 26th 2013
" Remark:
" It lexically hilights embedded mustaches (exclusively) in html file.
" While it was written for Ruby-based Mustache template system, it should
" work for Google's C-based *ctemplate* as well as Erlang-based *et*. All
" of them are, AFAIK, based on the idea of ctemplate.
" References:
" [Mustache](http://github.com/defunkt/mustache)
" [Handlebars](https://github.com/wycats/handlebars.js)
" [ctemplate](http://code.google.com/p/google-ctemplate/)
" [ctemplate doc](http://google-ctemplate.googlecode.com/svn/trunk/doc/howto.html)
" [et](http://www.ivan.fomichev.name/2008/05/erlang-template-engine-prototype.html)
" TODO: Feedback is welcomed.
" Read the HTML syntax to start with
if version < 600
so <sfile>:p:h/html.vim
else
runtime! syntax/html.vim
unlet b:current_syntax
endif
if version < 600
syntax clear
elseif exists("b:current_syntax")
finish
endif
" Standard HiLink will not work with included syntax files
if version < 508
command! -nargs=+ HtmlHiLink hi link <args>
else
command! -nargs=+ HtmlHiLink hi def link <args>
endif
syntax match mustacheError '}}}\?'
syntax match mustacheInsideError '{{[{#<>=!\/]\?'
syntax region mustacheInside start=/{{/ end=/}}}\?/ keepend containedin=TOP,@htmlMustacheContainer
syntax match mustacheOperators '=\|\.\|/' contained containedin=mustacheInside,@htmlMustacheContainer
syntax region mustacheSection start='{{[#^/]'lc=2 end=/}}/me=e-2 contained containedin=mustacheInside,@htmlMustacheContainer
syntax region mustachePartial start=/{{[<>]/lc=2 end=/}}/me=e-2 contained containedin=mustacheInside,@htmlMustacheContainer
syntax region mustacheMarkerSet start=/{{=/lc=2 end=/=}}/me=e-2 contained containedin=mustacheInside,@htmlMustacheContainer
syntax match mustacheHandlebars '{{\|}}' contained containedin=mustacheInside,@htmlMustacheContainer
syntax match mustacheUnescape '{{{\|}}}' contained containedin=mustacheInside,@htmlMustacheContainer
syntax match mustacheConditionals '\([/#]\(if\|unless\)\|else\)' contained containedin=mustacheInside
syntax match mustacheHelpers '[/#]\(with\|each\)' contained containedin=mustacheSection
syntax region mustacheComment start=/{{!/rs=s+2 end=/}}/re=e-2 contains=Todo contained containedin=mustacheInside,@htmlMustacheContainer
syntax region mustacheBlockComment start=/{{!--/rs=s+2 end=/--}}/re=e-2 contains=Todo
syntax region mustacheQString start=/'/ skip=/\\'/ end=/'/ contained containedin=mustacheInside
syntax region mustacheDQString start=/"/ skip=/\\"/ end=/"/ contained containedin=mustacheInside
" Clustering
syntax cluster htmlMustacheContainer add=htmlHead,htmlTitle,htmlString,htmlH1,htmlH2,htmlH3,htmlH4,htmlH5,htmlH6,htmlLink,htmlBold,htmlUnderline,htmlItalic,htmlValue
" Hilighting
" mustacheInside hilighted as Number, which is rarely used in html
" you might like change it to Function or Identifier
HtmlHiLink mustacheVariable Number
HtmlHiLink mustacheVariableUnescape Number
HtmlHiLink mustachePartial Number
HtmlHiLink mustacheSection Number
HtmlHiLink mustacheMarkerSet Number
HtmlHiLink mustacheComment Comment
HtmlHiLink mustacheBlockComment Comment
HtmlHiLink mustacheError Error
HtmlHiLink mustacheInsideError Error
HtmlHiLink mustacheHandlebars Special
HtmlHiLink mustacheUnescape Identifier
HtmlHiLink mustacheOperators Operator
HtmlHiLink mustacheConditionals Conditional
HtmlHiLink mustacheHelpers Repeat
HtmlHiLink mustacheQString String
HtmlHiLink mustacheDQString String
syn region mustacheScriptTemplate start=+<script [^>]*type *=[^>]*text/\(mustache\|x-handlebars-template\)[^>]*>+
\ end=+</script>+me=s-1 keepend
\ contains=mustacheInside,@htmlMustacheContainer,htmlTag,htmlEndTag,htmlTagName,htmlSpecialChar
let b:current_syntax = "mustache"
delcommand HtmlHiLink

157
syntax/opencl.vim Normal file
View File

@@ -0,0 +1,157 @@
" Vim syntax file
" Language: OpenCL (Open Computing Language)
" Maintainer: Terence Ou (rivan_@msn.com)
" Last Change: 19-July-2010
if version < 600
syntax clear
elseif exists("b:current_syntax")
finish
endif
" Read the C syntax to start with
if version < 600
source <sfile>:p:h/c.vim
else
runtime! syntax/c.vim
endif
" address space qualifiers
syn keyword clStorageClass global __global local __local constant __constant private __private
" function qualifiers
syn keyword clStorageClass kernel __kernel __attribute__
syn keyword clStorageClass read_only __read_only write_only __write_only
syn keyword clStorageClass complex imaginary
" scalar types
syn keyword clType bool uchar ushort uint ulong half quad
" vector types
syn keyword clType char2 char3 char4 char8 char16
syn keyword clType uchar2 uchar3 uchar4 uchar8 uchar16
syn keyword clType short2 short3 short4 short8 short16
syn keyword clType ushort2 ushort3 ushort4 ushort8 ushort16
syn keyword clType int2 int3 int4 int8 int16
syn keyword clType uint2 uint3 uint4 uint8 uint16
syn keyword clType long2 long3 long4 long8 long16
syn keyword clType ulong2 ulong3 ulong4 ulong8 ulong16
syn keyword clType float2 float3 float4 float8 float16
syn keyword clType double2 double3 double4 double8 double16
syn keyword clType half2 half3 half4 half8 half16
" other types
syn keyword clType ptrdiff_t intptr_t uintptr_t
syn keyword clType image2d_t image3d_t sampler_t event_t
" reserved types
syn keyword clType bool2 bool3 bool4 bool8 bool16
syn keyword clType quad2 quad3 quad4 quad8 quad16
syn match clType "\(float\|double\)\(2\|3\|4\|8\|16\)x\(2\|3\|4\|8\|16\)"
" abstract data types
syn keyword clType _cl_platform_id _cl_device_id _cl_context _cl_command_queue _cl_mem _cl_program _cl_kernel _cl_event _cl_sampler
" image format descriptor structure
syn keyword clType cl_image_format
syn keyword clCast vec_type_hint work_group_size_hint aligned packed endian
syn match clCast "as_\(uchar\|char\|ushort\|short\|uint\|int\|ulong\|long\|float\|double\)("
syn match clCast "as_\(uchar\|char\|ushort\|short\|uint\|int\|ulong\|long\|float\|double\)\(2\|3\|4\|8\|16\)("
syn match clCast "convert_\(uchar\|char\|ushort\|short\|uint\|int\|ulong\|long\|float\|double\))\(2\|3\|4\|8\|16\)("
syn match clCast "convert_\(uchar\|char\|ushort\|short\|uint\|int\|ulong\|long\|float\|double\))\(2\|3\|4\|8\|16\)_sat("
syn match clCast "convert_\(uchar\|char\|ushort\|short\|uint\|int\|ulong\|long\|float\|double\))\(2\|3\|4\|8\|16\)_sat_\(rte\|rtz\|rtp\|rtn\)("
" work item functions
syn keyword clFunction get_work_dim get_global_size get_global_id get_local_size get_local_id get_num_groups get_group_id get_global_offset
" math functions
syn keyword clFunction cos cosh cospi acos acosh acospi
syn keyword clFunction sin sincos sinh sinpi asin asinh asinpi
syn keyword clFunction tan tanh tanpi atan atan2 atanh atanpi atan2pi
syn keyword clFunction cbrt ceil copysign
syn keyword clFunction erfc erf
syn keyword clFunction exp exp2 exp10 expm1
syn keyword clFunction fabs fdim floor fma fmax fmin
syn keyword clFunction fract frexp hypot ilogb
syn keyword clFunction ldexp ldexp lgamma lgamma_r
syn keyword clFunction log log2 log10 log1p logb
syn keyword clFunction mad modf
syn keyword clFunction nan nextafter
syn keyword clFunction pow pown powr
syn keyword clFunction remainder remquo rint rootn round rsqrt sqrt
syn keyword clFunction tgamma trunc
syn keyword clFunction half_cos half_divide half_exp half_exp2 half_exp10 half_log half_log2 half_log10 half_powr half_recip half_rsqrt half_sin half_sqrt half_tan
syn keyword clFunction native_cos native_divide native_exp native_exp2 native_exp10 native_log native_log2 native_log10 native_powr native_recip native_rsqrt native_sin native_sqrt native_tan
" integer functions
syn keyword clFunction abs abs_diff add_sat hadd rhadd clz mad_hi mad_sat max min mul_hi rotate sub_sat upsample mad24 mul24
" common functions
syn keyword clFunction clamp degrees max min mix radians step smoothstep sign
" geometric functions
syn keyword clFunction cross dot distance length normalize fast_distance fast_length fast_normalize
" miscellaneous vector functions
syn keyword clFunction vec_step shuffle shuffle2
" relational functions
syn keyword clFunction isequal isnotequal isgreater isgreaterequal isless islessequal islessgreater isfinite isinf isnan isnormal isordered isunordered signbit any all bitselect select
" vector data load and store functions
syn keyword clFunction vload_half vstore_half
syn match clFunction "vload\(2\|3\|4\|8\|16\)("
syn match clFunction "vload_half\(2\|3\|4\|8\|16\)("
syn match clFunction "vloada_half\(2\|3\|4\|8\|16\)("
syn match clFunction "vloada_half\(2\|3\|4\|8\|16\)_\(rte\|rtz\|rtp\)("
syn match clFunction "vstore\(2\|3\|4\|8\|16\)("
syn match clFunction "vstore\(rte\|rtz\|rtp\|rtn\)("
syn match clFunction "vstore_half\(2\|3\|4\|8\|16\)("
syn match clFunction "vstore_half_\(rte\|rtz\|rtp\|rtn\)("
syn match clFunction "vstore_half\(2\|3\|4\|8\|16\)_\(rte\|rtz\|rtp\|rtn\)("
syn match clFunction "vstorea_half\(2\|3\|4\|8\|16\)("
syn match clFunction "vstorea_half\(2\|3\|4\|8\|16\)_\(rte\|rtz\|rtp\|rtn\)("
" image read and write functions
syn match clFunction "read_image\(f\|i\|ui\|h\)("
syn match clFunction "write_image\(f\|i\|ui\|h\)("
syn keyword clFunction get_image_width get_image_height get_image_depth get_image_channel_data_type get_image_channel_order get_image_dim
" explicit memory fence functions
syn keyword clFunction barrier mem_fence read_mem_fence write_mem_fence
" async copies from global to local mem to and fro and prefetch
syn keyword clFunction async_work_group_copy async_work_group__strided_copy wait_group_events prefetch
" atomic functions
syn match clFunction "atom_\(add\|sub\|xchg\|inc\|dec\|cmpxchg\|min\|max\|and\|or\|xor\)("
syn keyword clConstant MAXFLOAT HUGE_VALF INFINITY NAN
syn keyword clConstant FLT_DIG FLT_MANT_DIG FLT_MAX_10_EXP FLT_MAX_EXP FLT_MIN_10_EXP FLT_MIN_EXP FLT_RADIX FLT_MAX FLT_MIN FLT_EPSILON
syn keyword clConstant CHAR_BIT CHAR_MAX CHAR_MIN INT_MIN INT_MAX LONG_MAX LONG_MIN SCHAR_MAX SCHAR_MIN SHRT_MAX SHRT_MIN UCHAR_MAX UCHAR_MIN UINT_MAX ULONG_MAX
syn keyword clConstant DBL_DIG DBL_MANT_DIG DBL_MAX_10_EXP DBL_MIN_10_EXP DBL_MIN_EXP DBL_MAX DBL_MIN DBL_EPSILON
syn keyword clConstant M_E M_LOG2E M_LOG10E M_LN2 M_LN10 M_PI M_PI2 M_PI4 M_1_PI M_2_PI M_2_SQRTPI M_SQRT2 M_SQRT1_2
syn keyword clConstant CLK_NORMALIZED_COORDS_TRUE CLK_NORMALIZED_COORDS_FALSE
syn keyword clConstant CLK_ADDRESS_REPEAT CLK_ADDRESS_CLAMP_TO_EDGE CLK_ADDRESS_CLAMP
syn keyword clConstant CL_INTENSITY CL_RA CL_ARGB CL_BGRA CL_RGBA CL_R CL_RG CL_RGB CL_RGx CL_RGBx CL_Rx CL_A CL_LUMINANCE
syn keyword clConstant CL_SNORM_INT8 CL_SNORM_INT16 CL_UNORM_INT8 CL_UNORM_INT16 CL_UNORM_SHORT_565 CL_UNORM_SHORT_555 CL_UNORM_INT_101010 CL_SIGNED_INT8 CL_SIGNED_INT16 CL_SIGNED_INT32 CL_UNSIGNED_INT8 CL_UNSIGNED_INT16 CL_UNSIGNED_INT32 CL_HALF_FLOAT CL_FLOAT
syn keyword clConstant CLK_ADDRESS_NONE CLK_FILTER_NEAREST CLK_FILTER_LINEAR
syn keyword clConstant CLK_GLOBAL_MEM_FENCE CLK_LOCAL_MEM_FENCE
hi def link clStorageClass StorageClass
hi def link clStructure Structure
hi def link clType Type
hi def link clVariable Identifier
hi def link clConstant Constant
hi def link clCast Operator
hi def link clFunction Function
hi def link clStatement Statement
let b:current_syntax = "opencl"
" vim: ts=8

View File

@@ -30,6 +30,7 @@
" unlet perl_nofold_packages " unlet perl_nofold_packages
" let perl_nofold_subs = 1 " let perl_nofold_subs = 1
" unlet perl_fold_anonymous_subs " unlet perl_fold_anonymous_subs
" unlet perl_no_subprototype_error
if exists("b:current_syntax") if exists("b:current_syntax")
finish finish
@@ -83,7 +84,7 @@ syn match perlControl "\<\%(BEGIN\|CHECK\|INIT\|END\|UNITCHECK\)\>\_s*" nextgr
syn match perlStatementStorage "\<\%(my\|our\|local\|state\)\>" syn match perlStatementStorage "\<\%(my\|our\|local\|state\)\>"
syn match perlStatementControl "\<\%(return\|last\|next\|redo\|goto\|break\)\>" syn match perlStatementControl "\<\%(return\|last\|next\|redo\|goto\|break\)\>"
syn match perlStatementScalar "\<\%(chom\=p\|chr\|crypt\|r\=index\|lc\%(first\)\=\|length\|ord\|pack\|sprintf\|substr\|uc\%(first\)\=\)\>" syn match perlStatementScalar "\<\%(chom\=p\|chr\|crypt\|r\=index\|lc\%(first\)\=\|length\|ord\|pack\|sprintf\|substr\|fc\|uc\%(first\)\=\)\>"
syn match perlStatementRegexp "\<\%(pos\|quotemeta\|split\|study\)\>" syn match perlStatementRegexp "\<\%(pos\|quotemeta\|split\|study\)\>"
syn match perlStatementNumeric "\<\%(abs\|atan2\|cos\|exp\|hex\|int\|log\|oct\|rand\|sin\|sqrt\|srand\)\>" syn match perlStatementNumeric "\<\%(abs\|atan2\|cos\|exp\|hex\|int\|log\|oct\|rand\|sin\|sqrt\|srand\)\>"
syn match perlStatementList "\<\%(splice\|unshift\|shift\|push\|pop\|join\|reverse\|grep\|map\|sort\|unpack\)\>" syn match perlStatementList "\<\%(splice\|unshift\|shift\|push\|pop\|join\|reverse\|grep\|map\|sort\|unpack\)\>"
@@ -94,9 +95,9 @@ syn match perlStatementFiledesc "\<\%(fcntl\|flock\|ioctl\|open\%(dir\)\=\|read
syn match perlStatementVector "\<vec\>" syn match perlStatementVector "\<vec\>"
syn match perlStatementFiles "\<\%(ch\%(dir\|mod\|own\|root\)\|glob\|link\|mkdir\|readlink\|rename\|rmdir\|symlink\|umask\|unlink\|utime\)\>" syn match perlStatementFiles "\<\%(ch\%(dir\|mod\|own\|root\)\|glob\|link\|mkdir\|readlink\|rename\|rmdir\|symlink\|umask\|unlink\|utime\)\>"
syn match perlStatementFiles "-[rwxoRWXOezsfdlpSbctugkTBMAC]\>" syn match perlStatementFiles "-[rwxoRWXOezsfdlpSbctugkTBMAC]\>"
syn match perlStatementFlow "\<\%(caller\|die\|dump\|eval\|exit\|wantarray\)\>" syn match perlStatementFlow "\<\%(caller\|die\|dump\|eval\|exit\|wantarray\|evalbytes\)\>"
syn match perlStatementInclude "\<\%(require\|import\)\>" syn match perlStatementInclude "\<\%(require\|import\|unimport\)\>"
syn match perlStatementInclude "\<\%(use\|no\)\s\+\%(\%(attributes\|attrs\|autouse\|parent\|base\|big\%(int\|num\|rat\)\|blib\|bytes\|charnames\|constant\|diagnostics\|encoding\%(::warnings\)\=\|feature\|fields\|filetest\|if\|integer\|less\|lib\|locale\|mro\|open\|ops\|overload\|re\|sigtrap\|sort\|strict\|subs\|threads\%(::shared\)\=\|utf8\|vars\|version\|vmsish\|warnings\%(::register\)\=\)\>\)\=" syn match perlStatementInclude "\<\%(use\|no\)\s\+\%(\%(attributes\|attrs\|autodie\|autouse\|parent\|base\|big\%(int\|num\|rat\)\|blib\|bytes\|charnames\|constant\|diagnostics\|encoding\%(::warnings\)\=\|feature\|fields\|filetest\|if\|integer\|less\|lib\|locale\|mro\|open\|ops\|overload\|overloading\|re\|sigtrap\|sort\|strict\|subs\|threads\%(::shared\)\=\|utf8\|vars\|version\|vmsish\|warnings\%(::register\)\=\)\>\)\="
syn match perlStatementProc "\<\%(alarm\|exec\|fork\|get\%(pgrp\|ppid\|priority\)\|kill\|pipe\|set\%(pgrp\|priority\)\|sleep\|system\|times\|wait\%(pid\)\=\)\>" syn match perlStatementProc "\<\%(alarm\|exec\|fork\|get\%(pgrp\|ppid\|priority\)\|kill\|pipe\|set\%(pgrp\|priority\)\|sleep\|system\|times\|wait\%(pid\)\=\)\>"
syn match perlStatementSocket "\<\%(accept\|bind\|connect\|get\%(peername\|sock\%(name\|opt\)\)\|listen\|recv\|send\|setsockopt\|shutdown\|socket\%(pair\)\=\)\>" syn match perlStatementSocket "\<\%(accept\|bind\|connect\|get\%(peername\|sock\%(name\|opt\)\)\|listen\|recv\|send\|setsockopt\|shutdown\|socket\%(pair\)\=\)\>"
syn match perlStatementIPC "\<\%(msg\%(ctl\|get\|rcv\|snd\)\|sem\%(ctl\|get\|op\)\|shm\%(ctl\|get\|read\|write\)\)\>" syn match perlStatementIPC "\<\%(msg\%(ctl\|get\|rcv\|snd\)\|sem\%(ctl\|get\|op\)\|shm\%(ctl\|get\|read\|write\)\)\>"
@@ -143,43 +144,44 @@ syn match perlPackageRef "[$@#%*&]\%(\%(::\|'\)\=\I\i*\%(\%(::\|'\)\I\i*\)*\)\
" just set the variable "perl_no_extended_vars"... " just set the variable "perl_no_extended_vars"...
if !exists("perl_no_scope_in_variables") if !exists("perl_no_scope_in_variables")
syn match perlVarPlain "\%([@$]\|\$#\)\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)" contains=perlPackageRef nextgroup=perlVarMember,perlVarSimpleMember,perlMethod syn match perlVarPlain "\%([@$]\|\$#\)\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)" contains=perlPackageRef nextgroup=perlVarMember,perlVarSimpleMember,perlMethod,perlPostDeref
syn match perlVarPlain2 "%\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)" contains=perlPackageRef syn match perlVarPlain2 "%\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)" contains=perlPackageRef
syn match perlFunctionName "&\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)" contains=perlPackageRef nextgroup=perlVarMember,perlVarSimpleMember,perlMethod syn match perlFunctionName "&\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)" contains=perlPackageRef nextgroup=perlVarMember,perlVarSimpleMember,perlMethod,perlPostDeref
else else
syn match perlVarPlain "\%([@$]\|\$#\)\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)" nextgroup=perlVarMember,perlVarSimpleMember,perlMethod syn match perlVarPlain "\%([@$]\|\$#\)\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)" nextgroup=perlVarMember,perlVarSimpleMember,perlMethod,perlPostDeref
syn match perlVarPlain2 "%\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)" syn match perlVarPlain2 "%\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)"
syn match perlFunctionName "&\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)" nextgroup=perlVarMember,perlVarSimpleMember,perlMethod syn match perlFunctionName "&\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)" nextgroup=perlVarMember,perlVarSimpleMember,perlMethod,perlPostDeref
endif endif
syn match perlVarPlain2 "%[-+]" syn match perlVarPlain2 "%[-+]"
if !exists("perl_no_extended_vars") if !exists("perl_no_extended_vars")
syn cluster perlExpr contains=perlStatementIndirObjWrap,perlStatementScalar,perlStatementRegexp,perlStatementNumeric,perlStatementList,perlStatementHash,perlStatementFiles,perlStatementTime,perlStatementMisc,perlVarPlain,perlVarPlain2,perlVarNotInMatches,perlVarSlash,perlVarBlock,perlVarBlock2,perlShellCommand,perlFloat,perlNumber,perlStringUnexpanded,perlString,perlQQ,perlArrow,perlBraces syn cluster perlExpr contains=perlStatementIndirObjWrap,perlStatementScalar,perlStatementRegexp,perlStatementNumeric,perlStatementList,perlStatementHash,perlStatementFiles,perlStatementTime,perlStatementMisc,perlVarPlain,perlVarPlain2,perlVarNotInMatches,perlVarSlash,perlVarBlock,perlVarBlock2,perlShellCommand,perlFloat,perlNumber,perlStringUnexpanded,perlString,perlQQ,perlArrow,perlBraces
syn region perlArrow matchgroup=perlArrow start="->\s*(" end=")" contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod contained syn region perlArrow matchgroup=perlArrow start="->\s*(" end=")" contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod,perlPostDeref contained
syn region perlArrow matchgroup=perlArrow start="->\s*\[" end="\]" contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod contained syn region perlArrow matchgroup=perlArrow start="->\s*\[" end="\]" contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod,perlPostDeref contained
syn region perlArrow matchgroup=perlArrow start="->\s*{" end="}" contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod contained syn region perlArrow matchgroup=perlArrow start="->\s*{" end="}" contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod,perlPostDeref contained
syn match perlArrow "->\s*{\s*\I\i*\s*}" contains=perlVarSimpleMemberName nextgroup=perlVarMember,perlVarSimpleMember,perlMethod contained syn match perlArrow "->\s*{\s*\I\i*\s*}" contains=perlVarSimpleMemberName nextgroup=perlVarMember,perlVarSimpleMember,perlMethod,perlPostDeref contained
syn region perlArrow matchgroup=perlArrow start="->\s*\$*\I\i*\s*(" end=")" contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod contained syn region perlArrow matchgroup=perlArrow start="->\s*\$*\I\i*\s*(" end=")" contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod,perlPostDeref contained
syn region perlVarBlock matchgroup=perlVarPlain start="\%($#\|[$@]\)\$*{" skip="\\}" end=+}\|\%(\%(<<\%('\|"\)\?\)\@=\)+ contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod extend syn region perlVarBlock matchgroup=perlVarPlain start="\%($#\|[$@]\)\$*{" skip="\\}" end=+}\|\%(\%(<<\%('\|"\)\?\)\@=\)+ contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod,perlPostDeref extend
syn region perlVarBlock2 matchgroup=perlVarPlain start="[%&*]\$*{" skip="\\}" end=+}\|\%(\%(<<\%('\|"\)\?\)\@=\)+ contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod extend syn region perlVarBlock2 matchgroup=perlVarPlain start="[%&*]\$*{" skip="\\}" end=+}\|\%(\%(<<\%('\|"\)\?\)\@=\)+ contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod,perlPostDeref extend
syn match perlVarPlain2 "[%&*]\$*{\I\i*}" nextgroup=perlVarMember,perlVarSimpleMember,perlMethod extend syn match perlVarPlain2 "[%&*]\$*{\I\i*}" nextgroup=perlVarMember,perlVarSimpleMember,perlMethod,perlPostDeref extend
syn match perlVarPlain "\%(\$#\|[@$]\)\$*{\I\i*}" nextgroup=perlVarMember,perlVarSimpleMember,perlMethod extend syn match perlVarPlain "\%(\$#\|[@$]\)\$*{\I\i*}" nextgroup=perlVarMember,perlVarSimpleMember,perlMethod,perlPostDeref extend
syn region perlVarMember matchgroup=perlVarPlain start="\%(->\)\={" skip="\\}" end="}" contained contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod extend syn region perlVarMember matchgroup=perlVarPlain start="\%(->\)\={" skip="\\}" end="}" contained contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod,perlPostDeref extend
syn match perlVarSimpleMember "\%(->\)\={\s*\I\i*\s*}" nextgroup=perlVarMember,perlVarSimpleMember,perlMethod contains=perlVarSimpleMemberName contained extend syn match perlVarSimpleMember "\%(->\)\={\s*\I\i*\s*}" nextgroup=perlVarMember,perlVarSimpleMember,perlMethod,perlPostDeref contains=perlVarSimpleMemberName contained extend
syn match perlVarSimpleMemberName "\I\i*" contained syn match perlVarSimpleMemberName "\I\i*" contained
syn region perlVarMember matchgroup=perlVarPlain start="\%(->\)\=\[" skip="\\]" end="]" contained contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod extend syn region perlVarMember matchgroup=perlVarPlain start="\%(->\)\=\[" skip="\\]" end="]" contained contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod,perlPostDeref extend
syn match perlPackageConst "__PACKAGE__" nextgroup=perlMethod syn match perlPackageConst "__PACKAGE__" nextgroup=perlMethod,perlPostDeref
syn match perlMethod "->\$*\I\i*" contained nextgroup=perlVarSimpleMember,perlVarMember,perlMethod syn match perlMethod "->\$*\I\i*" contained nextgroup=perlVarSimpleMember,perlVarMember,perlMethod,perlPostDeref
syn match perlPostDeref "->\%($#\|[$@%]\)\*" contained nextgroup=perlVarSimpleMember,perlVarMember,perlMethod,perlPostDeref
endif endif
" File Descriptors " File Descriptors
syn match perlFiledescRead "<\h\w*>" syn match perlFiledescRead "<\h\w*>"
syn match perlFiledescStatementComma "(\=\s*\u\w*\s*,"me=e-1 transparent contained contains=perlFiledescStatement syn match perlFiledescStatementComma "(\=\s*\<\u\w*\>\s*,"me=e-1 transparent contained contains=perlFiledescStatement
syn match perlFiledescStatementNocomma "(\=\s*\u\w*\s*[^, \t]"me=e-1 transparent contained contains=perlFiledescStatement syn match perlFiledescStatementNocomma "(\=\s*\<\u\w*\>\s*[^, \t]"me=e-1 transparent contained contains=perlFiledescStatement
syn match perlFiledescStatement "\u\w*" contained syn match perlFiledescStatement "\<\u\w*\>" contained
" Special characters in strings and matches " Special characters in strings and matches
syn match perlSpecialString "\\\%(\o\{1,3}\|x\%({\x\+}\|\x\{1,2}\)\|c.\|[^cx]\)" contained extend syn match perlSpecialString "\\\%(\o\{1,3}\|x\%({\x\+}\|\x\{1,2}\)\|c.\|[^cx]\)" contained extend
@@ -365,8 +367,10 @@ else
syn match perlSubAttributes "" contained nextgroup=perlSubError syn match perlSubAttributes "" contained nextgroup=perlSubError
syn match perlSubAttributes ":\_s*" contained nextgroup=@perlSubAttrMaybe syn match perlSubAttributes ":\_s*" contained nextgroup=@perlSubAttrMaybe
endif endif
syn match perlSubPrototypeError "(\%(\_s*\%(\%(\\\%([$@%&*]\|\[[$@%&*]\+\]\)\|[$&*]\|[@%]\%(\_s*)\)\@=\|;\%(\_s*[)$@%&*\\]\)\@=\|_\%(\_s*[);]\)\@=\)\_s*\)*\)\@>\zs\_[^)]\+" contained if !exists("perl_no_subprototype_error") " Set 1 if using signatures feature in perl5.19.9
syn match perlSubPrototype +(\_[^)]*)\_s*\|+ nextgroup=perlSubAttributes,perlComment contained contains=perlSubPrototypeError syn match perlSubPrototypeError "(\%(\_s*\%(\%(\\\%([$@%&*]\|\[[$@%&*]\+\]\)\|[$&*]\|[@%]\%(\_s*)\)\@=\|;\%(\_s*[)$@%&*\\]\)\@=\|_\%(\_s*[);]\)\@=\)\_s*\)*\)\@>\zs\_[^)]\+" contained
syn match perlSubPrototype +(\_[^)]*)\_s*\|+ nextgroup=perlSubAttributes,perlComment contained contains=perlSubPrototypeError
endif
syn match perlSubName +\%(\h\|::\|'\w\)\%(\w\|::\|'\w\)*\_s*\|+ contained nextgroup=perlSubPrototype,perlComment syn match perlSubName +\%(\h\|::\|'\w\)\%(\w\|::\|'\w\)*\_s*\|+ contained nextgroup=perlSubPrototype,perlComment
syn match perlFunction +\<sub\>\_s*+ nextgroup=perlSubName syn match perlFunction +\<sub\>\_s*+ nextgroup=perlSubName
@@ -390,10 +394,10 @@ syn match perlFormatField "@$" contained
" __END__ and __DATA__ clauses " __END__ and __DATA__ clauses
if exists("perl_fold") if exists("perl_fold")
syntax region perlDATA start="^__DATA__$" skip="." end="." fold syntax region perlDATA start="^__DATA__$" skip="." end="." contains=@perlDATA fold
syntax region perlDATA start="^__END__$" skip="." end="." contains=perlPOD,@perlDATA fold syntax region perlDATA start="^__END__$" skip="." end="." contains=perlPOD,@perlDATA fold
else else
syntax region perlDATA start="^__DATA__$" skip="." end="." syntax region perlDATA start="^__DATA__$" skip="." end="." contains=@perlDATA
syntax region perlDATA start="^__END__$" skip="." end="." contains=perlPOD,@perlDATA syntax region perlDATA start="^__END__$" skip="." end="." contains=perlPOD,@perlDATA
endif endif
@@ -408,7 +412,7 @@ if exists("perl_fold")
endif endif
if !exists("perl_nofold_subs") if !exists("perl_nofold_subs")
if exists("perl_fold_anonymous_subs") && perl_fold_anonymous_subs if exists("perl_fold_anonymous_subs") && perl_fold_anonymous_subs
syn region perlSubFold start="\<sub\>[^\n;]*{" end="}" transparent fold keepend extend syn region perlSubFold start="\<sub\>[^;]*{" end="}" transparent fold keepend extend
syn region perlSubFold start="\<\%(BEGIN\|END\|CHECK\|INIT\)\>\s*{" end="}" transparent fold keepend syn region perlSubFold start="\<\%(BEGIN\|END\|CHECK\|INIT\)\>\s*{" end="}" transparent fold keepend
else else
syn region perlSubFold start="^\z(\s*\)\<sub\>.*[^};]$" end="^\z1}\s*\%(#.*\)\=$" transparent fold keepend syn region perlSubFold start="^\z(\s*\)\<sub\>.*[^};]$" end="^\z1}\s*\%(#.*\)\=$" transparent fold keepend
@@ -510,8 +514,11 @@ HiLink perlStatementMisc perlStatement
HiLink perlStatementIndirObj perlStatement HiLink perlStatementIndirObj perlStatement
HiLink perlFunctionName perlIdentifier HiLink perlFunctionName perlIdentifier
HiLink perlMethod perlIdentifier HiLink perlMethod perlIdentifier
HiLink perlPostDeref perlIdentifier
HiLink perlFunctionPRef perlType HiLink perlFunctionPRef perlType
HiLink perlPOD perlComment if !get(g:, 'perl_include_pod', 1)
HiLink perlPOD perlComment
endif
HiLink perlShellCommand perlString HiLink perlShellCommand perlString
HiLink perlSpecialAscii perlSpecial HiLink perlSpecialAscii perlSpecial
HiLink perlSpecialDollar perlSpecial HiLink perlSpecialDollar perlSpecial

File diff suppressed because one or more lines are too long

View File

@@ -17,9 +17,9 @@ elseif exists("b:current_syntax")
endif endif
" match class/definition/node declarations " match class/definition/node declarations
syn region puppetDefine start="^\s*\(class\|define\|node\)\s" end="{" contains=puppetDefType,puppetDefName,puppetDefArguments,puppetNodeRe syn region puppetDefine start="^\s*\(class\|define\|node\)\s" end="{" contains=puppetDefType,puppetDefName,puppetDefArguments,puppetNodeRe,@NoSpell
syn keyword puppetDefType class define node inherits contained syn keyword puppetDefType class define node inherits contained
syn region puppetDefArguments start="(" end=")" contained contains=puppetArgument,puppetString syn region puppetDefArguments start="(" end=")" contained contains=puppetArgument,puppetString,puppetComment,puppetMultilineComment
syn match puppetArgument "\w\+" contained syn match puppetArgument "\w\+" contained
syn match puppetArgument "\$\w\+" contained syn match puppetArgument "\$\w\+" contained
syn match puppetArgument "'[^']+'" contained syn match puppetArgument "'[^']+'" contained
@@ -31,15 +31,24 @@ syn match puppetNodeRe "/.*/" contained
" match 'foo::bar' in 'class foo::bar { ...' " match 'foo::bar' in 'class foo::bar { ...'
" match 'Foo::Bar' in 'Foo::Bar["..."] " match 'Foo::Bar' in 'Foo::Bar["..."]
"FIXME: "Foo-bar" doesn't get highlighted as expected, although "foo-bar" does. "FIXME: "Foo-bar" doesn't get highlighted as expected, although "foo-bar" does.
syn match puppetInstance "[A-Za-z0-9_-]\+\(::[A-Za-z0-9_-]\+\)*\s*{" contains=puppetTypeName,puppetTypeDefault syn match puppetInstance "[A-Za-z0-9_-]\+\(::[A-Za-z0-9_-]\+\)*\s*{" contains=puppetTypeName,puppetTypeDefault,@NoSpell
syn match puppetInstance "[A-Z][a-z_-]\+\(::[A-Z][a-z_-]\+\)*\s*[[{]" contains=puppetTypeName,puppetTypeDefault syn match puppetInstance "[A-Z][a-z_-]\+\(::[A-Z][a-z_-]\+\)*\s*[[{]" contains=puppetTypeName,puppetTypeDefault,@NoSpell
syn match puppetInstance "[A-Z][a-z_-]\+\(::[A-Z][a-z_-]\+\)*\s*<\?<|" contains=puppetTypeName,puppetTypeDefault syn match puppetInstance "[A-Z][a-z_-]\+\(::[A-Z][a-z_-]\+\)*\s*<\?<|" contains=puppetTypeName,puppetTypeDefault,@NoSpell
syn match puppetTypeName "[a-z]\w*" contained syn match puppetTypeName "[a-z]\w*" contained
syn match puppetTypeDefault "[A-Z]\w*" contained syn match puppetTypeDefault "[A-Z]\w*" contained
" match 'foo' in 'foo => "bar"' syn match puppetParam "\w\+\s*\(=\|+\)>" contains=puppetTypeRArrow,puppetParamName
syn match puppetParam "\w\+\s*[=+]>" contains=puppetParamName syn match puppetParamRArrow "\(=\|+\)>" contained
syn match puppetParamName "\w\+" contained syn match puppetParamName "\w\+" contained contains=@NoSpell
syn match puppetVariable "$\(\(\(::\)\?\w\+\)\+\|{\(\(::\)\?\w\+\)\+}\)"
syn match puppetParen "("
syn match puppetParen ")"
syn match puppetBrace "{"
syn match puppetBrace "}"
syn match puppetBrack "\["
syn match puppetBrack "\]"
syn match puppetBrack "<|"
syn match puppetBrack "|>"
" match 'present' in 'ensure => present' " match 'present' in 'ensure => present'
" match '2755' in 'mode => 2755' " match '2755' in 'mode => 2755'
@@ -57,25 +66,49 @@ syn region puppetFunction start="^\s*\(alert\|crit\|debug\|emerg\|err\|fai
" rvalues " rvalues
syn region puppetFunction start="^\s*\(defined\|file\|fqdn_rand\|generate\|inline_template\|regsubst\|sha1\|shellquote\|split\|sprintf\|tagged\|template\|versioncmp\)\s*(" end=")" contained contains=puppetString syn region puppetFunction start="^\s*\(defined\|file\|fqdn_rand\|generate\|inline_template\|regsubst\|sha1\|shellquote\|split\|sprintf\|tagged\|template\|versioncmp\)\s*(" end=")" contained contains=puppetString
syn match puppetVariable "$[a-zA-Z0-9_:]\+" syn match puppetVariable "$[a-zA-Z0-9_:]\+" contains=@NoSpell
syn match puppetVariable "${[a-zA-Z0-9_:]\+}" syn match puppetVariable "${[a-zA-Z0-9_:]\+}" contains=@NoSpell
" match anything between simple/double quotes. " match anything between simple/double quotes.
" don't match variables if preceded by a backslash. " don't match variables if preceded by a backslash.
syn region puppetString start=+'+ skip=+\\\\\|\\'+ end=+'+ syn region puppetString start=+'+ skip=+\\\\\|\\'+ end=+'+
syn region puppetString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=puppetVariable,puppetNotVariable syn region puppetString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=puppetVariable,puppetNotVariable
syn match puppetString "/[^/]*/"
syn match puppetNotVariable "\\$\w\+" contained syn match puppetNotVariable "\\$\w\+" contained
syn match puppetNotVariable "\\${\w\+}" contained syn match puppetNotVariable "\\${\w\+}" contained
syn keyword puppetKeyword import inherits include syn keyword puppetKeyword import inherits include require
syn keyword puppetControl case default if else elsif syn keyword puppetControl case default if else elsif
syn keyword puppetSpecial true false undef syn keyword puppetSpecial true false undef
syn match puppetClass "[A-Za-z0-9_-]\+\(::[A-Za-z0-9_-]\+\)\+" contains=@NoSpell
" Match the Regular Expression type
" XXX: Puppet does not currently support a few features available in the
" full Ruby Regexp class, namely, interpolation, lookbehind and named
" sub-expressions. Matches for these features are included in the
" commented-out versions of puppetRegexParen and puppetRegexSubName,
" plus the supporting groups puppetRegexAngBrack and puppetRegexTick.
syn region puppetRegex start="/" skip="\\/" end="/" contains=puppetRegexParen,puppetRegexBrace,puppetRegexOrpuppetRegexBrack,puppetRegexComment
syn match puppetRegexParen "(\(?\([imx]\{0,4}:\|[=!]\)\)\?" contains=puppetRegexSpecChar,puppetRegexSubName contained
"syn match puppetRegexParen "(\(?\([imxo]\{0,4}:\|['<][[:alnum:]]\+[>']\|<?[=!]\)\)\?" contains=puppetRegexSpecChar,puppetRegexSubName contained
syn match puppetRegexParen ")" contained
syn match puppetRegexBrace "{" contained
syn match puppetRegexBrace "}" contained
syn match puppetRegexBrack "\[" contained
syn match puppetRegexBrack "\]" contained
"syn match puppetRegexAngBrack "<" contained
"syn match puppetRegexAngBrack ">" contained
"syn match puppetRegexTick +'+ contained
syn match puppetRegexOr "|" contained
"syn match puppetRegexSubName "['<][[:alnum:]]\+[>']" contains=puppetRegexAngBrack,puppetRegexTick contained
syn match puppetRegexSpecialChar "[?:imx]\|\(<?[=!]\)" contained
syn region puppetRegexComment start="(?#" skip="\\)" end=")" contained
" comments last overriding everything else " comments last overriding everything else
syn match puppetComment "\s*#.*$" contains=puppetTodo syn match puppetComment "\s*#.*$" contains=puppetTodo,@Spell
syn region puppetComment start="/\*" end="\*/" contains=puppetTodo extend syn region puppetMultilineComment start="/\*" end="\*/" contains=puppetTodo,@Spell
syn keyword puppetTodo TODO NOTE FIXME XXX BUG HACK contained syn keyword puppetTodo TODO NOTE FIXME XXX BUG HACK contained
syn keyword puppetTodo TODO: NOTE: FIXME: XXX: BUG: HACK: contained
" 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
@@ -90,15 +123,32 @@ if version >= 508 || !exists("did_puppet_syn_inits")
HiLink puppetVariable Identifier HiLink puppetVariable Identifier
HiLink puppetType Identifier HiLink puppetType Identifier
HiLink puppetKeyword Define HiLink puppetKeyword Keyword
HiLink puppetComment Comment HiLink puppetComment Comment
HiLink puppetMultilineComment Comment
HiLink puppetString String HiLink puppetString String
HiLink puppetParamKeyword String HiLink puppetRegex Constant
HiLink puppetRegexParen Delimiter
HiLink puppetRegexBrace Delimiter
HiLink puppetRegexBrack Delimiter
HiLink puppetRegexAngBrack Delimiter
HiLink puppetRegexTick Delimiter
HiLink puppetRegexOr Delimiter
HiLink puppetRegexSubName Identifier
HiLink puppetRegexSpecChar SpecialChar
HiLink puppetRegexComment Comment
HiLink puppetParamKeyword Keyword
HiLink puppetParamDigits String HiLink puppetParamDigits String
HiLink puppetNotVariable String HiLink puppetNotVariable String
HiLink puppetParamSpecial Special HiLink puppetParamSpecial Boolean
HiLink puppetSpecial Special HiLink puppetSpecial Special
HiLink puppetTodo Todo HiLink puppetTodo Todo
HiLink puppetBrack Delimiter
HiLink puppetTypeBrack Delimiter
HiLink puppetBrace Delimiter
HiLink puppetTypeBrace Delimiter
HiLink puppetParen Delimiter
HiLink puppetDelimiter Delimiter
HiLink puppetControl Statement HiLink puppetControl Statement
HiLink puppetDefType Define HiLink puppetDefType Define
HiLink puppetDefName Type HiLink puppetDefName Type
@@ -108,10 +158,9 @@ if version >= 508 || !exists("did_puppet_syn_inits")
HiLink puppetParamName Identifier HiLink puppetParamName Identifier
HiLink puppetArgument Identifier HiLink puppetArgument Identifier
HiLink puppetFunction Function HiLink puppetFunction Function
HiLink puppetClass Include
delcommand HiLink delcommand HiLink
endif endif
let b:current_syntax = "puppet" let b:current_syntax = "puppet"
set iskeyword=-,:,@,48-57,_,192-255

View File

@@ -1,27 +1,20 @@
" Vim syntax file " Vim syntax file
" Language: Python
" Maintainer: Dmitry Vasiliev <dima@hlabs.spb.ru>
" URL: http://www.hlabs.spb.ru/vim/python.vim
" Last Change: 2010-04-09
" Filenames: *.py
" Version: 2.6.6
" "
" Based on python.vim (from Vim 6.1 distribution) " Based on python.vim (from Vim 6.1 distribution)
" by Neil Schemenauer <nas@python.ca> " by Neil Schemenauer <nas@python.ca>
" "
" Notes Armin:
"
" This version of the syntax file works better for 2.x and 3.x without
" having to switch modes.
"
" Thanks: " Thanks:
" "
" Jeroen Ruigrok van der Werven " Jeroen Ruigrok van der Werven
" for the idea to highlight erroneous operators " for the idea of highlighting for erroneous operators
" Pedro Algarvio " Pedro Algarvio
" for the patch to enable spell checking only for the right spots " for the patch to enable spell checking only for the right spots
" (strings and comments) " (strings and comments)
" John Eikenberry
" for the patch fixing small typo
" Caleb Adamantine
" for the patch fixing highlighting for decorators
" Andrea Riciputi
" for the patch with new configuration options
" "
" Options: " Options:
@@ -31,27 +24,15 @@
" "
" Option names: " Option names:
" "
" For highlight builtin functions and objects: " For highlight builtin functions:
" python_highlight_builtins " python_highlight_builtins
" "
" For highlight builtin objects:
" python_highlight_builtin_objs
"
" For highlight builtin funtions:
" python_highlight_builtin_funcs
"
" For highlight standard exceptions: " For highlight standard exceptions:
" python_highlight_exceptions " python_highlight_exceptions
" "
" For highlight string formatting: " For highlight string formatting:
" python_highlight_string_formatting " python_highlight_string_formatting
" "
" For highlight str.format syntax:
" python_highlight_string_format
"
" For highlight string.Template syntax:
" python_highlight_string_templates
"
" For highlight indentation errors: " For highlight indentation errors:
" python_highlight_indent_errors " python_highlight_indent_errors
" "
@@ -61,15 +42,13 @@
" For highlight doc-tests: " For highlight doc-tests:
" python_highlight_doctests " python_highlight_doctests
" "
" If you want all Python highlightings above: " If you want all possible Python highlighting:
" python_highlight_all
" (This option not override previously set options) " (This option not override previously set options)
" python_highlight_all
" "
" For fast machines: " For fast machines:
" python_slow_sync " python_slow_sync
" "
" For "print" builtin as function:
" python_print_as_function
" For version 5.x: Clear all syntax items " For version 5.x: Clear all syntax items
" For version 6.x: Quit when a syntax file was already loaded " For version 6.x: Quit when a syntax file was already loaded
@@ -82,12 +61,7 @@ endif
if exists("python_highlight_all") && python_highlight_all != 0 if exists("python_highlight_all") && python_highlight_all != 0
" Not override previously set options " Not override previously set options
if !exists("python_highlight_builtins") if !exists("python_highlight_builtins")
if !exists("python_highlight_builtin_objs") let python_highlight_builtins = 1
let python_highlight_builtin_objs = 1
endif
if !exists("python_highlight_builtin_funcs")
let python_highlight_builtin_funcs = 1
endif
endif endif
if !exists("python_highlight_exceptions") if !exists("python_highlight_exceptions")
let python_highlight_exceptions = 1 let python_highlight_exceptions = 1
@@ -95,12 +69,6 @@ if exists("python_highlight_all") && python_highlight_all != 0
if !exists("python_highlight_string_formatting") if !exists("python_highlight_string_formatting")
let python_highlight_string_formatting = 1 let python_highlight_string_formatting = 1
endif endif
if !exists("python_highlight_string_format")
let python_highlight_string_format = 1
endif
if !exists("python_highlight_string_templates")
let python_highlight_string_templates = 1
endif
if !exists("python_highlight_indent_errors") if !exists("python_highlight_indent_errors")
let python_highlight_indent_errors = 1 let python_highlight_indent_errors = 1
endif endif
@@ -118,23 +86,20 @@ syn keyword pythonStatement exec return
syn keyword pythonStatement pass raise syn keyword pythonStatement pass raise
syn keyword pythonStatement global assert syn keyword pythonStatement global assert
syn keyword pythonStatement lambda yield syn keyword pythonStatement lambda yield
syn keyword pythonStatement with syn keyword pythonStatement with nonlocal True False None
syn keyword pythonStatement def class nextgroup=pythonFunction skipwhite syn keyword pythonStatement def class nextgroup=pythonFunction skipwhite
syn match pythonFunction "[a-zA-Z_][a-zA-Z0-9_]*" display contained syn match pythonFunction "[a-zA-Z_][a-zA-Z0-9_]*" display contained
syn keyword pythonRepeat for while syn keyword pythonRepeat for while
syn keyword pythonConditional if elif else syn keyword pythonConditional if elif else
syn keyword pythonPreCondit import from as syn keyword pythonImport import from as
syn keyword pythonException try except finally syn keyword pythonException try except finally
syn keyword pythonOperator and in is not or syn keyword pythonOperator and in is not or
if !exists("python_print_as_function") || python_print_as_function == 0 " Print keyword but only if not used as function
syn keyword pythonStatement print syn match pythonStatement "\<print\>\((\)\@!" display
endif
" Decorators (new in Python 2.4) " Decorators (new in Python 2.4)
syn match pythonDecorator "@" display nextgroup=pythonDottedName skipwhite syn match pythonDecorator "@" display nextgroup=pythonFunction skipwhite
syn match pythonDottedName "[a-zA-Z_][a-zA-Z0-9_]*\(\.[a-zA-Z_][a-zA-Z0-9_]*\)*" display contained
syn match pythonDot "\." display containedin=pythonDottedName
" Comments " Comments
syn match pythonComment "#.*$" display contains=pythonTodo,@Spell syn match pythonComment "#.*$" display contains=pythonTodo,@Spell
@@ -145,7 +110,7 @@ syn keyword pythonTodo TODO FIXME XXX contained
" Errors " Errors
syn match pythonError "\<\d\+\D\+\>" display syn match pythonError "\<\d\+\D\+\>" display
syn match pythonError "[$?]" display syn match pythonError "[$?]" display
syn match pythonError "[&|]\{2,}" display syn match pythonError "[-+&|]\{2,}" display
syn match pythonError "[=]\{3,}" display syn match pythonError "[=]\{3,}" display
" TODO: Mixing spaces and tabs also may be used for pretty formatting multiline " TODO: Mixing spaces and tabs also may be used for pretty formatting multiline
@@ -160,10 +125,10 @@ if exists("python_highlight_space_errors") && python_highlight_space_errors != 0
endif endif
" Strings " Strings
syn region pythonString start=+[bB]\='+ skip=+\\\\\|\\'\|\\$+ excludenl end=+'+ end=+$+ keepend contains=pythonEscape,pythonEscapeError,@Spell syn region pythonString start=+'+ skip=+\\\\\|\\'\|\\$+ excludenl end=+'+ end=+$+ keepend contains=pythonEscape,pythonEscapeError,@Spell
syn region pythonString start=+[bB]\="+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end=+$+ keepend contains=pythonEscape,pythonEscapeError,@Spell syn region pythonString start=+"+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end=+$+ keepend contains=pythonEscape,pythonEscapeError,@Spell
syn region pythonString start=+[bB]\="""+ end=+"""+ keepend contains=pythonEscape,pythonEscapeError,pythonDocTest2,pythonSpaceError,@Spell syn region pythonString start=+"""+ end=+"""+ keepend contains=pythonEscape,pythonEscapeError,pythonDocTest2,pythonSpaceError,@Spell
syn region pythonString start=+[bB]\='''+ end=+'''+ keepend contains=pythonEscape,pythonEscapeError,pythonDocTest,pythonSpaceError,@Spell syn region pythonString start=+'''+ end=+'''+ keepend contains=pythonEscape,pythonEscapeError,pythonDocTest,pythonSpaceError,@Spell
syn match pythonEscape +\\[abfnrtv'"\\]+ display contained syn match pythonEscape +\\[abfnrtv'"\\]+ display contained
syn match pythonEscape "\\\o\o\=\o\=" display contained syn match pythonEscape "\\\o\o\=\o\=" display contained
@@ -172,6 +137,19 @@ syn match pythonEscape "\\x\x\{2}" display contained
syn match pythonEscapeError "\\x\x\=\X" display contained syn match pythonEscapeError "\\x\x\=\X" display contained
syn match pythonEscape "\\$" syn match pythonEscape "\\$"
" Byte-Strings
syn region pythonBString start=+[bB]'+ skip=+\\\\\|\\'\|\\$+ excludenl end=+'+ end=+$+ keepend contains=pythonBEscape,pythonBEscapeError,@Spell
syn region pythonBString start=+[bB]"+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end=+$+ keepend contains=pythonBEscape,pythonBEscapeError,@Spell
syn region pythonBString start=+[bB]"""+ end=+"""+ keepend contains=pythonBEscape,pythonBEscapeError,pythonDocTest2,pythonSpaceError,@Spell
syn region pythonBString start=+[bB]'''+ end=+'''+ keepend contains=pythonBEscape,pythonBEscapeError,pythonDocTest,pythonSpaceError,@Spell
syn match pythonBEscape +\\[abfnrtv'"\\]+ display contained
syn match pythonBEscape "\\\o\o\=\o\=" display contained
syn match pythonBEscapeError "\\\o\{,2}[89]" display contained
syn match pythonBEscape "\\x\x\{2}" display contained
syn match pythonBEscapeError "\\x\x\=\X" display contained
syn match pythonBEscape "\\$"
" Unicode strings " Unicode strings
syn region pythonUniString start=+[uU]'+ skip=+\\\\\|\\'\|\\$+ excludenl end=+'+ end=+$+ keepend contains=pythonEscape,pythonUniEscape,pythonEscapeError,pythonUniEscapeError,@Spell syn region pythonUniString start=+[uU]'+ skip=+\\\\\|\\'\|\\$+ excludenl end=+'+ end=+$+ keepend contains=pythonEscape,pythonUniEscape,pythonEscapeError,pythonUniEscapeError,@Spell
syn region pythonUniString start=+[uU]"+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end=+$+ keepend contains=pythonEscape,pythonUniEscape,pythonEscapeError,pythonUniEscapeError,@Spell syn region pythonUniString start=+[uU]"+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end=+$+ keepend contains=pythonEscape,pythonUniEscape,pythonEscapeError,pythonUniEscapeError,@Spell
@@ -204,21 +182,8 @@ syn match pythonUniRawEscapeError "\([^\\]\(\\\\\)*\)\@<=\\u\x\{,3}\X" display
if exists("python_highlight_string_formatting") && python_highlight_string_formatting != 0 if exists("python_highlight_string_formatting") && python_highlight_string_formatting != 0
" String formatting " String formatting
syn match pythonStrFormatting "%\(([^)]\+)\)\=[-#0 +]*\d*\(\.\d\+\)\=[hlL]\=[diouxXeEfFgGcrs%]" contained containedin=pythonString,pythonUniString,pythonRawString,pythonUniRawString syn match pythonStrFormat "%\(([^)]\+)\)\=[-#0 +]*\d*\(\.\d\+\)\=[hlL]\=[diouxXeEfFgGcrs%]" contained containedin=pythonString,pythonBString,pythonUniString,pythonRawString,pythonUniRawString
syn match pythonStrFormatting "%[-#0 +]*\(\*\|\d\+\)\=\(\.\(\*\|\d\+\)\)\=[hlL]\=[diouxXeEfFgGcrs%]" contained containedin=pythonString,pythonUniString,pythonRawString,pythonUniRawString syn match pythonStrFormat "%[-#0 +]*\(\*\|\d\+\)\=\(\.\(\*\|\d\+\)\)\=[hlL]\=[diouxXeEfFgGcrs%]" contained containedin=pythonString,pythonBString,pythonUniString,pythonRawString,pythonUniRawString
endif
if exists("python_highlight_string_format") && python_highlight_string_format != 0
" str.format syntax
syn match pythonStrFormat "{{\|}}" contained containedin=pythonString,pythonUniString,pythonRawString,pythonUniRawString
syn match pythonStrFormat "{\([a-zA-Z_][a-zA-Z0-9_]*\|\d\+\)\(\.[a-zA-Z_][a-zA-Z0-9_]*\|\[\(\d\+\|[^!:\}]\+\)\]\)*\(![rs]\)\=\(:\({\([a-zA-Z_][a-zA-Z0-9_]*\|\d\+\)}\|\([^}]\=[<>=^]\)\=[ +-]\=#\=0\=\d*\(\.\d\+\)\=[bcdeEfFgGnoxX%]\=\)\=\)\=}" contained containedin=pythonString,pythonUniString,pythonRawString,pythonUniRawString
endif
if exists("python_highlight_string_templates") && python_highlight_string_templates != 0
" String templates
syn match pythonStrTemplate "\$\$" contained containedin=pythonString,pythonUniString,pythonRawString,pythonUniRawString
syn match pythonStrTemplate "\${[a-zA-Z_][a-zA-Z0-9_]*}" contained containedin=pythonString,pythonUniString,pythonRawString,pythonUniRawString
syn match pythonStrTemplate "\$[a-zA-Z_][a-zA-Z0-9_]*" contained containedin=pythonString,pythonUniString,pythonRawString,pythonUniRawString
endif endif
if exists("python_highlight_doctests") && python_highlight_doctests != 0 if exists("python_highlight_doctests") && python_highlight_doctests != 0
@@ -228,47 +193,33 @@ if exists("python_highlight_doctests") && python_highlight_doctests != 0
endif endif
" Numbers (ints, longs, floats, complex) " Numbers (ints, longs, floats, complex)
syn match pythonHexError "\<0[xX]\x*[g-zG-Z]\x*[lL]\=\>" display
syn match pythonHexNumber "\<0[xX]\x\+[lL]\=\>" display syn match pythonHexNumber "\<0[xX]\x\+[lL]\=\>" display
syn match pythonOctNumber "\<0[oO]\o\+[lL]\=\>" display syn match pythonHexNumber "\<0[xX]\>" display
syn match pythonBinNumber "\<0[bB][01]\+[lL]\=\>" display
syn match pythonNumber "\<\d\+[lLjJ]\=\>" display syn match pythonNumber "\<\d\+[lLjJ]\=\>" display
syn match pythonFloat "\.\d\+\([eE][+-]\=\d\+\)\=[jJ]\=\>" display syn match pythonFloat "\.\d\+\([eE][+-]\=\d\+\)\=[jJ]\=\>" display
syn match pythonFloat "\<\d\+[eE][+-]\=\d\+[jJ]\=\>" display syn match pythonFloat "\<\d\+[eE][+-]\=\d\+[jJ]\=\>" display
syn match pythonFloat "\<\d\+\.\d*\([eE][+-]\=\d\+\)\=[jJ]\=" display syn match pythonFloat "\<\d\+\.\d*\([eE][+-]\=\d\+\)\=[jJ]\=" display
syn match pythonOctError "\<0[oO]\=\o*[8-9]\d*[lL]\=\>" display syn match pythonOctalError "\<0\o*[89]\d*[lL]\=\>" display
syn match pythonBinError "\<0[bB][01]*[2-9]\d*[lL]\=\>" display syn match pythonHexError "\<0[xX]\X\+[lL]\=\>" display
if exists("python_highlight_builtin_objs") && python_highlight_builtin_objs != 0 if exists("python_highlight_builtins") && python_highlight_builtins != 0
" Builtin objects and types " Builtin functions, types and objects
syn keyword pythonBuiltinObj True False Ellipsis None NotImplemented syn keyword pythonBuiltinObj Ellipsis NotImplemented
syn keyword pythonBuiltinObj __debug__ __doc__ __file__ __name__ __package__
endif
if exists("python_highlight_builtin_funcs") && python_highlight_builtin_funcs != 0
" Builtin functions
syn keyword pythonBuiltinFunc __import__ abs all any apply syn keyword pythonBuiltinFunc __import__ abs all any apply
syn keyword pythonBuiltinFunc basestring bin bool buffer bytearray bytes callable syn keyword pythonBuiltinFunc basestring bool buffer callable
syn keyword pythonBuiltinFunc chr classmethod cmp coerce compile complex syn keyword pythonBuiltinFunc chr classmethod cmp coerce compile complex
syn keyword pythonBuiltinFunc delattr dict dir divmod enumerate eval syn keyword pythonBuiltinFunc delattr dict dir divmod enumerate eval
syn keyword pythonBuiltinFunc execfile file filter float format frozenset getattr syn keyword pythonBuiltinFunc execfile file filter float frozenset getattr
syn keyword pythonBuiltinFunc globals hasattr hash help hex id syn keyword pythonBuiltinfunc globals hasattr hash help hex id
syn keyword pythonBuiltinFunc input int intern isinstance syn keyword pythonBuiltinFunc input int intern isinstance
syn keyword pythonBuiltinFunc issubclass iter len list locals long map max syn keyword pythonBuiltinFunc issubclass iter len list locals long map max
syn keyword pythonBuiltinFunc min next object oct open ord syn keyword pythonBuiltinFunc min object oct open ord pow property range
syn keyword pythonBuiltinFunc pow property range
syn keyword pythonBuiltinFunc raw_input reduce reload repr syn keyword pythonBuiltinFunc raw_input reduce reload repr
syn keyword pythonBuiltinFunc reversed round set setattr syn keyword pythonBuiltinFunc reversed round set setattr
syn keyword pythonBuiltinFunc slice sorted staticmethod str sum super tuple syn keyword pythonBuiltinFunc slice sorted staticmethod str sum super tuple
syn keyword pythonBuiltinFunc type unichr unicode vars xrange zip syn keyword pythonBuiltinFunc type unichr unicode vars xrange zip
if exists("python_print_as_function") && python_print_as_function != 0
syn keyword pythonBuiltinFunc print
endif
endif endif
if exists("python_highlight_exceptions") && python_highlight_exceptions != 0 if exists("python_highlight_exceptions") && python_highlight_exceptions != 0
@@ -277,7 +228,7 @@ if exists("python_highlight_exceptions") && python_highlight_exceptions != 0
syn keyword pythonExClass Exception StandardError ArithmeticError syn keyword pythonExClass Exception StandardError ArithmeticError
syn keyword pythonExClass LookupError EnvironmentError syn keyword pythonExClass LookupError EnvironmentError
syn keyword pythonExClass AssertionError AttributeError BufferError EOFError syn keyword pythonExClass AssertionError AttributeError EOFError
syn keyword pythonExClass FloatingPointError GeneratorExit IOError syn keyword pythonExClass FloatingPointError GeneratorExit IOError
syn keyword pythonExClass ImportError IndexError KeyError syn keyword pythonExClass ImportError IndexError KeyError
syn keyword pythonExClass KeyboardInterrupt MemoryError NameError syn keyword pythonExClass KeyboardInterrupt MemoryError NameError
@@ -287,12 +238,12 @@ if exists("python_highlight_exceptions") && python_highlight_exceptions != 0
syn keyword pythonExClass SystemError SystemExit TypeError syn keyword pythonExClass SystemError SystemExit TypeError
syn keyword pythonExClass UnboundLocalError UnicodeError syn keyword pythonExClass UnboundLocalError UnicodeError
syn keyword pythonExClass UnicodeEncodeError UnicodeDecodeError syn keyword pythonExClass UnicodeEncodeError UnicodeDecodeError
syn keyword pythonExClass UnicodeTranslateError ValueError VMSError syn keyword pythonExClass UnicodeTranslateError ValueError
syn keyword pythonExClass WindowsError ZeroDivisionError syn keyword pythonExClass WindowsError ZeroDivisionError
syn keyword pythonExClass Warning UserWarning BytesWarning DeprecationWarning syn keyword pythonExClass Warning UserWarning DeprecationWarning
syn keyword pythonExClass PendingDepricationWarning SyntaxWarning syn keyword pythonExClass PendingDepricationWarning SyntaxWarning
syn keyword pythonExClass RuntimeWarning FutureWarning syn keyword pythonExClass RuntimeWarning FutureWarning OverflowWarning
syn keyword pythonExClass ImportWarning UnicodeWarning syn keyword pythonExClass ImportWarning UnicodeWarning
endif endif
@@ -315,7 +266,7 @@ if version >= 508 || !exists("did_python_syn_inits")
endif endif
HiLink pythonStatement Statement HiLink pythonStatement Statement
HiLink pythonPreCondit Statement HiLink pythonImport Statement
HiLink pythonFunction Function HiLink pythonFunction Function
HiLink pythonConditional Conditional HiLink pythonConditional Conditional
HiLink pythonRepeat Repeat HiLink pythonRepeat Repeat
@@ -323,8 +274,6 @@ if version >= 508 || !exists("did_python_syn_inits")
HiLink pythonOperator Operator HiLink pythonOperator Operator
HiLink pythonDecorator Define HiLink pythonDecorator Define
HiLink pythonDottedName Function
HiLink pythonDot Normal
HiLink pythonComment Comment HiLink pythonComment Comment
HiLink pythonCoding Special HiLink pythonCoding Special
@@ -336,32 +285,30 @@ if version >= 508 || !exists("did_python_syn_inits")
HiLink pythonSpaceError Error HiLink pythonSpaceError Error
HiLink pythonString String HiLink pythonString String
HiLink pythonBString String
HiLink pythonUniString String HiLink pythonUniString String
HiLink pythonRawString String HiLink pythonRawString String
HiLink pythonUniRawString String HiLink pythonUniRawString String
HiLink pythonEscape Special HiLink pythonEscape Special
HiLink pythonBEscape Special
HiLink pythonEscapeError Error HiLink pythonEscapeError Error
HiLink pythonBEscapeError Error
HiLink pythonUniEscape Special HiLink pythonUniEscape Special
HiLink pythonUniEscapeError Error HiLink pythonUniEscapeError Error
HiLink pythonUniRawEscape Special HiLink pythonUniRawEscape Special
HiLink pythonUniRawEscapeError Error HiLink pythonUniRawEscapeError Error
HiLink pythonStrFormatting Special
HiLink pythonStrFormat Special HiLink pythonStrFormat Special
HiLink pythonStrTemplate Special
HiLink pythonDocTest Special HiLink pythonDocTest Special
HiLink pythonDocTest2 Special HiLink pythonDocTest2 Special
HiLink pythonNumber Number HiLink pythonNumber Number
HiLink pythonHexNumber Number HiLink pythonHexNumber Number
HiLink pythonOctNumber Number
HiLink pythonBinNumber Number
HiLink pythonFloat Float HiLink pythonFloat Float
HiLink pythonOctError Error HiLink pythonOctalError Error
HiLink pythonHexError Error HiLink pythonHexError Error
HiLink pythonBinError Error
HiLink pythonBuiltinObj Structure HiLink pythonBuiltinObj Structure
HiLink pythonBuiltinFunc Function HiLink pythonBuiltinFunc Function

View File

@@ -100,10 +100,6 @@ syn match rubySymbol "[]})\"':]\@<!:\%(\^\|\~\|<<\|<=>\|<=\|<\|===\|[=!]=\|[=!
syn match rubySymbol "[]})\"':]\@<!:\$\%(-.\|[`~<=>_,;:!?/.'"@$*\&+0]\)" syn match rubySymbol "[]})\"':]\@<!:\$\%(-.\|[`~<=>_,;:!?/.'"@$*\&+0]\)"
syn match rubySymbol "[]})\"':]\@<!:\%(\$\|@@\=\)\=\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*" syn match rubySymbol "[]})\"':]\@<!:\%(\$\|@@\=\)\=\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*"
syn match rubySymbol "[]})\"':]\@<!:\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\%([?!=]>\@!\)\=" syn match rubySymbol "[]})\"':]\@<!:\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\%([?!=]>\@!\)\="
syn match rubySymbol "\%([{(,]\_s*\)\@<=\l\w*[!?]\=::\@!"he=e-1
syn match rubySymbol "[]})\"':]\@<!\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*[!?]\=:\s\@="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]\)*[!?]\=:\s\@="hs=s+1,he=e-1
syn region rubySymbol start="[]})\"':]\@<!:'" end="'" skip="\\\\\|\\'" contains=rubyQuoteEscape fold syn region rubySymbol start="[]})\"':]\@<!:'" end="'" skip="\\\\\|\\'" contains=rubyQuoteEscape fold
syn region rubySymbol start="[]})\"':]\@<!:\"" end="\"" skip="\\\\\|\\\"" contains=@rubyStringSpecial fold syn region rubySymbol start="[]})\"':]\@<!:\"" end="\"" skip="\\\\\|\\\"" contains=@rubyStringSpecial fold
@@ -121,7 +117,7 @@ syn match rubyPredefinedConstant "\%(\%(^\|[^.]\)\.\s*\)\@<!\<\%(ARGF\|ARGV\|ENV
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
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="\%(\%(^\|\<\%(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 syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="\%(\h\k*\s\+\)\@<=/[ \t=]\@!" end="/[iomxneus]*" skip="\\\\\|\\/" contains=@rubyRegexpSpecial fold
" Generalized Regular Expression " Generalized Regular Expression
@@ -143,6 +139,7 @@ syn region rubyString matchgroup=rubyStringDelimiter start="%[qwi]<" end="
syn region rubyString matchgroup=rubyStringDelimiter start="%[qwi]\[" end="\]" skip="\\\\\|\\\]" fold contains=rubyNestedSquareBrackets,rubyDelimEscape syn region rubyString matchgroup=rubyStringDelimiter start="%[qwi]\[" end="\]" skip="\\\\\|\\\]" fold contains=rubyNestedSquareBrackets,rubyDelimEscape
syn region rubyString matchgroup=rubyStringDelimiter start="%[qwi](" end=")" skip="\\\\\|\\)" fold contains=rubyNestedParentheses,rubyDelimEscape syn region rubyString matchgroup=rubyStringDelimiter start="%[qwi](" end=")" skip="\\\\\|\\)" fold contains=rubyNestedParentheses,rubyDelimEscape
syn region rubyString matchgroup=rubyStringDelimiter start="%q " end=" " skip="\\\\\|\\)" fold syn region rubyString matchgroup=rubyStringDelimiter start="%q " end=" " skip="\\\\\|\\)" fold
syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s\z([~`!@#$%^&*_\-+=|\:;"',.? /]\)" end="\z1" skip="\\\\\|\\\z1" fold syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s\z([~`!@#$%^&*_\-+=|\:;"',.? /]\)" 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{" end="}" skip="\\\\\|\\}" fold contains=rubyNestedCurlyBraces,rubyDelimEscape
syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s<" end=">" skip="\\\\\|\\>" fold contains=rubyNestedAngleBrackets,rubyDelimEscape syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s<" end=">" skip="\\\\\|\\>" fold contains=rubyNestedAngleBrackets,rubyDelimEscape
@@ -197,7 +194,7 @@ syn match rubyControl "\<\%(and\|break\|in\|next\|not\|or\|redo\|rescue
syn match rubyOperator "\<defined?" display syn match rubyOperator "\<defined?" display
syn match rubyKeyword "\<\%(super\|yield\)\>[?!]\@!" syn match rubyKeyword "\<\%(super\|yield\)\>[?!]\@!"
syn match rubyBoolean "\<\%(true\|false\)\>[?!]\@!" syn match rubyBoolean "\<\%(true\|false\)\>[?!]\@!"
syn match rubyPseudoVariable "\<\%(nil\|self\|__ENCODING__\|__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 - match 'end' with the appropriate opening keyword for syntax
@@ -261,7 +258,7 @@ if !exists("ruby_no_special_methods")
syn keyword rubyException raise fail catch throw syn keyword rubyException raise fail catch throw
" false positive with 'include?' " false positive with 'include?'
syn match rubyInclude "\<include\>[?!]\@!" syn match rubyInclude "\<include\>[?!]\@!"
syn keyword rubyInclude autoload extend load prepend require require_relative syn keyword rubyInclude autoload extend load prepend refine require require_relative using
syn keyword rubyKeyword callcc caller lambda proc syn keyword rubyKeyword callcc caller lambda proc
endif endif
@@ -279,18 +276,23 @@ endif
" 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 "\%(\%(\.\@<!\.\)\|::\)\_s*\%(alias\|and\|begin\|break\|case\|class\|def\|defined\|do\|else\)\>" transparent contains=NONE
syn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(elsif\|end\|ensure\|false\|for\|if\|in\|module\|next\|nil\)\>" transparent contains=NONE syn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(elsif\|end\|ensure\|false\|for\|if\|in\|module\|next\|nil\)\>" transparent contains=NONE
syn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(not\|or\|redo\|rescue\|retry\|return\|self\|super\|then\|true\)\>" 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 "\%(\%(\.\@<!\.\)\|::\)\_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 syn match rubyKeywordAsMethod "\<\%(alias\|begin\|case\|class\|def\|do\|end\)[?!]" transparent contains=NONE
syn match rubyKeywordAsMethod "\<\%(if\|module\|undef\|unless\|until\|while\)[?!]" transparent contains=NONE syn match rubyKeywordAsMethod "\<\%(if\|module\|refine\|undef\|unless\|until\|while\)[?!]" transparent contains=NONE
syn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(abort\|at_exit\|attr\|attr_accessor\|attr_reader\)\>" transparent contains=NONE syn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(abort\|at_exit\|attr\|attr_accessor\|attr_reader\)\>" transparent contains=NONE
syn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(attr_writer\|autoload\|callcc\|catch\|caller\)\>" transparent contains=NONE 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*\%(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*\%(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*\%(load\|loop\|prepend\|private\|proc\|protected\)\>" transparent contains=NONE
syn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(public\|require\|require_relative\|raise\|throw\|trap\)\>" 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
" __END__ Directive " __END__ Directive
syn region rubyData matchgroup=rubyDataDirective start="^__END__$" end="\%$" fold syn region rubyData matchgroup=rubyDataDirective start="^__END__$" end="\%$" fold

View File

@@ -3,7 +3,7 @@
" Maintainer: Patrick Walton <pcwalton@mozilla.com> " Maintainer: Patrick Walton <pcwalton@mozilla.com>
" Maintainer: Ben Blum <bblum@cs.cmu.edu> " Maintainer: Ben Blum <bblum@cs.cmu.edu>
" Maintainer: Chris Morgan <me@chrismorgan.info> " Maintainer: Chris Morgan <me@chrismorgan.info>
" Last Change: 2013 Dec 10 " Last Change: 2014 Feb 27
if version < 600 if version < 600
syntax clear syntax clear
@@ -18,24 +18,40 @@ syn keyword rustOperator as
syn match rustAssert "\<assert\(\w\)*!" contained syn match rustAssert "\<assert\(\w\)*!" contained
syn match rustFail "\<fail\(\w\)*!" contained syn match rustFail "\<fail\(\w\)*!" contained
syn keyword rustKeyword break continue do extern syn keyword rustKeyword break
syn keyword rustKeyword box nextgroup=rustBoxPlacement skipwhite skipempty
syn keyword rustKeyword continue
syn keyword rustKeyword extern nextgroup=rustExternCrate,rustObsoleteExternMod skipwhite skipempty
syn keyword rustKeyword fn nextgroup=rustFuncName skipwhite skipempty
syn keyword rustKeyword for in if impl let syn keyword rustKeyword for in if impl let
syn keyword rustKeyword loop once priv pub syn keyword rustKeyword loop once proc pub
syn keyword rustKeyword return syn keyword rustKeyword return super
syn keyword rustKeyword unsafe while syn keyword rustKeyword unsafe virtual while
syn keyword rustKeyword use nextgroup=rustModPath skipwhite syn keyword rustKeyword use nextgroup=rustModPath skipwhite skipempty
" FIXME: Scoped impl's name is also fallen in this category " FIXME: Scoped impl's name is also fallen in this category
syn keyword rustKeyword mod trait struct enum type nextgroup=rustIdentifier skipwhite syn keyword rustKeyword mod trait struct enum type nextgroup=rustIdentifier skipwhite skipempty
syn keyword rustKeyword fn nextgroup=rustFuncName skipwhite
syn keyword rustKeyword proc
syn keyword rustStorage mut ref static syn keyword rustStorage mut ref static
syn keyword rustObsoleteStorage const syn keyword rustObsoleteStorage const
syn keyword rustInvalidBareKeyword crate
syn keyword rustExternCrate crate contained nextgroup=rustIdentifier skipwhite skipempty
syn keyword rustObsoleteExternMod mod contained nextgroup=rustIdentifier skipwhite skipempty
syn match rustIdentifier contains=rustIdentifierPrime "\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*" display contained syn match rustIdentifier contains=rustIdentifierPrime "\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*" display contained
syn match rustFuncName "\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*" display contained syn match rustFuncName "\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*" display contained
syn region rustBoxPlacement matchgroup=rustBoxPlacementParens start="(" end=")" contains=TOP contained
syn keyword rustBoxPlacementExpr GC containedin=rustBoxPlacement
" Ideally we'd have syntax rules set up to match arbitrary expressions. Since
" we don't, we'll just define temporary contained rules to handle balancing
" delimiters.
syn region rustBoxPlacementBalance start="(" end=")" containedin=rustBoxPlacement transparent
syn region rustBoxPlacementBalance start="\[" end="\]" containedin=rustBoxPlacement transparent
" {} are handled by rustFoldBraces
" Reserved (but not yet used) keywords {{{2 " Reserved (but not yet used) keywords {{{2
syn keyword rustReservedKeyword alignof be offsetof pure sizeof typeof yield syn keyword rustReservedKeyword alignof be do offsetof priv pure sizeof typeof unsized yield
" Built-in types {{{2 " Built-in types {{{2
syn keyword rustType int uint float char bool u8 u16 u32 u64 f32 syn keyword rustType int uint float char bool u8 u16 u32 u64 f32
@@ -46,13 +62,10 @@ syn keyword rustType f64 i8 i16 i32 i64 str Self
" to make it easy to update. " to make it easy to update.
" Core operators {{{3 " Core operators {{{3
syn keyword rustEnum Either syn keyword rustTrait Copy Send Sized Share
syn keyword rustEnumVariant Left Right
syn keyword rustTrait Sized
syn keyword rustTrait Freeze Send
syn keyword rustTrait Add Sub Mul Div Rem Neg Not syn keyword rustTrait Add Sub Mul Div Rem Neg Not
syn keyword rustTrait BitAnd BitOr BitXor syn keyword rustTrait BitAnd BitOr BitXor
syn keyword rustTrait Drop syn keyword rustTrait Drop Deref DerefMut
syn keyword rustTrait Shl Shr Index syn keyword rustTrait Shl Shr Index
syn keyword rustEnum Option syn keyword rustEnum Option
syn keyword rustEnumVariant Some None syn keyword rustEnumVariant Some None
@@ -60,64 +73,51 @@ syn keyword rustEnum Result
syn keyword rustEnumVariant Ok Err syn keyword rustEnumVariant Ok Err
" Functions {{{3 " Functions {{{3
"syn keyword rustFunction print println
"syn keyword rustFunction range
"syn keyword rustFunction from_str "syn keyword rustFunction from_str
"syn keyword rustFunction range
"syn keyword rustFunction drop
" Types and traits {{{3 " Types and traits {{{3
syn keyword rustTrait Any AnyOwnExt AnyRefExt AnyMutRefExt syn keyword rustTrait Ascii AsciiCast OwnedAsciiCast AsciiStr IntoBytes
syn keyword rustTrait Ascii AsciiCast OwnedAsciiCast AsciiStr ToBytesConsume
syn keyword rustTrait Bool
syn keyword rustTrait ToCStr syn keyword rustTrait ToCStr
syn keyword rustTrait Char syn keyword rustTrait Char
syn keyword rustTrait Clone DeepClone syn keyword rustTrait Clone
syn keyword rustTrait Eq ApproxEq Ord TotalEq TotalOrd Ordering Equiv syn keyword rustTrait Eq Ord TotalEq TotalOrd Ordering Equiv
syn keyword rustEnumVariant Less Equal Greater syn keyword rustEnumVariant Less Equal Greater
syn keyword rustTrait Container Mutable Map MutableMap Set MutableSet syn keyword rustTrait Container Mutable Map MutableMap Set MutableSet
syn keyword rustTrait Default
syn keyword rustTrait Hash
syn keyword rustTrait FromStr
syn keyword rustTrait FromIterator Extendable syn keyword rustTrait FromIterator Extendable
syn keyword rustTrait Iterator DoubleEndedIterator RandomAccessIterator ClonableIterator syn keyword rustTrait Iterator DoubleEndedIterator RandomAccessIterator CloneableIterator
syn keyword rustTrait OrdIterator MutableDoubleEndedIterator ExactSize syn keyword rustTrait OrdIterator MutableDoubleEndedIterator ExactSize
syn keyword rustTrait Times
syn keyword rustTrait Algebraic Trigonometric Exponential Hyperbolic
syn keyword rustTrait Bitwise BitCount Bounded
syn keyword rustTrait Integer Fractional Real RealExt
syn keyword rustTrait Num NumCast CheckedAdd CheckedSub CheckedMul syn keyword rustTrait Num NumCast CheckedAdd CheckedSub CheckedMul
syn keyword rustTrait Orderable Signed Unsigned Round syn keyword rustTrait Signed Unsigned
syn keyword rustTrait Primitive Int Float ToStrRadix ToPrimitive FromPrimitive syn keyword rustTrait Primitive Int Float FloatMath ToPrimitive FromPrimitive
"syn keyword rustTrait Expect
syn keyword rustTrait Box
syn keyword rustTrait GenericPath Path PosixPath WindowsPath syn keyword rustTrait GenericPath Path PosixPath WindowsPath
syn keyword rustTrait RawPtr syn keyword rustTrait RawPtr
syn keyword rustTrait Buffer Writer Reader Seek syn keyword rustTrait Buffer Writer Reader Seek
syn keyword rustTrait SendStr SendStrOwned SendStrStatic IntoSendStr syn keyword rustTrait Str StrVector StrSlice OwnedStr IntoMaybeOwned
syn keyword rustTrait Str StrVector StrSlice OwnedStr syn keyword rustTrait StrAllocating
syn keyword rustTrait IterBytes syn keyword rustTrait ToStr IntoStr
syn keyword rustTrait ToStr ToStrConsume
syn keyword rustTrait CopyableTuple ImmutableTuple
syn keyword rustTrait Tuple1 Tuple2 Tuple3 Tuple4 syn keyword rustTrait Tuple1 Tuple2 Tuple3 Tuple4
syn keyword rustTrait Tuple5 Tuple6 Tuple7 Tuple8 syn keyword rustTrait Tuple5 Tuple6 Tuple7 Tuple8
syn keyword rustTrait Tuple9 Tuple10 Tuple11 Tuple12 syn keyword rustTrait Tuple9 Tuple10 Tuple11 Tuple12
syn keyword rustTrait ImmutableTuple1 ImmutableTuple2 ImmutableTuple3 ImmutableTuple4 syn keyword rustTrait CloneableVector ImmutableCloneableVector MutableCloneableVector
syn keyword rustTrait ImmutableTuple5 ImmutableTuple6 ImmutableTuple7 ImmutableTuple8 syn keyword rustTrait ImmutableVector MutableVector
syn keyword rustTrait ImmutableTuple9 ImmutableTuple10 ImmutableTuple11 ImmutableTuple12 syn keyword rustTrait ImmutableEqVector ImmutableTotalOrdVector MutableTotalOrdVector
syn keyword rustTrait ImmutableEqVector ImmutableTotalOrdVector ImmutableCopyableVector syn keyword rustTrait Vector VectorVector OwnedVector MutableVectorAllocating
syn keyword rustTrait OwnedVector OwnedCopyableVector OwnedEqVector MutableVector syn keyword rustTrait String
syn keyword rustTrait Vector VectorVector CopyableVector ImmutableVector syn keyword rustTrait Vec
"syn keyword rustFunction stream "syn keyword rustFunction sync_channel channel
syn keyword rustTrait Port Chan GenericChan GenericSmartChan GenericPort Peekable syn keyword rustTrait SyncSender Sender Receiver
"syn keyword rustFunction spawn "syn keyword rustFunction spawn
"syn keyword rustConstant GC
syn keyword rustSelf self syn keyword rustSelf self
syn keyword rustBoolean true false syn keyword rustBoolean true false
syn keyword rustConstant Some None " option
syn keyword rustConstant Left Right " either
syn keyword rustConstant Ok Err " result
syn keyword rustConstant Less Equal Greater " Ordering
" Other syntax {{{2 " Other syntax {{{2
" If foo::bar changes to foo.bar, change this ("::" to "\."). " If foo::bar changes to foo.bar, change this ("::" to "\.").
@@ -148,10 +148,10 @@ syn match rustMacro '#\w\(\w\)*' contains=rustAssert,rustFail
syn match rustSpecialError display contained /\\./ syn match rustSpecialError display contained /\\./
syn match rustSpecial display contained /\\\([nrt0\\'"]\|x\x\{2}\|u\x\{4}\|U\x\{8}\)/ syn match rustSpecial display contained /\\\([nrt0\\'"]\|x\x\{2}\|u\x\{4}\|U\x\{8}\)/
syn match rustStringContinuation display contained /\\\n\s*/ syn match rustStringContinuation display contained /\\\n\s*/
syn region rustString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=rustSpecial,rustSpecialError,rustStringContinuation syn region rustString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=rustSpecial,rustSpecialError,rustStringContinuation,@Spell
syn region rustString start='r\z(#*\)"' end='"\z1' syn region rustString start='r\z(#*\)"' end='"\z1' contains=@Spell
syn region rustAttribute start="#\[" end="\]" contains=rustString,rustDeriving syn region rustAttribute start="#!\?\[" end="\]" contains=rustString,rustDeriving
syn region rustDeriving start="deriving(" end=")" contained contains=rustTrait syn region rustDeriving start="deriving(" end=")" contained contains=rustTrait
" Number literals " Number literals
@@ -179,11 +179,12 @@ syn region rustGenericLifetimeCandidate display start=/\%(<\|,\s*\)\@<='/ end=/[
syn match rustLifetime display "\'\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*" syn match rustLifetime display "\'\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*"
syn match rustCharacter /'\([^'\\]\|\\\(.\|x\x\{2}\|u\x\{4}\|U\x\{8}\)\)'/ contains=rustSpecial,rustSpecialError syn match rustCharacter /'\([^'\\]\|\\\(.\|x\x\{2}\|u\x\{4}\|U\x\{8}\)\)'/ contains=rustSpecial,rustSpecialError
syn cluster rustComment contains=rustCommentLine,rustCommentLineDoc,rustCommentBlock,rustCommentBlockDoc syn region rustCommentLine start="//" end="$" contains=rustTodo,@Spell
syn region rustCommentLine start="//" end="$" contains=rustTodo syn region rustCommentLineDoc start="//\%(//\@!\|!\)" end="$" contains=rustTodo,@Spell
syn region rustCommentLineDoc start="//\%(//\@!\|!\)" end="$" contains=rustTodo syn region rustCommentBlock matchgroup=rustCommentBlock start="/\*\%(!\|\*[*/]\@!\)\@!" end="\*/" contains=rustTodo,rustCommentBlockNest,@Spell
syn region rustCommentBlock matchgroup=rustCommentBlock start="/\*\%(!\|\*[*/]\@!\)\@!" end="\*/" contains=rustTodo,@rustComment keepend extend syn region rustCommentBlockDoc matchgroup=rustCommentBlockDoc start="/\*\%(!\|\*[*/]\@!\)" end="\*/" contains=rustTodo,rustCommentBlockDocNest,@Spell
syn region rustCommentBlockDoc matchgroup=rustCommentBlockDoc start="/\*\%(!\|\*[*/]\@!\)" end="\*/" contains=rustTodo,@rustComment keepend extend syn region rustCommentBlockNest matchgroup=rustCommentBlock start="/\*" end="\*/" contains=rustTodo,rustCommentBlockNest,@Spell contained transparent
syn region rustCommentBlockDocNest matchgroup=rustCommentBlockDoc start="/\*" end="\*/" contains=rustTodo,rustCommentBlockDocNest,@Spell contained transparent
" FIXME: this is a really ugly and not fully correct implementation. Most " FIXME: this is a really ugly and not fully correct implementation. Most
" importantly, a case like ``/* */*`` should have the final ``*`` not being in " importantly, a case like ``/* */*`` should have the final ``*`` not being in
" a comment, but in practice at present it leaves comments open two levels " a comment, but in practice at present it leaves comments open two levels
@@ -251,6 +252,11 @@ hi def link rustDeriving PreProc
hi def link rustStorage StorageClass hi def link rustStorage StorageClass
hi def link rustObsoleteStorage Error hi def link rustObsoleteStorage Error
hi def link rustLifetime Special hi def link rustLifetime Special
hi def link rustInvalidBareKeyword Error
hi def link rustExternCrate rustKeyword
hi def link rustObsoleteExternMod Error
hi def link rustBoxPlacementParens Delimiter
hi def link rustBoxPlacementExpr rustKeyword
" Other Suggestions: " Other Suggestions:
" hi rustAttribute ctermfg=cyan " hi rustAttribute ctermfg=cyan

View File

@@ -58,6 +58,9 @@ syn match sassAmpersand "&"
" TODO: Attribute namespaces " TODO: Attribute namespaces
" TODO: Arithmetic (including strings and concatenation) " TODO: Arithmetic (including strings and concatenation)
syn region sassMediaQuery matchgroup=sassMedia start="@media" end="$" contains=sassMediaOperators
syn keyword sassMediaOperators and not only contained
syn region sassCharset start="@charset" end=";\|$" contains=scssComment,cssStringQ,cssStringQQ,cssURL,cssUnicodeEscape,cssMediaType
syn region sassInclude start="@import" end=";\|$" contains=scssComment,cssStringQ,cssStringQQ,cssURL,cssUnicodeEscape,cssMediaType syn region sassInclude start="@import" end=";\|$" contains=scssComment,cssStringQ,cssStringQQ,cssURL,cssUnicodeEscape,cssMediaType
syn region sassDebugLine end=";\|$" matchgroup=sassDebug start="@debug\>" contains=@sassCssAttributes,sassVariable,sassFunction syn region sassDebugLine end=";\|$" matchgroup=sassDebug start="@debug\>" contains=@sassCssAttributes,sassVariable,sassFunction
syn region sassWarnLine end=";\|$" matchgroup=sassWarn start="@warn\>" contains=@sassCssAttributes,sassVariable,sassFunction syn region sassWarnLine end=";\|$" matchgroup=sassWarn start="@warn\>" contains=@sassCssAttributes,sassVariable,sassFunction
@@ -82,6 +85,9 @@ hi def link sassExtend PreProc
hi def link sassFunctionDecl PreProc hi def link sassFunctionDecl PreProc
hi def link sassReturn PreProc hi def link sassReturn PreProc
hi def link sassTodo Todo hi def link sassTodo Todo
hi def link sassCharset PreProc
hi def link sassMedia PreProc
hi def link sassMediaOperators PreProc
hi def link sassInclude Include hi def link sassInclude Include
hi def link sassDebug sassControl hi def link sassDebug sassControl
hi def link sassWarn sassControl hi def link sassWarn sassControl

View File

@@ -10,79 +10,130 @@ syn case match
syn sync minlines=200 maxlines=1000 syn sync minlines=200 maxlines=1000
syn keyword scalaKeyword catch do else final finally for forSome if syn keyword scalaKeyword catch do else final finally for forSome if
syn keyword scalaKeyword match return throw try while yield syn keyword scalaKeyword match return throw try while yield macro
syn keyword scalaKeyword class trait object extends with type nextgroup=scalaInstanceDeclaration skipwhite syn keyword scalaKeyword class trait object extends with nextgroup=scalaInstanceDeclaration skipwhite
syn keyword scalaKeyword case nextgroup=scalaCaseFollowing skipwhite syn keyword scalaKeyword case nextgroup=scalaKeyword,scalaCaseFollowing skipwhite
syn keyword scalaKeyword val nextgroup=scalaNameDefinition,scalaQuasiQuotes skipwhite syn keyword scalaKeyword val nextgroup=scalaNameDefinition,scalaQuasiQuotes skipwhite
syn keyword scalaKeyword def var nextgroup=scalaNameDefinition skipwhite syn keyword scalaKeyword def var nextgroup=scalaNameDefinition skipwhite
hi link scalaKeyword Keyword hi link scalaKeyword Keyword
syn match scalaNameDefinition /\<[_A-Za-z0-9$]\+\>/ contained syn region scalaBlock start=/{/ end=/}/ contains=TOP fold
syn match scalaNameDefinition /`[^`]\+`/ contained
syn keyword scalaAkkaSpecialWord when goto using startWith initialize onTransition stay become unbecome
hi link scalaAkkaSpecialWord PreProc
syn match scalaSymbol /'[_A-Za-z0-9$]\+/
hi link scalaSymbol Number
syn match scalaChar /'.'/
syn match scalaEscapedChar /\\[\\ntbrf]/
syn match scalaUnicodeChar /\\u[A-Fa-f0-9]\{4}/
hi link scalaChar Character
hi link scalaEscapedChar Function
hi link scalaUnicodeChar Special
syn match scalaOperator "||"
syn match scalaOperator "&&"
hi link scalaOperator Special
syn match scalaNameDefinition /\<[_A-Za-z0-9$]\+\>/ contained nextgroup=scalaPostNameDefinition
syn match scalaNameDefinition /`[^`]\+`/ contained nextgroup=scalaPostNameDefinition
syn match scalaPostNameDefinition /\_s*:\_s*/ contained nextgroup=scalaTypeDeclaration
hi link scalaNameDefinition Function hi link scalaNameDefinition Function
syn match scalaInstanceDeclaration /\<[_\.A-Za-z0-9$]\+\>/ contained syn match scalaInstanceDeclaration /\<[_\.A-Za-z0-9$]\+\>/ contained nextgroup=scalaInstanceHash
syn match scalaInstanceDeclaration /`[^`]\+`/ contained syn match scalaInstanceDeclaration /`[^`]\+`/ contained
syn match scalaInstanceHash /#/ contained nextgroup=scalaInstanceDeclaration
hi link scalaInstanceDeclaration Special hi link scalaInstanceDeclaration Special
hi link scalaInstanceHash Type
syn match scalaCaseFollowing /\<[_\.A-Za-z0-9$]*\>/ contained syn match scalaCapitalWord /\<[A-Z][A-Za-z0-9$]*\>/
hi link scalaCapitalWord Special
" Handle type declarations specially
syn region scalaTypeStatement matchgroup=Keyword start=/\<type\_s\+\ze/ end=/$/ contains=scalaTypeTypeDeclaration,scalaSquareBrackets,scalaTypeTypeEquals,scalaTypeStatement
" Ugh... duplication of all the scalaType* stuff to handle special highlighting
" of `type X =` declarations
syn match scalaTypeTypeDeclaration /(/ contained nextgroup=scalaTypeTypeExtension,scalaTypeTypeEquals contains=scalaRoundBrackets skipwhite
syn match scalaTypeTypeDeclaration /\%(⇒\|=>\)\ze/ contained nextgroup=scalaTypeTypeDeclaration contains=scalaTypeTypeExtension skipwhite
syn match scalaTypeTypeDeclaration /\<[_\.A-Za-z0-9$]\+\>/ contained nextgroup=scalaTypeTypeExtension,scalaTypeTypeEquals skipwhite
syn match scalaTypeTypeEquals /=\ze[^>]/ contained nextgroup=scalaTypeTypePostDeclaration skipwhite
syn match scalaTypeTypeExtension /)\?\_s*\zs\%(⇒\|=>\|<:\|:>\|=:=\|::\|#\)/ contained nextgroup=scalaTypeTypeDeclaration skipwhite
syn match scalaTypeTypePostDeclaration /\<[_\.A-Za-z0-9$]\+\>/ contained nextgroup=scalaTypeTypePostExtension skipwhite
syn match scalaTypeTypePostExtension /\%(⇒\|=>\|<:\|:>\|=:=\|::\)/ contained nextgroup=scalaTypeTypePostDeclaration skipwhite
hi link scalaTypeTypeDeclaration Type
hi link scalaTypeTypeExtension Keyword
hi link scalaTypeTypePostDeclaration Special
hi link scalaTypeTypePostExtension Keyword
syn match scalaTypeDeclaration /(/ contained nextgroup=scalaTypeExtension contains=scalaRoundBrackets skipwhite
syn match scalaTypeDeclaration /\%(⇒\|=>\)\ze/ contained nextgroup=scalaTypeDeclaration contains=scalaTypeExtension skipwhite
syn match scalaTypeDeclaration /\<[_\.A-Za-z0-9$]\+\>/ contained nextgroup=scalaTypeExtension skipwhite
syn match scalaTypeExtension /)\?\_s*\zs\%(⇒\|=>\|<:\|:>\|=:=\|::\|#\)/ contained nextgroup=scalaTypeDeclaration skipwhite
hi link scalaTypeDeclaration Type
hi link scalaTypeExtension Keyword
hi link scalaTypePostExtension Keyword
syn match scalaTypeAnnotation /\%([_a-zA-Z0-9$\s]:\_s*\)\ze[_=(\.A-Za-z0-9$]\+/ skipwhite nextgroup=scalaTypeDeclaration contains=scalaRoundBrackets
syn match scalaTypeAnnotation /)\_s*:\_s*\ze[_=(\.A-Za-z0-9$]\+/ skipwhite nextgroup=scalaTypeDeclaration
hi link scalaTypeAnnotation Normal
syn match scalaCaseFollowing /\<[_\.A-Za-z0-9$]\+\>/ contained
syn match scalaCaseFollowing /`[^`]\+`/ contained syn match scalaCaseFollowing /`[^`]\+`/ contained
hi link scalaCaseFollowing Special hi link scalaCaseFollowing Special
syn keyword scalaKeywordModifier abstract override final implicit lazy private protected sealed null require super syn keyword scalaKeywordModifier abstract override final lazy implicit implicitly private protected sealed null require super
hi link scalaKeywordModifier Function hi link scalaKeywordModifier Function
syn keyword scalaSpecial this true false package import syn keyword scalaSpecial this true false package import 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 region scalaString start=/"/ skip=/\\"/ end=/"/ syn match scalaStringEmbeddedQuote /\\"/ contained
syn region scalaString start=/"/ end=/"/ contains=scalaStringEmbeddedQuote,scalaEscapedChar,scalaUnicodeChar
hi link scalaString String hi link scalaString String
hi link scalaStringEmbeddedQuote String
syn region scalaIString matchgroup=Special start=/\<[a-zA-Z][a-zA-Z0-9_]*"/ skip=/\\"/ end=/"/ contains=scalaInterpolation,scalaInterpolationB,scalaEscapedChar,scalaUnicodeChar
syn region scalaTripleIString matchgroup=Special start=/\<[a-zA-Z][a-zA-Z0-9_]*"""/ end=/"""\%([^"]\|$\)/ contains=scalaInterpolation,scalaInterpolationB,scalaEscapedChar,scalaUnicodeChar
hi link scalaIString String
hi link scalaTripleIString String
syn region scalaSString matchgroup=Special start=/s"/ skip=/\\"/ end=/"/ contains=scalaInterpolation
syn match scalaInterpolation /\$[a-zA-Z0-9_$]\+/ contained syn match scalaInterpolation /\$[a-zA-Z0-9_$]\+/ contained
syn match scalaInterpolation /\${[^}]\+}/ contained syn region scalaInterpolationB matchgroup=scalaInterpolation start=/\${/ end=/}/ contained contains=TOP
hi link scalaSString String
hi link scalaInterpolation Function hi link scalaInterpolation Function
hi link scalaInterpolationB Normal
syn region scalaFString matchgroup=Special start=/f"/ skip=/\\"/ end=/"/ contains=scalaInterpolation,scalaFInterpolation syn region scalaFString matchgroup=Special start=/f"/ skip=/\\"/ end=/"/ contains=scalaFInterpolation,scalaFInterpolationB,scalaEscapedChar,scalaUnicodeChar
syn match scalaFInterpolation /\$[a-zA-Z0-9_$]\+%[-A-Za-z0-9\.]\+/ contained syn match scalaFInterpolation /\$[a-zA-Z0-9_$]\+\(%[-A-Za-z0-9\.]\+\)\?/ contained
syn match scalaFInterpolation /\${[^}]\+}%[-A-Za-z0-9\.]\+/ contained syn region scalaFInterpolationB matchgroup=scalaFInterpolation start=/${/ end=/}\(%[-A-Za-z0-9\.]\+\)\?/ contained contains=TOP
hi link scalaFString String hi link scalaFString String
hi link scalaFInterpolation Function hi link scalaFInterpolation Function
hi link scalaFInterpolationB Normal
syn region scalaQuasiQuotes matchgroup=Type start=/\<q"/ skip=/\\"/ end=/"/ contains=scalaInterpolation syn region scalaTripleString start=/"""/ end=/"""\%([^"]\|$\)/ contains=scalaEscapedChar,scalaUnicodeChar
syn region scalaQuasiQuotes matchgroup=Type start=/\<[tcp]q"/ skip=/\\"/ end=/"/ contains=scalaInterpolation syn region scalaTripleFString matchgroup=Special start=/f"""/ end=/"""\%([^"]\|$\)/ contains=scalaFInterpolation,scalaFInterpolationB,scalaEscapedChar,scalaUnicodeChar
hi link scalaQuasiQuotes String
syn region scalaTripleQuasiQuotes matchgroup=Type start=/\<q"""/ end=/"""/ contains=scalaInterpolation
syn region scalaTripleQuasiQuotes matchgroup=Type start=/\<[tcp]q"""/ end=/"""/ contains=scalaInterpolation
hi link scalaTripleQuasiQuotes String
syn region scalaTripleString start=/"""/ end=/"""/
syn region scalaTripleSString matchgroup=PreProc start=/s"""/ end=/"""/
syn region scalaTripleFString matchgroup=PreProc start=/f"""/ end=/"""/
hi link scalaTripleString String hi link scalaTripleString String
hi link scalaTripleSString String
hi link scalaTripleFString String hi link scalaTripleFString String
syn match scalaNumber /\<0[dDfFlL]\?\>/ syn match scalaNumber /\<0[dDfFlL]\?\>/ " Just a bare 0
syn match scalaNumber /\<[1-9]\d*[dDfFlL]\?\>/ syn match scalaNumber /\<[1-9]\d*[dDfFlL]\?\>/ " A multi-digit number - octal numbers with leading 0's are deprecated in Scala
syn match scalaNumber /\<0[xX][0-9a-fA-F]\+[dDfFlL]\?\>/ syn match scalaNumber /\<0[xX][0-9a-fA-F]\+[dDfFlL]\?\>/ " Hex number
syn match scalaNumber "\%(\<\d\+\.\d*\|\.\d\+\)\%([eE][-+]\=\d\+\)\=[fFdD]\=" syn match scalaNumber /\%(\<\d\+\.\d*\|\.\d\+\)\%([eE][-+]\=\d\+\)\=[fFdD]\=/ " exponential notation 1
syn match scalaNumber "\<\d\+[eE][-+]\=\d\+[fFdD]\=\>" syn match scalaNumber /\<\d\+[eE][-+]\=\d\+[fFdD]\=\>/ " exponential notation 2
syn match scalaNumber "\<\d\+\%([eE][-+]\=\d\+\)\=[fFdD]\>" syn match scalaNumber /\<\d\+\%([eE][-+]\=\d\+\)\=[fFdD]\>/ " exponential notation 3
hi link scalaNumber Number hi link scalaNumber Number
syn region scalaSquareBrackets matchgroup=Type start="\[" end="\]" contains=scalaSpecial,scalaTypeParameter,scalaSquareBrackets,scalaTypeOperator syn region scalaRoundBrackets start="(" end=")" skipwhite contained contains=scalaTypeDeclaration,scalaSquareBrackets,scalaRoundBrackets
syn match scalaTypeAnnotation /\%(:\s*\)\@<=[_\.A-Za-z0-9$]\+/
syn match scalaTypeParameter /[_\.A-Za-z0-9$]\+/ contained syn region scalaSquareBrackets matchgroup=Type start="\[" end="\]" skipwhite nextgroup=scalaTypeExtension contains=scalaTypeDeclaration,scalaSquareBrackets,scalaTypeOperator,scalaTypeAnnotationParameter
syn match scalaTypeOperator /[=:<>]\+/ contained syn match scalaTypeOperator /[-+=:<>]\+/ contained
hi link scalaTypeAnnotation Type syn match scalaTypeAnnotationParameter /@\<[`_A-Za-z0-9$]\+\>/ contained
hi link scalaTypeParameter Type hi link scalaTypeOperator Keyword
hi link scalaTypeOperator Type hi link scalaTypeAnnotationParameter Function
syn region scalaMultilineComment start="/\*" end="\*/" contains=scalaMultilineComment,scalaDocLinks,scalaParameterAnnotation,scalaCommentAnnotation,scalaCommentCodeBlock,@scalaHtml keepend syn region scalaMultilineComment start="/\*" end="\*/" contains=scalaMultilineComment,scalaDocLinks,scalaParameterAnnotation,scalaCommentAnnotation,scalaCommentCodeBlock,@scalaHtml keepend
syn match scalaCommentAnnotation "@[_A-Za-z0-9$]\+" contained syn match scalaCommentAnnotation "@[_A-Za-z0-9$]\+" contained
@@ -102,3 +153,17 @@ hi link scalaAnnotation PreProc
syn match scalaTrailingComment "//.*$" syn match scalaTrailingComment "//.*$"
hi link scalaTrailingComment Comment hi link scalaTrailingComment Comment
syn match scalaAkkaFSM /goto([^)]*)\_s\+\<using\>/ contains=scalaAkkaFSMGotoUsing
syn match scalaAkkaFSM /stay\_s\+using/
syn match scalaAkkaFSM /^\s*stay\s*$/
syn match scalaAkkaFSM /when\ze([^)]*)/
syn match scalaAkkaFSM /startWith\ze([^)]*)/
syn match scalaAkkaFSM /initialize\ze()/
syn match scalaAkkaFSM /onTransition/
syn match scalaAkkaFSM /onTermination/
syn match scalaAkkaFSM /whenUnhandled/
syn match scalaAkkaFSMGotoUsing /\<using\>/
syn match scalaAkkaFSMGotoUsing /\<goto\>/
hi link scalaAkkaFSM PreProc
hi link scalaAkkaFSMGotoUsing PreProc

View File

@@ -35,8 +35,9 @@ syn keyword slimDocType contained html 5 1.1 strict frameset mobile basic
syn match slimDocTypeKeyword "^\s*\(doctype\)\s\+" nextgroup=slimDocType syn match slimDocTypeKeyword "^\s*\(doctype\)\s\+" nextgroup=slimDocType
syn keyword slimTodo FIXME TODO NOTE OPTIMIZE XXX contained syn keyword slimTodo FIXME TODO NOTE OPTIMIZE XXX contained
syn keyword htmlTagName contained script
syn match slimTag "\w\+" contained contains=htmlTagName nextgroup=@slimComponent syn match slimTag "\w\+[><]*" contained contains=htmlTagName nextgroup=@slimComponent
syn match slimIdChar "#{\@!" contained nextgroup=slimId syn match slimIdChar "#{\@!" contained nextgroup=slimId
syn match slimId "\%(\w\|-\)\+" contained nextgroup=@slimComponent syn match slimId "\%(\w\|-\)\+" contained nextgroup=@slimComponent
syn match slimClassChar "\." contained nextgroup=slimClass syn match slimClassChar "\." contained nextgroup=slimClass
@@ -61,6 +62,7 @@ syn region slimInnerAttrString start=+\s*"+ skip=+\%(\\\\\)*\\"+ end=+"\s*+ cont
syn region slimInnerAttrString start=+\s*'+ skip=+\%(\\\\\)*\\"+ end=+'\s*+ contained contains=slimInterpolation,slimInterpolationEscape nextgroup=slimAttr syn region slimInnerAttrString start=+\s*'+ skip=+\%(\\\\\)*\\"+ end=+'\s*+ contained contains=slimInterpolation,slimInterpolationEscape nextgroup=slimAttr
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 region slimInterpolation matchgroup=slimInterpolationDelimiter start="#{{" end="}}" contains=@hamlRubyTop containedin=javascriptStringS,javascriptStringD,slimWrappedAttrs
syn match slimInterpolationEscape "\\\@<!\%(\\\\\)*\\\%(\\\ze#{\|#\ze{\)" syn match slimInterpolationEscape "\\\@<!\%(\\\\\)*\\\%(\\\ze#{\|#\ze{\)"
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
@@ -77,6 +79,7 @@ syn match slimIEConditional "\%(^\s*/\)\@<=\[\s*if\>[^]]*]" contained containedi
hi def link slimAttrString String hi def link slimAttrString String
hi def link slimBegin String hi def link slimBegin String
hi def link slimClass Type hi def link slimClass Type
hi def link slimAttr Type
hi def link slimClassChar Type hi def link slimClassChar Type
hi def link slimComment Comment hi def link slimComment Comment
hi def link slimDocType Identifier hi def link slimDocType Identifier

View File

@@ -47,7 +47,7 @@ syn match cssSelector /\.[A-Za-z][A-Za-z0-9_-]\+/
syn match cssSelector /#[A-Za-z][A-Za-z0-9_-]\+/ syn match cssSelector /#[A-Za-z][A-Za-z0-9_-]\+/
syn region cssSelector start='\[' end='\]' contains=cssString syn region cssSelector start='\[' end='\]' contains=cssString
syn region cssDefineBlock start="{" end="}" transparent contains=ALL syn region cssDefineBlock start="{" end="}" transparent contains=TOP
syn keyword cssCommonVal inherit initial auto both normal hidden none medium contained syn keyword cssCommonVal inherit initial auto both normal hidden none medium contained
@@ -149,6 +149,7 @@ syn match cssTextProp /text-\(align-last\|align\|decoration\|emphasis\|height\|i
syn match cssTextProp /\(line-stacking-\(ruby\|shift\|strategy\)\|line-stacking\|line-height\)/ contained syn match cssTextProp /\(line-stacking-\(ruby\|shift\|strategy\)\|line-stacking\|line-height\)/ contained
syn match cssTextProp /vertical-align/ contained syn match cssTextProp /vertical-align/ contained
syn match cssTextProp /letter-spacing/ contained syn match cssTextProp /letter-spacing/ contained
syn match cssTextProp /user-select/ contained
syn match cssTextProp /white-\(space-collapse\|space\)/ contained syn match cssTextProp /white-\(space-collapse\|space\)/ contained
syn match cssTextProp /word-\(break\|spacing\|wrap\)/ contained syn match cssTextProp /word-\(break\|spacing\|wrap\)/ contained
syn match cssTextProp "\<word-wrap\>" contained syn match cssTextProp "\<word-wrap\>" contained
@@ -235,6 +236,7 @@ syn match cssAdvancedProp /\(pitch-range\|pitch\)/
syn match cssAdvancedProp /presentation-level/ syn match cssAdvancedProp /presentation-level/
syn match cssAdvancedProp /punctuation-trim/ syn match cssAdvancedProp /punctuation-trim/
syn match cssAdvancedProp /rendering-intent/ syn match cssAdvancedProp /rendering-intent/
syn match cssAdvancedProp /pointer-events/
syn match cssAdvancedProp /\(rest-\(after\|before\)\|rest\)/ syn match cssAdvancedProp /\(rest-\(after\|before\)\|rest\)/
syn match cssAdvancedProp /\(rotation-point\|rotation\)/ syn match cssAdvancedProp /\(rotation-point\|rotation\)/
syn match cssAdvancedProp /ruby-\(align\|overhang\|position\|span\)/ syn match cssAdvancedProp /ruby-\(align\|overhang\|position\|span\)/
@@ -317,7 +319,6 @@ endif
" Based On: Tim Pope (sass.vim) " Based On: Tim Pope (sass.vim)
syn case ignore syn case ignore
syn region cssInclude start="@import" end="\n" contains=cssComment,cssFuncVal,cssRuleProp
syn cluster stylusCssSelectors contains=cssTagName,cssSelector,cssPseudo syn cluster stylusCssSelectors contains=cssTagName,cssSelector,cssPseudo
syn cluster stylusCssValues contains=cssValueLength,cssValueInteger,cssValueNumber,cssValueAngle,cssValueTime,cssValueFrequency,cssColorVal,cssCommonVal,cssFontVal,cssListVal,cssTextVal,cssVisualVal,cssBorderVal,cssBackgroundVal,cssFuncVal,cssAdvancedVal syn cluster stylusCssValues contains=cssValueLength,cssValueInteger,cssValueNumber,cssValueAngle,cssValueTime,cssValueFrequency,cssColorVal,cssCommonVal,cssFontVal,cssListVal,cssTextVal,cssVisualVal,cssBorderVal,cssBackgroundVal,cssFuncVal,cssAdvancedVal
@@ -345,6 +346,9 @@ syn match stylusFunction "\<\%(opposite-position\|image-size\|add-property\)\>(\
syn keyword stylusVariable null true false arguments syn keyword stylusVariable null true false arguments
syn keyword stylusControl if else unless for in return syn keyword stylusControl if else unless for in return
syn match stylusImport "@\%(import\|require\)" nextgroup=stylusImportList
syn match stylusImportList "[^;]\+" contained contains=cssString.*,cssMediaType,cssURL
syn match stylusAmpersand "&" syn match stylusAmpersand "&"
syn match stylusClass "[[:alnum:]_-]\+" contained syn match stylusClass "[[:alnum:]_-]\+" contained
syn match stylusClassChar "\.[[:alnum:]_-]\@=" nextgroup=stylusClass syn match stylusClassChar "\.[[:alnum:]_-]\@=" nextgroup=stylusClass

273
syntax/systemd.vim Normal file
View File

@@ -0,0 +1,273 @@
" Filename: systemd.vim
" Purpose: Vim syntax file
" Language: systemd unit files
" Maintainer: Will Woods <wwoods@redhat.com>
" Last Change: Sep 15, 2011
if exists("b:current_syntax") && !exists ("g:syntax_debug")
finish
endif
syn case match
syntax sync fromstart
setlocal iskeyword+=-
" special sequences, common data types, comments, includes {{{1
" hilight errors with this
syn match sdErr contained /\s*\S\+/ nextgroup=sdErr
" environment args and format strings
syn match sdEnvArg contained /\$\i\+\|\${\i\+}/
syn match sdFormatStr contained /%[inpINPfcrRt]/ containedin=ALLBUT,sdComment,sdErr
" common data types
syn match sdUInt contained nextgroup=sdErr /\d\+/
syn match sdInt contained nextgroup=sdErr /-\=\d\+/
syn match sdOctal contained nextgroup=sdErr /0\o\{3,4}/
syn match sdDuration contained nextgroup=sdErr /\d\+/
syn match sdDuration contained nextgroup=sdErr /\%(\d\+\%(s\|min\|h\|d\|w\|ms\|us\)\s*\)\+/
syn match sdDatasize contained nextgroup=sdErr /\d\+[KMGT]/
syn match sdFilename contained nextgroup=sdErr /\/\S*/
syn keyword sdBool contained nextgroup=sdErr 1 yes true on 0 no false off
syn match sdUnitName contained /\S\+\.\(automount\|mount\|swap\|socket\|service\|target\|path\|timer\|device\)\_s/
" .include
syn match sdInclude /^.include/ nextgroup=sdFilename
" comments
syn match sdComment /^[;#].*/ contains=sdTodo containedin=ALL
syn keyword sdTodo contained TODO XXX FIXME NOTE
" [Unit] {{{1
" see systemd.unit(5)
syn region sdUnitBlock matchgroup=sdHeader start=/^\[Unit\]/ end=/^\[/me=e-2 contains=sdUnitKey
syn match sdUnitKey contained /^Description=/
syn match sdUnitKey contained /^Documentation=/ nextgroup=sdDocURI
syn match sdUnitKey contained /^SourcePath=/ nextgroup=sdFilename,sdErr
syn match sdUnitKey contained /^\%(Requires\|RequiresOverridable\|Requisite\|RequisiteOverridable\|Wants\|BindsTo\|PartOf\|Conflicts\|Before\|After\|OnFailure\|Names|PropagatesReloadTo\|ReloadPropagatedFrom\)=/ nextgroup=sdUnitList
syn match sdUnitKey contained /^\%(OnFailureIsolate\|IgnoreOnIsolate\|IgnoreOnSnapshot\|StopWhenUnneeded\|RefuseManualStart\|RefuseManualStop\|AllowIsolate\|DefaultDependencies\)=/ nextgroup=sdBool,sdErr
syn match sdUnitKey contained /^JobTimeoutSec=/ nextgroup=sdDuration,sdErr
" ConditionXXX. Note that they all have an optional '|' after the '='
syn match sdUnitKey contained /^Condition\(PathExists\|PathExistsGlob\|PathIsDirectory\|PathIsMountPoint\|PathIsReadWrite\|PathIsSymbolicLink\|DirectoryNotEmpty\|FileNotEmpty\|FileIsExecutable\)=|\=!\=/ contains=sdConditionFlag nextgroup=sdFilename,sdErr
syn match sdUnitKey contained /^ConditionVirtualization=|\=!\=/ contains=sdConditionFlag nextgroup=sdVirtType,sdErr
syn match sdUnitKey contained /^ConditionSecurity=|\=!\=/ contains=sdConditionFlag nextgroup=sdSecurityType,sdErr
syn match sdUnitKey contained /^ConditionCapability=|\=!\=/ contains=sdConditionFlag nextgroup=sdAnyCapName,sdErr
syn match sdUnitKey contained /^Condition\%(KernelCommandLine\|Host\)=|\=!\=/ contains=sdConditionFlag
syn match sdUnitKey contained /^Condition\%(ACPower\|Null\)=|\=/ contains=sdConditionFlag nextgroup=sdBool,sdErr
" extra bits
syn match sdUnitList contained /.*/ contains=sdUnitName,sdErr
syn match sdConditionFlag contained /[!|]/
syn keyword sdVirtType contained nextgroup=sdErr vm container qemu kvm vmware microsoft oracle xen bochs chroot openvz lxc lxc-libvirt systemd-nspawn
syn keyword sdSecurityType contained nextgroup=sdErr selinux
syn match sdDocUri contained /\%(https\=:\/\/\|file:\|info:\|man:\)\S\+\s*/ nextgroup=sdDocUri,sdErr
" [Install] {{{1
" see systemd.unit(5)
syn region sdInstallBlock matchgroup=sdHeader start=/^\[Install\]/ end=/^\[/me=e-2 contains=sdInstallKey
syn match sdInstallKey contained /^\%(WantedBy\|Alias\|Also\)=/ nextgroup=sdUnitList
" Execution options common to [Service|Socket|Mount|Swap] {{{1
" see systemd.exec(5)
syn match sdExecKey contained /^Exec\%(Start\%(Pre\|Post\|\)\|Reload\|Stop\|StopPost\)=/ nextgroup=sdExecFlag,sdExecFile,sdErr
syn match sdExecKey contained /^\%(WorkingDirectory\|RootDirectory\|TTYPath\)=/ nextgroup=sdFilename,sdErr
" TODO: handle some of these better
" CPUAffinity is: list of uint
" BlockIOWeight is: uint\|filename uint
" BlockIO\%(Read\|Write\)Bandwidth is: filename datasize
syn match sdExecKey contained /^\%(User\|Group\|SupplementaryGroups\|CPUAffinity\|SyslogIdentifier\|PAMName\|TCPWrapName\|ControlGroup\|ControlGroupAttribute\|DeviceAllow\|DeviceDeny\|BlockIOWeight\|BlockIO\%(Read\|Write\)Bandwidth\|UtmpIdentifier\)=/
syn match sdExecKey contained /^Limit\%(CPU\|FSIZE\|DATA\|STACK\|CORE\|RSS\|NOFILE\|AS\|NPROC\|MEMLOCK\|LOCKS\|SIGPENDING\|MSGQUEUE\|NICE\|RTPRIO\|RTTIME\)=/ nextgroup=sdRlimit
syn match sdExecKey contained /^\%(CPUSchedulingResetOnFork\|TTYReset\|TTYVHangup\|TTYVTDisallocate\|SyslogLevelPrefix\|ControlGroupModify\|PrivateTmp\|PrivateNetwork\)=/ nextgroup=sdBool,sdErr
syn match sdExecKey contained /^\%(Nice\|OOMScoreAdjust\)=/ nextgroup=sdInt,sdErr
syn match sdExecKey contained /^\%(CPUSchedulingPriority\|TimerSlackNSec\|CPUShares\)=/ nextgroup=sdUInt,sdErr
syn match sdExecKey contained /^\%(MemoryLimit\|MemorySoftLimit\)=/ nextgroup=sdDatasize,sdErr
syn match sdExecKey contained /^\%(ReadWrite\|ReadOnly\|Inaccessible\)Directories=/ nextgroup=sdFileList
syn match sdExecKey contained /^Device\%(Allow\|Deny\)=/ nextgroup=sdDevAllow,sdErr
syn match sdExecKey contained /^CapabilityBoundingSet=/ nextgroup=sdCapNameList
syn match sdExecKey contained /^Capabilities=/ nextgroup=sdCapability,sdErr
syn match sdExecKey contained /^UMask=/ nextgroup=sdOctal,sdErr
syn match sdExecKey contained /^StandardInput=/ nextgroup=sdStdin,sdErr
syn match sdExecKey contained /^Standard\%(Output\|Error\)=/ nextgroup=sdStdout,sdErr
syn match sdExecKey contained /^SecureBits=/ nextgroup=sdSecureBitList
syn match sdExecKey contained /^SyslogFacility=/ nextgroup=sdSyslogFacil,sdErr
syn match sdExecKey contained /^SyslogLevel=/ nextgroup=sdSyslogLevel,sdErr
syn match sdExecKey contained /^IOSchedulingClass=/ nextgroup=sdIOSchedClass,sdErr
syn match sdExecKey contained /^IOSchedulingPriority=/ nextgroup=sdIOSchedPrio,sdErr
syn match sdExecKey contained /^CPUSchedulingPolicy=/ nextgroup=sdCPUSchedPol,sdErr
syn match sdExecKey contained /^MountFlags=/ nextgroup=sdMountFlags,sdErr
syn match sdExecKey contained /^Environment=/ nextgroup=sdEnvDefs
syn match sdExecKey contained /^EnvironmentFile=-\=/ contains=sdEnvDashFlag nextgroup=sdFilename,sdErr
syn match sdExecFlag contained /-\=@\=/ nextgroup=sdExecFile,sdErr
syn match sdExecFile contained /\/\S\+/ nextgroup=sdExecArgs
syn match sdExecArgs contained /.*/ contains=sdEnvArg
syn match sdEnvDefs contained /.*/ contains=sdEnvDef
syn match sdEnvDashFlag contained /-/ nextgroup=sdFilename,sdErr
syn match sdEnvDef contained /\i\+=/he=e-1
syn match sdFileList contained /.*/ contains=sdFilename,sdErr
" CAPABILITIES WOOO {{{
syn case ignore
syn match sdCapNameList contained /.*/ contains=sdAnyCapName,sdErr
syn match sdAnyCapName contained /CAP_[A-Z_]\+\s*/ contains=sdCapName
syn keyword sdCapName contained CAP_AUDIT_CONTROL CAP_AUDIT_WRITE CAP_CHOWN CAP_DAC_OVERRIDE CAP_DAC_READ_SEARCH
syn keyword sdCapName contained CAP_FOWNER CAP_FSETID CAP_IPC_LOCK CAP_IPC_OWNER CAP_KILL CAP_LEASE
syn keyword sdCapName contained CAP_LINUX_IMMUTABLE CAP_MAC_ADMIN CAP_MAC_OVERRIDE CAP_MKNOD
syn keyword sdCapName contained CAP_NET_ADMIN CAP_NET_BIND_SERVICE CAP_NET_BROADCAST CAP_NET_RAW
syn keyword sdCapName contained CAP_SETGID CAP_SETFCAP CAP_SETPCAP CAP_SETUID
syn keyword sdCapName contained CAP_SYS_ADMIN CAP_SYS_BOOT CAP_SYS_CHROOT CAP_SYS_MODULE CAP_SYS_NICE CAP_SYS_PACCT
syn keyword sdCapName contained CAP_SYS_PTRACE CAP_SYS_RAWIO CAP_SYS_RESOURCE CAP_SYS_TIME CAP_SYS_TTY_CONFIG
syn case match
syn cluster sdCap contains=sdCapName,sdCapOps,sdCapFlags
syn match sdCapOps contained /[=+-]/
syn match sdCapFlags contained /\<[eip]\+/
syn match sdCapability contained /\%(\%([A-Za-z_]\+,\=\)*\|all\)\%(=[eip]*\|[+-][eip]\+\)\s*/ contains=@sdCap nextgroup=sdCapability,sdErr
"}}}
syn match sdDevAllow contained /\/\S\+\s\+/ nextgroup=sdDevAllowPerm
syn match sdDevAllowPerm contained /\S\+/ contains=sdDevAllowErr nextgroup=sdErr
syn match sdDevAllowErr contained /[^rwm]\+/
syn keyword sdStdin contained nextgroup=sdErr null tty-force tty-fail socket tty
syn match sdStdout contained nextgroup=sdErr /\%(syslog\|kmsg\|journal\)\%(+console\)\=/
syn keyword sdStdout contained nextgroup=sdErr inherit null tty socket
syn keyword sdSyslogFacil contained nextgroup=sdErr kern user mail daemon auth syslog lpr news uucp cron authpriv ftp
syn match sdSyslogFacil contained nextgroup=sdErr /\<local[0-7]\>/
syn keyword sdSyslogLevel contained nextgroup=sdErr emerg alert crit err warning notice info debug
syn keyword sdIOSchedClass contained nextgroup=sdErr 0 1 2 3 none realtime best-effort idle
syn keyword sdIOSchedPrio contained nextgroup=sdErr 0 1 2 3 4 5 6 7
syn keyword sdCPUSchedPol contained nextgroup=sdErr other batch idle fifo rr
syn keyword sdMountFlags contained nextgroup=sdErr shared slave private
syn match sdRlimit contained nextgroup=sdErr /\<\%(\d\+\|infinity\)\>/
syn keyword sdSecureBits contained nextgroup=sdErr keep-caps keep-caps-locked noroot noroot-locked no-setuid-fixup no-setuid-fixup-locked
" These are also shared by [Service|Socket|Mount|Swap], although they're not
" listed in systemd.exec(5)
syn match sdExecKey contained /^TimeoutSec=/ nextgroup=sdDuration,sdErr
syn match sdExecKey contained /^KillSignal=/ nextgroup=sdSignal,sdOtherSignal,sdErr
syn match sdExecKey contained /^SendSIGKill=/ nextgroup=sdBool,sdErr
syn match sdExecKey contained /^KillMode=/ nextgroup=sdKillMode,sdErr
syn keyword sdSignal contained nextgroup=sdErr SIGHUP SIGINT SIGQUIT SIGKILL SIGTERM SIGUSR1 SIGUSR2
syn match sdOtherSignal contained nextgroup=sdErr /\<\%(\d\+\|SIG[A-Z]\{2,6}\)\>/
syn match sdKillMode contained nextgroup=sdErr /\%(control-group\|process\|none\)/
" [Service] {{{1
syn region sdServiceBlock matchgroup=sdHeader start=/^\[Service\]/ end=/^\[/me=e-2 contains=sdServiceKey,sdExecKey
syn match sdServiceKey contained /^BusName=/
syn match sdServiceKey contained /^\%(RemainAfterExit\|GuessMainPID\|PermissionsStartOnly\|RootDirectoryStartOnly\|NonBlocking\|ControlGroupModify\)=/ nextgroup=sdBool,sdErr
syn match sdServiceKey contained /^\%(SysVStartPriority\|FsckPassNo\)=/ nextgroup=sdUInt,sdErr
syn match sdServiceKey contained /^\%(Restart\|Timeout\)Sec=/ nextgroup=sdDuration,sdErr
syn match sdServiceKey contained /^Sockets=/ nextgroup=sdUnitList
syn match sdServiceKey contained /^PIDFile=/ nextgroup=sdFilename,sdErr
syn match sdServiceKey contained /^Type=/ nextgroup=sdServiceType,sdErr
syn match sdServiceKey contained /^Restart=/ nextgroup=sdRestartType,sdErr
syn match sdServiceKey contained /^NotifyAccess=/ nextgroup=sdNotifyType,sdErr
syn keyword sdServiceType contained nextgroup=sdErr simple forking dbus oneshot notify idle
syn keyword sdRestartType contained nextgroup=sdErr no on-success on-failure on-abort always
syn keyword sdNotifyType contained nextgroup=sdErr none main all
" [Socket] {{{1
syn region sdSocketBlock matchgroup=sdHeader start=/^\[Socket\]/ end=/^\[/me=e-2 contains=sdSocketKey,sdExecKey
syn match sdSocketKey contained /^Listen\%(Stream\|Datagram\|SequentialPacket\|FIFO\|Special\|Netlink\|MessageQueue\)=/
syn match sdSocketKey contained /^Listen\%(FIFO\|Special\)=/ nextgroup=sdFilename,sdErr
syn match sdSocketKey contained /^\%(Socket\|Directory\)Mode=/ nextgroup=sdOctal,sdErr
syn match sdSocketKey contained /^\%(Backlog\|MaxConnections\|Priority\|ReceiveBuffer\|SendBuffer\|IPTTL\|Mark\|PipeSize\|MessageQueueMaxMessages\|MessageQueueMessageSize\)=/ nextgroup=sdUInt,sdErr
syn match sdSocketKey contained /^\%(Accept\|KeepAlive\|FreeBind\|Transparent\|Broadcast\)=/ nextgroup=sdBool,sdErr
syn match sdSocketKey contained /^BindToDevice=/
syn match sdSocketKey contained /^Service=/ nextgroup=sdUnitList
syn match sdSocketKey contained /^BindIPv6Only=/ nextgroup=sdBindIPv6,sdErr
syn match sdSocketKey contained /^IPTOS=/ nextgroup=sdIPTOS,sdUInt,sdErr
syn match sdSocketKey contained /^TCPCongestion=/ nextgroup=sdTCPCongest
syn keyword sdBindIPv6 contained nextgroup=sdErr default both ipv6-only
syn keyword sdIPTOS contained nextgroup=sdErr low-delay throughput reliability low-cost
syn keyword sdTCPCongest contained nextgroup=sdErr westwood veno cubic lp
" [Timer|Automount|Mount|Swap|Path] {{{1
" [Timer]
syn region sdTimerBlock matchgroup=sdHeader start=/^\[Timer\]/ end=/^\[/me=e-2 contains=sdTimerKey
syn match sdTimerKey contained /^On\%(Active\|Boot\|Startup\|UnitActive\|UnitInactive\)Sec=/ nextgroup=sdDuration,sdErr
syn match sdTimerKey contained /^Unit=/ nextgroup=sdUnitList
" [Automount]
syn region sdAutoMountBlock matchgroup=sdHeader start=/^\[Automount\]/ end=/^\[/me=e-2 contains=sdAutomountKey
syn match sdAutomountKey contained /^Where=/ nextgroup=sdFilename,sdErr
syn match sdAutomountKey contained /^DirectoryMode=/ nextgroup=sdOctal,sdErr
" [Mount]
syn region sdMountBlock matchgroup=sdHeader start=/^\[Mount\]/ end=/^\[/me=e-2 contains=sdMountKey,sdAutomountKey,sdExecKey
syn match sdMountKey contained /^\%(What\|Type\|Options\)=/
" [Swap]
syn region sdSwapBlock matchgroup=sdHeader start=/^\[Swap\]/ end=/^\[/me=e-2 contains=sdSwapKey,sdExecKey
syn match sdSwapKey contained /^What=/ nextgroup=sdFilename,sdErr
syn match sdSwapKey contained /^Priority=/ nextgroup=sdUInt,sdErr
" [Path]
syn region sdPathBlock matchgroup=sdHeader start=/^\[Path\]/ end=/^\[/me=e-2 contains=sdPathKey
syn match sdPathKey contained /^\%(PathExists\|PathExistsGlob\|PathChanged\|DirectoryNotEmpty\)=/ nextgroup=sdFilename,sdErr
syn match sdPathKey contained /^MakeDirectory=/ nextgroup=sdBool,sdErr
syn match sdPathKey contained /^DirectoryMode=/ nextgroup=sdOctal,sdErr
syn match sdPathKey contained /^Unit=/ nextgroup=sdUnitList
" Coloring definitions {{{1
hi def link sdComment Comment
hi def link sdTodo Todo
hi def link sdInclude PreProc
hi def link sdHeader Type
hi def link sdEnvArg PreProc
hi def link sdFormatStr Special
hi def link sdErr Error
hi def link sdEnvDef Identifier
hi def link sdUnitName PreProc
hi def link sdKey Statement
hi def link sdValue Constant
hi def link sdSymbol Special
" Coloring links: keys {{{1
" It'd be nice if this worked..
"hi def link sd.\+Key sdKey
hi def link sdUnitKey sdKey
hi def link sdInstallKey sdKey
hi def link sdExecKey sdKey
hi def link sdSocketKey sdKey
hi def link sdServiceKey sdKey
hi def link sdServiceCommonKey sdKey
hi def link sdTimerKey sdKey
hi def link sdMountKey sdKey
hi def link sdAutomountKey sdKey
hi def link sdSwapKey sdKey
hi def link sdPathKey sdKey
" Coloring links: constant values {{{1
hi def link sdInt sdValue
hi def link sdUInt sdValue
hi def link sdBool sdValue
hi def link sdOctal sdValue
hi def link sdDuration sdValue
hi def link sdVirtType sdValue
hi def link sdServiceType sdValue
hi def link sdNotifyType sdValue
hi def link sdSecurityType sdValue
hi def link sdSecureBits sdValue
hi def link sdMountFlags sdValue
hi def link sdKillMode sdValue
hi def link sdRestartType sdValue
hi def link sdSignal sdValue
hi def link sdStdin sdValue
hi def link sdStdout sdValue
hi def link sdSyslogFacil sdValue
hi def link sdSyslogLevel sdValue
hi def link sdIOSched sdValue
hi def link sdCPUSched sdValue
hi def link sdRlimit sdValue
hi def link sdCapName sdValue
hi def link sdDevAllowPerm sdValue
hi def link sdDevAllowErr Error
" Coloring links: symbols/flags {{{1
hi def link sdExecFlag sdSymbol
hi def link sdConditionFlag sdSymbol
hi def link sdEnvDashFlag sdSymbol
hi def link sdCapOps sdSymbol
hi def link sdCapFlags Identifier
"}}}
let b:current_syntax = "systemd"
" vim: fdm=marker

37
syntax/toml.vim Normal file
View File

@@ -0,0 +1,37 @@
" Language: TOML
" Maintainer: Caleb Spare <cespare@gmail.com>
" URL: http://github.com/cespare/vim-toml
" LICENSE: MIT
if exists("b:current_syntax")
finish
endif
syn match tomlEscape /\\[0tnr"\\]/ display
hi def link tomlEscape SpecialChar
syn region tomlString start=/"/ skip=/\\\\\|\\"/ end=/"/ contains=tomlEscape
hi def link tomlString String
syn match tomlInteger /\<-\?\d\+\>/ display
hi def link tomlInteger Number
syn match tomlFloat /\<-\?\d\+\.\d\+\>/ display
hi def link tomlFloat Float
syn match tomlBoolean /\<\%(true\|false\)\>/ display
hi def link tomlBoolean Boolean
syn match tomlDate /\d\{4\}-\d\{2\}-\d\{2\}T\d\{2\}:\d\{2\}:\d\{2\}Z/ display
hi def link tomlDate Constant
syn match tomlKeyGroup /^\s*\[.\+\]\s*\(#.*\)\?$/ contains=tomlComment
hi def link tomlKeyGroup Identifier
syn keyword tomlTodo TODO FIXME XXX BUG contained
hi def link tomlTodo Todo
syn match tomlComment /#.*/ contains=@Spell,tomlTodo
hi def link tomlComment Comment
let b:current_syntax = "toml"