mirror of
https://github.com/sheerun/vim-polyglot.git
synced 2025-11-08 11:33:52 -05:00
Compare commits
33 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
964107c604 | ||
|
|
c0560d6199 | ||
|
|
15db2d7120 | ||
|
|
4935f02217 | ||
|
|
438d222b95 | ||
|
|
90b24287de | ||
|
|
5f1223fbc5 | ||
|
|
a59f644d49 | ||
|
|
33dd4b2741 | ||
|
|
d6866fcced | ||
|
|
7208e89a13 | ||
|
|
56a815be94 | ||
|
|
45273d44d4 | ||
|
|
e961fa8037 | ||
|
|
1b61c48d46 | ||
|
|
8f483aee0f | ||
|
|
b36260d015 | ||
|
|
6c198a3ca9 | ||
|
|
a4c9223257 | ||
|
|
d681cb59d3 | ||
|
|
0b50acdddf | ||
|
|
daa6fc6958 | ||
|
|
610f4c5701 | ||
|
|
f3833f5a39 | ||
|
|
fe26a3a7e6 | ||
|
|
548f7d672a | ||
|
|
10b28c4175 | ||
|
|
95bc6710a4 | ||
|
|
94f72a68c3 | ||
|
|
9b3b092d15 | ||
|
|
959a2ffa3d | ||
|
|
d51b8fd17e | ||
|
|
fa57320919 |
37
README.md
37
README.md
@@ -5,14 +5,14 @@
|
||||
|
||||
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 **installs 40x faster** (unparallelized), as language packs are not submoduled, but merged.
|
||||
- It clones even faster as all unnecessary files are ignored (like enormous documentation from php support).
|
||||
- Best syntax and indentation support. If someone releases better language pack, it will be replaced here.
|
||||
- No support for esoteric languages (vim-polyglot supports modern ones like `slim` though).
|
||||
- Each build is tested by automated Travis CI setup using vimrunner gem. Spee `spec` directory.
|
||||
- It **installs 50+ times faster** than 50+ packages it consist of.
|
||||
- Solid syntax and indentation support. Only the best language packs.
|
||||
- All unnecessary files are ignored (like enormous documentation from php support).
|
||||
- No support for esoteric languages, only most popular ones (modern too, like `slim`).
|
||||
- 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.
|
||||
|
||||
@@ -25,38 +25,43 @@ Optionally download one of the [releases](https://github.com/sheerun/vim-polyglo
|
||||
|
||||
## 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/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)
|
||||
- [coffee-script](https://github.com/kchmck/vim-coffee-script) (syntax, indent, compiler, autoload, ftplugin, ftdetect)
|
||||
- [css-color](https://github.com/gorodinskiy/vim-coloresque) (syntax)
|
||||
- [csv](https://github.com/chrisbra/csv.vim) (syntax, ftplugin, ftdetect)
|
||||
- [cucumber](https://github.com/tpope/vim-cucumber) (syntax, indent, compiler, ftplugin, ftdetect)
|
||||
- [dockerfile](https://github.com/honza/dockerfile.vim) (syntax, 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)
|
||||
- [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)
|
||||
- [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)
|
||||
- [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)
|
||||
- [jasmine](https://github.com/glanotte/vim-jasmine) (syntax, ftdetect)
|
||||
- [javascript](https://github.com/pangloss/vim-javascript) (syntax, indent, ftdetect)
|
||||
- [json](https://github.com/leshill/vim-json) (syntax, ftdetect)
|
||||
- [jst](https://github.com/briancollins/vim-jst) (syntax, indent, ftdetect)
|
||||
- [latex](https://github.com/LaTeX-Box-Team/LaTeX-Box) (syntax, indent, ftplugin)
|
||||
- [less](https://github.com/groenewege/vim-less) (syntax, indent, ftplugin, ftdetect)
|
||||
- [liquid](https://github.com/tpope/vim-liquid) (syntax, indent, ftplugin, ftdetect)
|
||||
- [markdown](https://github.com/tpope/vim-markdown) (syntax, ftplugin, ftdetect)
|
||||
- [nginx](https://github.com/mutewinter/nginx.vim) (syntax, ftdetect)
|
||||
- [ocaml](https://github.com/jrk/vim-ocaml) (syntax, indent, ftplugin)
|
||||
- [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)
|
||||
- [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)
|
||||
- [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)
|
||||
- [rspec](https://github.com/sheerun/rspec.vim) (syntax, ftdetect)
|
||||
- [ruby](https://github.com/vim-ruby/vim-ruby) (syntax, indent, compiler, autoload, ftplugin, ftdetect)
|
||||
@@ -65,13 +70,17 @@ Optionally download one of the [releases](https://github.com/sheerun/vim-polyglo
|
||||
- [scala](https://github.com/derekwyatt/vim-scala) (syntax, indent, ftplugin, ftdetect)
|
||||
- [slim](https://github.com/slim-template/vim-slim) (syntax, indent, 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)
|
||||
- [tmux](https://github.com/acustodioo/vim-tmux) (syntax, ftdetect)
|
||||
- [tomdoc](https://github.com/duwanis/tomdoc.vim) (syntax)
|
||||
- [typescript](https://github.com/leafgarland/typescript-vim) (syntax, compiler, ftplugin, ftdetect)
|
||||
- [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)
|
||||
- [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
|
||||
|
||||
|
||||
16
after/ftplugin/puppet.vim
Normal file
16
after/ftplugin/puppet.vim
Normal file
@@ -0,0 +1,16 @@
|
||||
if !exists('g:puppet_align_hashes')
|
||||
let g:puppet_align_hashes = 1
|
||||
endif
|
||||
|
||||
if g:puppet_align_hashes && exists(':Tabularize')
|
||||
inoremap <buffer> <silent> > ><Esc>:call <SID>puppetalign()<CR>a
|
||||
function! s:puppetalign()
|
||||
let p = '^\s*\w+\s*[=+]>.*$'
|
||||
let column = strlen(substitute(getline('.')[0:col('.')],'\([^=]\|=[^>]\)','','g'))
|
||||
let position = strlen(matchstr(getline('.')[0:col('.')],'.*=>\s*\zs.*'))
|
||||
Tabularize /=>/l1
|
||||
normal! 0
|
||||
echo repeat('\([^=]\|=[^>]\)*=>',column).'\s\{-\}'.repeat('.',position)
|
||||
call search(repeat('\([^=]\|=[^>]\)*=>',column).'\s\{-\}'.repeat('.',position),'ce',line('.'))
|
||||
endfunction
|
||||
endif
|
||||
303
after/syntax/c.vim
Normal file
303
after/syntax/c.vim
Normal file
@@ -0,0 +1,303 @@
|
||||
" Vim syntax file
|
||||
" Language: C Additions
|
||||
" Maintainer: Jon Haggblad <jon@haeggblad.com>
|
||||
" URL: http://www.haeggblad.com
|
||||
" Last Change: 9 Aug 2014
|
||||
" Version: 0.1
|
||||
" Changelog:
|
||||
" 0.1 - initial version.
|
||||
"
|
||||
" Syntax highlighting for functions in C.
|
||||
"
|
||||
" Based on:
|
||||
" http://stackoverflow.com/questions/736701/class-function-names-highlighting-in-vim
|
||||
|
||||
" -----------------------------------------------------------------------------
|
||||
" Highlight Class and Function names.
|
||||
" -----------------------------------------------------------------------------
|
||||
syn match cCustomParen "(" contains=cParen contains=cCppParen
|
||||
syn match cCustomFunc "\w\+\s*(\@=" contains=cCustomParen
|
||||
syn match cCustomScope "::"
|
||||
syn match cCustomClass "\w\+\s*::" contains=cCustomScope
|
||||
|
||||
hi def link cCustomFunc Function
|
||||
|
||||
" 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
|
||||
|
||||
@@ -2,14 +2,16 @@
|
||||
" Language: C++ Additions
|
||||
" Maintainer: Jon Haggblad <jon@haeggblad.com>
|
||||
" URL: http://www.haeggblad.com
|
||||
" Last Change: 17 May 2013
|
||||
" Version: 0.1
|
||||
" Last Change: 21 Apr 2014
|
||||
" Version: 0.3
|
||||
" Changelog:
|
||||
" 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)
|
||||
"
|
||||
" 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
|
||||
" adds highlighting of (user defined) functions and the containers and types
|
||||
" in the standard library / boost.
|
||||
@@ -53,6 +55,10 @@ hi def link cCustomFunc Function
|
||||
" http://www.vim.org/scripts/script.php?script_id=1640
|
||||
" -----------------------------------------------------------------------------
|
||||
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 digits10
|
||||
syntax keyword cppSTLconstant eofbit
|
||||
@@ -81,6 +87,10 @@ syntax keyword cppSTLconstant radix
|
||||
syntax keyword cppSTLconstant round_style
|
||||
syntax keyword cppSTLconstant tinyness_before
|
||||
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_array_new_length
|
||||
syntax keyword cppSTLexception bad_exception
|
||||
@@ -139,6 +149,7 @@ syntax keyword cppSTLfunction atexit
|
||||
syntax keyword cppSTLfunction atof
|
||||
syntax keyword cppSTLfunction atoi
|
||||
syntax keyword cppSTLfunction atol
|
||||
syntax keyword cppSTLfunction atoll
|
||||
syntax keyword cppSTLfunction back
|
||||
syntax keyword cppSTLfunction back_inserter
|
||||
syntax keyword cppSTLfunction bad
|
||||
@@ -155,12 +166,9 @@ syntax keyword cppSTLfunction bsearch
|
||||
syntax keyword cppSTLfunction calloc
|
||||
syntax keyword cppSTLfunction capacity
|
||||
syntax keyword cppSTLfunction ceil
|
||||
syntax keyword cppSTLfunction cerr
|
||||
syntax keyword cppSTLfunction cin
|
||||
syntax keyword cppSTLfunction clear
|
||||
syntax keyword cppSTLfunction clearerr
|
||||
syntax keyword cppSTLfunction clock
|
||||
syntax keyword cppSTLfunction clog
|
||||
syntax keyword cppSTLfunction close
|
||||
syntax keyword cppSTLfunction compare
|
||||
syntax keyword cppSTLfunction conj
|
||||
@@ -171,7 +179,6 @@ syntax keyword cppSTLfunction cos
|
||||
syntax keyword cppSTLfunction cosh
|
||||
syntax keyword cppSTLfunction count
|
||||
syntax keyword cppSTLfunction count_if
|
||||
syntax keyword cppSTLfunction cout
|
||||
syntax keyword cppSTLfunction c_str
|
||||
syntax keyword cppSTLfunction ctime
|
||||
syntax keyword cppSTLfunction data
|
||||
@@ -312,7 +319,7 @@ syntax keyword cppSTLfunction norm
|
||||
syntax keyword cppSTLfunction not1
|
||||
syntax keyword cppSTLfunction not2
|
||||
syntax keyword cppSTLfunction nth_element
|
||||
syntax keyword cppSTLfunction numeric_limits
|
||||
syntax keyword cppSTLtype numeric_limits
|
||||
syntax keyword cppSTLfunction open
|
||||
syntax keyword cppSTLfunction partial_sort
|
||||
syntax keyword cppSTLfunction partial_sort_copy
|
||||
@@ -423,8 +430,11 @@ syntax keyword cppSTLfunction strrchr
|
||||
syntax keyword cppSTLfunction strspn
|
||||
syntax keyword cppSTLfunction strstr
|
||||
syntax keyword cppSTLfunction strtod
|
||||
syntax keyword cppSTLfunction strtof
|
||||
syntax keyword cppSTLfunction strtok
|
||||
syntax keyword cppSTLfunction strtol
|
||||
syntax keyword cppSTLfunction strtold
|
||||
syntax keyword cppSTLfunction strtoll
|
||||
syntax keyword cppSTLfunction strtoul
|
||||
syntax keyword cppSTLfunction strxfrm
|
||||
syntax keyword cppSTLfunction substr
|
||||
@@ -440,7 +450,6 @@ syntax keyword cppSTLfunction tellg
|
||||
syntax keyword cppSTLfunction tellp
|
||||
syntax keyword cppSTLfunction test
|
||||
syntax keyword cppSTLfunction time
|
||||
syntax keyword cppSTLfunction time_t
|
||||
syntax keyword cppSTLfunction tmpfile
|
||||
syntax keyword cppSTLfunction tmpnam
|
||||
syntax keyword cppSTLfunction tolower
|
||||
@@ -462,7 +471,6 @@ syntax keyword cppSTLfunction unique_copy
|
||||
syntax keyword cppSTLfunction unsetf
|
||||
syntax keyword cppSTLfunction upper_bound
|
||||
syntax keyword cppSTLfunction va_arg
|
||||
syntax keyword cppSTLfunction va_arg
|
||||
syntax keyword cppSTLfunction va_copy
|
||||
syntax keyword cppSTLfunction va_end
|
||||
syntax keyword cppSTLfunction value_comp
|
||||
@@ -539,12 +547,18 @@ syntax keyword cppSTLnamespace rel_ops
|
||||
syntax keyword cppSTLnamespace std
|
||||
syntax keyword cppSTLtype allocator
|
||||
syntax keyword cppSTLtype auto_ptr
|
||||
syntax keyword cppSTLtype basic_filebuf
|
||||
syntax keyword cppSTLtype basic_fstream
|
||||
syntax keyword cppSTLtype basic_ifstream
|
||||
syntax keyword cppSTLtype basic_iostream
|
||||
syntax keyword cppSTLtype basic_istream
|
||||
syntax keyword cppSTLtype basic_istringstream
|
||||
syntax keyword cppSTLtype basic_ofstream
|
||||
syntax keyword cppSTLtype basic_ostream
|
||||
syntax keyword cppSTLtype basic_ostringstream
|
||||
syntax keyword cppSTLtype basic_streambuf
|
||||
syntax keyword cppSTLtype basic_string
|
||||
syntax keyword cppSTLtype basic_stringbuf
|
||||
syntax keyword cppSTLtype basic_stringstream
|
||||
syntax keyword cppSTLtype binary_compose
|
||||
syntax keyword cppSTLtype binder1st
|
||||
@@ -573,7 +587,11 @@ syntax keyword cppSTLtype ifstream
|
||||
syntax keyword cppSTLtype imaxdiv_t
|
||||
syntax keyword cppSTLtype indirect_array
|
||||
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 istrstream
|
||||
syntax keyword cppSTLtype iterator_traits
|
||||
syntax keyword cppSTLtype key_compare
|
||||
syntax keyword cppSTLtype key_type
|
||||
@@ -594,6 +612,7 @@ syntax keyword cppSTLtype off_type
|
||||
syntax keyword cppSTLtype ofstream
|
||||
syntax keyword cppSTLtype ostream
|
||||
syntax keyword cppSTLtype ostringstream
|
||||
syntax keyword cppSTLtype ostrstream
|
||||
syntax keyword cppSTLtype pair
|
||||
syntax keyword cppSTLtype pointer
|
||||
syntax keyword cppSTLtype pointer_to_binary_function
|
||||
@@ -610,11 +629,15 @@ syntax keyword cppSTLtype size_type
|
||||
syntax keyword cppSTLtype slice_array
|
||||
syntax keyword cppSTLtype stack
|
||||
syntax keyword cppSTLtype stream
|
||||
syntax keyword cppSTLtype streambuf
|
||||
syntax keyword cppSTLtype string
|
||||
syntax keyword cppSTLtype stringbuf
|
||||
syntax keyword cppSTLtype stringstream
|
||||
syntax keyword cppSTLtype strstream
|
||||
syntax keyword cppSTLtype strstreambuf
|
||||
syntax keyword cppSTLtype temporary_buffer
|
||||
syntax keyword cppSTLtype test_type
|
||||
syntax keyword cppSTLtype time_t
|
||||
syntax keyword cppSTLtype tm
|
||||
syntax keyword cppSTLtype traits_type
|
||||
syntax keyword cppSTLtype type_info
|
||||
@@ -626,15 +649,98 @@ syntax keyword cppSTLtype valarray
|
||||
syntax keyword cppSTLtype value_compare
|
||||
syntax keyword cppSTLtype value_type
|
||||
syntax keyword cppSTLtype vector
|
||||
syntax keyword cppSTLtype wfilebuf
|
||||
syntax keyword cppSTLtype wfstream
|
||||
syntax keyword cppSTLtype wifstream
|
||||
syntax keyword cppSTLtype wiostream
|
||||
syntax keyword cppSTLtype wistream
|
||||
syntax keyword cppSTLtype wistringstream
|
||||
syntax keyword cppSTLtype wofstream
|
||||
syntax keyword cppSTLtype wostream
|
||||
syntax keyword cppSTLtype wostringstream
|
||||
syntax keyword cppSTLtype wstreambuf
|
||||
syntax keyword cppSTLtype wstring
|
||||
syntax keyword cppSTLtype wstringbuf
|
||||
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")
|
||||
syntax keyword cppSTLtype nullptr_t max_align_t
|
||||
syntax keyword cppSTLtype type_index
|
||||
@@ -727,6 +833,10 @@ if !exists("cpp_no_cpp11")
|
||||
syntax keyword cppSTLtype integral_constant
|
||||
syntax keyword cppSTLtype true_type
|
||||
syntax keyword cppSTLtype false_type
|
||||
syntax keyword cppSTLfunction declval
|
||||
|
||||
syntax keyword cppSTLconstant piecewise_construct
|
||||
syntax keyword cppSTLtype piecewise_construct_t
|
||||
|
||||
" memory
|
||||
syntax keyword cppSTLtype unique_ptr
|
||||
@@ -751,6 +861,12 @@ if !exists("cpp_no_cpp11")
|
||||
syntax keyword cppSTLtype pointer_traits
|
||||
syntax keyword cppSTLfunction addressof
|
||||
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
|
||||
syntax keyword cppSTLfunction bind
|
||||
@@ -776,6 +892,7 @@ if !exists("cpp_no_cpp11")
|
||||
syntax keyword cppSTLfunction quick_exit
|
||||
syntax keyword cppSTLfunction _Exit
|
||||
syntax keyword cppSTLfunction at_quick_exit
|
||||
syntax keyword cppSTLfunction forward
|
||||
|
||||
" date and time
|
||||
syntax keyword cppSTLnamespace chrono
|
||||
@@ -784,6 +901,8 @@ if !exists("cpp_no_cpp11")
|
||||
syntax keyword cppSTLtype steady_clock
|
||||
syntax keyword cppSTLtype high_resolution_clock
|
||||
syntax keyword cppSTLtype time_point
|
||||
syntax keyword cppSTLcast duration_cast
|
||||
syntax keyword cppSTLcast time_point_cast
|
||||
|
||||
" tuple
|
||||
syntax keyword cppSTLtype tuple
|
||||
@@ -842,6 +961,7 @@ if !exists("cpp_no_cpp11")
|
||||
syntax keyword cppSTLfunction copy_if
|
||||
syntax keyword cppSTLfunction copy_n
|
||||
syntax keyword cppSTLfunction move
|
||||
syntax keyword cppSTLfunction move_if_noexcept
|
||||
syntax keyword cppSTLfunction move_backward
|
||||
syntax keyword cppSTLfunction shuffle
|
||||
syntax keyword cppSTLfunction is_partitioned
|
||||
@@ -968,6 +1088,7 @@ if !exists("cpp_no_cpp11")
|
||||
|
||||
" locale
|
||||
syntax keyword cppSTLfunction isblank
|
||||
syntax keyword cppSTLfunction iswblank
|
||||
syntax keyword cppSTLtype wstring_convert
|
||||
syntax keyword cppSTLtype wbuffer_convert
|
||||
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_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 cppSTLfunction atomic_init
|
||||
syntax keyword cppSTLfunction ATOMIC_VAR_INIT
|
||||
syntax keyword cppSTLconstant ATOMIC_FLAG_INIT
|
||||
syntax keyword cppSTLconstant kill_dependency
|
||||
syntax keyword cppSTLconstant atomic_thread_fence
|
||||
syntax keyword cppSTLconstant atomic_signal_fence
|
||||
syntax keyword cppSTLfunction kill_dependency
|
||||
syntax keyword cppSTLfunction atomic_thread_fence
|
||||
syntax keyword cppSTLfunction atomic_signal_fence
|
||||
|
||||
" thread
|
||||
syntax keyword cppSTLtype thread
|
||||
syntax keyword cppSTLnamespace this_thread
|
||||
syntax keyword cppSTLfunction yield
|
||||
syntax keyword cppSTLfunction get_id
|
||||
syntax keyword cppSTLfunction sleep_for
|
||||
@@ -1061,8 +1221,8 @@ if !exists("cpp_no_cpp11")
|
||||
syntax keyword cppSTLtype future
|
||||
syntax keyword cppSTLtype shared_future
|
||||
|
||||
"syntax keyword cppSTLfunction async
|
||||
"syntax keyword cppSTLenum launch
|
||||
syntax keyword cppSTLfunction async
|
||||
syntax keyword cppSTLenum launch
|
||||
|
||||
syntax keyword cppSTLenum future_status
|
||||
syntax keyword cppSTLenum future_errc
|
||||
@@ -1114,7 +1274,50 @@ if !exists("cpp_no_cpp11")
|
||||
|
||||
"limits
|
||||
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
|
||||
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>
|
||||
endif
|
||||
HiLink cppSTLfunction Function
|
||||
HiLink cppSTLfunctional Type
|
||||
HiLink cppSTLfunctional Typedef
|
||||
HiLink cppSTLconstant Constant
|
||||
HiLink cppSTLnamespace Constant
|
||||
HiLink cppSTLtype Type
|
||||
HiLink cppSTLexception Type
|
||||
HiLink cppSTLiterator Type
|
||||
HiLink cppSTLiterator_tag Type
|
||||
HiLink cppSTLenum Type
|
||||
HiLink cppSTLtype Typedef
|
||||
HiLink cppSTLexception Exception
|
||||
HiLink cppSTLiterator Typedef
|
||||
HiLink cppSTLiterator_tag Typedef
|
||||
HiLink cppSTLenum Typedef
|
||||
HiLink cppSTLios Function
|
||||
HiLink cppSTLcast Statement " be consistent with official syntax
|
||||
delcommand HiLink
|
||||
endif
|
||||
|
||||
|
||||
6
after/syntax/css.vim
Normal file
6
after/syntax/css.vim
Normal 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', 'cssMediaBlock,cssFunction,cssDefinition,cssAttrRegion,cssComment')
|
||||
@@ -1,632 +0,0 @@
|
||||
" Name: Coloresque
|
||||
" Language: color preview in vim
|
||||
" Author: Gorodinskii Konstantin <gor.konstantin@gmail.com>
|
||||
" Licence: Vim license
|
||||
" Version: 0.9.5
|
||||
" based on
|
||||
" https://github.com/ap/vim-css-color
|
||||
" https://github.com/lilydjwg/colorizer
|
||||
" vim:et:ts=2 sw=2 sts=2
|
||||
|
||||
let s:hex={}
|
||||
let b:matchescache = {}
|
||||
let b:color_pattern = {}
|
||||
|
||||
let w:colorDictRegExp=''
|
||||
for i in range(0, 255)
|
||||
let s:hex[ printf( '%02x', i ) ] = i
|
||||
endfor
|
||||
|
||||
let s:black = '#000000'
|
||||
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 s:color_prefix = 'gui'
|
||||
let s:fg_color_calc = 'let color = "#" . toupper(a:color)'
|
||||
|
||||
function! s:RestoreColors()
|
||||
for part in keys(b:color_pattern)
|
||||
|
||||
"if b:color_pattern[part]=="ffffff"
|
||||
"echoe part
|
||||
"endif
|
||||
|
||||
call s:MatchColorValue(b:color_pattern[part], part)
|
||||
"echoe color
|
||||
"echoe b:color_pattern[color]
|
||||
"let group = 'cssColor' . tolower(strpart(b:color_pattern[part]["color"], 1))
|
||||
""exe 'syn match' group '/'.escape(pattern, '/').'/ contained'
|
||||
"exe 'syn cluster cssColors add='.group
|
||||
"exe 'hi' group s:color_prefix.'bg='.b:color_pattern[part]["bg"] s:color_prefix.'fg='.b:color_pattern[part]["fg"]
|
||||
|
||||
"if !exists('b:matchescache')
|
||||
"let b:matchescache={}
|
||||
"endif
|
||||
|
||||
"let b:matchescache[part] = matchadd(group, part, -1)
|
||||
endfor
|
||||
endfunction
|
||||
|
||||
function! s:MatchColorValue(color, part)
|
||||
if ! len(a:color) | return | endif
|
||||
|
||||
let group = 'cssColor' . tolower(a:color)
|
||||
|
||||
if !exists('b:color_pattern[a:part]')
|
||||
exe s:fg_color_calc
|
||||
exe 'syn cluster cssColors add='.group
|
||||
exe 'hi' group s:color_prefix.'bg='.color s:color_prefix.'fg='.s:FGForBG(a:color)
|
||||
let b:color_pattern[a:part] = a:color
|
||||
endif
|
||||
|
||||
if !exists('b:matchescache')
|
||||
let b:matchescache = {}
|
||||
elseif !exists('b:matchescache[a:part]')
|
||||
let b:matchescache[a:part] = matchadd(group, a:part, -1)
|
||||
endif
|
||||
|
||||
"call add(w:matchescache, matchadd(group, a:part, -1))
|
||||
|
||||
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:ClearMatches()
|
||||
call clearmatches()
|
||||
|
||||
if !exists('b:matchescache')
|
||||
return
|
||||
endif
|
||||
"for i in values(b:matchescache)
|
||||
"call matchdelete(i)
|
||||
"endfor
|
||||
unlet b:matchescache
|
||||
endfunction
|
||||
|
||||
function! s:VimCssInit(update)
|
||||
|
||||
if a:update==1
|
||||
call s:ClearMatches()
|
||||
endif
|
||||
:set isk+=-
|
||||
:set isk+=#
|
||||
:set isk+=.
|
||||
|
||||
if len(keys(b:color_pattern))>0
|
||||
call s:RestoreColors()
|
||||
return
|
||||
endif
|
||||
|
||||
"let b:matchescache = {}
|
||||
|
||||
call s:AdditionalColors()
|
||||
|
||||
"for i in range(1, line("$"))
|
||||
call s:PreviewCSSColor(join(getline(1,'$'), "\n"))
|
||||
"endfor
|
||||
|
||||
endfunction
|
||||
|
||||
function! s:AdditionalColors()
|
||||
"if exists('&b:colorDictRegExp')&&b:colorDictRegExp!=''
|
||||
"return
|
||||
"endif
|
||||
|
||||
" w3c Colors
|
||||
" plus extra colors
|
||||
let w:colorDict = {
|
||||
\'black': '#000000',
|
||||
\'red': '#ff0000',
|
||||
\'silver': '#c0c0c0',
|
||||
\'gray': '#808080',
|
||||
\'white': '#ffffff',
|
||||
\'maroon': '#800000',
|
||||
\'purple': '#800080',
|
||||
\'fuchsia': '#ff00ff',
|
||||
\'green': '#008000',
|
||||
\'lime': '#00ff00',
|
||||
\'olive': '#808000',
|
||||
\'yellow': '#ffff00',
|
||||
\'navy': '#000080',
|
||||
\'blue': '#0000ff',
|
||||
\'teal': '#008080',
|
||||
\'aqua': '#00ffff',
|
||||
\'aliceblue': '#f0f8ff',
|
||||
\'antiquewhite': '#faebd7',
|
||||
\'aquamarine': '#7fffd4',
|
||||
\'azure': '#f0ffff',
|
||||
\'beige': '#f5f5dc',
|
||||
\'bisque': '#ffe4c4',
|
||||
\'blanchedalmond': '#ffebcd',
|
||||
\'blueviolet': '#8a2be2',
|
||||
\'brown': '#a52a2a',
|
||||
\'burlywood': '#deb887',
|
||||
\'cadetblue': '#5f9ea0',
|
||||
\'chartreuse': '#7fff00',
|
||||
\'chocolate': '#d2691e',
|
||||
\'coral': '#ff7f50',
|
||||
\'cornflowerblue': '#6495ed',
|
||||
\'cornsilk': '#fff8dc',
|
||||
\'crimson': '#dc143c',
|
||||
\'cyan': '#00ffff',
|
||||
\'darkblue': '#00008b',
|
||||
\'darkcyan': '#008b8b',
|
||||
\'darkgoldenrod': '#b8860b',
|
||||
\'darkgray': '#a9a9a9',
|
||||
\'darkgreen': '#006400',
|
||||
\'darkgrey': '#a9a9a9',
|
||||
\'darkkhaki': '#bdb76b',
|
||||
\'darkmagenta': '#8b008b',
|
||||
\'darkolivegreen': '#556b2f',
|
||||
\'darkorchid': '#9932cc',
|
||||
\'darkred': '#8b0000',
|
||||
\'darksalmon': '#e9967a',
|
||||
\'darkseagreen': '#8fbc8f',
|
||||
\'darkslateblue': '#483d8b',
|
||||
\'darkslategray': '#2f4f4f',
|
||||
\'darkslategrey': '#2f4f4f',
|
||||
\'darkturquoise': '#00ced1',
|
||||
\'darkviolet': '#9400d3',
|
||||
\'darkorange': '#ff8c00',
|
||||
\'deeppink': '#ff1493',
|
||||
\'deepskyblue': '#00bfff',
|
||||
\'dimgray': '#696969',
|
||||
\'dimgrey': '#696969',
|
||||
\'dodgerblue': '#1e90ff',
|
||||
\'firebrick': '#b22222',
|
||||
\'floralwhite': '#fffaf0',
|
||||
\'forestgreen': '#228b22',
|
||||
\'gainsboro': '#dcdcdc',
|
||||
\'ghostwhite': '#f8f8ff',
|
||||
\'gold': '#ffd700',
|
||||
\'goldenrod': '#daa520',
|
||||
\'greenyellow': '#adff2f',
|
||||
\'grey': '#808080',
|
||||
\'honeydew': '#f0fff0',
|
||||
\'hotpink': '#ff69b4',
|
||||
\'indianred': '#cd5c5c',
|
||||
\'indigo': '#4b0082',
|
||||
\'ivory': '#fffff0',
|
||||
\'khaki': '#f0e68c',
|
||||
\'lavender': '#e6e6fa',
|
||||
\'lavenderblush': '#fff0f5',
|
||||
\'lawngreen': '#7cfc00',
|
||||
\'lemonchiffon': '#fffacd',
|
||||
\'lightblue': '#add8e6',
|
||||
\'lightcoral': '#f08080',
|
||||
\'lightcyan': '#e0ffff',
|
||||
\'lightgoldenrodyellow': '#fafad2',
|
||||
\'lightgray': '#d3d3d3',
|
||||
\'lightgreen': '#90ee90',
|
||||
\'lightgrey': '#d3d3d3',
|
||||
\'lightpink': '#ffb6c1',
|
||||
\'lightsalmon': '#ffa07a',
|
||||
\'lightseagreen': '#20b2aa',
|
||||
\'lightskyblue': '#87cefa',
|
||||
\'lightslategray': '#778899',
|
||||
\'lightslategrey': '#778899',
|
||||
\'lightsteelblue': '#b0c4de',
|
||||
\'lightyellow': '#ffffe0',
|
||||
\'limegreen': '#32cd32',
|
||||
\'linen': '#faf0e6',
|
||||
\'magenta': '#ff00ff',
|
||||
\'mediumaquamarine': '#66cdaa',
|
||||
\'mediumblue': '#0000cd',
|
||||
\'mediumorchid': '#ba55d3',
|
||||
\'mediumpurple': '#9370d8',
|
||||
\'mediumseagreen': '#3cb371',
|
||||
\'mediumslateblue': '#7b68ee',
|
||||
\'mediumspringgreen': '#00fa9a',
|
||||
\'mediumturquoise': '#48d1cc',
|
||||
\'mediumvioletred': '#c71585',
|
||||
\'midnightblue': '#191970',
|
||||
\'mintcream': '#f5fffa',
|
||||
\'mistyrose': '#ffe4e1',
|
||||
\'moccasin': '#ffe4b5',
|
||||
\'navajowhite': '#ffdead',
|
||||
\'oldlace': '#fdf5e6',
|
||||
\'olivedrab': '#6b8e23',
|
||||
\'orange': '#ffa500',
|
||||
\'orangered': '#ff4500',
|
||||
\'orchid': '#da70d6',
|
||||
\'palegoldenrod': '#eee8aa',
|
||||
\'palegreen': '#98fb98',
|
||||
\'paleturquoise': '#afeeee',
|
||||
\'palevioletred': '#d87093',
|
||||
\'papayawhip': '#ffefd5',
|
||||
\'peachpuff': '#ffdab9',
|
||||
\'peru': '#cd853f',
|
||||
\'pink': '#ffc0cb',
|
||||
\'plum': '#dda0dd',
|
||||
\'powderblue': '#b0e0e6',
|
||||
\'rosybrown': '#bc8f8f',
|
||||
\'royalblue': '#4169e1',
|
||||
\'saddlebrown': '#8b4513',
|
||||
\'salmon': '#fa8072',
|
||||
\'sandybrown': '#f4a460',
|
||||
\'seagreen': '#2e8b57',
|
||||
\'seashell': '#fff5ee',
|
||||
\'sienna': '#a0522d',
|
||||
\'skyblue': '#87ceeb',
|
||||
\'slateblue': '#6a5acd',
|
||||
\'slategray': '#708090',
|
||||
\'slategrey': '#708090',
|
||||
\'snow': '#fffafa',
|
||||
\'springgreen': '#00ff7f',
|
||||
\'steelblue': '#4682b4',
|
||||
\'tan': '#d2b48c',
|
||||
\'thistle': '#d8bfd8',
|
||||
\'tomato': '#ff6347',
|
||||
\'turquoise': '#40e0d0',
|
||||
\'violet': '#ee82ee',
|
||||
\'wheat': '#f5deb3',
|
||||
\'whitesmoke': '#f5f5f5',
|
||||
\'yellowgreen': '#9acd32'
|
||||
\}
|
||||
|
||||
"let w:colorDictRegExp = '\('
|
||||
for _color in keys(w:colorDict)
|
||||
"let w:colorDictRegExp.='\<'._color.'\>\|'
|
||||
call s:MatchColorValue(strpart(w:colorDict[tolower(_color)], 1), '\<\c'._color.'\>')
|
||||
endfor
|
||||
"let w:colorDictRegExp=strpart(w:colorDictRegExp, 0, len(w:colorDictRegExp)-2).'\)\c'
|
||||
endfunction
|
||||
|
||||
function! s:ProcessByLine(w)
|
||||
call s:PreviewCSSColor(getline(a:w))
|
||||
endfunction
|
||||
|
||||
function! s:PreviewCSSColor(str)
|
||||
"if !exists('&w:colorDictRegExp')
|
||||
"endif
|
||||
|
||||
let line=a:str "getline(a:w)
|
||||
let colorexps = {
|
||||
\ 'hex' : '#[0-9A-Fa-f]\{3\}\>\|#[0-9A-Fa-f]\{6\}\>',
|
||||
\ 'rgba' : 'rgba\?(\s*\(\d\{1,3}%\?\)\s*,\s*\(\d\{1,3}%\?\)\s*,\s*\(\d\{1,3}%\?\)\s*\%(,[^)]*\)\?)',
|
||||
\ 'hsla' : 'hsla\?(\s*\(\d\{1,3}%\?\)\s*,\s*\(\d\{1,3}%\?\)\s*,\s*\(\d\{1,3}%\?\)\s*\%(,[^)]*\)\?)'
|
||||
\ }
|
||||
"\ 'color': w:colorDictRegExp
|
||||
|
||||
"let foundcolor=''
|
||||
|
||||
for exp in keys(colorexps)
|
||||
let place=0
|
||||
|
||||
if exists("foundcolor")
|
||||
unlet foundcolor
|
||||
endif
|
||||
|
||||
while 1
|
||||
if exp=='rgba'||exp=='hsla'
|
||||
let foundcolor = matchlist(a:str, colorexps[exp], place)
|
||||
else
|
||||
let foundcolor = matchstr(a:str, colorexps[exp], place)
|
||||
endif
|
||||
|
||||
let place = matchend(a:str, colorexps[exp], place)
|
||||
|
||||
if empty(foundcolor)
|
||||
break
|
||||
endif
|
||||
|
||||
if exp=='hex'
|
||||
let part = foundcolor.'\>'
|
||||
else
|
||||
let part = foundcolor[0]
|
||||
endif
|
||||
|
||||
if exp=='hex'
|
||||
if len(foundcolor) == 4
|
||||
let foundcolor = substitute(foundcolor, '[[:xdigit:]]', '&&', 'g')
|
||||
endif
|
||||
call s:MatchColorValue(strpart(foundcolor, 1), part)
|
||||
elseif exp=='rgba'
|
||||
"TODO get rid of duplicated variables
|
||||
call s:MatchColorValue(s:HexForRGBValue(foundcolor[1], foundcolor[2], foundcolor[3]), part)
|
||||
elseif exp=='hsla'
|
||||
call s:MatchColorValue(s:HexForHSLValue(foundcolor[1], foundcolor[2], foundcolor[3]), part)
|
||||
endif
|
||||
endwhile
|
||||
endfor
|
||||
|
||||
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,', '' )
|
||||
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
|
||||
|
||||
"call s:VimCssInit(1)
|
||||
|
||||
":augroup css
|
||||
"au!
|
||||
autocmd CursorMovedI <buffer> silent call s:ProcessByLine('.')
|
||||
autocmd ColorScheme <buffer> silent call s:VimCssInit(1)
|
||||
autocmd BufEnter <buffer> silent call s:VimCssInit(1)
|
||||
":augroup END
|
||||
|
||||
"autocmd CursorMoved <buffer> silent call s:ProcessByLine('.')
|
||||
endif
|
||||
@@ -9,4 +9,10 @@ syn region coffeeScript start=#<script [^>]*type="text/coffeescript"[^>]*>#
|
||||
\ end=#</script>#me=s-1 keepend
|
||||
\ contains=@htmlCoffeeScript,htmlScriptTag,@htmlPreproc
|
||||
\ containedin=htmlHead
|
||||
syn include syntax/css/vim-coloresque.vim
|
||||
" 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
|
||||
|
||||
@@ -1 +1,6 @@
|
||||
syn include syntax/css/vim-coloresque.vim
|
||||
" 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,lessDefinition,lessComment')
|
||||
|
||||
@@ -18,3 +18,129 @@ syn match tomdocDescriptions +\s*Deprecated:+he=e-1 containedin=rubyComment cont
|
||||
hi default link tomdocDescriptions String
|
||||
hi default link tomdocKeywords String
|
||||
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
|
||||
|
||||
@@ -1 +1,6 @@
|
||||
syn include syntax/css/vim-coloresque.vim
|
||||
" 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')
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
syn include syntax/css/vim-coloresque.vim
|
||||
@@ -1 +1,6 @@
|
||||
syn include syntax/css/vim-coloresque.vim
|
||||
" 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')
|
||||
|
||||
@@ -2,3 +2,8 @@
|
||||
" \Cref, \cref, \cpageref, \labelcref, \labelcpageref
|
||||
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
|
||||
|
||||
" 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*\(\[.*\]\)\={.\{-}}"
|
||||
|
||||
@@ -1 +1,6 @@
|
||||
syn include syntax/css/vim-coloresque.vim
|
||||
" 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
559
autoload/css_color.vim
Normal 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
|
||||
@@ -1,103 +0,0 @@
|
||||
" Copyright 2011 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.
|
||||
"
|
||||
" This file provides a utility function that performs auto-completion of
|
||||
" package names, for use by other commands.
|
||||
|
||||
let s:goos = $GOOS
|
||||
let s:goarch = $GOARCH
|
||||
|
||||
if len(s:goos) == 0
|
||||
if exists('g:golang_goos')
|
||||
let s:goos = g:golang_goos
|
||||
elseif has('win32') || has('win64')
|
||||
let s:goos = 'windows'
|
||||
elseif has('macunix')
|
||||
let s:goos = 'darwin'
|
||||
else
|
||||
let s:goos = '*'
|
||||
endif
|
||||
endif
|
||||
|
||||
if len(s:goarch) == 0
|
||||
if exists('g:golang_goarch')
|
||||
let s:goarch = g:golang_goarch
|
||||
else
|
||||
let s:goarch = '*'
|
||||
endif
|
||||
endif
|
||||
|
||||
function! go#complete#PackageMembers(package, member)
|
||||
silent! let content = system('godoc ' . a:package)
|
||||
if v:shell_error || !len(content)
|
||||
return []
|
||||
endif
|
||||
let lines = filter(split(content, "\n"),"v:val !~ '^\\s\\+$'")
|
||||
try
|
||||
let mx1 = '^\s\+\(\S+\)\s\+=\s\+.*'
|
||||
let mx2 = '^\%(const\|var\|type\|func\) \([A-Z][^ (]\+\).*'
|
||||
let candidates =
|
||||
\ map(filter(copy(lines), 'v:val =~ mx1'), 'substitute(v:val, mx1, "\\1", "")')
|
||||
\ + map(filter(copy(lines), 'v:val =~ mx2'), 'substitute(v:val, mx2, "\\1", "")')
|
||||
return filter(candidates, '!stridx(v:val, a:member)')
|
||||
catch
|
||||
return []
|
||||
endtry
|
||||
endfunction
|
||||
|
||||
function! go#complete#Package(ArgLead, CmdLine, CursorPos)
|
||||
let dirs = []
|
||||
|
||||
let words = split(a:CmdLine, '\s\+', 1)
|
||||
if len(words) > 2
|
||||
" Complete package members
|
||||
return go#complete#PackageMembers(words[1], words[2])
|
||||
endif
|
||||
|
||||
if executable('go')
|
||||
let goroot = substitute(system('go env GOROOT'), '\n', '', 'g')
|
||||
if v:shell_error
|
||||
echomsg '\'go env GOROOT\' failed'
|
||||
endif
|
||||
else
|
||||
let goroot = $GOROOT
|
||||
endif
|
||||
|
||||
if len(goroot) != 0 && isdirectory(goroot)
|
||||
let dirs += [goroot]
|
||||
endif
|
||||
|
||||
let pathsep = ':'
|
||||
if s:goos == 'windows'
|
||||
let pathsep = ';'
|
||||
endif
|
||||
let workspaces = split($GOPATH, pathsep)
|
||||
if workspaces != []
|
||||
let dirs += workspaces
|
||||
endif
|
||||
|
||||
if len(dirs) == 0
|
||||
" should not happen
|
||||
return []
|
||||
endif
|
||||
|
||||
let ret = {}
|
||||
for dir in dirs
|
||||
" this may expand to multiple lines
|
||||
let root = split(expand(dir . '/pkg/' . s:goos . '_' . s:goarch), "\n")
|
||||
call add(root, expand(dir . '/src'))
|
||||
for r in root
|
||||
for i in split(globpath(r, a:ArgLead.'*'), "\n")
|
||||
if isdirectory(i)
|
||||
let i .= '/'
|
||||
elseif i !~ '\.a$'
|
||||
continue
|
||||
endif
|
||||
let i = substitute(substitute(i[len(r)+1:], '[\\]', '/', 'g'), '\.a$', '', 'g')
|
||||
let ret[i] = i
|
||||
endfor
|
||||
endfor
|
||||
endfor
|
||||
return sort(keys(ret))
|
||||
endfunction
|
||||
@@ -7,9 +7,51 @@
|
||||
" Last Change: 2010 Sep 25
|
||||
|
||||
if !exists('g:aria_attributes_complete')
|
||||
let g:aria_attributes_complete = 1
|
||||
let g:aria_attributes_complete = 1
|
||||
endif
|
||||
|
||||
" Distinguish between HTML versions.
|
||||
" To use with other HTML versions add another "elseif" condition to match
|
||||
" proper DOCTYPE.
|
||||
function! htmlcomplete#DetectOmniFlavor()
|
||||
if &filetype == 'xhtml'
|
||||
let b:html_omni_flavor = 'xhtml10s'
|
||||
else
|
||||
let b:html_omni_flavor = 'html5'
|
||||
endif
|
||||
let i = 1
|
||||
let line = ""
|
||||
while i < 10 && i < line("$")
|
||||
let line = getline(i)
|
||||
if line =~ '<!DOCTYPE.*\<DTD '
|
||||
break
|
||||
endif
|
||||
let i += 1
|
||||
endwhile
|
||||
if line =~ '<!DOCTYPE.*\<DTD ' " doctype line found above
|
||||
if line =~ ' HTML 3\.2'
|
||||
let b:html_omni_flavor = 'html32'
|
||||
elseif line =~ ' XHTML 1\.1'
|
||||
let b:html_omni_flavor = 'xhtml11'
|
||||
else " two-step detection with strict/frameset/transitional
|
||||
if line =~ ' XHTML 1\.0'
|
||||
let b:html_omni_flavor = 'xhtml10'
|
||||
elseif line =~ ' HTML 4\.01'
|
||||
let b:html_omni_flavor = 'html401'
|
||||
elseif line =~ ' HTML 4.0\>'
|
||||
let b:html_omni_flavor = 'html40'
|
||||
endif
|
||||
if line =~ '\<Transitional\>'
|
||||
let b:html_omni_flavor .= 't'
|
||||
elseif line =~ '\<Frameset\>'
|
||||
let b:html_omni_flavor .= 'f'
|
||||
else
|
||||
let b:html_omni_flavor .= 's'
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
endfunction
|
||||
|
||||
function! htmlcomplete#CompleteTags(findstart, base)
|
||||
if a:findstart
|
||||
" locate the start of the word
|
||||
@@ -160,18 +202,15 @@ function! htmlcomplete#CompleteTags(findstart, base)
|
||||
if exists("b:entitiescompl")
|
||||
unlet! b:entitiescompl
|
||||
|
||||
if !exists("b:html_doctype")
|
||||
call htmlcomplete#CheckDoctype()
|
||||
endif
|
||||
if !exists("b:html_omni")
|
||||
"runtime! autoload/xml/xhtml10s.vim
|
||||
call htmlcomplete#CheckDoctype()
|
||||
call htmlcomplete#LoadData()
|
||||
endif
|
||||
if g:aria_attributes_complete == 1 && !exists("b:aria_omni")
|
||||
call htmlcomplete#LoadAria()
|
||||
endif
|
||||
if g:aria_attributes_complete == 1 && !exists("b:aria_omni")
|
||||
call htmlcomplete#LoadAria()
|
||||
endif
|
||||
|
||||
let entities = b:html_omni['vimxmlentities']
|
||||
let entities = b:html_omni['vimxmlentities']
|
||||
|
||||
if len(a:base) == 1
|
||||
for m in entities
|
||||
@@ -462,16 +501,13 @@ function! htmlcomplete#CompleteTags(findstart, base)
|
||||
let entered_value = matchstr(attr, ".*=\\s*[\"']\\?\\zs.*")
|
||||
let values = []
|
||||
" Load data {{{
|
||||
if !exists("b:html_doctype")
|
||||
call htmlcomplete#CheckDoctype()
|
||||
endif
|
||||
if !exists("b:html_omni")
|
||||
"runtime! autoload/xml/xhtml10s.vim
|
||||
call htmlcomplete#CheckDoctype()
|
||||
call htmlcomplete#LoadData()
|
||||
endif
|
||||
if g:aria_attributes_complete == 1 && !exists("b:aria_omni")
|
||||
call htmlcomplete#LoadAria()
|
||||
endif
|
||||
if g:aria_attributes_complete == 1 && !exists("b:aria_omni")
|
||||
call htmlcomplete#LoadAria()
|
||||
endif
|
||||
" }}}
|
||||
if attrname == 'href'
|
||||
" Now we are looking for local anchors defined by name or id
|
||||
@@ -545,15 +581,13 @@ function! htmlcomplete#CompleteTags(findstart, base)
|
||||
let sbase = matchstr(context, '.*\ze\s.*')
|
||||
|
||||
" Load data {{{
|
||||
if !exists("b:html_doctype")
|
||||
call htmlcomplete#CheckDoctype()
|
||||
endif
|
||||
if !exists("b:html_omni")
|
||||
call htmlcomplete#CheckDoctype()
|
||||
call htmlcomplete#LoadData()
|
||||
endif
|
||||
if g:aria_attributes_complete == 1 && !exists("b:aria_omni")
|
||||
call htmlcomplete#LoadAria()
|
||||
endif
|
||||
if g:aria_attributes_complete == 1 && !exists("b:aria_omni")
|
||||
call htmlcomplete#LoadAria()
|
||||
endif
|
||||
" }}}
|
||||
|
||||
if has_key(b:html_omni, tag)
|
||||
@@ -651,16 +685,13 @@ function! htmlcomplete#CompleteTags(findstart, base)
|
||||
endif
|
||||
" }}}
|
||||
" Load data {{{
|
||||
if !exists("b:html_doctype")
|
||||
call htmlcomplete#CheckDoctype()
|
||||
endif
|
||||
if !exists("b:html_omni")
|
||||
"runtime! autoload/xml/xhtml10s.vim
|
||||
call htmlcomplete#CheckDoctype()
|
||||
call htmlcomplete#LoadData()
|
||||
endif
|
||||
if g:aria_attributes_complete == 1 && !exists("b:aria_omni")
|
||||
call htmlcomplete#LoadAria()
|
||||
endif
|
||||
if g:aria_attributes_complete == 1 && !exists("b:aria_omni")
|
||||
call htmlcomplete#LoadAria()
|
||||
endif
|
||||
" }}}
|
||||
" Tag completion {{{
|
||||
" Deal with tag completion.
|
||||
@@ -763,9 +794,9 @@ endfunction
|
||||
function! htmlcomplete#LoadData() " {{{
|
||||
if !exists("b:html_omni_flavor")
|
||||
if &filetype == 'html'
|
||||
let b:html_omni_flavor = 'html401t'
|
||||
let b:html_omni_flavor = 'html5'
|
||||
else
|
||||
let b:html_omni_flavor = 'xhtml10s'
|
||||
let b:html_omni_flavor = 'html5'
|
||||
endif
|
||||
endif
|
||||
" With that if we still have bloated memory but create new buffer
|
||||
@@ -785,61 +816,8 @@ function! htmlcomplete#CheckDoctype() " {{{
|
||||
else
|
||||
let old_flavor = ''
|
||||
endif
|
||||
let i = 1
|
||||
while i < 10 && i < line("$")
|
||||
let line = getline(i)
|
||||
if line =~ '<!DOCTYPE.*\<DTD HTML 3\.2'
|
||||
let b:html_omni_flavor = 'html32'
|
||||
let b:html_doctype = 1
|
||||
break
|
||||
elseif line =~ '<!DOCTYPE.*\<DTD HTML 4\.0 Transitional'
|
||||
let b:html_omni_flavor = 'html40t'
|
||||
let b:html_doctype = 1
|
||||
break
|
||||
elseif line =~ '<!DOCTYPE.*\<DTD HTML 4\.0 Frameset'
|
||||
let b:html_omni_flavor = 'html40f'
|
||||
let b:html_doctype = 1
|
||||
break
|
||||
elseif line =~ '<!DOCTYPE.*\<DTD HTML 4\.0'
|
||||
let b:html_omni_flavor = 'html40s'
|
||||
let b:html_doctype = 1
|
||||
break
|
||||
elseif line =~ '<!DOCTYPE.*\<DTD HTML 4\.01 Transitional'
|
||||
let b:html_omni_flavor = 'html401t'
|
||||
let b:html_doctype = 1
|
||||
break
|
||||
elseif line =~ '<!DOCTYPE.*\<DTD HTML 4\.01 Frameset'
|
||||
let b:html_omni_flavor = 'html401f'
|
||||
let b:html_doctype = 1
|
||||
break
|
||||
elseif line =~ '<!DOCTYPE.*\<DTD HTML 4\.01'
|
||||
let b:html_omni_flavor = 'html401s'
|
||||
let b:html_doctype = 1
|
||||
break
|
||||
elseif line =~ '<!DOCTYPE.*\<DTD XHTML 1\.0 Transitional'
|
||||
let b:html_omni_flavor = 'xhtml10t'
|
||||
let b:html_doctype = 1
|
||||
break
|
||||
elseif line =~ '<!DOCTYPE.*\<DTD XHTML 1\.0 Frameset'
|
||||
let b:html_omni_flavor = 'xhtml10f'
|
||||
let b:html_doctype = 1
|
||||
break
|
||||
elseif line =~ '<!DOCTYPE.*\<DTD XHTML 1\.0 Strict'
|
||||
let b:html_omni_flavor = 'xhtml10s'
|
||||
let b:html_doctype = 1
|
||||
break
|
||||
elseif line =~ '<!DOCTYPE.*\<DTD XHTML 1\.1'
|
||||
let b:html_omni_flavor = 'xhtml11'
|
||||
let b:html_doctype = 1
|
||||
break
|
||||
elseif line =~ '<!DOCTYPE html'
|
||||
let b:html_omni_flavor = 'html5'
|
||||
let b:html_doctype = 1
|
||||
break
|
||||
endif
|
||||
let i += 1
|
||||
endwhile
|
||||
if !exists("b:html_doctype")
|
||||
call htmlcomplete#DetectOmniFlavor()
|
||||
if !exists('b:html_omni_flavor')
|
||||
return
|
||||
else
|
||||
" Tie g:xmldata with b:html_omni this way we need to sourca data file only
|
||||
|
||||
225
autoload/rust.vim
Normal file
225
autoload/rust.vim
Normal file
@@ -0,0 +1,225 @@
|
||||
" Author: Kevin Ballard
|
||||
" Description: Helper functions for Rust commands/mappings
|
||||
" Last Modified: May 27, 2014
|
||||
|
||||
" Jump {{{1
|
||||
|
||||
function! 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>Jump_" . a:function . "()"
|
||||
let cnt = cnt - 1
|
||||
endwhile
|
||||
let &foldenable = foldenable
|
||||
endfunction
|
||||
|
||||
function! s:Jump_Back()
|
||||
call search('{', 'b')
|
||||
keepjumps normal! w99[{
|
||||
endfunction
|
||||
|
||||
function! s:Jump_Forward()
|
||||
normal! j0
|
||||
call search('{', 'b')
|
||||
keepjumps normal! w99[{%
|
||||
call search('{')
|
||||
endfunction
|
||||
|
||||
" Run {{{1
|
||||
|
||||
function! rust#Run(bang, args)
|
||||
if a:bang
|
||||
let idx = index(a:args, '--')
|
||||
if idx != -1
|
||||
let rustc_args = idx == 0 ? [] : a:args[:idx-1]
|
||||
let args = a:args[idx+1:]
|
||||
else
|
||||
let rustc_args = a:args
|
||||
let args = []
|
||||
endif
|
||||
else
|
||||
let rustc_args = []
|
||||
let args = a:args
|
||||
endif
|
||||
|
||||
let b:rust_last_rustc_args = rustc_args
|
||||
let b:rust_last_args = args
|
||||
|
||||
call s:WithPath(function("s:Run"), rustc_args, args)
|
||||
endfunction
|
||||
|
||||
function! s:Run(path, rustc_args, args)
|
||||
try
|
||||
let exepath = tempname()
|
||||
if has('win32')
|
||||
let exepath .= '.exe'
|
||||
endif
|
||||
|
||||
let rustc_args = [a:path, '-o', exepath] + a:rustc_args
|
||||
|
||||
let rustc = exists("g:rustc_path") ? g:rustc_path : "rustc"
|
||||
|
||||
let output = system(shellescape(rustc) . " " . join(map(rustc_args, 'shellescape(v:val)')))
|
||||
if output != ''
|
||||
echohl WarningMsg
|
||||
echo output
|
||||
echohl None
|
||||
endif
|
||||
if !v:shell_error
|
||||
exe '!' . shellescape(exepath) . " " . join(map(a:args, 'shellescape(v:val)'))
|
||||
endif
|
||||
finally
|
||||
if exists("exepath")
|
||||
silent! call delete(exepath)
|
||||
endif
|
||||
endtry
|
||||
endfunction
|
||||
|
||||
" Expand {{{1
|
||||
|
||||
function! rust#Expand(bang, args)
|
||||
if a:bang && !empty(a:args)
|
||||
let pretty = a:args[0]
|
||||
let args = a:args[1:]
|
||||
else
|
||||
let pretty = "expanded"
|
||||
let args = a:args
|
||||
endif
|
||||
call s:WithPath(function("s:Expand"), pretty, args)
|
||||
endfunction
|
||||
|
||||
function! s:Expand(path, pretty, args)
|
||||
try
|
||||
let rustc = exists("g:rustc_path") ? g:rustc_path : "rustc"
|
||||
|
||||
let args = [a:path, '--pretty', a:pretty] + a:args
|
||||
let output = system(shellescape(rustc) . " " . join(map(args, "shellescape(v:val)")))
|
||||
if v:shell_error
|
||||
echohl WarningMsg
|
||||
echo output
|
||||
echohl None
|
||||
else
|
||||
new
|
||||
silent put =output
|
||||
1
|
||||
d
|
||||
setl filetype=rust
|
||||
setl buftype=nofile
|
||||
setl bufhidden=hide
|
||||
setl noswapfile
|
||||
endif
|
||||
endtry
|
||||
endfunction
|
||||
|
||||
function! rust#CompleteExpand(lead, line, pos)
|
||||
if a:line[: a:pos-1] =~ '^RustExpand!\s*\S*$'
|
||||
" first argument and it has a !
|
||||
let list = ["normal", "expanded", "typed", "expanded,identified", "flowgraph="]
|
||||
if !empty(a:lead)
|
||||
call filter(list, "v:val[:len(a:lead)-1] == a:lead")
|
||||
endif
|
||||
return list
|
||||
endif
|
||||
|
||||
return glob(escape(a:lead, "*?[") . '*', 0, 1)
|
||||
endfunction
|
||||
|
||||
" Emit {{{1
|
||||
|
||||
function! rust#Emit(type, args)
|
||||
call s:WithPath(function("s:Emit"), a:type, a:args)
|
||||
endfunction
|
||||
|
||||
function! s:Emit(path, type, args)
|
||||
try
|
||||
let rustc = exists("g:rustc_path") ? g:rustc_path : "rustc"
|
||||
|
||||
let args = [a:path, '--emit', a:type, '-o', '-'] + a:args
|
||||
let output = system(shellescape(rustc) . " " . join(map(args, "shellescape(v:val)")))
|
||||
if v:shell_error
|
||||
echohl WarningMsg
|
||||
echo output
|
||||
echohl None
|
||||
else
|
||||
new
|
||||
silent put =output
|
||||
1
|
||||
d
|
||||
if a:type == "ir"
|
||||
setl filetype=llvm
|
||||
elseif a:type == "asm"
|
||||
setl filetype=asm
|
||||
endif
|
||||
setl buftype=nofile
|
||||
setl bufhidden=hide
|
||||
setl noswapfile
|
||||
endif
|
||||
endtry
|
||||
endfunction
|
||||
|
||||
" Utility functions {{{1
|
||||
|
||||
function! s:WithPath(func, ...)
|
||||
try
|
||||
let save_write = &write
|
||||
set write
|
||||
let path = expand('%')
|
||||
let pathisempty = empty(path)
|
||||
if pathisempty || !save_write
|
||||
" use a temporary file named 'unnamed.rs' inside a temporary
|
||||
" directory. This produces better error messages
|
||||
let tmpdir = tempname()
|
||||
call mkdir(tmpdir)
|
||||
|
||||
let save_cwd = getcwd()
|
||||
silent exe 'lcd' tmpdir
|
||||
|
||||
let path = 'unnamed.rs'
|
||||
|
||||
let save_mod = &mod
|
||||
set nomod
|
||||
|
||||
silent exe 'keepalt write! ' . path
|
||||
if pathisempty
|
||||
silent keepalt 0file
|
||||
endif
|
||||
else
|
||||
update
|
||||
endif
|
||||
|
||||
call call(a:func, [path] + a:000)
|
||||
finally
|
||||
if exists("save_mod") | let &mod = save_mod | endif
|
||||
if exists("save_write") | let &write = save_write | endif
|
||||
if exists("save_cwd") | silent exe 'lcd' save_cwd | endif
|
||||
if exists("tmpdir") | silent call s:RmDir(tmpdir) | endif
|
||||
endtry
|
||||
endfunction
|
||||
|
||||
function! rust#AppendCmdLine(text)
|
||||
call setcmdpos(getcmdpos())
|
||||
let cmd = getcmdline() . a:text
|
||||
return cmd
|
||||
endfunction
|
||||
|
||||
function! s:RmDir(path)
|
||||
" sanity check; make sure it's not empty, /, or $HOME
|
||||
if empty(a:path)
|
||||
echoerr 'Attempted to delete empty path'
|
||||
return 0
|
||||
elseif a:path == '/' || a:path == $HOME
|
||||
echoerr 'Attempted to delete protected path: ' . a:path
|
||||
return 0
|
||||
endif
|
||||
silent exe "!rm -rf " . shellescape(a:path)
|
||||
endfunction
|
||||
|
||||
" }}}1
|
||||
|
||||
" vim: set noet sw=4 ts=4:
|
||||
@@ -342,7 +342,7 @@ let abutton_dec = 'details\\|embed\\|iframe\\|keygen\\|label\\|menu\\|select\\|t
|
||||
|
||||
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'],
|
||||
\ 'vimxmlroot': ['html'],
|
||||
\ 'vimxmlroot': ['html', 'head', 'body'] + flow_elements,
|
||||
\ 'a': [
|
||||
\ filter(copy(flow_elements), "!(v:val =~ '". abutton_dec ."')"),
|
||||
\ extend(copy(global_attributes), {'name': [], 'href': [], 'target': [], 'rel': linktypes, 'hreflang': lang_tag, 'media': [], 'type': []})
|
||||
@@ -553,7 +553,7 @@ let g:xmldata_html5 = {
|
||||
\ ],
|
||||
\ 'input': [
|
||||
\ [],
|
||||
\ extend(copy(global_attributes), {'type': ['text', 'password', 'checkbox', 'radio', 'button', 'submit', 'reset', 'file', 'hidden', 'image', 'datetime', 'datetime-local', 'date', 'month', 'time', 'week', 'number', 'range', 'email', 'url', 'search', 'tel', 'coloe'], 'name': [], 'disabled': ['disabled', ''], 'form': [], 'maxlength': [], 'readonly': ['readonly', ''], 'size': [], 'value': [], 'autocomplete': ['on', 'off'], 'autofocus': ['autofocus', ''], 'list': [], 'pattern': [], 'required': ['required', ''], 'placeholder': [], 'checked': ['checked'], 'accept': [], 'multiple': ['multiple', ''], 'alt': [], 'src': [], 'height': [], 'width': [], 'min': [], 'max': [], 'step': [], 'formenctype': ['application/x-www-form-urlencoded', 'multipart/form-data', 'text/plain'], 'formmethod': ['get', 'post', 'put', 'delete'], 'formtarget': [], 'formnovalidate': ['formnovalidate', '']})
|
||||
\ extend(copy(global_attributes), {'type': ['text', 'password', 'checkbox', 'radio', 'button', 'submit', 'reset', 'file', 'hidden', 'image', 'datetime', 'datetime-local', 'date', 'month', 'time', 'week', 'number', 'range', 'email', 'url', 'search', 'tel', 'color'], 'name': [], 'disabled': ['disabled', ''], 'form': [], 'maxlength': [], 'readonly': ['readonly', ''], 'size': [], 'value': [], 'autocomplete': ['on', 'off'], 'autofocus': ['autofocus', ''], 'list': [], 'pattern': [], 'required': ['required', ''], 'placeholder': [], 'checked': ['checked'], 'accept': [], 'multiple': ['multiple', ''], 'alt': [], 'src': [], 'height': [], 'width': [], 'min': [], 'max': [], 'step': [], 'formenctype': ['application/x-www-form-urlencoded', 'multipart/form-data', 'text/plain'], 'formmethod': ['get', 'post', 'put', 'delete'], 'formtarget': [], 'formnovalidate': ['formnovalidate', '']})
|
||||
\ ],
|
||||
\ 'ins': [
|
||||
\ flow_elements,
|
||||
|
||||
27
build
27
build
@@ -3,6 +3,7 @@
|
||||
set -E
|
||||
|
||||
DIRS="syntax indent compiler autoload ftplugin ftdetect after/syntax after/indent after/ftplugin after/ftdetect"
|
||||
DIRS_BASIC="syntax indent ftdetect after/syntax after/indent after/ftdetect"
|
||||
|
||||
download() {
|
||||
for pack in $1; do
|
||||
@@ -21,10 +22,11 @@ extract() {
|
||||
name="$(printf "$pack" | cut -d ':' -f 1)"
|
||||
path="$(printf "$pack" | cut -d ':' -f 2)"
|
||||
dir="tmp/$(printf "$path" | cut -d '/' -f 2)"
|
||||
directories="DIRS$(printf "$pack" | cut -d ':' -f 3)"
|
||||
printf -- "- [$name](https://github.com/$path) ("
|
||||
|
||||
subdirs=""
|
||||
for subdir in $DIRS; do
|
||||
for subdir in ${!directories}; do
|
||||
if [ -d "$dir/$subdir" ]; then
|
||||
base="$(basename "$subdir")"
|
||||
if [[ "$subdirs" != *"$base"* ]]; then
|
||||
@@ -67,36 +69,45 @@ concat_ftdetect() {
|
||||
|
||||
PACKS="
|
||||
arduino:sudar/vim-arduino-syntax
|
||||
blade:xsbeats/vim-blade
|
||||
c++11:octol/vim-cpp-enhanced-highlight
|
||||
c/c++:vim-jp/cpp-vim
|
||||
c-extensions:kergoth/aftersyntaxc.vim
|
||||
clojure:guns/vim-clojure-static
|
||||
coffee-script:kchmck/vim-coffee-script
|
||||
css:JulesWang/css.vim
|
||||
csv:chrisbra/csv.vim
|
||||
cucumber:tpope/vim-cucumber
|
||||
dockerfile:honza/dockerfile.vim
|
||||
elixir:elixir-lang/vim-elixir
|
||||
emberscript:heartsentwined/vim-ember-script
|
||||
emblem:heartsentwined/vim-emblem
|
||||
erlang:oscarh/vimerl
|
||||
git:tpope/vim-git
|
||||
go:jnwhiteh/vim-golang
|
||||
go:fatih/vim-go:_BASIC
|
||||
haml:tpope/vim-haml
|
||||
handlebars:nono/vim-handlebars
|
||||
handlebars:mustache/vim-mustache-handlebars
|
||||
haskell:travitch/hasksyn
|
||||
haxe:yaymukund/vim-haxe
|
||||
html5:othree/html5.vim
|
||||
jade:digitaltoad/vim-jade
|
||||
jasmine:glanotte/vim-jasmine
|
||||
javascript:pangloss/vim-javascript
|
||||
json:leshill/vim-json
|
||||
jst:briancollins/vim-jst
|
||||
latex:LaTeX-Box-Team/LaTeX-Box
|
||||
less:groenewege/vim-less
|
||||
liquid:tpope/vim-liquid
|
||||
markdown:tpope/vim-markdown
|
||||
nginx:mutewinter/nginx.vim
|
||||
ocaml:jrk/vim-ocaml
|
||||
octave:vim-scripts/octave.vim--
|
||||
opencl:petRUShka/vim-opencl
|
||||
perl:vim-perl/vim-perl
|
||||
php:StanAngeloff/php.vim
|
||||
puppet:ajf/puppet-vim
|
||||
puppet:rodjek/vim-puppet
|
||||
protobuf:uarun/vim-protobuf
|
||||
python:vim-scripts/python.vim--Vasiliev
|
||||
python:mitsuhiko/vim-python-combined
|
||||
r-lang:vim-scripts/R.vim
|
||||
rspec:sheerun/rspec.vim
|
||||
ruby:vim-ruby/vim-ruby
|
||||
@@ -105,14 +116,18 @@ PACKS="
|
||||
scala:derekwyatt/vim-scala
|
||||
slim:slim-template/vim-slim
|
||||
stylus:wavded/vim-stylus
|
||||
systemd:kurayama/systemd-vim-syntax
|
||||
swift:toyamarinyon/vim-swift
|
||||
textile:timcharper/textile.vim
|
||||
tmux:acustodioo/vim-tmux
|
||||
tomdoc:duwanis/tomdoc.vim
|
||||
typescript:leafgarland/typescript-vim
|
||||
vbnet:vim-scripts/vbnet.vim
|
||||
toml:cespare/vim-toml
|
||||
twig:beyondwords/vim-twig
|
||||
xls:vim-scripts/XSLT-syntax
|
||||
css-color:gorodinskiy/vim-coloresque
|
||||
yard:sheerun/vim-yardoc
|
||||
css-color:ap/vim-css-color
|
||||
"
|
||||
|
||||
rm -rf tmp
|
||||
|
||||
@@ -1,30 +0,0 @@
|
||||
" 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
|
||||
@@ -15,7 +15,7 @@ endif
|
||||
let s:cpo_save = &cpo
|
||||
set cpo-=C
|
||||
|
||||
CompilerSet makeprg=haml\ -c
|
||||
CompilerSet makeprg=haml
|
||||
|
||||
CompilerSet errorformat=
|
||||
\Haml\ %trror\ on\ line\ %l:\ %m,
|
||||
|
||||
@@ -27,7 +27,11 @@ CompilerSet errorformat=
|
||||
\%\\s%#[%f:%l:\ %#%m,
|
||||
\%\\s%#%f:%l:\ %#%m,
|
||||
\%\\s%#%f:%l:,
|
||||
\%m\ [%f:%l]:
|
||||
\%m\ [%f:%l]:,
|
||||
\%+Erake\ aborted!,
|
||||
\%+EDon't\ know\ how\ to\ build\ task\ %.%#,
|
||||
\%+Einvalid\ option:%.%#,
|
||||
\%+Irake\ %\\S%\\+%\\s%\\+#\ %.%#
|
||||
|
||||
let &cpo = s:cpo_save
|
||||
unlet s:cpo_save
|
||||
|
||||
@@ -17,6 +17,8 @@ let s:cpo_save = &cpo
|
||||
set cpo-=C
|
||||
|
||||
CompilerSet makeprg=testrb
|
||||
" CompilerSet makeprg=ruby\ -Itest
|
||||
" CompilerSet makeprg=m
|
||||
|
||||
CompilerSet errorformat=\%W\ %\\+%\\d%\\+)\ Failure:,
|
||||
\%C%m\ [%f:%l]:,
|
||||
|
||||
@@ -15,7 +15,7 @@ endif
|
||||
let s:cpo_save = &cpo
|
||||
set cpo-=C
|
||||
|
||||
CompilerSet makeprg=sass\ -c
|
||||
CompilerSet makeprg=sass
|
||||
|
||||
CompilerSet errorformat=
|
||||
\%f:%l:%m\ (Sass::Syntax%trror),
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
au BufRead,BufNewFile *.ino,*.pde set filetype=arduino
|
||||
autocmd BufRead,BufNewFile *.blade.php set filetype=blade
|
||||
autocmd BufNewFile,BufRead *.clj,*.cljs,*.edn setlocal filetype=clojure
|
||||
autocmd BufNewFile,BufRead *.coffee set filetype=coffee
|
||||
autocmd BufNewFile,BufRead *Cakefile set filetype=coffee
|
||||
@@ -15,15 +16,16 @@ autocmd BufNewFile,BufReadPost *.feature,*.story set filetype=cucumber
|
||||
au BufNewFile,BufRead Dockerfile set filetype=dockerfile
|
||||
au BufRead,BufNewFile *.ex,*.exs set filetype=elixir
|
||||
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 *.emblem set filetype=emblem
|
||||
autocmd FileType emblem 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 */.config/git/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 .msg.[0-9]*
|
||||
\ if getline(1) =~ '^From.*# This line is ignored.$' |
|
||||
\ set ft=gitsendemail |
|
||||
\ endif
|
||||
autocmd BufNewFile,BufRead .gitsendemail.* set ft=gitsendemail
|
||||
autocmd BufNewFile,BufRead *.git/**
|
||||
\ if getline(1) =~ '^\x\{40\}\>\|^ref: ' |
|
||||
\ set ft=git |
|
||||
@@ -32,6 +34,10 @@ autocmd BufNewFile,BufRead,StdinReadPost *
|
||||
\ if getline(1) =~ '^\(commit\|tree\|object\) \x\{40\}\>\|^tag \S\+$' |
|
||||
\ set ft=git |
|
||||
\ endif
|
||||
autocmd BufNewFile,BufRead *
|
||||
\ if getline(1) =~ '^From \x\{40\} Mon Sep 17 00:00:00 2001$' |
|
||||
\ set filetype=gitsendemail |
|
||||
\ endif
|
||||
let s:current_fileformats = ''
|
||||
let s:current_fileencodings = ''
|
||||
function! s:gofiletype_pre()
|
||||
@@ -47,13 +53,12 @@ endfunction
|
||||
au BufNewFile *.go setlocal filetype=go fileencoding=utf-8 fileformat=unix
|
||||
au BufRead *.go call s:gofiletype_pre()
|
||||
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 *.scss setf scss
|
||||
if has("autocmd")
|
||||
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,BufRead *.hx setf haxe
|
||||
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 *.jsm setf javascript
|
||||
au BufNewFile,BufRead Jakefile setf javascript
|
||||
@@ -74,6 +79,18 @@ au BufNewFile,BufRead *.ejs set filetype=jst
|
||||
au BufNewFile,BufRead *.jst set filetype=jst
|
||||
au BufNewFile,BufRead *.hamljs set filetype=jst
|
||||
autocmd BufNewFile,BufRead *.less setf less
|
||||
au BufNewFile,BufRead *.liquid set ft=liquid
|
||||
au BufNewFile,BufRead */_layouts/*.html,*/_includes/*.html set ft=liquid
|
||||
au BufNewFile,BufRead *.html,*.xml,*.textile
|
||||
\ if getline(1) == '---' | set ft=liquid | endif
|
||||
au BufNewFile,BufRead *.markdown,*.mkd,*.mkdn,*.md
|
||||
\ if getline(1) == '---' |
|
||||
\ let b:liquid_subtype = 'markdown' |
|
||||
\ set ft=liquid |
|
||||
\ endif
|
||||
au BufNewFile,BufRead */templates/**.liquid,*/layout/**.liquid,*/snippets/**.liquid
|
||||
\ let b:liquid_subtype = 'html' |
|
||||
\ set ft=liquid |
|
||||
autocmd BufNewFile,BufRead *.markdown,*.md,*.mdown,*.mkd,*.mkdn
|
||||
\ if &ft =~# '^\%(conf\|modula2\)$' |
|
||||
\ set ft=markdown |
|
||||
@@ -84,30 +101,69 @@ autocmd BufRead *.html
|
||||
\ if getline(1) =~ '^\(%\|<[%&].*>\)' |
|
||||
\ set filetype=mason |
|
||||
\ 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 *.cl set filetype=opencl
|
||||
function! s:DetectPerl6()
|
||||
let line_no = 1
|
||||
let eof = line('$')
|
||||
let in_pod = 0
|
||||
while line_no <= eof
|
||||
let line = getline(line_no)
|
||||
let line_no = line_no + 1
|
||||
if line =~ '^=\w'
|
||||
let in_pod = 1
|
||||
elseif line =~ '^=\%(end\|cut\)'
|
||||
let in_pod = 0
|
||||
elseif !in_pod
|
||||
let line = substitute(line, '#.*', '', '')
|
||||
if line =~ '^\s*$'
|
||||
continue
|
||||
endif
|
||||
if line =~ '^\s*\%(use\s\+\)\=v6\%(\.\d\%(\.\d\)\=\)\=;'
|
||||
set filetype=perl6 " we matched a 'use v6' declaration
|
||||
elseif line =~ '^\s*\%(\%(my\|our\)\s\+\)\=\(module\|class\|role\|enum\|grammar\)'
|
||||
set filetype=perl6 " we found a class, role, module, enum, or grammar declaration
|
||||
endif
|
||||
break " we either found what we needed, or we found a non-POD, non-comment,
|
||||
" non-Perl 6 indicating line, so bail out
|
||||
endif
|
||||
endwhile
|
||||
endfunction
|
||||
autocmd BufReadPost *.pl,*.pm,*.t call s:DetectPerl6()
|
||||
autocmd BufNew,BufRead *.nqp setf perl6
|
||||
autocmd BufNewFile,BufRead *.proto setfiletype proto
|
||||
au BufRead,BufNewFile *.pp set filetype=puppet
|
||||
au BufNewFile,BufRead *.rb,*.rbw,*.gemspec set filetype=ruby
|
||||
au BufNewFile,BufRead *.builder,*.rxml,*.rjs set filetype=ruby
|
||||
au BufNewFile,BufRead [rR]akefile,*.rake set filetype=ruby
|
||||
au BufNewFile,BufRead [rR]antfile,*.rant set filetype=ruby
|
||||
au BufNewFile,BufRead .irbrc,irbrc set filetype=ruby
|
||||
au BufNewFile,BufRead .pryrc set filetype=ruby
|
||||
au BufNewFile,BufRead *.ru set filetype=ruby
|
||||
au BufNewFile,BufRead Capfile set filetype=ruby
|
||||
au BufNewFile,BufRead Gemfile set filetype=ruby
|
||||
au BufNewFile,BufRead Guardfile,.Guardfile set filetype=ruby
|
||||
au BufNewFile,BufRead Cheffile set filetype=ruby
|
||||
au BufNewFile,BufRead Berksfile set filetype=ruby
|
||||
au BufNewFile,BufRead [vV]agrantfile set filetype=ruby
|
||||
au BufNewFile,BufRead .autotest set filetype=ruby
|
||||
au BufNewFile,BufRead *.erb,*.rhtml set filetype=eruby
|
||||
au BufNewFile,BufRead [tT]horfile,*.thor set filetype=ruby
|
||||
au BufNewFile,BufRead *.rabl set filetype=ruby
|
||||
au BufNewFile,BufRead *.jbuilder set filetype=ruby
|
||||
au BufNewFile,BufRead Puppetfile set filetype=ruby
|
||||
au BufNewFile,BufRead [Bb]uildfile set filetype=ruby
|
||||
au BufNewFile,BufRead Appraisals set filetype=ruby
|
||||
au! BufRead,BufNewFile *.pp setfiletype puppet
|
||||
au! BufRead,BufNewFile Puppetfile setfiletype ruby
|
||||
function! s:setf(filetype) abort
|
||||
if &filetype !=# a:filetype
|
||||
let &filetype = a:filetype
|
||||
endif
|
||||
endfunction
|
||||
au BufNewFile,BufRead *.rb,*.rbw,*.gemspec call s:setf('ruby')
|
||||
au BufNewFile,BufRead *.builder,*.rxml,*.rjs,*.ruby call s:setf('ruby')
|
||||
au BufNewFile,BufRead [rR]akefile,*.rake call s:setf('ruby')
|
||||
au BufNewFile,BufRead [rR]antfile,*.rant call s:setf('ruby')
|
||||
au BufNewFile,BufRead .irbrc,irbrc call s:setf('ruby')
|
||||
au BufNewFile,BufRead .pryrc call s:setf('ruby')
|
||||
au BufNewFile,BufRead *.ru call s:setf('ruby')
|
||||
au BufNewFile,BufRead Capfile,*.cap call s:setf('ruby')
|
||||
au BufNewFile,BufRead Gemfile call s:setf('ruby')
|
||||
au BufNewFile,BufRead Guardfile,.Guardfile call s:setf('ruby')
|
||||
au BufNewFile,BufRead Cheffile call s:setf('ruby')
|
||||
au BufNewFile,BufRead Berksfile call s:setf('ruby')
|
||||
au BufNewFile,BufRead [vV]agrantfile call s:setf('ruby')
|
||||
au BufNewFile,BufRead .autotest call s:setf('ruby')
|
||||
au BufNewFile,BufRead *.erb,*.rhtml call s:setf('eruby')
|
||||
au BufNewFile,BufRead [tT]horfile,*.thor call s:setf('ruby')
|
||||
au BufNewFile,BufRead *.rabl call s:setf('ruby')
|
||||
au BufNewFile,BufRead *.jbuilder call s:setf('ruby')
|
||||
au BufNewFile,BufRead Puppetfile call s:setf('ruby')
|
||||
au BufNewFile,BufRead [Bb]uildfile call s:setf('ruby')
|
||||
au BufNewFile,BufRead Appraisals call s:setf('ruby')
|
||||
au BufNewFile,BufRead Podfile,*.podspec call s:setf('ruby')
|
||||
au BufRead,BufNewFile *.rs set filetype=rust
|
||||
au BufRead,BufNewFile *.sbt set filetype=sbt
|
||||
fun! s:DetectScala()
|
||||
@@ -120,8 +176,18 @@ au BufRead,BufNewFile * call s:DetectScala()
|
||||
autocmd BufNewFile,BufRead *.slim set filetype=slim
|
||||
autocmd BufNewFile,BufReadPost *.styl set filetype=stylus
|
||||
autocmd BufNewFile,BufReadPost *.stylus set filetype=stylus
|
||||
autocmd BufNewFile,BufRead *.swift set filetype=swift
|
||||
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
|
||||
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 *.html.twig set filetype=html.twig
|
||||
autocmd BufNewFile,BufRead *.ts setlocal filetype=typescript
|
||||
|
||||
@@ -15,7 +15,7 @@ let b:did_ftplugin = 1
|
||||
let s:cpo_save = &cpo
|
||||
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+=?,-,*,!,+,/,=,<,>,.,:,$
|
||||
|
||||
@@ -30,6 +30,22 @@ setlocal formatoptions-=t
|
||||
setlocal comments=n:;
|
||||
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
|
||||
" 'omnifunc' is set by popular Clojure REPL client plugins, we also set
|
||||
" 'completefunc' so that the user has some form of completion available when
|
||||
|
||||
100
ftplugin/csv.vim
100
ftplugin/csv.vim
@@ -1,20 +1,20 @@
|
||||
" Filetype plugin for editing CSV files. "{{{1
|
||||
" Author: Christian Brabandt <cb@256bit.org>
|
||||
" Version: 0.29
|
||||
" Version: 0.30
|
||||
" Script: http://www.vim.org/scripts/script.php?script_id=2830
|
||||
" 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
|
||||
" 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
|
||||
" though, implementation differs.
|
||||
|
||||
" Plugin folklore "{{{2
|
||||
if v:version < 700 || exists('b:did_csv_ftplugin')
|
||||
if v:version < 700 || exists('b:did_ftplugin')
|
||||
finish
|
||||
endif
|
||||
let b:did_csv_ftplugin = 1
|
||||
let b:did_ftplugin = 1
|
||||
|
||||
let s:cpo_save = &cpo
|
||||
set cpo&vim
|
||||
@@ -160,7 +160,7 @@ fu! <sid>Init(startline, endline) "{{{3
|
||||
" \ delf <sid>PrepareFolding | delf <sid>OutputFilters |
|
||||
" \ delf <sid>SortFilter | delf <sid>GetColumn |
|
||||
" \ delf <sid>RemoveLastItem | delf <sid>DisableFolding |
|
||||
" \ delf <sid>GetSID | delf <sid>CheckHeaderLine |
|
||||
" \ delf <sid>CheckHeaderLine |
|
||||
" \ delf <sid>AnalyzeColumn | delf <sid>Vertfold |
|
||||
" \ delf <sid>InitCSVFixedWidth | delf <sid>LocalCmd |
|
||||
" \ delf <sid>CommandDefinitions | delf <sid>NumberFormat |
|
||||
@@ -483,7 +483,7 @@ fu! <sid>GetDelimiter(first, last) "{{{3
|
||||
if !exists("b:csv_fixed_width_cols")
|
||||
let _cur = getpos('.')
|
||||
let _s = @/
|
||||
let Delim= {0: ';', 1: ',', 2: '|', 3: ' '}
|
||||
let Delim= {0: ';', 1: ',', 2: '|', 3: ' ', 4: '\^'}
|
||||
let temp = {}
|
||||
" :silent :s does not work with lazyredraw
|
||||
let _lz = &lz
|
||||
@@ -525,12 +525,16 @@ fu! <sid>WColumn(...) "{{{3
|
||||
let fields=(split(line[0:end],b:col.'\zs'))
|
||||
let ret=len(fields)
|
||||
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')
|
||||
" remove preceeding whitespace
|
||||
let ret = substitute(head[ret-1], '^\s\+', '', '')
|
||||
" remove delimiter
|
||||
let ret = substitute(ret, b:delimiter. '$', '', '')
|
||||
if len(head) < ret
|
||||
call <sid>Warn("Header has no field ". ret)
|
||||
else
|
||||
let ret = substitute(head[ret-1], '^\s\+', '', '')
|
||||
" remove delimiter
|
||||
let ret = substitute(ret, b:delimiter. '$', '', '')
|
||||
endif
|
||||
endif
|
||||
else
|
||||
let temp=getpos('.')[2]
|
||||
@@ -802,18 +806,18 @@ fu! <sid>GetColPat(colnr, zs_flag) "{{{3
|
||||
else
|
||||
if a:colnr >= len(b:csv_fixed_width_cols)
|
||||
" Get last column
|
||||
let pat='\%' . b:csv_fixed_width_cols[-1] . 'c.*'
|
||||
let pat='\%' . b:csv_fixed_width_cols[-1] . 'v.*'
|
||||
else
|
||||
let pat='\%' . b:csv_fixed_width_cols[(a:colnr - 1)] .
|
||||
\ 'c.\{-}\%' . b:csv_fixed_width_cols[a:colnr] . 'c'
|
||||
\ 'c.\{-}\%' . b:csv_fixed_width_cols[a:colnr] . 'v'
|
||||
endif
|
||||
endif
|
||||
elseif !exists("b:csv_fixed_width_cols")
|
||||
let pat=b:col
|
||||
else
|
||||
let pat='\%' . b:csv_fixed_width_cols[0] . 'c.\{-}' .
|
||||
let pat='\%' . b:csv_fixed_width_cols[0] . 'v.\{-}' .
|
||||
\ (len(b:csv_fixed_width_cols) > 1 ?
|
||||
\ '\%' . b:csv_fixed_width_cols[1] . 'c' :
|
||||
\ '\%' . b:csv_fixed_width_cols[1] . 'v' :
|
||||
\ '')
|
||||
endif
|
||||
return pat . (a:zs_flag ? '\zs' : '')
|
||||
@@ -1002,7 +1006,8 @@ fu! <sid>MoveCol(forward, line, ...) "{{{3
|
||||
elseif a:forward < 0
|
||||
if colnr > 0 || cpos == spos
|
||||
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
|
||||
norm! h
|
||||
if colnr > 0
|
||||
@@ -1073,12 +1078,12 @@ fu! <sid>Sort(bang, line1, line2, colnr) range "{{{3
|
||||
if !exists("b:csv_fixed_width_cols")
|
||||
let pat= '^' . <SID>GetColPat(col-1,1) . b:col
|
||||
else
|
||||
let pat= '^' . <SID>GetColPat(col,0)
|
||||
let pat= <SID>GetColPat(col,0)
|
||||
endif
|
||||
else
|
||||
let pat= '^' . <SID>GetColPat(col,0)
|
||||
endif
|
||||
exe a:line1 ',' a:line2 . "sort" . (a:bang ? '!' : '') .
|
||||
exe a:line1. ','. a:line2. "sort". (a:bang ? '!' : '') .
|
||||
\' r ' . (numeric ? 'n' : '') . ' /' . pat . '/'
|
||||
call winrestview(wsv)
|
||||
endfun
|
||||
@@ -1208,8 +1213,10 @@ fu! <sid>AddColumn(start, stop, ...) range "{{{3
|
||||
if exists("a:1")
|
||||
if a:1 == '$' || a:1 >= max
|
||||
let pos = max
|
||||
elseif a:1 <= 0
|
||||
elseif a:1 < 0
|
||||
let pos = col
|
||||
else
|
||||
let pos = a:1
|
||||
endif
|
||||
else
|
||||
let pos = col
|
||||
@@ -1217,7 +1224,7 @@ fu! <sid>AddColumn(start, stop, ...) range "{{{3
|
||||
let cnt=(exists("a:2") && a:2 > 0 ? a:2 : 1)
|
||||
|
||||
" translate 1 based columns into zero based list index
|
||||
let pos -= 1
|
||||
"let pos -= 1
|
||||
let col -= 1
|
||||
|
||||
if pos == 0
|
||||
@@ -1481,12 +1488,11 @@ fu! <sid>PrepareFolding(add, match) "{{{3
|
||||
" for val in sort(values(b:csv_filter), '<sid>SortFilter')
|
||||
" let @/ .= val.pat . (val.id == s:filter_count ? '' : '\&')
|
||||
" endfor
|
||||
let sid = <sid>GetSID()
|
||||
|
||||
" Fold settings:
|
||||
call <sid>LocalSettings('fold')
|
||||
" Don't put spaces between the arguments!
|
||||
exe 'setl foldexpr=<snr>' . sid . '_FoldValue(v:lnum,b:csv_filter)'
|
||||
exe 'setl foldexpr=<snr>' . s:SID . '_FoldValue(v:lnum,b:csv_filter)'
|
||||
|
||||
" Move folded area to the bottom, so there is only on consecutive
|
||||
" non-folded area
|
||||
@@ -1534,8 +1540,7 @@ fu! <sid>OutputFilters(bang) "{{{3
|
||||
call <sid>Warn("No filters defined currently!")
|
||||
return
|
||||
else
|
||||
let sid = <sid>GetSID()
|
||||
exe 'setl foldexpr=<snr>' . sid . '_FoldValue(v:lnum,b:csv_filter)'
|
||||
exe 'setl foldexpr=<snr>' . s:SID . '_FoldValue(v:lnum,b:csv_filter)'
|
||||
endif
|
||||
endif
|
||||
endfu
|
||||
@@ -1581,14 +1586,11 @@ fu! <sid>DisableFolding() "{{{3
|
||||
endif
|
||||
endfu
|
||||
|
||||
fu! <sid>GetSID() "{{{3
|
||||
if v:version > 703 || v:version == 703 && has("patch032")
|
||||
return maparg('W', "", "", 1).sid
|
||||
else
|
||||
"return substitute(maparg('W'), '\(<SNR>\d\+\)_', '\1', '')
|
||||
return matchstr(expand('<sfile>'), '<SNR>\zs\d\+\ze_GetSID$')
|
||||
endif
|
||||
fu! <sid>DetermineSID()
|
||||
let s:SID = matchstr(expand('<sfile>'), '<SNR>\zs\d\+\ze_DetermineSID$')
|
||||
endfu
|
||||
call s:DetermineSID()
|
||||
delf s:DetermineSID
|
||||
|
||||
fu! <sid>NumberFormat() "{{{3
|
||||
let s:nr_format = [',', '.']
|
||||
@@ -1772,7 +1774,7 @@ endfu
|
||||
|
||||
fu! <sid>NewRecord(line1, line2, count) "{{{3
|
||||
if a:count =~ "\D"
|
||||
call <sid>WarningMsg("Invalid count specified")
|
||||
call <sid>Warn("Invalid count specified")
|
||||
return
|
||||
endif
|
||||
|
||||
@@ -1848,20 +1850,13 @@ fu! <sid>CSVMappings() "{{{3
|
||||
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', 'H', ':<C-U>call <SID>MoveCol(-1, line("."), 1)<CR>')
|
||||
call <sid>Map('noremap', 'K', ':<C-U>call <SID>MoveCol(0,
|
||||
\ line(".")-v:count1)<CR>')
|
||||
call <sid>Map('noremap', '<Up>', ':<C-U>call <SID>MoveCol(0,
|
||||
\ line(".")-v:count1)<CR>')
|
||||
call <sid>Map('noremap', 'J', ':<C-U>call <SID>MoveCol(0,
|
||||
\ line(".")+v:count1)<CR>')
|
||||
call <sid>Map('noremap', '<Down>', ':<C-U>call <SID>MoveCol(0,
|
||||
\ 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('noremap', 'K', ':<C-U>call <SID>MoveCol(0, line(".")-v:count1)<CR>')
|
||||
call <sid>Map('noremap', '<Up>', ':<C-U>call <SID>MoveCol(0, line(".")-v:count1)<CR>')
|
||||
call <sid>Map('noremap', 'J', ':<C-U>call <SID>MoveCol(0, line(".")+v:count1)<CR>')
|
||||
call <sid>Map('noremap', '<Down>', ':<C-U>call <SID>MoveCol(0, 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')
|
||||
" Text object: Field
|
||||
call <sid>Map('vnoremap', 'if', ':<C-U>call <sid>MoveOver(0)<CR>')
|
||||
@@ -1937,9 +1932,6 @@ fu! <sid>CommandDefinitions() "{{{3
|
||||
\ '-nargs=1 -complete=custom,<sid>CompleteColumnNr')
|
||||
call <sid>LocalCmd('Transpose', ':call <sid>Transpose(<line1>, <line2>)',
|
||||
\ '-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>)',
|
||||
\ '-bang -range=%')
|
||||
call <sid>LocalCmd("AddColumn",
|
||||
@@ -2381,15 +2373,19 @@ fu! <sid>SubstituteInColumn(command, line1, line2) range "{{{3
|
||||
endfu
|
||||
|
||||
fu! <sid>ColumnMode() "{{{3
|
||||
if mode() =~# 'R'
|
||||
let mode = mode()
|
||||
if mode =~# 'R'
|
||||
" (virtual) Replace mode
|
||||
let new_line = (line('.') == line('$') ||
|
||||
\ (synIDattr(synIDtrans(synID(line("."), col("."), 1)), "name") !~# "comment"))
|
||||
return "\<ESC>". (new_line ? "o" : "JE".mode())
|
||||
\ (synIDattr(synIDtrans(synID(line("."), col("."), 1)), "name") =~? "comment"))
|
||||
return "\<ESC>g`[". (new_line ? "o" : "J".mode)
|
||||
else
|
||||
return "\<CR>"
|
||||
endif
|
||||
endfu
|
||||
fu! <sid>Timeout(start) "{{{3
|
||||
return localtime()-a:start < 2
|
||||
endfu
|
||||
|
||||
" Global functions "{{{2
|
||||
fu! csv#EvalColumn(nr, func, first, last) range "{{{3
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
" Vim filetype plugin
|
||||
" Language: Cucumber
|
||||
" 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
|
||||
if (exists("b:did_ftplugin"))
|
||||
@@ -9,6 +9,9 @@ if (exists("b:did_ftplugin"))
|
||||
endif
|
||||
let b:did_ftplugin = 1
|
||||
|
||||
let s:keepcpo= &cpo
|
||||
set cpo&vim
|
||||
|
||||
setlocal formatoptions-=t formatoptions+=croql
|
||||
setlocal comments=:# commentstring=#\ %s
|
||||
setlocal omnifunc=CucumberComplete
|
||||
@@ -18,25 +21,18 @@ let b:undo_ftplugin = "setl fo< com< cms< ofu<"
|
||||
let b:cucumber_root = expand('%:p:h:s?.*[\/]\%(features\|stories\)\zs[\/].*??')
|
||||
|
||||
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-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><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>
|
||||
cnoremap <SID>foldopen <Bar>if &foldopen =~# 'tag'<Bar>exe 'norm! zv'<Bar>endif
|
||||
nnoremap <silent> <script> <buffer> [<C-D> :<C-U>exe <SID>jump('edit',v:count)<SID>foldopen<CR>
|
||||
nnoremap <silent> <script> <buffer> ]<C-D> :<C-U>exe <SID>jump('edit',v:count)<SID>foldopen<CR>
|
||||
nnoremap <silent> <script> <buffer> <C-W>d :<C-U>exe <SID>jump('split',v:count)<SID>foldopen<CR>
|
||||
nnoremap <silent> <script> <buffer> <C-W><C-D> :<C-U>exe <SID>jump('split',v:count)<SID>foldopen<CR>
|
||||
nnoremap <silent> <script> <buffer> [d :<C-U>exe <SID>jump('pedit',v:count)<CR>
|
||||
nnoremap <silent> <script> <buffer> ]d :<C-U>exe <SID>jump('pedit',v:count)<CR>
|
||||
let b:undo_ftplugin .=
|
||||
\ "|sil! nunmap <buffer> <C-]>" .
|
||||
\ "|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><C-D>" .
|
||||
\ "|sil! nunmap <buffer> <C-W>}" .
|
||||
\ "|sil! nunmap <buffer> [d" .
|
||||
\ "|sil! nunmap <buffer> ]d"
|
||||
endif
|
||||
@@ -145,4 +141,7 @@ function! CucumberComplete(findstart,base) abort
|
||||
return sort(steps)
|
||||
endfunction
|
||||
|
||||
let &cpo = s:keepcpo
|
||||
unlet s:keepcpo
|
||||
|
||||
" vim:set sts=2 sw=2:
|
||||
|
||||
17
ftplugin/ember-script.vim
Normal file
17
ftplugin/ember-script.vim
Normal 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
|
||||
17
ftplugin/emblem.vim
Normal file
17
ftplugin/emblem.vim
Normal file
@@ -0,0 +1,17 @@
|
||||
" Language: emblem
|
||||
" Maintainer: heartsentwined <heartsentwined@cogito-lab.com>
|
||||
" URL: http://github.com/heartsentwined/vim-emblem
|
||||
" Version: 1.2.0
|
||||
" Last Change: 2013 Apr 22
|
||||
" License: GPL-3.0
|
||||
|
||||
setlocal tabstop=2
|
||||
setlocal softtabstop=2
|
||||
setlocal shiftwidth=2
|
||||
setlocal smarttab
|
||||
setlocal expandtab
|
||||
setlocal smartindent
|
||||
|
||||
setlocal formatoptions=q
|
||||
setlocal comments=:/
|
||||
setlocal commentstring=/\ %s
|
||||
@@ -11,15 +11,8 @@ endif
|
||||
runtime! ftplugin/git.vim
|
||||
let b:did_ftplugin = 1
|
||||
|
||||
setlocal nomodeline tabstop=8 formatoptions-=croq formatoptions+=tl
|
||||
|
||||
let b:undo_ftplugin = 'setl modeline< tabstop< formatoptions<'
|
||||
|
||||
if &textwidth == 0
|
||||
" make sure that log messages play nice with git-log on standard terminals
|
||||
setlocal textwidth=72
|
||||
let b:undo_ftplugin .= "|setl tw<"
|
||||
endif
|
||||
setlocal nomodeline tabstop=8 formatoptions-=croq formatoptions+=tl textwidth=72
|
||||
let b:undo_ftplugin = 'setl modeline< tabstop< formatoptions< tw<'
|
||||
|
||||
if exists("g:no_gitcommit_commands") || v:version < 700
|
||||
finish
|
||||
|
||||
@@ -1,17 +0,0 @@
|
||||
" 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 comments=s1:/*,mb:*,ex:*/,://
|
||||
setlocal commentstring=//\ %s
|
||||
|
||||
let b:undo_ftplugin = "setl com< cms<"
|
||||
|
||||
" vim:ts=4:sw=4:et
|
||||
@@ -1,69 +0,0 @@
|
||||
" Copyright 2011 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.
|
||||
"
|
||||
" fmt.vim: Vim command to format Go files with gofmt.
|
||||
"
|
||||
" This filetype plugin add a new commands for go buffers:
|
||||
"
|
||||
" :Fmt
|
||||
"
|
||||
" Filter the current Go buffer through gofmt.
|
||||
" It tries to preserve cursor position and avoids
|
||||
" replacing the buffer with stderr output.
|
||||
"
|
||||
" Options:
|
||||
"
|
||||
" g:go_fmt_commands [default=1]
|
||||
"
|
||||
" Flag to indicate whether to enable the commands listed above.
|
||||
"
|
||||
" g:gofmt_command [default="gofmt"]
|
||||
"
|
||||
" Flag naming the gofmt executable to use.
|
||||
"
|
||||
if exists("b:did_ftplugin_go_fmt")
|
||||
finish
|
||||
endif
|
||||
|
||||
if !exists("g:go_fmt_commands")
|
||||
let g:go_fmt_commands = 1
|
||||
endif
|
||||
|
||||
if !exists("g:gofmt_command")
|
||||
let g:gofmt_command = "gofmt"
|
||||
endif
|
||||
|
||||
if g:go_fmt_commands
|
||||
command! -buffer Fmt call s:GoFormat()
|
||||
endif
|
||||
|
||||
function! s:GoFormat()
|
||||
let view = winsaveview()
|
||||
silent execute "%!" . g:gofmt_command
|
||||
if v:shell_error
|
||||
let errors = []
|
||||
for line in getline(1, line('$'))
|
||||
let tokens = matchlist(line, '^\(.\{-}\):\(\d\+\):\(\d\+\)\s*\(.*\)')
|
||||
if !empty(tokens)
|
||||
call add(errors, {"filename": @%,
|
||||
\"lnum": tokens[2],
|
||||
\"col": tokens[3],
|
||||
\"text": tokens[4]})
|
||||
endif
|
||||
endfor
|
||||
if empty(errors)
|
||||
% | " Couldn't detect gofmt error format, output errors
|
||||
endif
|
||||
undo
|
||||
if !empty(errors)
|
||||
call setqflist(errors, 'r')
|
||||
endif
|
||||
echohl Error | echomsg "Gofmt returned error" | echohl None
|
||||
endif
|
||||
call winrestview(view)
|
||||
endfunction
|
||||
|
||||
let b:did_ftplugin_go_fmt = 1
|
||||
|
||||
" vim:ts=4:sw=4:et
|
||||
@@ -1,250 +0,0 @@
|
||||
" Copyright 2011 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.
|
||||
"
|
||||
" import.vim: Vim commands to import/drop Go packages.
|
||||
"
|
||||
" This filetype plugin adds three new commands for go buffers:
|
||||
"
|
||||
" :Import {path}
|
||||
"
|
||||
" Import ensures that the provided package {path} is imported
|
||||
" in the current Go buffer, using proper style and ordering.
|
||||
" If {path} is already being imported, an error will be
|
||||
" displayed and the buffer will be untouched.
|
||||
"
|
||||
" :ImportAs {localname} {path}
|
||||
"
|
||||
" Same as Import, but uses a custom local name for the package.
|
||||
"
|
||||
" :Drop {path}
|
||||
"
|
||||
" Remove the import line for the provided package {path}, if
|
||||
" present in the current Go buffer. If {path} is not being
|
||||
" imported, an error will be displayed and the buffer will be
|
||||
" untouched.
|
||||
"
|
||||
" If you would like to add shortcuts, you can do so by doing the following:
|
||||
"
|
||||
" Import fmt
|
||||
" au Filetype go nnoremap <buffer> <LocalLeader>f :Import fmt<CR>
|
||||
"
|
||||
" Drop fmt
|
||||
" au Filetype go nnoremap <buffer> <LocalLeader>F :Drop fmt<CR>
|
||||
"
|
||||
" Import the word under your cursor
|
||||
" au Filetype go nnoremap <buffer> <LocalLeader>k
|
||||
" \ :exe 'Import ' . expand('<cword>')<CR>
|
||||
"
|
||||
" The backslash '\' is the default maplocalleader, so it is possible that
|
||||
" your vim is set to use a different character (:help maplocalleader).
|
||||
"
|
||||
" Options:
|
||||
"
|
||||
" g:go_import_commands [default=1]
|
||||
"
|
||||
" Flag to indicate whether to enable the commands listed above.
|
||||
"
|
||||
if exists("b:did_ftplugin_go_import")
|
||||
finish
|
||||
endif
|
||||
|
||||
if !exists("g:go_import_commands")
|
||||
let g:go_import_commands = 1
|
||||
endif
|
||||
|
||||
if g:go_import_commands
|
||||
command! -buffer -nargs=? -complete=customlist,go#complete#Package Drop call s:SwitchImport(0, '', <f-args>)
|
||||
command! -buffer -nargs=1 -complete=customlist,go#complete#Package Import call s:SwitchImport(1, '', <f-args>)
|
||||
command! -buffer -nargs=* -complete=customlist,go#complete#Package ImportAs call s:SwitchImport(1, <f-args>)
|
||||
endif
|
||||
|
||||
function! s:SwitchImport(enabled, localname, path)
|
||||
let view = winsaveview()
|
||||
let path = a:path
|
||||
|
||||
" Quotes are not necessary, so remove them if provided.
|
||||
if path[0] == '"'
|
||||
let path = strpart(path, 1)
|
||||
endif
|
||||
if path[len(path)-1] == '"'
|
||||
let path = strpart(path, 0, len(path) - 1)
|
||||
endif
|
||||
if path == ''
|
||||
call s:Error('Import path not provided')
|
||||
return
|
||||
endif
|
||||
|
||||
" Extract any site prefix (e.g. github.com/).
|
||||
" If other imports with the same prefix are grouped separately,
|
||||
" we will add this new import with them.
|
||||
" Only up to and including the first slash is used.
|
||||
let siteprefix = matchstr(path, "^[^/]*/")
|
||||
|
||||
let qpath = '"' . path . '"'
|
||||
if a:localname != ''
|
||||
let qlocalpath = a:localname . ' ' . qpath
|
||||
else
|
||||
let qlocalpath = qpath
|
||||
endif
|
||||
let indentstr = 0
|
||||
let packageline = -1 " Position of package name statement
|
||||
let appendline = -1 " Position to introduce new import
|
||||
let deleteline = -1 " Position of line with existing import
|
||||
let linesdelta = 0 " Lines added/removed
|
||||
|
||||
" Find proper place to add/remove import.
|
||||
let line = 0
|
||||
while line <= line('$')
|
||||
let linestr = getline(line)
|
||||
|
||||
if linestr =~# '^package\s'
|
||||
let packageline = line
|
||||
let appendline = line
|
||||
|
||||
elseif linestr =~# '^import\s\+('
|
||||
let appendstr = qlocalpath
|
||||
let indentstr = 1
|
||||
let appendline = line
|
||||
let firstblank = -1
|
||||
let lastprefix = ""
|
||||
while line <= line("$")
|
||||
let line = line + 1
|
||||
let linestr = getline(line)
|
||||
let m = matchlist(getline(line), '^\()\|\(\s\+\)\(\S*\s*\)"\(.\+\)"\)')
|
||||
if empty(m)
|
||||
if siteprefix == "" && a:enabled
|
||||
" must be in the first group
|
||||
break
|
||||
endif
|
||||
" record this position, but keep looking
|
||||
if firstblank < 0
|
||||
let firstblank = line
|
||||
endif
|
||||
continue
|
||||
endif
|
||||
if m[1] == ')'
|
||||
" if there's no match, add it to the first group
|
||||
if appendline < 0 && firstblank >= 0
|
||||
let appendline = firstblank
|
||||
endif
|
||||
break
|
||||
endif
|
||||
let lastprefix = matchstr(m[4], "^[^/]*/")
|
||||
if a:localname != '' && m[3] != ''
|
||||
let qlocalpath = printf('%-' . (len(m[3])-1) . 's %s', a:localname, qpath)
|
||||
endif
|
||||
let appendstr = m[2] . qlocalpath
|
||||
let indentstr = 0
|
||||
if m[4] == path
|
||||
let appendline = -1
|
||||
let deleteline = line
|
||||
break
|
||||
elseif m[4] < path
|
||||
" don't set candidate position if we have a site prefix,
|
||||
" we've passed a blank line, and this doesn't share the same
|
||||
" site prefix.
|
||||
if siteprefix == "" || firstblank < 0 || match(m[4], "^" . siteprefix) >= 0
|
||||
let appendline = line
|
||||
endif
|
||||
elseif siteprefix != "" && match(m[4], "^" . siteprefix) >= 0
|
||||
" first entry of site group
|
||||
let appendline = line - 1
|
||||
break
|
||||
endif
|
||||
endwhile
|
||||
break
|
||||
|
||||
elseif linestr =~# '^import '
|
||||
if appendline == packageline
|
||||
let appendstr = 'import ' . qlocalpath
|
||||
let appendline = line - 1
|
||||
endif
|
||||
let m = matchlist(linestr, '^import\(\s\+\)\(\S*\s*\)"\(.\+\)"')
|
||||
if !empty(m)
|
||||
if m[3] == path
|
||||
let appendline = -1
|
||||
let deleteline = line
|
||||
break
|
||||
endif
|
||||
if m[3] < path
|
||||
let appendline = line
|
||||
endif
|
||||
if a:localname != '' && m[2] != ''
|
||||
let qlocalpath = printf("%s %" . len(m[2])-1 . "s", a:localname, qpath)
|
||||
endif
|
||||
let appendstr = 'import' . m[1] . qlocalpath
|
||||
endif
|
||||
|
||||
elseif linestr =~# '^\(var\|const\|type\|func\)\>'
|
||||
break
|
||||
|
||||
endif
|
||||
let line = line + 1
|
||||
endwhile
|
||||
|
||||
" Append or remove the package import, as requested.
|
||||
if a:enabled
|
||||
if deleteline != -1
|
||||
call s:Error(qpath . ' already being imported')
|
||||
elseif appendline == -1
|
||||
call s:Error('No package line found')
|
||||
else
|
||||
if appendline == packageline
|
||||
call append(appendline + 0, '')
|
||||
call append(appendline + 1, 'import (')
|
||||
call append(appendline + 2, ')')
|
||||
let appendline += 2
|
||||
let linesdelta += 3
|
||||
let appendstr = qlocalpath
|
||||
let indentstr = 1
|
||||
endif
|
||||
call append(appendline, appendstr)
|
||||
execute appendline + 1
|
||||
if indentstr
|
||||
execute 'normal >>'
|
||||
endif
|
||||
let linesdelta += 1
|
||||
endif
|
||||
else
|
||||
if deleteline == -1
|
||||
call s:Error(qpath . ' not being imported')
|
||||
else
|
||||
execute deleteline . 'd'
|
||||
let linesdelta -= 1
|
||||
|
||||
if getline(deleteline-1) =~# '^import\s\+(' && getline(deleteline) =~# '^)'
|
||||
" Delete empty import block
|
||||
let deleteline -= 1
|
||||
execute deleteline . "d"
|
||||
execute deleteline . "d"
|
||||
let linesdelta -= 2
|
||||
endif
|
||||
|
||||
if getline(deleteline) == '' && getline(deleteline - 1) == ''
|
||||
" Delete spacing for removed line too.
|
||||
execute deleteline . "d"
|
||||
let linesdelta -= 1
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
" Adjust view for any changes.
|
||||
let view.lnum += linesdelta
|
||||
let view.topline += linesdelta
|
||||
if view.topline < 0
|
||||
let view.topline = 0
|
||||
endif
|
||||
|
||||
" Put buffer back where it was.
|
||||
call winrestview(view)
|
||||
|
||||
endfunction
|
||||
|
||||
function! s:Error(s)
|
||||
echohl Error | echo a:s | echohl None
|
||||
endfunction
|
||||
|
||||
let b:did_ftplugin_go_import = 1
|
||||
|
||||
" vim:ts=4:sw=4:et
|
||||
@@ -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
7
ftplugin/html.vim
Normal 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+=-
|
||||
@@ -25,8 +25,20 @@ setlocal efm+=%E!\ %m
|
||||
" More info for undefined control sequences
|
||||
setlocal efm+=%Z<argument>\ %m
|
||||
|
||||
" More info for some errors
|
||||
setlocal efm+=%Cl.%l\ %m
|
||||
|
||||
" Show or ignore warnings
|
||||
if g:LatexBox_show_warnings
|
||||
" Parse biblatex warnings
|
||||
setlocal efm+=%-C(biblatex)%.%#in\ t%.%#
|
||||
setlocal efm+=%-C(biblatex)%.%#Please\ v%.%#
|
||||
setlocal efm+=%-C(biblatex)%.%#LaTeX\ a%.%#
|
||||
setlocal efm+=%-Z(biblatex)%m
|
||||
|
||||
" Parse hyperref warnings
|
||||
setlocal efm+=%-C(hyperref)%.%#on\ input\ line\ %l.
|
||||
|
||||
for w in g:LatexBox_ignore_warnings
|
||||
let warning = escape(substitute(w, '[\,]', '%\\\\&', 'g'), ' ')
|
||||
exe 'setlocal efm+=%-G%.%#'. warning .'%.%#'
|
||||
@@ -44,6 +56,7 @@ endif
|
||||
|
||||
" Push file to file stack
|
||||
setlocal efm+=%+P**%f
|
||||
setlocal efm+=%+P**\"%f\"
|
||||
|
||||
" Ignore unmatched lines
|
||||
setlocal efm+=%-G%.%#
|
||||
@@ -102,17 +115,24 @@ function! LatexBox_GetMainTexFile()
|
||||
endfor
|
||||
|
||||
" 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')
|
||||
endif
|
||||
|
||||
" 4 borrow the Vim-Latex-Suite method of finding it
|
||||
if Tex_GetMainFileName() != expand('%:p')
|
||||
let b:main_tex_file = Tex_GetMainFileName()
|
||||
" 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. prompt for file with completion
|
||||
" 5. borrow the Vim-Latex-Suite method of finding it
|
||||
if LatexBox_GetMainFileName() != expand('%:p')
|
||||
let b:main_tex_file = LatexBox_GetMainFileName()
|
||||
return b:main_tex_file
|
||||
endif
|
||||
|
||||
" 6. prompt for file with completion
|
||||
let b:main_tex_file = s:PromptForMainFile()
|
||||
return b:main_tex_file
|
||||
endfunction
|
||||
@@ -120,6 +140,8 @@ endfunction
|
||||
function! s:PromptForMainFile()
|
||||
let saved_dir = getcwd()
|
||||
execute 'cd ' . fnameescape(expand('%:p:h'))
|
||||
|
||||
" Prompt for file
|
||||
let l:file = ''
|
||||
while !filereadable(l:file)
|
||||
let l:file = input('main LaTeX file: ', '', 'file')
|
||||
@@ -128,6 +150,16 @@ function! s:PromptForMainFile()
|
||||
endif
|
||||
endwhile
|
||||
let l:file = fnamemodify(l:file, ':p')
|
||||
|
||||
" Make persistent
|
||||
let l:persistent = ''
|
||||
while l:persistent !~ '\v^(y|n)'
|
||||
let l:persistent = input('make choice persistent? (y, n) ')
|
||||
if l:persistent == 'y'
|
||||
call writefile([], l:file . '.latexmain')
|
||||
endif
|
||||
endwhile
|
||||
|
||||
execute 'cd ' . fnameescape(saved_dir)
|
||||
return l:file
|
||||
endfunction
|
||||
@@ -205,15 +237,16 @@ if !exists('g:LatexBox_viewer')
|
||||
endif
|
||||
endif
|
||||
|
||||
function! LatexBox_View()
|
||||
function! LatexBox_View(...)
|
||||
let lvargs = join(a:000, ' ')
|
||||
let outfile = LatexBox_GetOutputFile()
|
||||
if !filereadable(outfile)
|
||||
echomsg fnamemodify(outfile, ':.') . ' is not readable'
|
||||
return
|
||||
endif
|
||||
let cmd = g:LatexBox_viewer . ' ' . shellescape(outfile)
|
||||
let cmd = g:LatexBox_viewer . ' ' . lvargs . ' ' . shellescape(outfile)
|
||||
if has('win32')
|
||||
let cmd = '!start /b' . cmd . ' >nul'
|
||||
let cmd = '!start /b ' . cmd . ' >nul'
|
||||
else
|
||||
let cmd = '!' . cmd . ' &>/dev/null &'
|
||||
endif
|
||||
@@ -223,7 +256,7 @@ function! LatexBox_View()
|
||||
endif
|
||||
endfunction
|
||||
|
||||
command! LatexView call LatexBox_View()
|
||||
command! -nargs=* LatexView call LatexBox_View('<args>')
|
||||
" }}}
|
||||
|
||||
" In Comment {{{
|
||||
|
||||
@@ -106,13 +106,13 @@ function! LatexBox_Complete(findstart, base)
|
||||
endwhile
|
||||
|
||||
let line_start = line[:pos-1]
|
||||
if line_start =~ '\C\\begin\_\s*{$'
|
||||
if line_start =~ '\m\C\\begin\_\s*{$'
|
||||
let s:completion_type = 'begin'
|
||||
elseif line_start =~ '\C\\end\_\s*{$'
|
||||
elseif line_start =~ '\m\C\\end\_\s*{$'
|
||||
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'
|
||||
elseif line_start =~ g:LatexBox_cite_pattern . '$'
|
||||
elseif line_start =~ '\m' . g:LatexBox_cite_pattern . '$'
|
||||
let s:completion_type = 'bib'
|
||||
" check for multiple citations
|
||||
let pos = col('.') - 1
|
||||
@@ -328,6 +328,7 @@ function! LatexBox_BibComplete(regexp)
|
||||
let type = printf('%-' . s:type_length . 's', type)
|
||||
let auth = m['author'] == '' ? '' : m['author'][:20] . ' '
|
||||
let auth = substitute(auth, '\~', ' ', 'g')
|
||||
let auth = substitute(auth, ',.*\ze', ' et al. ', '')
|
||||
let year = m['year'] == '' ? '' : '(' . m['year'] . ')'
|
||||
let w = { 'word': m['key'],
|
||||
\ 'abbr': type . auth . year,
|
||||
@@ -365,11 +366,11 @@ function! s:ExtractLabels()
|
||||
let curname = strpart( getline( lblline ), lblbegin, nameend - lblbegin - 1 )
|
||||
|
||||
" Ignore cref entries (because they are duplicates)
|
||||
if curname =~ "\@cref\|cref\@"
|
||||
if curname =~# "@cref$"
|
||||
continue
|
||||
endif
|
||||
|
||||
if 0 == search( '{\w*{', 'ce', lblline )
|
||||
if 0 == search( '\m{\w*{', 'ce', lblline )
|
||||
let [lblline, lblbegin] = searchpos( '\\newlabel{', 'ecW' )
|
||||
continue
|
||||
endif
|
||||
@@ -382,7 +383,7 @@ function! s:ExtractLabels()
|
||||
endif
|
||||
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' )
|
||||
continue
|
||||
endif
|
||||
@@ -755,6 +756,70 @@ function! s:PromptEnvWrapSelection(...)
|
||||
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 {{{
|
||||
function! s:ChangeEnvPrompt()
|
||||
|
||||
@@ -858,4 +923,8 @@ nnoremap <silent> <Plug>LatexChangeEnv :call <SID>ChangeEnvPrompt()<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
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
" Tex_GetMainFileName: gets the name of the main file being compiled. {{{
|
||||
" LatexBox_GetMainFileName: gets the name of the main file being compiled. {{{
|
||||
" Description: returns the full path name of the main file.
|
||||
" This function checks for the existence of a .latexmain file
|
||||
" which might point to the location of a "main" latex file.
|
||||
@@ -13,7 +13,8 @@
|
||||
" NOTE: From version 1.6 onwards, this function always trims
|
||||
" away the .latexmain part of the file name before applying the
|
||||
" modifier argument.
|
||||
function! Tex_GetMainFileName(...)
|
||||
" NOTE: This function is copied from the Latex-Suite project!
|
||||
function! LatexBox_GetMainFileName(...)
|
||||
if a:0 > 0
|
||||
let modifier = a:1
|
||||
else
|
||||
@@ -51,10 +52,7 @@ function! Tex_GetMainFileName(...)
|
||||
let lheadfile = expand('%'.modifier)
|
||||
endif
|
||||
|
||||
if lheadfile !~ '\.tex$'
|
||||
let lheadfile .= '.tex'
|
||||
endif
|
||||
exe 'cd '.s:origdir
|
||||
exe 'cd '.s:origdir
|
||||
|
||||
" NOTE: The caller of this function needs to escape the file name with
|
||||
" fnameescape() . The reason its not done here is that escaping is not
|
||||
|
||||
@@ -1,29 +1,22 @@
|
||||
" Folding support for LaTeX
|
||||
|
||||
"
|
||||
" Options
|
||||
" g:LatexBox_Folding - Turn on/off folding
|
||||
" g:LatexBox_fold_preamble - Turn on/off folding of preamble
|
||||
" g:LatexBox_fold_parts - Define parts (eq. appendix, frontmatter) to fold
|
||||
" g:LatexBox_fold_sections - Define section levels to fold
|
||||
" g:LatexBox_fold_envs - Turn on/off folding of environments
|
||||
" g:LatexBox_Folding - Turn on/off folding
|
||||
" g:LatexBox_fold_text - Turn on/off LatexBox fold text function
|
||||
" g:LatexBox_fold_preamble - Turn on/off folding of preamble
|
||||
" g:LatexBox_fold_parts - Define parts (eq. appendix, frontmatter) to fold
|
||||
" g:LatexBox_fold_sections - Define section levels to fold
|
||||
" g:LatexBox_fold_envs - Turn on/off folding of environments
|
||||
" g:LatexBox_fold_toc - Turn on/off folding of TOC
|
||||
" g:LatexBox_fold_toc_levels - Set max TOC fold level
|
||||
"
|
||||
|
||||
" {{{1 Set options
|
||||
if exists('g:LatexBox_Folding') && g:LatexBox_Folding == 1
|
||||
setl foldmethod=expr
|
||||
setl foldexpr=LatexBox_FoldLevel(v:lnum)
|
||||
setl foldtext=LatexBox_FoldText()
|
||||
"
|
||||
" The foldexpr function returns "=" for most lines, which means it can become
|
||||
" slow for large files. The following is a hack that is based on this reply to
|
||||
" a discussion on the Vim Developer list:
|
||||
" http://permalink.gmane.org/gmane.editors.vim.devel/14100
|
||||
"
|
||||
augroup FastFold
|
||||
autocmd!
|
||||
autocmd InsertEnter *.tex setlocal foldmethod=manual
|
||||
autocmd InsertLeave *.tex setlocal foldmethod=expr
|
||||
augroup end
|
||||
" {{{1 Initialize options to default values.
|
||||
if !exists('g:LatexBox_Folding')
|
||||
let g:LatexBox_Folding=0
|
||||
endif
|
||||
if !exists('g:LatexBox_fold_text')
|
||||
let g:LatexBox_fold_text=1
|
||||
endif
|
||||
if !exists('g:LatexBox_fold_preamble')
|
||||
let g:LatexBox_fold_preamble=1
|
||||
@@ -31,6 +24,9 @@ endif
|
||||
if !exists('g:LatexBox_fold_envs')
|
||||
let g:LatexBox_fold_envs=1
|
||||
endif
|
||||
if !exists('g:LatexBox_fold_envs_force')
|
||||
let g:LatexBox_fold_envs_force = []
|
||||
endif
|
||||
if !exists('g:LatexBox_fold_parts')
|
||||
let g:LatexBox_fold_parts=[
|
||||
\ "appendix",
|
||||
@@ -54,7 +50,45 @@ endif
|
||||
if !exists('g:LatexBox_fold_toc_levels')
|
||||
let g:LatexBox_fold_toc_levels=1
|
||||
endif
|
||||
if !exists('g:LatexBox_fold_automatic')
|
||||
let g:LatexBox_fold_automatic=1
|
||||
endif
|
||||
" }}}1
|
||||
|
||||
if g:LatexBox_Folding == 0
|
||||
finish
|
||||
endif
|
||||
|
||||
" {{{1 Set folding options for vim
|
||||
setl foldexpr=LatexBox_FoldLevel(v:lnum)
|
||||
if g:LatexBox_fold_text == 1
|
||||
setl foldtext=LatexBox_FoldText()
|
||||
endif
|
||||
if g:LatexBox_fold_automatic == 1
|
||||
setl foldmethod=expr
|
||||
|
||||
"
|
||||
" The foldexpr function returns "=" for most lines, which means it can become
|
||||
" slow for large files. The following is a hack that is based on this reply to
|
||||
" a discussion on the Vim Developer list:
|
||||
" http://permalink.gmane.org/gmane.editors.vim.devel/14100
|
||||
"
|
||||
augroup FastFold
|
||||
autocmd!
|
||||
autocmd InsertEnter *.tex setlocal foldmethod=manual
|
||||
autocmd InsertLeave *.tex setlocal foldmethod=expr
|
||||
augroup end
|
||||
else
|
||||
setl foldmethod=manual
|
||||
endif
|
||||
|
||||
function! LatexBox_FoldOnDemand()
|
||||
setl foldmethod=expr
|
||||
normal! zx
|
||||
setl foldmethod=manual
|
||||
endfunction
|
||||
|
||||
command! LatexFold call LatexBox_FoldOnDemand()
|
||||
|
||||
" {{{1 LatexBox_FoldLevel help functions
|
||||
|
||||
@@ -134,9 +168,9 @@ function! LatexBox_FoldLevel(lnum)
|
||||
|
||||
" Fold preamble
|
||||
if g:LatexBox_fold_preamble == 1
|
||||
if line =~# '\s*\\documentclass'
|
||||
if line =~# s:notcomment . s:notbslash . '\s*\\documentclass'
|
||||
return ">1"
|
||||
elseif line =~# '^\s*\\begin\s*{\s*document\s*}'
|
||||
elseif line =~# s:notcomment . s:notbslash . '\s*\\begin\s*{\s*document\s*}'
|
||||
return "0"
|
||||
endif
|
||||
endif
|
||||
@@ -159,11 +193,27 @@ function! LatexBox_FoldLevel(lnum)
|
||||
endif
|
||||
|
||||
" Fold environments
|
||||
if g:LatexBox_fold_envs == 1
|
||||
if line =~# s:envbeginpattern
|
||||
if line =~# s:envbeginpattern
|
||||
if g:LatexBox_fold_envs == 1
|
||||
return "a1"
|
||||
elseif line =~# s:envendpattern
|
||||
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
|
||||
if g:LatexBox_fold_envs == 1
|
||||
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
|
||||
|
||||
@@ -228,24 +278,13 @@ function! s:CaptionFrame(line)
|
||||
endif
|
||||
endfunction
|
||||
|
||||
" {{{1 LatexBox_FoldText
|
||||
function! LatexBox_FoldText()
|
||||
" Initialize
|
||||
function! LatexBox_FoldText_title()
|
||||
let line = getline(v:foldstart)
|
||||
let nlines = v:foldend - v:foldstart + 1
|
||||
let level = ''
|
||||
let title = 'Not defined'
|
||||
|
||||
" Fold level
|
||||
let level = strpart(repeat('-', v:foldlevel-1) . '*',0,3)
|
||||
if v:foldlevel > 3
|
||||
let level = strpart(level, 1) . v:foldlevel
|
||||
endif
|
||||
let level = printf('%-3s', level)
|
||||
|
||||
" Preamble
|
||||
if line =~ '\s*\\documentclass'
|
||||
let title = "Preamble"
|
||||
return "Preamble"
|
||||
endif
|
||||
|
||||
" Parts, sections and fakesections
|
||||
@@ -261,11 +300,11 @@ function! LatexBox_FoldText()
|
||||
elseif line =~ '\\appendix'
|
||||
let title = "Appendix"
|
||||
elseif line =~ secpat1 . '.*}'
|
||||
let title = matchstr(line, secpat1 . '\zs.*\ze}')
|
||||
let title = matchstr(line, secpat1 . '\zs.\{-}\ze}')
|
||||
elseif line =~ secpat1
|
||||
let title = matchstr(line, secpat1 . '\zs.*')
|
||||
elseif line =~ secpat2 . '.*\]'
|
||||
let title = matchstr(line, secpat2 . '\zs.*\ze\]')
|
||||
let title = matchstr(line, secpat2 . '\zs.\{-}\ze\]')
|
||||
elseif line =~ secpat2
|
||||
let title = matchstr(line, secpat2 . '\zs.*')
|
||||
elseif line =~ 'Fake' . sections . ':'
|
||||
@@ -311,7 +350,22 @@ function! LatexBox_FoldText()
|
||||
endif
|
||||
endif
|
||||
|
||||
let title = strpart(title, 0, 68)
|
||||
return title
|
||||
endfunction
|
||||
|
||||
" {{{1 LatexBox_FoldText
|
||||
function! LatexBox_FoldText()
|
||||
let nlines = v:foldend - v:foldstart + 1
|
||||
let title = strpart(LatexBox_FoldText_title(), 0, 68)
|
||||
let level = ''
|
||||
|
||||
" Fold level
|
||||
let level = strpart(repeat('-', v:foldlevel-1) . '*',0,3)
|
||||
if v:foldlevel > 3
|
||||
let level = strpart(level, 1) . v:foldlevel
|
||||
endif
|
||||
let level = printf('%-3s', level)
|
||||
|
||||
return printf('%-3s %-68s #%5d', level, title, nlines)
|
||||
endfunction
|
||||
|
||||
|
||||
@@ -413,23 +413,38 @@ function! LatexBox_LatexErrors(status, ...)
|
||||
if a:status < 0
|
||||
botright copen
|
||||
else
|
||||
" Write status message to screen
|
||||
redraw
|
||||
if a:status > 0 || len(getqflist())>1
|
||||
echomsg 'Compiling to ' . g:LatexBox_output_type . ' ... failed!'
|
||||
else
|
||||
echomsg 'Compiling to ' . g:LatexBox_output_type . ' ... success!'
|
||||
endif
|
||||
|
||||
" Only open window when an error/warning is detected
|
||||
if g:LatexBox_quickfix
|
||||
if g:LatexBox_quickfix >= 3
|
||||
\ ? s:log_contains_error(log)
|
||||
\ : g:LatexBox_quickfix > 0
|
||||
belowright cw
|
||||
if g:LatexBox_quickfix==2
|
||||
if g:LatexBox_quickfix == 2 || g:LatexBox_quickfix == 4
|
||||
wincmd p
|
||||
endif
|
||||
endif
|
||||
redraw
|
||||
|
||||
" Write status message to screen
|
||||
if a:status > 0 || len(getqflist())>1
|
||||
if s:log_contains_error(log)
|
||||
let l:status_msg = ' ... failed!'
|
||||
else
|
||||
let l:status_msg = ' ... there were warnings!'
|
||||
endif
|
||||
else
|
||||
let l:status_msg = ' ... success!'
|
||||
endif
|
||||
echomsg 'Compiling to ' . g:LatexBox_output_type . l:status_msg
|
||||
endif
|
||||
endfunction
|
||||
|
||||
function! s:log_contains_error(file)
|
||||
let lines = readfile(a:file)
|
||||
let lines = filter(lines, 'v:val =~ ''^.*:\d\+: ''')
|
||||
let lines = uniq(map(lines, 'matchstr(v:val, ''^.*\ze:\d\+:'')'))
|
||||
let lines = filter(lines, 'filereadable(fnameescape(v:val))')
|
||||
return len(lines) > 0
|
||||
endfunction
|
||||
" }}}
|
||||
|
||||
" LatexmkStatus {{{
|
||||
|
||||
@@ -23,6 +23,16 @@ map <buffer> <LocalLeader>lv :LatexView<CR>
|
||||
map <silent> <buffer> <LocalLeader>lt :LatexTOC<CR>
|
||||
" }}}
|
||||
|
||||
" List of labels {{{
|
||||
map <silent> <buffer> <LocalLeader>lj :LatexLabels<CR>
|
||||
" }}}
|
||||
|
||||
" Folding {{{
|
||||
if g:LatexBox_Folding == 1
|
||||
map <buffer> <LocalLeader>lf :LatexFold<CR>
|
||||
endif
|
||||
" }}}
|
||||
|
||||
" Jump to match {{{
|
||||
if !exists('g:LatexBox_loaded_matchparen')
|
||||
nmap <buffer> % <Plug>LatexBox_JumpToMatch
|
||||
|
||||
@@ -345,24 +345,22 @@ function! s:ReadTOC(auxfile, texfile, ...)
|
||||
endif
|
||||
" parse section number
|
||||
let secnum = ''
|
||||
if len(tree[1]) > 3 && empty(tree[1][1])
|
||||
call remove(tree[1], 1)
|
||||
let tree = tree[1]
|
||||
if len(tree) > 3 && empty(tree[1])
|
||||
call remove(tree, 1)
|
||||
endif
|
||||
if len(tree[1]) > 1 && tree[1][0] =~ '\(numberline\|tocsection\)'
|
||||
if !empty(tree[1][1])
|
||||
let secnum = LatexBox_TreeToTex(tree[1][1])
|
||||
let secnum = substitute(secnum, '\\\S\+\s', '', 'g')
|
||||
let secnum = substitute(secnum, '\\\S\+{\(.\{-}\)}', '\1', 'g')
|
||||
let secnum = substitute(secnum, '^{\+\|}\+$', '', 'g')
|
||||
endif
|
||||
let tree = tree[1][2:]
|
||||
else
|
||||
let tree = tree[1]
|
||||
if len(tree) > 1 && tree[0] =~ '^\\\(numberline\|tocsection\)'
|
||||
let secnum = LatexBox_TreeToTex(tree[1])
|
||||
let secnum = substitute(secnum, '\\\S\+\s', '', 'g')
|
||||
let secnum = substitute(secnum, '\\\S\+{\(.\{-}\)}', '\1', 'g')
|
||||
let secnum = substitute(secnum, '^{\+\|}\+$', '', 'g')
|
||||
call remove(tree, 1)
|
||||
endif
|
||||
" parse section title
|
||||
let text = LatexBox_TreeToTex(tree)
|
||||
let text = substitute(text, '^{\+\|}\+$', '', 'g')
|
||||
let text = substitute(text, '\*', '', 'g')
|
||||
let text = substitute(text, '^{\+\|}\+$', '', 'g')
|
||||
let text = substitute(text, '\m^\\\(no\)\?numberline\s*', '', '')
|
||||
let text = substitute(text, '\*', '', 'g')
|
||||
|
||||
" add TOC entry
|
||||
call add(fileindices[texfile], len(toc))
|
||||
|
||||
@@ -40,13 +40,9 @@ endfunction
|
||||
|
||||
" {{{2 EscapeTitle
|
||||
function! s:EscapeTitle(titlestr)
|
||||
" Credit goes to Marcin Szamotulski for the following fix. It allows to
|
||||
" match through commands added by TeX.
|
||||
let titlestr = substitute(a:titlestr, '\\\w*\>\s*\%({[^}]*}\)\?', '.*', 'g')
|
||||
|
||||
let titlestr = escape(titlestr, '\')
|
||||
let titlestr = substitute(titlestr, ' ', '\\_\\s\\+', 'g')
|
||||
|
||||
let titlestr = substitute(a:titlestr, '\\[a-zA-Z@]*\>\s*{\?', '.*', 'g')
|
||||
let titlestr = substitute(titlestr, '}', '', 'g')
|
||||
let titlestr = substitute(titlestr, '\%(\.\*\s*\)\{2,}', '.*', 'g')
|
||||
return titlestr
|
||||
endfunction
|
||||
|
||||
@@ -80,9 +76,14 @@ function! s:TOCActivate(close)
|
||||
|
||||
execute b:calling_win . 'wincmd w'
|
||||
|
||||
let root = fnamemodify(entry['file'], ':h') . '/'
|
||||
let files = [entry['file']]
|
||||
for line in filter(readfile(entry['file']), 'v:val =~ ''\\input{''')
|
||||
call add(files, matchstr(line, '{\zs.*\ze\(\.tex\)\?}') . '.tex')
|
||||
let file = matchstr(line, '{\zs.\{-}\ze\(\.tex\)\?}') . '.tex'
|
||||
if file[0] != '/'
|
||||
let file = root . file
|
||||
endif
|
||||
call add(files, file)
|
||||
endfor
|
||||
|
||||
" Find section in buffer (or inputted files)
|
||||
@@ -101,6 +102,10 @@ endfunction
|
||||
|
||||
" {{{2 TOCFindMatch
|
||||
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])
|
||||
let dups = a:duplicates
|
||||
@@ -120,7 +125,6 @@ function! s:TOCFindMatch(strsearch,duplicates,files)
|
||||
endif
|
||||
|
||||
call s:TOCFindMatch(a:strsearch,dups,a:files[1:])
|
||||
|
||||
endfunction
|
||||
|
||||
" {{{2 TOCFoldLevel
|
||||
@@ -170,6 +174,7 @@ function! s:TOCOpenBuf(file)
|
||||
let bnr = bufnr(a:file)
|
||||
endif
|
||||
execute 'buffer! ' . bnr
|
||||
normal! gg
|
||||
|
||||
endfunction
|
||||
|
||||
|
||||
61
ftplugin/liquid.vim
Normal file
61
ftplugin/liquid.vim
Normal file
@@ -0,0 +1,61 @@
|
||||
" Vim filetype plugin
|
||||
" Language: Liquid
|
||||
" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
|
||||
" Last Change: 2010 May 21
|
||||
|
||||
if exists('b:did_ftplugin')
|
||||
finish
|
||||
endif
|
||||
|
||||
if !exists('g:liquid_default_subtype')
|
||||
let g:liquid_default_subtype = 'html'
|
||||
endif
|
||||
|
||||
if !exists('b:liquid_subtype')
|
||||
let s:lines = getline(1)."\n".getline(2)."\n".getline(3)."\n".getline(4)."\n".getline(5)."\n".getline("$")
|
||||
let b:liquid_subtype = matchstr(s:lines,'liquid_subtype=\zs\w\+')
|
||||
if b:liquid_subtype == ''
|
||||
let b:liquid_subtype = matchstr(&filetype,'^liquid\.\zs\w\+')
|
||||
endif
|
||||
if b:liquid_subtype == ''
|
||||
let b:liquid_subtype = matchstr(substitute(expand('%:t'),'\c\%(\.liquid\)\+$','',''),'\.\zs\w\+$')
|
||||
endif
|
||||
if b:liquid_subtype == ''
|
||||
let b:liquid_subtype = g:liquid_default_subtype
|
||||
endif
|
||||
endif
|
||||
|
||||
if exists('b:liquid_subtype') && b:liquid_subtype != ''
|
||||
exe 'runtime! ftplugin/'.b:liquid_subtype.'.vim ftplugin/'.b:liquid_subtype.'_*.vim ftplugin/'.b:liquid_subtype.'/*.vim'
|
||||
else
|
||||
runtime! ftplugin/html.vim ftplugin/html_*.vim ftplugin/html/*.vim
|
||||
endif
|
||||
let b:did_ftplugin = 1
|
||||
|
||||
if exists('b:undo_ftplugin')
|
||||
let b:undo_ftplugin .= '|'
|
||||
else
|
||||
let b:undo_ftplugin = ''
|
||||
endif
|
||||
if exists('b:browsefilter')
|
||||
let b:browsefilter = "\n".b:browsefilter
|
||||
else
|
||||
let b:browsefilter = ''
|
||||
endif
|
||||
if exists('b:match_words')
|
||||
let b:match_words .= ','
|
||||
elseif exists('loaded_matchit')
|
||||
let b:match_words = ''
|
||||
endif
|
||||
|
||||
if has('gui_win32')
|
||||
let b:browsefilter="Liquid Files (*.liquid)\t*.liquid" . b:browsefilter
|
||||
endif
|
||||
|
||||
if exists('loaded_matchit')
|
||||
let b:match_words .= '\<\%(if\w*\|unless\|case\)\>:\<\%(elsif\|else\|when\)\>:\<end\%(if\w*\|unless\|case\)\>,\<\%(for\|tablerow\)\>:\%({%\s*\)\@<=empty\>:\<end\%(for\|tablerow\)\>,<\(capture\|comment\|highlight\)\>:\<end\1\>'
|
||||
endif
|
||||
|
||||
setlocal commentstring={%\ comment\ %}%s{%\ endcomment\ %}
|
||||
|
||||
let b:undo_ftplugin .= 'setl cms< | unlet! b:browsefilter b:match_words'
|
||||
@@ -11,7 +11,7 @@ runtime! ftplugin/html.vim ftplugin/html_*.vim ftplugin/html/*.vim
|
||||
|
||||
setlocal comments=fb:*,fb:-,fb:+,n:> commentstring=>\ %s
|
||||
setlocal formatoptions+=tcqln formatoptions-=r formatoptions-=o
|
||||
setlocal formatlistpat=^\\s*\\d\\+\\.\\s\\+\\\|^[-*+]\\s\\+
|
||||
setlocal formatlistpat=^\\s*\\d\\+\\.\\s\\+\\\|^[-*+]\\s\\+\\\|^\\[^\\ze[^\\]]\\+\\]:
|
||||
|
||||
if exists('b:undo_ftplugin')
|
||||
let b:undo_ftplugin .= "|setl cms< com< fo< flp<"
|
||||
@@ -19,4 +19,32 @@ else
|
||||
let b:undo_ftplugin = "setl cms< com< fo< flp<"
|
||||
endif
|
||||
|
||||
function! MarkdownFold()
|
||||
let line = getline(v:lnum)
|
||||
|
||||
" Regular headers
|
||||
let depth = match(line, '\(^#\+\)\@<=\( .*$\)\@=')
|
||||
if depth > 0
|
||||
return ">" . depth
|
||||
endif
|
||||
|
||||
" Setext style headings
|
||||
let nextline = getline(v:lnum + 1)
|
||||
if (line =~ '^.\+$') && (nextline =~ '^=\+$')
|
||||
return ">1"
|
||||
endif
|
||||
|
||||
if (line =~ '^.\+$') && (nextline =~ '^-\+$')
|
||||
return ">2"
|
||||
endif
|
||||
|
||||
return "="
|
||||
endfunction
|
||||
|
||||
if has("folding") && exists("g:markdown_folding")
|
||||
setlocal foldexpr=MarkdownFold()
|
||||
setlocal foldmethod=expr
|
||||
let b:undo_ftplugin .= " foldexpr< foldmethod<"
|
||||
endif
|
||||
|
||||
" vim:set sw=2:
|
||||
|
||||
115
ftplugin/mustache.vim
Normal file
115
ftplugin/mustache.vim
Normal 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
15
ftplugin/opencl.vim
Normal 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
|
||||
@@ -1,137 +1,6 @@
|
||||
" Vim filetype plugin
|
||||
" Language: Puppet
|
||||
" Maintainer: Todd Zullinger <tmz@pobox.com>
|
||||
" Last Change: 2009 Aug 19
|
||||
" vim: set sw=4 sts=4:
|
||||
|
||||
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
|
||||
setl ts=2
|
||||
setl sts=2
|
||||
setl sw=2
|
||||
setl et
|
||||
setl keywordprg=puppet\ describe\ --providers
|
||||
setl iskeyword=-,:,@,48-57,_,192-255
|
||||
|
||||
@@ -34,6 +34,7 @@ if exists("loaded_matchit") && !exists("b:match_words")
|
||||
let b:match_skip =
|
||||
\ "synIDattr(synID(line('.'),col('.'),0),'name') =~ '" .
|
||||
\ "\\<ruby\\%(String\\|StringDelimiter\\|ASCIICode\\|Escape\\|" .
|
||||
\ "Regexp\\|RegexpDelimiter\\|" .
|
||||
\ "Interpolation\\|NoInterpolation\\|Comment\\|Documentation\\|" .
|
||||
\ "ConditionalModifier\\|RepeatModifier\\|OptionalDo\\|" .
|
||||
\ "Function\\|BlockArgument\\|KeywordAsMethod\\|ClassVariable\\|" .
|
||||
@@ -68,8 +69,8 @@ endif
|
||||
|
||||
function! s:query_path(root)
|
||||
let code = "print $:.join %q{,}"
|
||||
if &shell =~# 'sh' && $PATH !~# '\s'
|
||||
let prefix = 'env PATH='.$PATH.' '
|
||||
if &shell =~# 'sh'
|
||||
let prefix = 'env PATH='.shellescape($PATH).' '
|
||||
else
|
||||
let prefix = ''
|
||||
endif
|
||||
@@ -189,15 +190,16 @@ if !exists("g:no_plugin_maps") && !exists("g:no_ruby_maps")
|
||||
endif
|
||||
|
||||
if maparg("\<C-]>",'n') == ''
|
||||
nnoremap <silent> <buffer> <C-]> :<C-U>exe v:count1."tag <C-R>=RubyCursorIdentifier()<CR>"<CR>
|
||||
nnoremap <silent> <buffer> g<C-]> :<C-U>exe "tjump <C-R>=RubyCursorIdentifier()<CR>"<CR>
|
||||
nnoremap <silent> <buffer> g] :<C-U>exe "tselect <C-R>=RubyCursorIdentifier()<CR>"<CR>
|
||||
nnoremap <silent> <buffer> <C-W>] :<C-U>exe v:count1."stag <C-R>=RubyCursorIdentifier()<CR>"<CR>
|
||||
nnoremap <silent> <buffer> <C-W><C-]> :<C-U>exe v:count1."stag <C-R>=RubyCursorIdentifier()<CR>"<CR>
|
||||
nnoremap <silent> <buffer> <C-W>g<C-]> :<C-U>exe "stjump <C-R>=RubyCursorIdentifier()<CR>"<CR>
|
||||
nnoremap <silent> <buffer> <C-W>g] :<C-U>exe "stselect <C-R>=RubyCursorIdentifier()<CR>"<CR>
|
||||
nnoremap <silent> <buffer> <C-W>} :<C-U>exe "ptag <C-R>=RubyCursorIdentifier()<CR>"<CR>
|
||||
nnoremap <silent> <buffer> <C-W>g} :<C-U>exe "ptjump <C-R>=RubyCursorIdentifier()<CR>"<CR>
|
||||
cnoremap <buffer> <SID>foldopen <Bar>if &foldopen =~# 'tag'<Bar>exe 'norm! zv'<Bar>endif
|
||||
nnoremap <silent> <script> <buffer> <C-]> :<C-U>exe v:count1."tag <C-R>=RubyCursorIdentifier()<CR>"<SID>foldopen<CR>
|
||||
nnoremap <silent> <script> <buffer> g<C-]> :<C-U>exe "tjump <C-R>=RubyCursorIdentifier()<CR>"<SID>foldopen<CR>
|
||||
nnoremap <silent> <script> <buffer> g] :<C-U>exe "tselect <C-R>=RubyCursorIdentifier()<CR>"<SID>foldopen<CR>
|
||||
nnoremap <silent> <script> <buffer> <C-W>] :<C-U>exe v:count1."stag <C-R>=RubyCursorIdentifier()<CR>"<SID>foldopen<CR>
|
||||
nnoremap <silent> <script> <buffer> <C-W><C-]> :<C-U>exe v:count1."stag <C-R>=RubyCursorIdentifier()<CR>"<SID>foldopen<CR>
|
||||
nnoremap <silent> <script> <buffer> <C-W>g<C-]> :<C-U>exe "stjump <C-R>=RubyCursorIdentifier()<CR>"<SID>foldopen<CR>
|
||||
nnoremap <silent> <script> <buffer> <C-W>g] :<C-U>exe "stselect <C-R>=RubyCursorIdentifier()<CR>"<SID>foldopen<CR>
|
||||
nnoremap <silent> <script> <buffer> <C-W>} :<C-U>exe "ptag <C-R>=RubyCursorIdentifier()<CR>"<CR>
|
||||
nnoremap <silent> <script> <buffer> <C-W>g} :<C-U>exe "ptjump <C-R>=RubyCursorIdentifier()<CR>"<CR>
|
||||
let b:undo_ftplugin = b:undo_ftplugin
|
||||
\."| sil! exe 'nunmap <buffer> <C-]>'| sil! exe 'nunmap <buffer> g<C-]>'| sil! exe 'nunmap <buffer> g]'"
|
||||
\."| sil! exe 'nunmap <buffer> <C-W>]'| sil! exe 'nunmap <buffer> <C-W><C-]>'"
|
||||
|
||||
@@ -1,13 +1,19 @@
|
||||
" Vim syntax file
|
||||
" Language: Rust
|
||||
" Description: Vim syntax file for Rust
|
||||
" Maintainer: Chris Morgan <me@chrismorgan.info>
|
||||
" Last Change: 2013 Jul 10
|
||||
" Maintainer: Kevin Ballard <kevin@sb.org>
|
||||
" Last Change: Jul 07, 2014
|
||||
|
||||
if exists("b:did_ftplugin")
|
||||
finish
|
||||
endif
|
||||
let b:did_ftplugin = 1
|
||||
|
||||
let s:save_cpo = &cpo
|
||||
set cpo&vim
|
||||
|
||||
" Variables {{{1
|
||||
|
||||
" The rust source code at present seems to typically omit a leader on /*!
|
||||
" comments, so we'll use that as our default, but make it easy to switch.
|
||||
" This does not affect indentation at all (I tested it with and without
|
||||
@@ -25,6 +31,14 @@ setlocal formatoptions-=t formatoptions+=croqnl
|
||||
" j was only added in 7.3.541, so stop complaints about its nonexistence
|
||||
silent! setlocal formatoptions+=j
|
||||
|
||||
" smartindent will be overridden by indentexpr if filetype indent is on, but
|
||||
" otherwise it's better than nothing.
|
||||
setlocal smartindent nocindent
|
||||
|
||||
setlocal tabstop=4 shiftwidth=4 softtabstop=4 expandtab
|
||||
|
||||
setlocal textwidth=99
|
||||
|
||||
" This includeexpr isn't perfect, but it's a good start
|
||||
setlocal includeexpr=substitute(v:fname,'::','/','g')
|
||||
|
||||
@@ -42,4 +56,71 @@ if exists("g:loaded_delimitMate")
|
||||
let b:delimitMate_excluded_regions = delimitMate#Get("excluded_regions") . ',rustLifetimeCandidate,rustGenericLifetimeCandidate'
|
||||
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"
|
||||
" Motion Commands {{{1
|
||||
|
||||
" Bind motion commands to support hanging indents
|
||||
nnoremap <silent> <buffer> [[ :call rust#Jump('n', 'Back')<CR>
|
||||
nnoremap <silent> <buffer> ]] :call rust#Jump('n', 'Forward')<CR>
|
||||
xnoremap <silent> <buffer> [[ :call rust#Jump('v', 'Back')<CR>
|
||||
xnoremap <silent> <buffer> ]] :call rust#Jump('v', 'Forward')<CR>
|
||||
onoremap <silent> <buffer> [[ :call rust#Jump('o', 'Back')<CR>
|
||||
onoremap <silent> <buffer> ]] :call rust#Jump('o', 'Forward')<CR>
|
||||
|
||||
" Commands {{{1
|
||||
|
||||
" See |:RustRun| for docs
|
||||
command! -nargs=* -complete=file -bang -bar -buffer RustRun call rust#Run(<bang>0, [<f-args>])
|
||||
|
||||
" See |:RustExpand| for docs
|
||||
command! -nargs=* -complete=customlist,rust#CompleteExpand -bang -bar -buffer RustExpand call rust#Expand(<bang>0, [<f-args>])
|
||||
|
||||
" See |:RustEmitIr| for docs
|
||||
command! -nargs=* -bar -buffer RustEmitIr call rust#Emit("ir", [<f-args>])
|
||||
|
||||
" See |:RustEmitAsm| for docs
|
||||
command! -nargs=* -bar -buffer RustEmitAsm call rust#Emit("asm", [<f-args>])
|
||||
|
||||
" Mappings {{{1
|
||||
|
||||
" Bind ⌘R in MacVim to :RustRun
|
||||
nnoremap <silent> <buffer> <D-r> :RustRun<CR>
|
||||
" Bind ⌘⇧R in MacVim to :RustRun! pre-filled with the last args
|
||||
nnoremap <buffer> <D-R> :RustRun! <C-r>=join(b:rust_last_rustc_args)<CR><C-\>erust#AppendCmdLine(' -- ' . join(b:rust_last_args))<CR>
|
||||
|
||||
if !exists("b:rust_last_rustc_args") || !exists("b:rust_last_args")
|
||||
let b:rust_last_rustc_args = []
|
||||
let b:rust_last_args = []
|
||||
endif
|
||||
|
||||
" Cleanup {{{1
|
||||
|
||||
let b:undo_ftplugin = "
|
||||
\ setlocal formatoptions< comments< commentstring< includeexpr< suffixesadd<
|
||||
\|setlocal tabstop< shiftwidth< softtabstop< expandtab< textwidth<
|
||||
\|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
|
||||
\|else
|
||||
\|unlet! b:delimitMate_excluded_regions
|
||||
\|endif
|
||||
\|unlet! b:rust_last_rustc_args b:rust_last_args
|
||||
\|delcommand RustRun
|
||||
\|delcommand RustExpand
|
||||
\|delcommand RustEmitIr
|
||||
\|delcommand RustEmitAsm
|
||||
\|nunmap <buffer> <D-r>
|
||||
\|nunmap <buffer> <D-R>
|
||||
\|nunmap <buffer> [[
|
||||
\|nunmap <buffer> ]]
|
||||
\|xunmap <buffer> [[
|
||||
\|xunmap <buffer> ]]
|
||||
\|ounmap <buffer> [[
|
||||
\|ounmap <buffer> ]]
|
||||
\"
|
||||
|
||||
" }}}1
|
||||
|
||||
let &cpo = s:save_cpo
|
||||
unlet s:save_cpo
|
||||
|
||||
" vim: set noet sw=4 ts=4:
|
||||
|
||||
@@ -9,8 +9,9 @@ if exists("b:did_ftplugin")
|
||||
endif
|
||||
let b:did_ftplugin = 1
|
||||
|
||||
let b:undo_ftplugin = "setl cms< def< inc< inex< ofu< sua<"
|
||||
let b:undo_ftplugin = "setl com< cms< def< inc< inex< ofu< sua<"
|
||||
|
||||
setlocal comments=://
|
||||
setlocal commentstring=//\ %s
|
||||
setlocal define=^\\s*\\%(@mixin\\\|=\\)
|
||||
setlocal includeexpr=substitute(v:fname,'\\%(.*/\\\|^\\)\\zs','_','')
|
||||
|
||||
@@ -168,3 +168,27 @@ let g:tagbar_type_scala = {
|
||||
\ '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>
|
||||
|
||||
@@ -8,5 +8,6 @@ if exists("b:did_ftplugin")
|
||||
endif
|
||||
|
||||
runtime! ftplugin/sass.vim
|
||||
setlocal comments=s1:/*,mb:*,ex:*/,://
|
||||
|
||||
" vim:set sw=2:
|
||||
|
||||
15
indent/arduino.vim
Normal file
15
indent/arduino.vim
Normal 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<"
|
||||
12
indent/blade.vim
Normal file
12
indent/blade.vim
Normal file
@@ -0,0 +1,12 @@
|
||||
" Language: Blade (Laravel)
|
||||
" Maintainer: xsbeats <jwalton512@gmail.com>
|
||||
" URL: http://github.com/xsbeats/vim-blade
|
||||
" License: WTFPL
|
||||
|
||||
if exists("b:did_indent")
|
||||
finish
|
||||
endif
|
||||
|
||||
runtime! indent/html.vim
|
||||
|
||||
let b:did_indent = 1
|
||||
@@ -8,11 +8,6 @@
|
||||
" License: Same as Vim
|
||||
" Last Change: %%RELEASE_DATE%%
|
||||
|
||||
" TODO: Indenting after multibyte characters is broken:
|
||||
" (let [Δ (if foo
|
||||
" bar ; Indent error
|
||||
" baz)])
|
||||
|
||||
if exists("b:did_indent")
|
||||
finish
|
||||
endif
|
||||
@@ -21,7 +16,7 @@ let b:did_indent = 1
|
||||
let s:save_cpo = &cpo
|
||||
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 softtabstop=2 shiftwidth=2 expandtab
|
||||
@@ -57,36 +52,39 @@ if exists("*searchpairpos")
|
||||
let g:clojure_align_subforms = 0
|
||||
endif
|
||||
|
||||
function! s:SynIdName()
|
||||
function! s:syn_id_name()
|
||||
return synIDattr(synID(line("."), col("."), 0), "name")
|
||||
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]
|
||||
endfunction
|
||||
|
||||
function! s:CurrentWord()
|
||||
function! s:current_word()
|
||||
return getline('.')[col('.')-1 : searchpos('\v>', 'n', line('.'))[1]-2]
|
||||
endfunction
|
||||
|
||||
function! s:IsParen()
|
||||
return s:CurrentChar() =~ '\v[\(\)\[\]\{\}]' &&
|
||||
\ s:SynIdName() !~? '\vstring|regex|comment|character'
|
||||
function! s:is_paren()
|
||||
return s:current_char() =~# '\v[\(\)\[\]\{\}]' && !s:ignored_region()
|
||||
endfunction
|
||||
|
||||
" Returns 1 if string matches a pattern in 'patterns', which may be a
|
||||
" list of patterns, or a comma-delimited string of implicitly anchored
|
||||
" patterns.
|
||||
function! s:MatchesOne(patterns, string)
|
||||
function! s:match_one(patterns, string)
|
||||
let list = type(a:patterns) == type([])
|
||||
\ ? a:patterns
|
||||
\ : map(split(a:patterns, ','), '"^" . v:val . "$"')
|
||||
for pat in list
|
||||
if a:string =~ pat | return 1 | endif
|
||||
if a:string =~# pat | return 1 | endif
|
||||
endfor
|
||||
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
|
||||
" comments.
|
||||
if a:stopat == 0
|
||||
@@ -95,11 +93,11 @@ if exists("*searchpairpos")
|
||||
let stopat = a:stopat
|
||||
endif
|
||||
|
||||
let pos = searchpairpos(a:open, '', a:close, 'bWn', "!s:IsParen()", stopat)
|
||||
return [pos[0], virtcol(pos)]
|
||||
let pos = searchpairpos(a:open, '', a:close, 'bWn', "!s:is_paren()", stopat)
|
||||
return [pos[0], col(pos)]
|
||||
endfunction
|
||||
|
||||
function! s:ClojureCheckForStringWorker()
|
||||
function! s:clojure_check_for_string_worker()
|
||||
" 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
|
||||
" case we have to check also the previous character. The " might be the
|
||||
@@ -113,17 +111,17 @@ if exists("*searchpairpos")
|
||||
|
||||
call cursor(nb, 0)
|
||||
call cursor(0, col("$") - 1)
|
||||
if s:SynIdName() !~? "string"
|
||||
if s:syn_id_name() !~? "string"
|
||||
return -1
|
||||
endif
|
||||
|
||||
" This will not work for a " in the first column...
|
||||
if s:CurrentChar() == '"'
|
||||
if s:current_char() == '"'
|
||||
call cursor(0, col("$") - 2)
|
||||
if s:SynIdName() !~? "string"
|
||||
if s:syn_id_name() !~? "string"
|
||||
return -1
|
||||
endif
|
||||
if s:CurrentChar() != '\\'
|
||||
if s:current_char() != '\\'
|
||||
return -1
|
||||
endif
|
||||
call cursor(0, col("$") - 1)
|
||||
@@ -138,68 +136,74 @@ if exists("*searchpairpos")
|
||||
return indent(".")
|
||||
endfunction
|
||||
|
||||
function! s:CheckForString()
|
||||
function! s:check_for_string()
|
||||
let pos = getpos('.')
|
||||
try
|
||||
let val = s:ClojureCheckForStringWorker()
|
||||
let val = s:clojure_check_for_string_worker()
|
||||
finally
|
||||
call setpos('.', pos)
|
||||
endtry
|
||||
return val
|
||||
endfunction
|
||||
|
||||
function! s:StripNamespaceAndMacroChars(word)
|
||||
function! s:strip_namespace_and_macro_chars(word)
|
||||
return substitute(a:word, "\\v%(.*/|[#'`~@^,]*)(.*)", '\1', '')
|
||||
endfunction
|
||||
|
||||
function! s:ClojureIsMethodSpecialCaseWorker(position)
|
||||
function! s:clojure_is_method_special_case_worker(position)
|
||||
" Find the next enclosing form.
|
||||
call search('\S', 'Wb')
|
||||
|
||||
" Special case: we are at a '(('.
|
||||
if s:CurrentChar() == '('
|
||||
if s:current_char() == '('
|
||||
return 0
|
||||
endif
|
||||
call cursor(a:position)
|
||||
|
||||
let nextParen = s:MatchPairs('(', ')', 0)
|
||||
let next_paren = s:match_pairs('(', ')', 0)
|
||||
|
||||
" Special case: we are now at toplevel.
|
||||
if nextParen == [0, 0]
|
||||
if next_paren == [0, 0]
|
||||
return 0
|
||||
endif
|
||||
call cursor(nextParen)
|
||||
call cursor(next_paren)
|
||||
|
||||
call search('\S', 'W')
|
||||
let w = s:StripNamespaceAndMacroChars(s:CurrentWord())
|
||||
if g:clojure_special_indent_words =~ '\<' . w . '\>'
|
||||
let w = s:strip_namespace_and_macro_chars(s:current_word())
|
||||
if g:clojure_special_indent_words =~# '\V\<' . w . '\>'
|
||||
return 1
|
||||
endif
|
||||
|
||||
return 0
|
||||
endfunction
|
||||
|
||||
function! s:IsMethodSpecialCase(position)
|
||||
function! s:is_method_special_case(position)
|
||||
let pos = getpos('.')
|
||||
try
|
||||
let val = s:ClojureIsMethodSpecialCaseWorker(a:position)
|
||||
let val = s:clojure_is_method_special_case_worker(a:position)
|
||||
finally
|
||||
call setpos('.', pos)
|
||||
endtry
|
||||
return val
|
||||
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.
|
||||
if line(".") == 1
|
||||
return 0
|
||||
return [0, 0]
|
||||
endif
|
||||
|
||||
" We have to apply some heuristics here to figure out, whether to use
|
||||
" normal lisp indenting or not.
|
||||
let i = s:CheckForString()
|
||||
let i = s:check_for_string()
|
||||
if i > -1
|
||||
return i + !!g:clojure_align_multiline_strings
|
||||
return [0, i + !!g:clojure_align_multiline_strings]
|
||||
endif
|
||||
|
||||
call cursor(0, 1)
|
||||
@@ -207,28 +211,28 @@ if exists("*searchpairpos")
|
||||
" Find the next enclosing [ or {. We can limit the second search
|
||||
" to the line, where the [ was found. If no [ was there this is
|
||||
" zero and we search for an enclosing {.
|
||||
let paren = s:MatchPairs('(', ')', 0)
|
||||
let bracket = s:MatchPairs('\[', '\]', paren[0])
|
||||
let curly = s:MatchPairs('{', '}', bracket[0])
|
||||
let paren = s:match_pairs('(', ')', 0)
|
||||
let bracket = s:match_pairs('\[', '\]', paren[0])
|
||||
let curly = s:match_pairs('{', '}', bracket[0])
|
||||
|
||||
" 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
|
||||
" curly indent.
|
||||
if curly[0] > bracket[0] || curly[1] > bracket[1]
|
||||
if curly[0] > paren[0] || curly[1] > paren[1]
|
||||
return curly[1]
|
||||
return curly
|
||||
endif
|
||||
endif
|
||||
|
||||
" If the curly was not chosen, we take the bracket indent - if
|
||||
" there was one.
|
||||
if bracket[0] > paren[0] || bracket[1] > paren[1]
|
||||
return bracket[1]
|
||||
return bracket
|
||||
endif
|
||||
|
||||
" There are neither { nor [ nor (, ie. we are at the toplevel.
|
||||
if paren == [0, 0]
|
||||
return 0
|
||||
return paren
|
||||
endif
|
||||
|
||||
" Now we have to reimplement lispindent. This is surprisingly easy, as
|
||||
@@ -246,58 +250,116 @@ if exists("*searchpairpos")
|
||||
" - In any other case we use the column of the end of the word + 2.
|
||||
call cursor(paren)
|
||||
|
||||
if s:IsMethodSpecialCase(paren)
|
||||
return paren[1] + &shiftwidth - 1
|
||||
if s:is_method_special_case(paren)
|
||||
return [paren[0], paren[1] + &shiftwidth - 1]
|
||||
endif
|
||||
|
||||
" In case we are at the last character, we use the paren position.
|
||||
if col("$") - 1 == paren[1]
|
||||
return paren[1]
|
||||
return paren
|
||||
endif
|
||||
|
||||
" In case after the paren is a whitespace, we search for the next word.
|
||||
call cursor(0, col('.') + 1)
|
||||
if s:CurrentChar() == ' '
|
||||
if s:current_char() == ' '
|
||||
call search('\v\S', 'W')
|
||||
endif
|
||||
|
||||
" If we moved to another line, there is no word after the (. We
|
||||
" use the ( position for indent.
|
||||
if line(".") > paren[0]
|
||||
return paren[1]
|
||||
return paren
|
||||
endif
|
||||
|
||||
" We still have to check, whether the keyword starts with a (, [ or {.
|
||||
" In that case we use the ( position for indent.
|
||||
let w = s:CurrentWord()
|
||||
if stridx('([{', w[0]) > -1
|
||||
return paren[1]
|
||||
let w = s:current_word()
|
||||
if s:bracket_type(w[0]) == 1
|
||||
return paren
|
||||
endif
|
||||
|
||||
" Test words without namespace qualifiers and leading reader macro
|
||||
" metacharacters.
|
||||
"
|
||||
" e.g. clojure.core/defn and #'defn should both indent like defn.
|
||||
let ww = s:StripNamespaceAndMacroChars(w)
|
||||
let ww = s:strip_namespace_and_macro_chars(w)
|
||||
|
||||
if &lispwords =~ '\V\<' . ww . '\>'
|
||||
return paren[1] + &shiftwidth - 1
|
||||
if &lispwords =~# '\V\<' . ww . '\>'
|
||||
return [paren[0], paren[1] + &shiftwidth - 1]
|
||||
endif
|
||||
|
||||
if g:clojure_fuzzy_indent
|
||||
\ && !s:MatchesOne(g:clojure_fuzzy_indent_blacklist, ww)
|
||||
\ && s:MatchesOne(g:clojure_fuzzy_indent_patterns, ww)
|
||||
return paren[1] + &shiftwidth - 1
|
||||
\ && !s:match_one(g:clojure_fuzzy_indent_blacklist, ww)
|
||||
\ && s:match_one(g:clojure_fuzzy_indent_patterns, ww)
|
||||
return [paren[0], paren[1] + &shiftwidth - 1]
|
||||
endif
|
||||
|
||||
call search('\v\_s', 'cW')
|
||||
call search('\v\S', 'W')
|
||||
if paren[0] < line(".")
|
||||
return paren[1] + (g:clojure_align_subforms ? 0 : &shiftwidth - 1)
|
||||
return [paren[0], paren[1] + (g:clojure_align_subforms ? 0 : &shiftwidth - 1)]
|
||||
endif
|
||||
|
||||
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
|
||||
|
||||
setlocal indentexpr=GetClojureIndent()
|
||||
@@ -312,85 +374,6 @@ else
|
||||
|
||||
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
|
||||
unlet! s:save_cpo
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
" Vim indent file
|
||||
" Language: Cucumber
|
||||
" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
|
||||
" Last Change: 2010 May 21
|
||||
" Last Change: 2013 May 30
|
||||
|
||||
if exists("b:did_indent")
|
||||
finish
|
||||
|
||||
@@ -59,6 +59,10 @@ function! GetElixirIndent()
|
||||
|
||||
let ind += opened_symbol * &sw
|
||||
|
||||
if current_line =~ '^\s*\(\]\|}\)'
|
||||
let ind -= &sw
|
||||
endif
|
||||
|
||||
if last_line =~ s:indent_keywords
|
||||
let ind += &sw
|
||||
endif
|
||||
|
||||
14
indent/ember-script.vim
Normal file
14
indent/ember-script.vim
Normal 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
|
||||
6
indent/emblem.vim
Normal file
6
indent/emblem.vim
Normal file
@@ -0,0 +1,6 @@
|
||||
" Language: emblem
|
||||
" Maintainer: heartsentwined <heartsentwined@cogito-lab.com>
|
||||
" URL: http://github.com/heartsentwined/vim-emblem
|
||||
" Version: 1.2.0
|
||||
" Last Change: 2013 Apr 22
|
||||
" License: GPL-3.0
|
||||
@@ -19,6 +19,9 @@ else
|
||||
endif
|
||||
unlet! b:did_indent
|
||||
|
||||
" Force HTML indent to not keep state.
|
||||
let b:html_indent_usestate = 0
|
||||
|
||||
if &l:indentexpr == ''
|
||||
if &l:cindent
|
||||
let &l:indentexpr = 'cindent(v:lnum)'
|
||||
@@ -53,7 +56,8 @@ function! GetErubyIndent(...)
|
||||
else
|
||||
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('
|
||||
\ && exists('b:indent')
|
||||
\ && type(b:indent) == type({})
|
||||
|
||||
@@ -68,7 +68,7 @@ function! HIndent(lnum)
|
||||
endif
|
||||
endif
|
||||
|
||||
if prevl =~ '\Wof\s*$' || prevl =~ '\Wdo\s*$'
|
||||
if prevl =~ '\Wof\s*$' || prevl =~ '\Wm\=do\s*$'
|
||||
return previ + &sw
|
||||
endif
|
||||
|
||||
|
||||
@@ -36,7 +36,7 @@ let b:did_indent = 1
|
||||
|
||||
" [-- local settings (must come before aborting the script) --]
|
||||
setlocal indentexpr=HtmlIndentGet(v:lnum)
|
||||
setlocal indentkeys=o,O,*<Return>,<>>,{,}
|
||||
setlocal indentkeys=o,O,*<Return>,<>>,{,},!^F
|
||||
|
||||
|
||||
let s:tags = []
|
||||
@@ -61,6 +61,8 @@ call add(s:tags, 'dfn')
|
||||
call add(s:tags, 'dir')
|
||||
call add(s:tags, 'div')
|
||||
call add(s:tags, 'dl')
|
||||
call add(s:tags, 'dt')
|
||||
call add(s:tags, 'dd')
|
||||
call add(s:tags, 'em')
|
||||
call add(s:tags, 'fieldset')
|
||||
call add(s:tags, 'font')
|
||||
|
||||
@@ -60,7 +60,7 @@ function! GetJadeIndent()
|
||||
return increase
|
||||
elseif line =~? '^\v%('.g:jade_self_closing_tags.')>'
|
||||
return indent
|
||||
elseif group =~? '\v^%(jadeAttributesDelimiter|jadeClass|jadeId|htmlTagName|htmlSpecialTagName|jadeFilter)$'
|
||||
elseif group =~? '\v^%(jadeAttributesDelimiter|jadeClass|jadeId|htmlTagName|htmlSpecialTagName|jadeFilter|jadeTagBlockChar)$'
|
||||
return increase
|
||||
else
|
||||
return indent
|
||||
|
||||
62
indent/liquid.vim
Normal file
62
indent/liquid.vim
Normal file
@@ -0,0 +1,62 @@
|
||||
" Vim indent file
|
||||
" Language: Liquid
|
||||
" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
|
||||
" Last Change: 2010 May 21
|
||||
|
||||
if exists('b:did_indent')
|
||||
finish
|
||||
endif
|
||||
|
||||
set indentexpr=
|
||||
if exists('b:liquid_subtype')
|
||||
exe 'runtime! indent/'.b:liquid_subtype.'.vim'
|
||||
else
|
||||
runtime! indent/html.vim
|
||||
endif
|
||||
unlet! b:did_indent
|
||||
|
||||
if &l:indentexpr == ''
|
||||
if &l:cindent
|
||||
let &l:indentexpr = 'cindent(v:lnum)'
|
||||
else
|
||||
let &l:indentexpr = 'indent(prevnonblank(v:lnum-1))'
|
||||
endif
|
||||
endif
|
||||
let b:liquid_subtype_indentexpr = &l:indentexpr
|
||||
|
||||
let b:did_indent = 1
|
||||
|
||||
setlocal indentexpr=GetLiquidIndent()
|
||||
setlocal indentkeys=o,O,*<Return>,<>>,{,},0),0],o,O,!^F,=end,=endif,=endunless,=endifchanged,=endcase,=endfor,=endtablerow,=endcapture,=else,=elsif,=when,=empty
|
||||
|
||||
" Only define the function once.
|
||||
if exists('*GetLiquidIndent')
|
||||
finish
|
||||
endif
|
||||
|
||||
function! s:count(string,pattern)
|
||||
let string = substitute(a:string,'\C'.a:pattern,"\n",'g')
|
||||
return strlen(substitute(string,"[^\n]",'','g'))
|
||||
endfunction
|
||||
|
||||
function! GetLiquidIndent(...)
|
||||
if a:0 && a:1 == '.'
|
||||
let v:lnum = line('.')
|
||||
elseif a:0 && a:1 =~ '^\d'
|
||||
let v:lnum = a:1
|
||||
endif
|
||||
let vcol = col('.')
|
||||
call cursor(v:lnum,1)
|
||||
exe "let ind = ".b:liquid_subtype_indentexpr
|
||||
let lnum = prevnonblank(v:lnum-1)
|
||||
let line = getline(lnum)
|
||||
let cline = getline(v:lnum)
|
||||
let line = substitute(line,'\C^\%(\s*{%\s*end\w*\s*%}\)\+','','')
|
||||
let line .= matchstr(cline,'\C^\%(\s*{%\s*end\w*\s*%}\)\+')
|
||||
let cline = substitute(cline,'\C^\%(\s*{%\s*end\w*\s*%}\)\+','','')
|
||||
let ind += &sw * s:count(line,'{%\s*\%(if\|elsif\|else\|unless\|ifchanged\|case\|when\|for\|empty\|tablerow\|capture\)\>')
|
||||
let ind -= &sw * s:count(line,'{%\s*end\%(if\|unless\|ifchanged\|case\|for\|tablerow\|capture\)\>')
|
||||
let ind -= &sw * s:count(cline,'{%\s*\%(elsif\|else\|when\|empty\)\>')
|
||||
let ind -= &sw * s:count(cline,'{%\s*end\w*$')
|
||||
return ind
|
||||
endfunction
|
||||
10
indent/opencl.vim
Normal file
10
indent/opencl.vim
Normal 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
|
||||
@@ -1,7 +1,7 @@
|
||||
" Vim indent file
|
||||
" Language: Puppet
|
||||
" Maintainer: Todd Zullinger <tmz@pobox.com>
|
||||
" Last Change: 2009 Aug 19
|
||||
" Language: Puppet
|
||||
" Maintainer: Todd Zullinger <tmz@pobox.com>
|
||||
" Last Change: 2009 Aug 19
|
||||
" vim: set sw=4 sts=4:
|
||||
|
||||
if exists("b:did_indent")
|
||||
@@ -67,10 +67,28 @@ function! GetPuppetIndent()
|
||||
let ind -= &sw
|
||||
endif
|
||||
|
||||
" Match } }, }; ] ]: )
|
||||
if line =~ '^\s*\(}\(,\|;\)\?$\|]:\?$\|)\)'
|
||||
" Match } }, }; ] ]: ], ]; )
|
||||
if line =~ '^\s*\(}\(,\|;\)\?$\|]:\|],\|}]\|];\?$\|)\)'
|
||||
let ind = indent(s:OpenBrace(v:lnum))
|
||||
endif
|
||||
|
||||
" Don't actually shift over for } else {
|
||||
if line =~ '^\s*}\s*els\(e\|if\).*{\s*$'
|
||||
let ind -= &sw
|
||||
endif
|
||||
|
||||
" Don't indent resources that are one after another with a ->(ordering arrow)
|
||||
" file {'somefile':
|
||||
" ...
|
||||
" } ->
|
||||
"
|
||||
" package { 'mycoolpackage':
|
||||
" ...
|
||||
" }
|
||||
if line =~ '->$'
|
||||
let ind -= &sw
|
||||
endif
|
||||
|
||||
|
||||
return ind
|
||||
endfunction
|
||||
|
||||
213
indent/python.vim
Normal file
213
indent/python.vim
Normal 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
|
||||
@@ -90,13 +90,20 @@ let s:end_skip_expr = s:skip_expr .
|
||||
let s:non_bracket_continuation_regex = '\%([\\.,:*/%+]\|\<and\|\<or\|\%(<%\)\@<![=-]\|\W[|&?]\|||\|&&\)\s*\%(#.*\)\=$'
|
||||
|
||||
" Regex that defines continuation lines.
|
||||
" TODO: this needs to deal with if ...: and so on
|
||||
let s:continuation_regex =
|
||||
\ '\%(%\@<![({[\\.,:*/%+]\|\<and\|\<or\|\%(<%\)\@<![=-]\|\W[|&?]\|||\|&&\)\s*\%(#.*\)\=$'
|
||||
|
||||
" Regex that defines continuable keywords
|
||||
let s:continuable_regex =
|
||||
\ '\C\%(^\s*\|[=,*/%+\-|;{]\|<<\|>>\|:\s\)\s*\zs' .
|
||||
\ '\<\%(if\|for\|while\|until\|unless\):\@!\>'
|
||||
|
||||
" Regex that defines bracket continuations
|
||||
let s:bracket_continuation_regex = '%\@<!\%([({[]\)\s*\%(#.*\)\=$'
|
||||
|
||||
" Regex that defines end of bracket continuation followed by another continuation
|
||||
let s:bracket_switch_continuation_regex = '^\([^(]\+\zs).\+\)\+'.s:continuation_regex
|
||||
|
||||
" Regex that defines the first part of a splat pattern
|
||||
let s:splat_regex = '[[,(]\s*\*\s*\%(#.*\)\=$'
|
||||
|
||||
@@ -488,6 +495,10 @@ function GetRubyIndent(...)
|
||||
endif
|
||||
endif
|
||||
|
||||
if s:Match(lnum, s:continuable_regex) && s:Match(lnum, s:continuation_regex)
|
||||
return indent(s:GetMSL(lnum)) + &sw + &sw
|
||||
endif
|
||||
|
||||
" If the previous line ended with a block opening, add a level of indent.
|
||||
if s:Match(lnum, s:block_regex)
|
||||
return indent(s:GetMSL(lnum)) + &sw
|
||||
@@ -575,10 +586,14 @@ function GetRubyIndent(...)
|
||||
let p_lnum = lnum
|
||||
let lnum = s:GetMSL(lnum)
|
||||
|
||||
" If the previous line wasn't a MSL and is continuation return its indent.
|
||||
" TODO: the || s:IsInString() thing worries me a bit.
|
||||
" If the previous line wasn't a MSL.
|
||||
if p_lnum != lnum
|
||||
if s:Match(p_lnum, s:non_bracket_continuation_regex) || s:IsInString(p_lnum,strlen(line))
|
||||
" If previous line ends bracket and begins non-bracket continuation decrease indent by 1.
|
||||
if s:Match(p_lnum, s:bracket_switch_continuation_regex)
|
||||
return ind - 1
|
||||
" If previous line is a continuation return its indent.
|
||||
" TODO: the || s:IsInString() thing worries me a bit.
|
||||
elseif s:Match(p_lnum, s:non_bracket_continuation_regex) || s:IsInString(p_lnum,strlen(line))
|
||||
return ind
|
||||
endif
|
||||
endif
|
||||
|
||||
@@ -13,7 +13,7 @@ setlocal cindent
|
||||
setlocal cinoptions=L0,(0,Ws,JN,j1
|
||||
setlocal cinkeys=0{,0},!^F,o,O,0[,0]
|
||||
" 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
|
||||
setlocal nolisp " Make sure lisp indenting doesn't supersede us
|
||||
@@ -30,7 +30,7 @@ endif
|
||||
|
||||
" 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.
|
||||
" Use syntax highlighting attributes when possible.
|
||||
" 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
|
||||
" the start of the comment. synID() is slow, a linear search would take
|
||||
" 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 max = line_len
|
||||
while min < max
|
||||
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
|
||||
else
|
||||
let min = col + 1
|
||||
@@ -61,6 +61,20 @@ function s:get_line_trimmed(lnum)
|
||||
endif
|
||||
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)
|
||||
|
||||
" Starting assumption: cindent (called at the end) will do it right
|
||||
@@ -73,10 +87,10 @@ function GetRustIndent(lnum)
|
||||
if synname == "rustString"
|
||||
" If the start of the line is in a string, don't change the indent
|
||||
return -1
|
||||
elseif synname =~ "\\(Comment\\|Todo\\)"
|
||||
\ && line !~ "^\\s*/\\*" " not /* opening line
|
||||
elseif synname =~ '\(Comment\|Todo\)'
|
||||
\ && line !~ '^\s*/\*' " not /* opening 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
|
||||
" leader, so the correct indentation is that of the
|
||||
" previous line.
|
||||
@@ -101,10 +115,16 @@ function GetRustIndent(lnum)
|
||||
" };
|
||||
|
||||
" 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] == ","
|
||||
\ && s:get_line_trimmed(a:lnum) !~ "^\\s*[\\[\\]{}]"
|
||||
\ && prevline !~ "^\\s*fn\\s"
|
||||
\ && s:get_line_trimmed(a:lnum) !~ '^\s*[\[\]{}]'
|
||||
\ && prevline !~ '^\s*fn\s'
|
||||
\ && prevline !~ '([^()]\+,$'
|
||||
" 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
|
||||
" indent.
|
||||
@@ -119,6 +139,16 @@ function GetRustIndent(lnum)
|
||||
" fn foo(baz: Baz,
|
||||
" 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
|
||||
" well. Add them as needed.
|
||||
return GetRustIndent(a:lnum - 1)
|
||||
@@ -141,8 +171,10 @@ function GetRustIndent(lnum)
|
||||
" column zero)
|
||||
|
||||
call cursor(a:lnum, 1)
|
||||
if searchpair('{\|(', '', '}\|)', 'nbW') == 0
|
||||
if searchpair('\[', '', '\]', 'nbW') == 0
|
||||
if searchpair('{\|(', '', '}\|)', 'nbW',
|
||||
\ 's:is_string_comment(line("."), col("."))') == 0
|
||||
if searchpair('\[', '', '\]', 'nbW',
|
||||
\ 's:is_string_comment(line("."), col("."))') == 0
|
||||
" Global scope, should be zero
|
||||
return 0
|
||||
else
|
||||
|
||||
@@ -4,18 +4,22 @@
|
||||
" Modifications by : Derek Wyatt
|
||||
" Last Change: 2011 Mar 19 (Derek Wyatt)
|
||||
|
||||
"if exists("b:did_indent")
|
||||
" finish
|
||||
"endif
|
||||
"let b:did_indent = 1
|
||||
if exists("b:did_indent")
|
||||
finish
|
||||
endif
|
||||
let b:did_indent = 1
|
||||
|
||||
setlocal indentexpr=GetScalaIndent()
|
||||
setlocal indentkeys=0{,0},0),!^F,<>>,o,O,e,=case,<CR>
|
||||
setlocal autoindent
|
||||
setlocal softtabstop=2
|
||||
setlocal tabstop=2
|
||||
setlocal shiftwidth=2
|
||||
setlocal expandtab
|
||||
|
||||
"if exists("*GetScalaIndent")
|
||||
" finish
|
||||
"endif
|
||||
if exists("*GetScalaIndent")
|
||||
finish
|
||||
endif
|
||||
|
||||
let s:defMatcher = '\%(\%(private\|protected\)\%(\[[^\]]*\]\)\?\s\+\|abstract\s\+\|override\s\+\)*\<def\>'
|
||||
let s:funcNameMatcher = '\w\+'
|
||||
@@ -515,7 +519,7 @@ function! GetScalaIndent()
|
||||
endif
|
||||
|
||||
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")
|
||||
let ind = ind + &shiftwidth
|
||||
endif
|
||||
|
||||
15
indent/swift.vim
Normal file
15
indent/swift.vim
Normal file
@@ -0,0 +1,15 @@
|
||||
" Language: Swift<https://developer.apple.com/swift/>
|
||||
" Maintainer: toyama satoshi <toyamarinyon@gmail.com>
|
||||
" URL: http://github.com/toyamarinyon/vim-swift
|
||||
" License: GPL
|
||||
|
||||
" 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<"
|
||||
35
syntax/blade.vim
Normal file
35
syntax/blade.vim
Normal file
@@ -0,0 +1,35 @@
|
||||
" Language: Blade (Laravel)
|
||||
" Maintainer: xsbeats <jwalton512@gmail.com>
|
||||
" URL: http://github.com/xsbeats/vim-blade
|
||||
" License: WTFPL
|
||||
|
||||
if exists("b:current_syntax")
|
||||
finish
|
||||
endif
|
||||
|
||||
runtime! syntax/html.vim
|
||||
unlet b:current_syntax
|
||||
|
||||
runtime! syntax/php.vim
|
||||
unlet b:current_syntax
|
||||
|
||||
syn match bladeConditional /@\(choice\|each\|elseif\|extends\|for\|foreach\|if\|include\|lang\|section\|unless\|while\|yield\)\>\s*/ nextgroup=bladeParenBlock containedin=ALLBUT,bladeComment
|
||||
|
||||
syn match bladeKeyword /@\(else\|endfor\|endforeach\|endif\|endsection\|endunless\|endwhile\|overwrite\|parent\|show\|stop\)\>/ containedin=ALL,bladeComment
|
||||
|
||||
syn region bladeCommentBlock start="{{--" end="--}}" contains=bladeComment keepend containedin=TOP
|
||||
syn match bladeComment /.*/ contained containedin=bladeCommentBlock
|
||||
|
||||
syn region bladeEchoUnescaped matchgroup=bladeEchoDelim start="\([@|{]\)\@<!{{\(--\)\@!" end="}}" contains=@phpClInside containedin=ALLBUT,bladeComment
|
||||
syn region bladeEchoEscaped matchgroup=bladeEchoDelim start="\(@\)\@<!{{{" end="}}}" contains=@phpClInside containedin=ALLBUT,bladeComment
|
||||
|
||||
syn cluster bladeStatement contains=bladeConditional,bladeKeyword
|
||||
|
||||
syn region bladeParenBlock start="(" end=")" contained oneline contains=bladeParenBlock,@phpClInside,@bladeStatement extend keepend
|
||||
|
||||
hi def link bladeComment Comment
|
||||
hi def link bladeConditional Conditional
|
||||
hi def link bladeKeyword Keyword
|
||||
hi def link bladeEchoDelim Delimiter
|
||||
|
||||
let b:current_syntax = 'blade'
|
||||
@@ -379,8 +379,13 @@ endif
|
||||
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*:[^:]"me=e-1 contains=@cLabelGroup
|
||||
syn match cUserCont display ";\s*\I\i*\s*:[^:]"me=e-1 contains=@cLabelGroup
|
||||
if s:ft ==# 'cpp'
|
||||
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
|
||||
|
||||
|
||||
@@ -116,7 +116,7 @@ syn match cabalOperator '\W\@<=impl\((.\+)\)\@='
|
||||
syn match cabalOperator '\W\@<=flag\((.\+)\)\@='
|
||||
syn match cabalOperator '\(^\s*--.*\)\@<!\(<\|>\|=\|||\|&&\)'
|
||||
|
||||
syn match cabalComment '\s\@<=--.*$'
|
||||
syn match cabalComment '--.*$' contains=@Spell
|
||||
|
||||
if version >= 508 || !exists('did_cabal_syntax_inits')
|
||||
if version < 508
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -2,7 +2,7 @@
|
||||
" Language: C++
|
||||
" Current Maintainer: vim-jp (https://github.com/vim-jp/cpp-vim)
|
||||
" 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 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 cppStorageClass constexpr decltype
|
||||
syn keyword cppConstant nullptr
|
||||
" A C++11 raw-string literal. It tries to follow 2.14.5 and 2.14.5.2 of the
|
||||
" standard.
|
||||
syn region cppRawString matchgroup=cppRawDelim start=+\%(u8\=\|[LU]\)\=R"\z(\%([ ()\\\d9-\d12]\@![\d0-\d127]\)\{,16}\)(+ end=+)\z1"+ contains=@Spell
|
||||
syn region cppRawString matchgroup=cppRawDelimiter start=+\%(u8\|[uLU]\)\=R"\z([[:alnum:]_{}[\]#<>%:;.?*\+\-/\^&|~!=,"']\{,16}\)(+ end=+)\z1"+ contains=@Spell
|
||||
endif
|
||||
|
||||
" The minimum and maximum operators in GNU C++
|
||||
@@ -65,7 +63,7 @@ if version >= 508 || !exists("did_cpp_syntax_inits")
|
||||
HiLink cppStructure Structure
|
||||
HiLink cppBoolean Boolean
|
||||
HiLink cppConstant Constant
|
||||
HiLink cppRawDelim cFormat
|
||||
HiLink cppRawDelimiter Delimiter
|
||||
HiLink cppRawString String
|
||||
delcommand HiLink
|
||||
endif
|
||||
|
||||
654
syntax/css.vim
Normal file
654
syntax/css.vim
Normal file
@@ -0,0 +1,654 @@
|
||||
" Vim syntax file
|
||||
" Language: Cascading Style Sheets
|
||||
" Previous Contributor List:
|
||||
" Claudio Fleiner <claudio@fleiner.com> (Maintainer)
|
||||
" Yeti (Add full CSS2, HTML4 support)
|
||||
" Nikolai Weibull (Add CSS2 support)
|
||||
" Maintainer: Jules Wang <w.jq0722@gmail.com>
|
||||
" URL: https://github.com/JulesWang/css.vim
|
||||
" Last Change: 2013 Nov.27
|
||||
|
||||
" For version 5.x: Clear all syntax items
|
||||
" For version 6.x: 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 = 'css'
|
||||
elseif exists("b:current_syntax") && b:current_syntax == "css"
|
||||
finish
|
||||
endif
|
||||
|
||||
let s:cpo_save = &cpo
|
||||
set cpo&vim
|
||||
|
||||
syn case ignore
|
||||
|
||||
" All HTML4 tags
|
||||
syn keyword cssTagName abbr acronym address applet area a b base
|
||||
syn keyword cssTagName basefont bdo big blockquote body br button
|
||||
syn keyword cssTagName caption center cite code col colgroup dd del
|
||||
syn keyword cssTagName dfn dir div dl dt em fieldset font form frame
|
||||
syn keyword cssTagName frameset h1 h2 h3 h4 h5 h6 head hr html img i
|
||||
syn keyword cssTagName iframe img input ins isindex kbd label legend li
|
||||
syn keyword cssTagName link map menu meta noframes noscript ol optgroup
|
||||
syn keyword cssTagName option p param pre q s samp script select small
|
||||
syn keyword cssTagName span strike strong style sub sup table tbody td
|
||||
syn keyword cssTagName textarea tfoot th thead title tr tt ul u var
|
||||
syn keyword cssTagName object svg
|
||||
|
||||
" 34 HTML5 tags
|
||||
syn keyword cssTagName article aside audio bdi canvas command data
|
||||
syn keyword cssTagName datalist details dialog embed figcaption figure footer
|
||||
syn keyword cssTagName header hgroup keygen main mark menuitem meter nav
|
||||
syn keyword cssTagName output progress rt rp ruby section
|
||||
syn keyword cssTagName source summary time track video wbr
|
||||
|
||||
" Tags not supported in HTML5
|
||||
syn keyword cssDeprecated acronym applet basefont big center dir
|
||||
syn keyword cssDeprecated font frame frameset noframes strike tt
|
||||
|
||||
syn match cssTagName "\*"
|
||||
|
||||
" selectors
|
||||
syn match cssSelectorOp "[,>+~]"
|
||||
syn match cssSelectorOp2 "[~|^$*]\?=" contained
|
||||
syn region cssAttributeSelector matchgroup=cssSelectorOp start="\[" end="]" contains=cssUnicodeEscape,cssSelectorOp2,cssStringQ,cssStringQQ
|
||||
|
||||
" .class and #id
|
||||
syn match cssClassName "\.[A-Za-z][A-Za-z0-9_-]\+" contains=cssClassNameDot
|
||||
syn match cssClassNameDot contained '\.'
|
||||
|
||||
try
|
||||
syn match cssIdentifier "#[A-Za-z<>-<2D>_@][A-Za-z<>-<2D>0-9_@-]*"
|
||||
catch /^.*/
|
||||
syn match cssIdentifier "#[A-Za-z_@][A-Za-z0-9_@-]*"
|
||||
endtry
|
||||
|
||||
" digits
|
||||
syn match cssValueInteger contained "[-+]\=\d\+" contains=cssUnitDecorators
|
||||
syn match cssValueNumber contained "[-+]\=\d\+\(\.\d*\)\=" contains=cssUnitDecorators
|
||||
syn match cssValueLength contained "[-+]\=\d\+\(\.\d*\)\=\(%\|mm\|cm\|in\|pt\|pc\|em\|ex\|px\|rem\|dpi\|dppx\|dpcm\)" contains=cssUnitDecorators
|
||||
syn match cssValueAngle contained "[-+]\=\d\+\(\.\d*\)\=\(deg\|grad\|rad\)" contains=cssUnitDecorators
|
||||
syn match cssValueTime contained "+\=\d\+\(\.\d*\)\=\(ms\|s\)" contains=cssUnitDecorators
|
||||
syn match cssValueFrequency contained "+\=\d\+\(\.\d*\)\=\(Hz\|kHz\)" contains=cssUnitDecorators
|
||||
|
||||
|
||||
syn match cssIncludeKeyword /@\(-[a-z]\+-\)\=\(media\|keyframes\|import\|charset\|namespace\|page\)/ contained
|
||||
" @media
|
||||
syn region cssInclude start=/@media\>/ end=/\ze{/ skipwhite skipnl contains=cssMediaProp,cssValueLength,cssMediaKeyword,cssValueInteger,cssMediaAttr,cssVendor,cssMediaType,cssIncludeKeyword,cssMediaComma,cssComment nextgroup=cssMediaBlock
|
||||
syn keyword cssMediaType contained screen print aural braille embossed handheld projection tty tv speech all contained skipwhite skipnl
|
||||
syn keyword cssMediaKeyword only not and contained
|
||||
syn region cssMediaBlock transparent matchgroup=cssBraces start='{' end='}' contains=css.*Attr,css.*Prop,cssComment,cssValue.*,cssColor,cssURL,cssImportant,cssError,cssStringQ,cssStringQQ,cssFunction,cssUnicodeEscape,cssVendor,cssDefinition,cssTagName,cssClassName,cssIdentifier,cssPseudoClass,cssSelectorOp,cssSelectorOp2,cssAttributeSelector fold
|
||||
syn match cssMediaComma "," skipwhite skipnl contained
|
||||
|
||||
" Reference: http://www.w3.org/TR/css3-mediaqueries/
|
||||
syn keyword cssMediaProp contained width height orientation scan grid
|
||||
syn match cssMediaProp contained /\(\(max\|min\)-\)\=\(\(device\)-\)\=aspect-ratio/
|
||||
syn match cssMediaProp contained /\(\(max\|min\)-\)\=device-pixel-ratio/
|
||||
syn match cssMediaProp contained /\(\(max\|min\)-\)\=device-\(height\|width\)/
|
||||
syn match cssMediaProp contained /\(\(max\|min\)-\)\=\(height\|width\|resolution\|monochrome\|color\(-index\)\=\)/
|
||||
syn keyword cssMediaAttr contained portrait landscape progressive interlace
|
||||
|
||||
" @page
|
||||
" http://www.w3.org/TR/css3-page/
|
||||
syn match cssPage "@page\>[^{]*{\@=" contains=cssPagePseudo,cssIncludeKeyword nextgroup=cssPageWrap transparent skipwhite skipnl
|
||||
syn match cssPagePseudo /:\(left\|right\|first\|blank\)/ contained skipwhite skipnl
|
||||
syn region cssPageWrap contained transparent matchgroup=cssBraces start="{" end="}" contains=cssPageMargin,cssPageProp,cssAttrRegion,css.*Prop,cssComment,cssValue.*,cssColor,cssURL,cssImportant,cssError,cssStringQ,cssStringQQ,cssFunction,cssUnicodeEscape,cssVendor,cssDefinition,cssHacks
|
||||
syn match cssPageMargin /@\(\(top\|left\|right\|bottom\)-\(left\|center\|right\|middle\|bottom\)\)\(-corner\)\=/ contained nextgroup=cssDefinition skipwhite skipnl
|
||||
syn keyword cssPageProp contained content size
|
||||
" http://www.w3.org/TR/CSS2/page.html#break-inside
|
||||
syn keyword cssPageProp contained orphans widows
|
||||
|
||||
" @keyframe
|
||||
" http://www.w3.org/TR/css3-animations/#keyframes
|
||||
syn match cssKeyFrame "@\(-[a-z]\+-\)\=keyframes\>[^{]*{\@=" nextgroup=cssKeyFrameWrap contains=cssVendor,cssIncludeKeyword skipwhite skipnl transparent
|
||||
syn region cssKeyFrameWrap contained transparent matchgroup=cssBraces start="{" end="}" contains=cssKeyFrameSelector
|
||||
syn match cssKeyFrameSelector /\(\d*%\|from\|to\)\=/ contained skipwhite skipnl nextgroup=cssDefinition
|
||||
|
||||
" @import
|
||||
syn region cssInclude start=/@import\>/ end=/\ze;/ transparent contains=cssStringQ,cssStringQQ,cssUnicodeEscape,cssComment,cssIncludeKeyword,cssURL,cssMediaProp,cssValueLength,cssMediaKeyword,cssValueInteger,cssMediaAttr,cssVendor,cssMediaType
|
||||
syn region cssInclude start=/@charset\>/ end=/\ze;/ transparent contains=cssStringQ,cssStringQQ,cssUnicodeEscape,cssComment,cssIncludeKeyword
|
||||
syn region cssInclude start=/@namespace\>/ end=/\ze;/ transparent contains=cssStringQ,cssStringQQ,cssUnicodeEscape,cssComment,cssIncludeKeyword
|
||||
|
||||
" @font-face
|
||||
" http://www.w3.org/TR/css3-fonts/#at-font-face-rule
|
||||
syn match cssFontDescriptor "@font-face\>" nextgroup=cssFontDescriptorBlock skipwhite skipnl
|
||||
syn region cssFontDescriptorBlock contained transparent matchgroup=cssBraces start="{" end="}" contains=cssComment,cssError,cssUnicodeEscape,cssFontProp,cssFontAttr,cssCommonAttr,cssStringQ,cssStringQQ,cssFontDescriptorProp,cssValue.*,cssFontDescriptorFunction,cssUnicodeRange,cssFontDescriptorAttr,cssNoise
|
||||
"syn match cssFontDescriptorProp contained "\<\(unicode-range\|unit-per-em\|panose-1\|cap-height\|x-height\|definition-src\)\>"
|
||||
"syn keyword cssFontDescriptorProp contained src stemv stemh slope ascent descent widths bbox baseline centerline mathline topline
|
||||
syn keyword cssFontDescriptorProp contained src
|
||||
syn match cssFontDescriptorProp contained "\<unicode-range\>"
|
||||
syn keyword cssFontDescriptorAttr contained all
|
||||
syn region cssFontDescriptorFunction contained matchgroup=cssFunctionName start="\<\(uri\|url\|local\|format\)\s*(" end=")" contains=cssStringQ,cssStringQQ oneline keepend
|
||||
syn match cssUnicodeRange contained "U+[0-9A-Fa-f?]\+"
|
||||
syn match cssUnicodeRange contained "U+\x\+-\x\+"
|
||||
|
||||
" The 16 basic color names
|
||||
syn keyword cssColor contained aqua black blue fuchsia gray green lime maroon navy olive purple red silver teal yellow
|
||||
|
||||
" 130 more color names
|
||||
syn keyword cssColor contained aliceblue antiquewhite aquamarine azure
|
||||
syn keyword cssColor contained beige bisque blanchedalmond blueviolet brown burlywood
|
||||
syn keyword cssColor contained cadetblue chartreuse chocolate coral cornflowerblue cornsilk crimson cyan
|
||||
syn match cssColor contained /dark\(blue\|cyan\|goldenrod\|gray\|green\|grey\|khaki\)/
|
||||
syn match cssColor contained /dark\(magenta\|olivegreen\|orange\|orchid\|red\|salmon\|seagreen\)/
|
||||
syn match cssColor contained /darkslate\(blue\|gray\|grey\)/
|
||||
syn match cssColor contained /dark\(turquoise\|violet\)/
|
||||
syn keyword cssColor contained deeppink deepskyblue dimgray dimgrey dodgerblue firebrick
|
||||
syn keyword cssColor contained floralwhite forestgreen gainsboro ghostwhite gold
|
||||
syn keyword cssColor contained goldenrod greenyellow grey honeydew hotpink
|
||||
syn keyword cssColor contained indianred indigo ivory khaki lavender lavenderblush lawngreen
|
||||
syn keyword cssColor contained lemonchiffon limegreen linen magenta
|
||||
syn match cssColor contained /light\(blue\|coral\|cyan\|goldenrodyellow\|gray\|green\)/
|
||||
syn match cssColor contained /light\(grey\|pink\|salmon\|seagreen\|skyblue\|yellow\)/
|
||||
syn match cssColor contained /light\(slategray\|slategrey\|steelblue\)/
|
||||
syn match cssColor contained /medium\(aquamarine\|blue\|orchid\|purple\|seagreen\)/
|
||||
syn match cssColor contained /medium\(slateblue\|springgreen\|turquoise\|violetred\)/
|
||||
syn keyword cssColor contained midnightblue mintcream mistyrose moccasin navajowhite
|
||||
syn keyword cssColor contained oldlace olivedrab orange orangered orchid
|
||||
syn match cssColor contained /pale\(goldenrod\|green\|turquoise\|violetred\)/
|
||||
syn keyword cssColor contained papayawhip peachpuff peru pink plum powderblue
|
||||
syn keyword cssColor contained rosybrown royalblue saddlebrown salmon sandybrown
|
||||
syn keyword cssColor contained seagreen seashell sienna skyblue slateblue
|
||||
syn keyword cssColor contained slategray slategrey snow springgreen steelblue tan
|
||||
syn keyword cssColor contained thistle tomato turquoise violet wheat
|
||||
syn keyword cssColor contained whitesmoke yellowgreen
|
||||
|
||||
" FIXME: These are actually case-insensitive too, but (a) specs recommend using
|
||||
" mixed-case (b) it's hard to highlight the word `Background' correctly in
|
||||
" all situations
|
||||
syn case match
|
||||
syn keyword cssColor contained ActiveBorder ActiveCaption AppWorkspace ButtonFace ButtonHighlight ButtonShadow ButtonText CaptionText GrayText Highlight HighlightText InactiveBorder InactiveCaption InactiveCaptionText InfoBackground InfoText Menu MenuText Scrollbar ThreeDDarkShadow ThreeDFace ThreeDHighlight ThreeDLightShadow ThreeDShadow Window WindowFrame WindowText Background
|
||||
syn case ignore
|
||||
|
||||
syn match cssImportant contained "!\s*important\>"
|
||||
|
||||
syn match cssColor contained "\<transparent\>"
|
||||
syn match cssColor contained "\<currentColor\>"
|
||||
syn match cssColor contained "\<white\>"
|
||||
syn match cssColor contained "#[0-9A-Fa-f]\{3\}\>" contains=cssUnitDecorators
|
||||
syn match cssColor contained "#[0-9A-Fa-f]\{6\}\>" contains=cssUnitDecorators
|
||||
|
||||
syn region cssURL contained matchgroup=cssFunctionName start="\<url\s*(" end=")" contains=cssStringQ,cssStringQQ oneline
|
||||
syn region cssFunction contained matchgroup=cssFunctionName start="\<\(rgb\|clip\|attr\|counter\|rect\|cubic-bezier\|steps\)\s*(" end=")" oneline contains=cssValueInteger,cssValueNumber,cssValueLength,cssFunctionComma
|
||||
syn region cssFunction contained matchgroup=cssFunctionName start="\<\(rgba\|hsl\|hsla\|color-stop\|from\|to\)\s*(" end=")" oneline contains=cssColor,cssValueInteger,cssValueNumber,cssValueLength,cssFunctionComma,cssFunction
|
||||
syn region cssFunction contained matchgroup=cssFunctionName start="\<\(linear-\|radial-\)\=\gradient\s*(" end=")" oneline contains=cssColor,cssValueInteger,cssValueNumber,cssValueLength,cssFunction,cssGradientAttr,cssFunctionComma
|
||||
syn region cssFunction contained matchgroup=cssFunctionName start="\<\(matrix\(3d\)\=\|scale\(3d\|X\|Y\|Z\)\=\|translate\(3d\|X\|Y\|Z\)\=\|skew\(X\|Y\)\=\|rotate\(3d\|X\|Y\|Z\)\=\|perspective\)\s*(" end=")" oneline contains=cssValueInteger,cssValueNumber,cssValueLength,cssValueAngle,cssFunctionComma
|
||||
syn keyword cssGradientAttr contained top bottom left right cover center middle ellipse at
|
||||
syn match cssFunctionComma contained ","
|
||||
|
||||
" Common Prop and Attr
|
||||
syn keyword cssCommonAttr contained auto none inherit all default normal
|
||||
syn keyword cssCommonAttr contained top bottom center stretch hidden visible
|
||||
"------------------------------------------------
|
||||
" CSS Animations
|
||||
" http://www.w3.org/TR/css3-animations/
|
||||
syn match cssAnimationProp contained "\<animation\(-\(delay\|direction\|duration\|fill-mode\|name\|play-state\|timing-function\|iteration-count\)\)\=\>"
|
||||
|
||||
" animation-direction attributes
|
||||
syn keyword cssAnimationAttr contained alternate reverse
|
||||
syn match cssAnimationAttr contained "\<alternate-reverse\>"
|
||||
|
||||
" animation-fill-mode attributes
|
||||
syn keyword cssAnimationAttr contained forwards backwards both
|
||||
|
||||
" animation-play-state attributes
|
||||
syn keyword cssAnimationAttr contained running paused
|
||||
|
||||
" animation-iteration-count attributes
|
||||
syn keyword cssAnimationAttr contained infinite
|
||||
"------------------------------------------------
|
||||
" CSS Backgrounds and Borders Module Level 3
|
||||
" http://www.w3.org/TR/css3-background/
|
||||
syn match cssBackgroundProp contained "\<background\(-\(attachment\|clip\|color\|image\|origin\|position\|repeat\|size\)\)\=\>"
|
||||
" background-attachment attributes
|
||||
syn keyword cssBackgroundAttr contained scroll fixed local
|
||||
|
||||
" background-position attributes
|
||||
syn keyword cssBackgroundAttr contained left center right top bottom
|
||||
|
||||
" background-repeat attributes
|
||||
syn match cssBackgroundAttr contained "\<no-repeat\>"
|
||||
syn match cssBackgroundAttr contained "\<repeat\(-[xy]\)\=\>"
|
||||
syn keyword cssBackgroundAttr contained space round
|
||||
|
||||
" background-size attributes
|
||||
syn keyword cssBackgroundAttr contained cover contain
|
||||
|
||||
syn match cssBorderProp contained "\<border\(-\(top\|right\|bottom\|left\)\)\=\(-\(width\|color\|style\)\)\=\>"
|
||||
syn match cssBorderProp contained "\<border\(-\(top\|bottom\)-\(left\|right\)\)\=-radius\>"
|
||||
syn match cssBorderProp contained "\<border-image\(-\(outset\|repeat\|slice\|source\|width\)\)\=\>"
|
||||
syn match cssBorderProp contained "\<box-decoration-break\>"
|
||||
syn match cssBorderProp contained "\<box-shadow\>"
|
||||
|
||||
" border-image attributes
|
||||
syn keyword cssBorderAttr contained stretch round space fill
|
||||
|
||||
" border-style attributes
|
||||
syn keyword cssBorderAttr contained dotted dashed solid double groove ridge inset outset
|
||||
|
||||
" border-width attributes
|
||||
syn keyword cssBorderAttr contained thin thick medium
|
||||
|
||||
" box-decoration-break attributes
|
||||
syn keyword cssBorderAttr contained clone slice
|
||||
"------------------------------------------------
|
||||
|
||||
syn match cssBoxProp contained "\<padding\(-\(top\|right\|bottom\|left\)\)\=\>"
|
||||
syn match cssBoxProp contained "\<margin\(-\(top\|right\|bottom\|left\)\)\=\>"
|
||||
syn match cssBoxProp contained "\<overflow\(-\(x\|y\|style\)\)\=\>"
|
||||
syn match cssBoxProp contained "\<rotation\(-point\)\=\>"
|
||||
syn keyword cssBoxAttr contained visible hidden scroll auto
|
||||
syn match cssBoxAttr contained "\<no-\(display\|content\)\>"
|
||||
|
||||
syn keyword cssColorProp contained opacity
|
||||
syn match cssColorProp contained "\<color-profile\>"
|
||||
syn match cssColorProp contained "\<rendering-intent\>"
|
||||
|
||||
|
||||
syn match cssDimensionProp contained "\<\(min\|max\)-\(width\|height\)\>"
|
||||
syn keyword cssDimensionProp contained height
|
||||
syn keyword cssDimensionProp contained width
|
||||
|
||||
" shadow and sizing are in other property groups
|
||||
syn match cssFlexibleBoxProp contained "\<box-\(align\|direction\|flex\|ordinal-group\|orient\|pack\|shadow\|sizing\)\>"
|
||||
syn keyword cssFlexibleBoxAttr contained start end baseline
|
||||
syn keyword cssFlexibleBoxAttr contained reverse
|
||||
syn keyword cssFlexibleBoxAttr contained single multiple
|
||||
syn keyword cssFlexibleBoxAttr contained horizontal
|
||||
syn match cssFlexibleBoxAttr contained "\<vertical\(-align\)\@!\>" "escape vertical-align
|
||||
syn match cssFlexibleBoxAttr contained "\<\(inline\|block\)-axis\>"
|
||||
|
||||
" CSS Fonts Module Level 3
|
||||
" http://www.w3.org/TR/css-fonts-3/
|
||||
syn match cssFontProp contained "\<font\(-\(family\|\|feature-settings\|kerning\|language-override\|size\(-adjust\)\=\|stretch\|style\|synthesis\|variant\(-\(alternates\|caps\|east-asian\|ligatures\|numeric\|position\)\)\=\|weight\)\)\=\>"
|
||||
" font attributes
|
||||
syn keyword cssFontAttr contained icon menu caption
|
||||
syn match cssFontAttr contained "\<small-\(caps\|caption\)\>"
|
||||
syn match cssFontAttr contained "\<message-box\>"
|
||||
syn match cssFontAttr contained "\<status-bar\>"
|
||||
syn keyword cssFontAttr contained larger smaller
|
||||
syn match cssFontAttr contained "\<\(x\{1,2\}-\)\=\(large\|small\)\>"
|
||||
|
||||
" font-family attributes
|
||||
syn match cssFontAttr contained "\<\(sans-\)\=serif\>"
|
||||
syn keyword cssFontAttr contained Antiqua Arial Black Book Charcoal Comic Courier Dingbats Gadget Geneva Georgia Grande Helvetica Impact Linotype Lucida MS Monaco Neue New Palatino Roboto Roman Symbol Tahoma Times Trebuchet Unicode Verdana Webdings Wingdings York Zapf
|
||||
syn keyword cssFontAttr contained cursive fantasy monospace
|
||||
|
||||
" font-feature-settings attributes
|
||||
syn keyword cssFontAttr contained on off
|
||||
|
||||
" font-stretch attributes
|
||||
syn match cssFontAttr contained "\<\(\(ultra\|extra\|semi\)-\)\=\(condensed\|expanded\)\>"
|
||||
|
||||
" font-style attributes
|
||||
syn keyword cssFontAttr contained italic oblique
|
||||
|
||||
" font-variant-caps attributes
|
||||
syn match cssFontAttr contained "\<\(all-\)\=\(small-\|petite-\|titling-\)caps\>"
|
||||
syn keyword cssFontAttr contained unicase
|
||||
|
||||
" font-weight attributes
|
||||
syn keyword cssFontAttr contained bold bolder lighter
|
||||
"------------------------------------------------
|
||||
|
||||
" Webkit specific property/attributes
|
||||
syn match cssFontProp contained "\<font-smooth\>"
|
||||
syn match cssFontAttr contained "\<\(subpixel-\)\=\antialiased\>"
|
||||
|
||||
|
||||
" CSS Multi-column Layout Module
|
||||
" http://www.w3.org/TR/css3-multicol/
|
||||
syn match cssMultiColumnProp contained "\<break-\(after\|before\|inside\)\>"
|
||||
syn match cssMultiColumnProp contained "\<column-\(count\|fill\|gap\|rule\(-\(color\|style\|width\)\)\=\|span\|width\)\>"
|
||||
syn keyword cssMultiColumnProp contained columns
|
||||
syn keyword cssMultiColumnAttr contained balance medium
|
||||
syn keyword cssMultiColumnAttr contained always avoid left right page column
|
||||
syn match cssMultiColumnAttr contained "\<avoid-\(page\|column\)\>"
|
||||
|
||||
" http://www.w3.org/TR/css3-break/#page-break
|
||||
syn match cssMultiColumnProp contained "\<page\(-break-\(before\|after\|inside\)\)\=\>"
|
||||
|
||||
" TODO find following items in w3c docs.
|
||||
syn keyword cssGeneratedContentProp contained quotes crop
|
||||
syn match cssGeneratedContentProp contained "\<counter-\(reset\|increment\)\>"
|
||||
syn match cssGeneratedContentProp contained "\<move-to\>"
|
||||
syn match cssGeneratedContentProp contained "\<page-policy\>"
|
||||
syn match cssGeneratedContentAttr contained "\<\(no-\)\=\(open\|close\)-quote\>"
|
||||
|
||||
syn match cssGridProp contained "\<grid-\(columns\|rows\)\>"
|
||||
|
||||
syn match cssHyerlinkProp contained "\<target\(-\(name\|new\|position\)\)\=\>"
|
||||
|
||||
syn match cssListProp contained "\<list-style\(-\(type\|position\|image\)\)\=\>"
|
||||
syn match cssListAttr contained "\<\(lower\|upper\)-\(roman\|alpha\|greek\|latin\)\>"
|
||||
syn match cssListAttr contained "\<\(hiragana\|katakana\)\(-iroha\)\=\>"
|
||||
syn match cssListAttr contained "\<\(decimal\(-leading-zero\)\=\|cjk-ideographic\)\>"
|
||||
syn keyword cssListAttr contained disc circle square hebrew armenian georgian
|
||||
syn keyword cssListAttr contained inside outside
|
||||
|
||||
syn keyword cssPositioningProp contained bottom clear clip display float left
|
||||
syn keyword cssPositioningProp contained position right top visibility
|
||||
syn match cssPositioningProp contained "\<z-index\>"
|
||||
syn keyword cssPositioningAttr contained block compact
|
||||
syn match cssPositioningAttr contained "\<table\(-\(row-group\|\(header\|footer\)-group\|row\|column\(-group\)\=\|cell\|caption\)\)\=\>"
|
||||
syn keyword cssPositioningAttr contained left right both
|
||||
syn match cssPositioningAttr contained "\<list-item\>"
|
||||
syn match cssPositioningAttr contained "\<inline\(-\(block\|box\|table\)\)\=\>"
|
||||
syn keyword cssPositioningAttr contained static relative absolute fixed
|
||||
|
||||
syn keyword cssPrintAttr contained landscape portrait crop cross always avoid
|
||||
|
||||
syn match cssTableProp contained "\<\(caption-side\|table-layout\|border-collapse\|border-spacing\|empty-cells\)\>"
|
||||
syn keyword cssTableAttr contained fixed collapse separate show hide once always
|
||||
|
||||
|
||||
syn keyword cssTextProp contained color direction
|
||||
syn match cssTextProp "\<\(\(word\|letter\)-spacing\|text\(-\(decoration\|transform\|align\|index\|shadow\)\)\=\|vertical-align\|unicode-bidi\|line-height\)\>"
|
||||
syn match cssTextProp contained "\<text-\(justify\|outline\|warp\|align-last\|size-adjust\|rendering\|stroke\|indent\)\>"
|
||||
syn match cssTextProp contained "\<word-\(break\|\wrap\)\>"
|
||||
syn match cssTextProp contained "\<white-space\>"
|
||||
syn match cssTextProp contained "\<hanging-punctuation\>"
|
||||
syn match cssTextProp contained "\<punctuation-trim\>"
|
||||
syn match cssTextAttr contained "\<line-through\>"
|
||||
syn match cssTextAttr contained "\<\(text-\)\=\(top\|bottom\)\>"
|
||||
syn keyword cssTextAttr contained ltr rtl embed nowrap
|
||||
syn keyword cssTextAttr contained underline overline blink sub super middle
|
||||
syn keyword cssTextAttr contained capitalize uppercase lowercase
|
||||
syn keyword cssTextAttr contained justify baseline sub super
|
||||
syn keyword cssTextAttr contained optimizeLegibility optimizeSpeed
|
||||
syn match cssTextAttr contained "\<pre\(-\(line\|wrap\)\)\=\>"
|
||||
syn match cssTextAttr contained "\<\(allow\|force\)-end\>"
|
||||
syn keyword cssTextAttr contained start end adjacent
|
||||
syn match cssTextAttr contained "\<inter-\(word\|ideographic\|cluster\)\>"
|
||||
syn keyword cssTextAttr contained distribute kashida first last
|
||||
syn keyword cssTextAttr contained clip ellipsis unrestricted suppress
|
||||
syn match cssTextAttr contained "\<break-all\>"
|
||||
syn match cssTextAttr contained "\<break-word\>"
|
||||
syn keyword cssTextAttr contained hyphenate
|
||||
syn match cssTextAttr contained "\<bidi-override\>"
|
||||
|
||||
syn match cssTransformProp contained "\<transform\(-\(origin\|style\)\)\=\>"
|
||||
syn match cssTransformProp contained "\<perspective\(-origin\)\=\>"
|
||||
syn match cssTransformProp contained "\<backface-visibility\>"
|
||||
|
||||
" CSS Transitions
|
||||
" http://www.w3.org/TR/css3-transitions/
|
||||
syn match cssTransitionProp contained "\<transition\(-\(delay\|duration\|property\|timing-function\)\)\=\>"
|
||||
|
||||
" transition-time-function attributes
|
||||
syn match cssTransitionAttr contained "\<linear\(-gradient\)\@!\>"
|
||||
syn match cssTransitionAttr contained "\<ease\(-\(in-out\|out\|in\)\)\=\>"
|
||||
syn match cssTransitionAttr contained "\<step\(-start\|-end\)\=\>"
|
||||
"------------------------------------------------
|
||||
" CSS Basic User Interface Module Level 3 (CSS3 UI)
|
||||
" http://www.w3.org/TR/css3-ui/
|
||||
syn match cssUIProp contained "\<box-sizing\>"
|
||||
syn match cssUIAttr contained "\<\(content\|padding\|border\)\(-box\)\=\>"
|
||||
|
||||
syn keyword cssUIProp contained cursor
|
||||
syn match cssUIAttr contained "\<\(\([ns]\=[ew]\=\)\|col\|row\|nesw\|nwse\)-resize\>"
|
||||
syn keyword cssUIAttr contained crosshair help move pointer alias copy
|
||||
syn keyword cssUIAttr contained progress wait text cell move
|
||||
syn match cssUIAttr contained "\<context-menu\>"
|
||||
syn match cssUIAttr contained "\<no-drop\>"
|
||||
syn match cssUIAttr contained "\<not-allowed\>"
|
||||
syn match cssUIAttr contained "\<all-scroll\>"
|
||||
syn match cssUIAttr contained "\<\(vertical-\)\=text\>"
|
||||
syn match cssUIAttr contained "\<zoom\(-in\|-out\)\=\>"
|
||||
|
||||
syn match cssUIProp contained "\<ime-mode\>"
|
||||
syn keyword cssUIAttr contained active inactive disabled
|
||||
|
||||
syn match cssUIProp contained "\<nav-\(down\|index\|left\|right\|up\)\=\>"
|
||||
syn match cssUIProp contained "\<outline\(-\(width\|style\|color\|offset\)\)\=\>"
|
||||
syn keyword cssUIAttr contained invert
|
||||
|
||||
syn keyword cssUIProp contained icon resize
|
||||
syn keyword cssUIAttr contained both horizontal vertical
|
||||
|
||||
syn match cssUIProp contained "\<text-overflow\>"
|
||||
syn keyword cssUIAttr contained clip ellipsis
|
||||
|
||||
" Already highlighted Props: font content
|
||||
"------------------------------------------------
|
||||
" Webkit/iOS specific attributes
|
||||
syn match cssUIAttr contained '\(preserve-3d\)'
|
||||
" IE specific attributes
|
||||
syn match cssIEUIAttr contained '\(bicubic\)'
|
||||
|
||||
" Webkit/iOS specific properties
|
||||
syn match cssUIProp contained '\(tap-highlight-color\|user-select\|touch-callout\)'
|
||||
" IE specific properties
|
||||
syn match cssIEUIProp contained '\(interpolation-mode\|zoom\|filter\)'
|
||||
|
||||
" Webkit/Firebox specific properties/attributes
|
||||
syn keyword cssUIProp contained appearance
|
||||
syn keyword cssUIAttr contained window button field icon document menu
|
||||
|
||||
|
||||
syn match cssAuralProp contained "\<\(pause\|cue\)\(-\(before\|after\)\)\=\>"
|
||||
syn match cssAuralProp contained "\<\(play-during\|speech-rate\|voice-family\|pitch\(-range\)\=\|speak\(-\(punctuation\|numeral\|header\)\)\=\)\>"
|
||||
syn keyword cssAuralProp contained volume during azimuth elevation stress richness
|
||||
syn match cssAuralAttr contained "\<\(x-\)\=\(soft\|loud\)\>"
|
||||
syn keyword cssAuralAttr contained silent
|
||||
syn match cssAuralAttr contained "\<spell-out\>"
|
||||
syn keyword cssAuralAttr contained non mix
|
||||
syn match cssAuralAttr contained "\<\(left\|right\)-side\>"
|
||||
syn match cssAuralAttr contained "\<\(far\|center\)-\(left\|center\|right\)\>"
|
||||
syn keyword cssAuralAttr contained leftwards rightwards behind
|
||||
syn keyword cssAuralAttr contained below level above lower higher
|
||||
syn match cssAuralAttr contained "\<\(x-\)\=\(slow\|fast\|low\|high\)\>"
|
||||
syn keyword cssAuralAttr contained faster slower
|
||||
syn keyword cssAuralAttr contained male female child code digits continuous
|
||||
|
||||
" mobile text
|
||||
syn match cssMobileTextProp contained "\<text-size-adjust\>"
|
||||
|
||||
|
||||
|
||||
syn match cssBraces contained "[{}]"
|
||||
syn match cssError contained "{@<>"
|
||||
syn region cssDefinition transparent matchgroup=cssBraces start='{' end='}' contains=cssAttrRegion,css.*Prop,cssComment,cssValue.*,cssColor,cssURL,cssImportant,cssError,cssStringQ,cssStringQQ,cssFunction,cssUnicodeEscape,cssVendor,cssDefinition,cssHacks,cssNoise fold
|
||||
syn match cssBraceError "}"
|
||||
syn match cssAttrComma ","
|
||||
|
||||
" Pseudo class
|
||||
" http://www.w3.org/TR/css3-selectors/
|
||||
syn match cssPseudoClass ":[A-Za-z0-9_-]*" contains=cssNoise,cssPseudoClassId,cssUnicodeEscape,cssVendor,cssPseudoClassFn
|
||||
syn keyword cssPseudoClassId contained link visited active hover before after left right
|
||||
syn keyword cssPseudoClassId contained root empty target enable disabled checked invalid
|
||||
syn match cssPseudoClassId contained "\<first-\(line\|letter\)\>"
|
||||
syn match cssPseudoClassId contained "\<\(first\|last\|only\)-\(of-type\|child\)\>"
|
||||
syn region cssPseudoClassFn contained matchgroup=cssFunctionName start="\<\(not\|lang\|\(nth\|nth-last\)-\(of-type\|child\)\)(" end=")"
|
||||
" ------------------------------------
|
||||
" Vendor specific properties
|
||||
syn match cssPseudoClassId contained "\<selection\>"
|
||||
syn match cssPseudoClassId contained "\<focus\(-inner\)\=\>"
|
||||
syn match cssPseudoClassId contained "\<\(input-\)\=placeholder\>"
|
||||
|
||||
" Misc highlight groups
|
||||
syntax match cssUnitDecorators /\(#\|-\|%\|mm\|cm\|in\|pt\|pc\|em\|ex\|px\|rem\|dpi\|dppx\|dpcm\|Hz\|kHz\|s\|ms\|deg\|grad\|rad\)/ contained
|
||||
syntax match cssNoise contained /\(:\|;\|\/\)/
|
||||
|
||||
" Comment
|
||||
syn region cssComment start="/\*" end="\*/" contains=@Spell fold
|
||||
|
||||
syn match cssUnicodeEscape "\\\x\{1,6}\s\?"
|
||||
syn match cssSpecialCharQQ +\\\\\|\\"+ contained
|
||||
syn match cssSpecialCharQ +\\\\\|\\'+ contained
|
||||
syn region cssStringQQ start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=cssUnicodeEscape,cssSpecialCharQQ
|
||||
syn region cssStringQ start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=cssUnicodeEscape,cssSpecialCharQ
|
||||
|
||||
" Vendor Prefix
|
||||
syn match cssVendor contained "\(-\(webkit\|moz\|o\|ms\)-\)"
|
||||
|
||||
" Various CSS Hack characters
|
||||
" In earlier versions of IE (6 and 7), one can prefix property names
|
||||
" with a _ or * to isolate those definitions to particular versions of IE
|
||||
" This is purely decorative and therefore we assign to the same highlight
|
||||
" group to cssVendor, for more information:
|
||||
" http://www.paulirish.com/2009/browser-specific-css-hacks/
|
||||
syn match cssHacks contained /\(_\|*\)/
|
||||
|
||||
" Attr Enhance
|
||||
" Some keywords are both Prop and Attr, so we have to handle them
|
||||
syn region cssAttrRegion start=/:/ end=/\ze\(;\|)\|}\)/ contained contains=css.*Attr,cssColor,cssImportant,cssValue.*,cssFunction,cssString.*,cssURL,cssComment,cssUnicodeEscape,cssVendor,cssError,cssAttrComma,cssNoise
|
||||
|
||||
" Hack for transition
|
||||
" 'transition' has Props after ':'.
|
||||
syn region cssAttrRegion start=/transition\s*:/ end=/\ze\(;\|)\|}\)/ contained contains=css.*Prop,css.*Attr,cssColor,cssImportant,cssValue.*,cssFunction,cssString.*,cssURL,cssComment,cssUnicodeEscape,cssVendor,cssError,cssAttrComma,cssNoise
|
||||
|
||||
|
||||
if main_syntax == "css"
|
||||
syn sync minlines=10
|
||||
endif
|
||||
|
||||
" 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_css_syn_inits")
|
||||
if version < 508
|
||||
let did_css_syn_inits = 1
|
||||
command -nargs=+ HiLink hi link <args>
|
||||
else
|
||||
command -nargs=+ HiLink hi def link <args>
|
||||
endif
|
||||
|
||||
HiLink cssComment Comment
|
||||
HiLink cssVendor Comment
|
||||
HiLink cssHacks Comment
|
||||
HiLink cssTagName Statement
|
||||
HiLink cssDeprecated Error
|
||||
HiLink cssSelectorOp Special
|
||||
HiLink cssSelectorOp2 Special
|
||||
HiLink cssAttrComma Special
|
||||
|
||||
HiLink cssAnimationProp cssProp
|
||||
HiLink cssBackgroundProp cssProp
|
||||
HiLink cssBorderProp cssProp
|
||||
HiLink cssBoxProp cssProp
|
||||
HiLink cssColorProp cssProp
|
||||
HiLink cssContentForPagedMediaProp cssProp
|
||||
HiLink cssDimensionProp cssProp
|
||||
HiLink cssFlexibleBoxProp cssProp
|
||||
HiLink cssFontProp cssProp
|
||||
HiLink cssGeneratedContentProp cssProp
|
||||
HiLink cssGridProp cssProp
|
||||
HiLink cssHyerlinkProp cssProp
|
||||
HiLink cssLineboxProp cssProp
|
||||
HiLink cssListProp cssProp
|
||||
HiLink cssMarqueeProp cssProp
|
||||
HiLink cssMultiColumnProp cssProp
|
||||
HiLink cssPagedMediaProp cssProp
|
||||
HiLink cssPositioningProp cssProp
|
||||
HiLink cssPrintProp cssProp
|
||||
HiLink cssRubyProp cssProp
|
||||
HiLink cssSpeechProp cssProp
|
||||
HiLink cssTableProp cssProp
|
||||
HiLink cssTextProp cssProp
|
||||
HiLink cssTransformProp cssProp
|
||||
HiLink cssTransitionProp cssProp
|
||||
HiLink cssUIProp cssProp
|
||||
HiLink cssIEUIProp cssProp
|
||||
HiLink cssAuralProp cssProp
|
||||
HiLink cssRenderProp cssProp
|
||||
HiLink cssMobileTextProp cssProp
|
||||
|
||||
HiLink cssAnimationAttr cssAttr
|
||||
HiLink cssBackgroundAttr cssAttr
|
||||
HiLink cssBorderAttr cssAttr
|
||||
HiLink cssBoxAttr cssAttr
|
||||
HiLink cssContentForPagedMediaAttr cssAttr
|
||||
HiLink cssDimensionAttr cssAttr
|
||||
HiLink cssFlexibleBoxAttr cssAttr
|
||||
HiLink cssFontAttr cssAttr
|
||||
HiLink cssGeneratedContentAttr cssAttr
|
||||
HiLink cssGridAttr cssAttr
|
||||
HiLink cssHyerlinkAttr cssAttr
|
||||
HiLink cssLineboxAttr cssAttr
|
||||
HiLink cssListAttr cssAttr
|
||||
HiLink cssMarginAttr cssAttr
|
||||
HiLink cssMarqueeAttr cssAttr
|
||||
HiLink cssMultiColumnAttr cssAttr
|
||||
HiLink cssPaddingAttr cssAttr
|
||||
HiLink cssPagedMediaAttr cssAttr
|
||||
HiLink cssPositioningAttr cssAttr
|
||||
HiLink cssGradientAttr cssAttr
|
||||
HiLink cssPrintAttr cssAttr
|
||||
HiLink cssRubyAttr cssAttr
|
||||
HiLink cssSpeechAttr cssAttr
|
||||
HiLink cssTableAttr cssAttr
|
||||
HiLink cssTextAttr cssAttr
|
||||
HiLink cssTransformAttr cssAttr
|
||||
HiLink cssTransitionAttr cssAttr
|
||||
HiLink cssUIAttr cssAttr
|
||||
HiLink cssIEUIAttr cssAttr
|
||||
HiLink cssAuralAttr cssAttr
|
||||
HiLink cssRenderAttr cssAttr
|
||||
HiLink cssCommonAttr cssAttr
|
||||
|
||||
HiLink cssPseudoClassId PreProc
|
||||
HiLink cssPseudoClassLang Constant
|
||||
HiLink cssValueLength Number
|
||||
HiLink cssValueInteger Number
|
||||
HiLink cssValueNumber Number
|
||||
HiLink cssValueAngle Number
|
||||
HiLink cssValueTime Number
|
||||
HiLink cssValueFrequency Number
|
||||
HiLink cssFunction Constant
|
||||
HiLink cssURL String
|
||||
HiLink cssFunctionName Function
|
||||
HiLink cssFunctionComma Function
|
||||
HiLink cssColor Constant
|
||||
HiLink cssIdentifier Function
|
||||
HiLink cssInclude Include
|
||||
HiLink cssIncludeKeyword atKeyword
|
||||
HiLink cssImportant Special
|
||||
HiLink cssBraces Function
|
||||
HiLink cssBraceError Error
|
||||
HiLink cssError Error
|
||||
HiLink cssUnicodeEscape Special
|
||||
HiLink cssStringQQ String
|
||||
HiLink cssStringQ String
|
||||
HiLink cssAttributeSelector String
|
||||
HiLink cssMedia atKeyword
|
||||
HiLink cssMediaType Special
|
||||
HiLink cssMediaComma Normal
|
||||
HiLink cssMediaKeyword Statement
|
||||
HiLink cssMediaProp cssProp
|
||||
HiLink cssMediaAttr cssAttr
|
||||
HiLink cssPage atKeyword
|
||||
HiLink cssPagePseudo PreProc
|
||||
HiLink cssPageMargin atKeyword
|
||||
HiLink cssPageProp cssProp
|
||||
HiLink cssKeyFrame atKeyword
|
||||
HiLink cssKeyFrameSelector Constant
|
||||
HiLink cssFontDescriptor Special
|
||||
HiLink cssFontDescriptorFunction Constant
|
||||
HiLink cssFontDescriptorProp cssProp
|
||||
HiLink cssFontDescriptorAttr cssAttr
|
||||
HiLink cssUnicodeRange Constant
|
||||
HiLink cssClassName Function
|
||||
HiLink cssClassNameDot Function
|
||||
HiLink cssProp StorageClass
|
||||
HiLink cssAttr Constant
|
||||
HiLink cssUnitDecorators Number
|
||||
HiLink cssNoise Noise
|
||||
HiLink atKeyword PreProc
|
||||
delcommand HiLink
|
||||
endif
|
||||
|
||||
let b:current_syntax = "css"
|
||||
|
||||
if main_syntax == 'css'
|
||||
unlet main_syntax
|
||||
endif
|
||||
|
||||
let &cpo = s:cpo_save
|
||||
unlet s:cpo_save
|
||||
" vim: ts=8
|
||||
|
||||
@@ -113,9 +113,9 @@ fu! <sid>DoHighlight() "{{{3
|
||||
\. s:col . '/ contains=CSVDelimiter'
|
||||
else
|
||||
for i in range(len(b:csv_fixed_width_cols))
|
||||
let pat = '/\%' . b:csv_fixed_width_cols[i] . 'c.*' .
|
||||
let pat = '/\%' . b:csv_fixed_width_cols[i] . 'v.*' .
|
||||
\ ((i == len(b:csv_fixed_width_cols)-1) ? '/' :
|
||||
\ '\%' . b:csv_fixed_width_cols[i+1] . 'c/')
|
||||
\ '\%' . b:csv_fixed_width_cols[i+1] . 'v/')
|
||||
|
||||
let group = "CSVColumn" . (i%2 ? "Odd" : "Even" )
|
||||
let ngroup = "CSVColumn" . (i%2 ? "Even" : "Odd" )
|
||||
|
||||
@@ -2,11 +2,14 @@
|
||||
" Language: Cucumber
|
||||
" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
|
||||
" Filenames: *.feature
|
||||
" Last Change: 2010 May 21
|
||||
" Last Change: 2013 May 30
|
||||
|
||||
if exists("b:current_syntax")
|
||||
finish
|
||||
endif
|
||||
let s:keepcpo= &cpo
|
||||
set cpo&vim
|
||||
|
||||
syn case match
|
||||
syn sync minlines=20
|
||||
|
||||
@@ -133,4 +136,7 @@ hi def link cucumberThen Type
|
||||
|
||||
let b:current_syntax = "cucumber"
|
||||
|
||||
let &cpo = s:keepcpo
|
||||
unlet s:keepcpo
|
||||
|
||||
" vim:set sts=2 sw=2:
|
||||
|
||||
@@ -16,31 +16,40 @@ syn match elixirComment '#.*' contains=elixirTodo
|
||||
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 case cond bc lc inlist inbits if unless try receive function
|
||||
syn keyword elixirKeyword exit raise throw after rescue catch else
|
||||
syn keyword elixirKeyword case cond for if unless try receive send
|
||||
syn keyword elixirKeyword exit raise throw after rescue catch else do end
|
||||
syn keyword elixirKeyword quote unquote super
|
||||
syn match elixirKeyword '\<\%(->\)\>\s*'
|
||||
|
||||
syn keyword elixirInclude import require alias use
|
||||
|
||||
syn keyword elixirOperator and not or when xor in
|
||||
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*\>'
|
||||
syn match elixirId '\<[_a-zA-Z]\w*[!?]\?\>'
|
||||
|
||||
" This unfortunately also matches function names in function calls
|
||||
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__
|
||||
|
||||
@@ -68,36 +77,34 @@ syn region elixirDocStringStart matchgroup=elixirDocString start=+'''+ end=+$+ o
|
||||
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,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 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 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="%[BCRW]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" fold
|
||||
syn region elixirSigil matchgroup=elixirDelimiter start="%[BCRW]\={" end="}" skip="\\\\\|\\}" contains=elixirDelimEscape fold
|
||||
syn region elixirSigil matchgroup=elixirDelimiter start="%[BCRW]\=<" end=">" skip="\\\\\|\\>" contains=elixirDelimEscape fold
|
||||
syn region elixirSigil matchgroup=elixirDelimiter start="%[BCRW]\=\[" end="\]" skip="\\\\\|\\\]" contains=elixirDelimEscape fold
|
||||
syn region elixirSigil matchgroup=elixirDelimiter start="%[BCRW]\=(" end=")" skip="\\\\\|\\)" contains=elixirDelimEscape fold
|
||||
syn region elixirSigil matchgroup=elixirDelimiter start="\~\u\z(/\|\"\|'\||\)" end="\z1" skip="\\\\\|\\\z1" contains=elixirDelimEscape fold
|
||||
syn region elixirSigil matchgroup=elixirDelimiter start="\~\u{" end="}" skip="\\\\\|\\}" contains=elixirDelimEscape fold
|
||||
syn region elixirSigil matchgroup=elixirDelimiter start="\~\u<" end=">" skip="\\\\\|\\>" contains=elixirDelimEscape fold
|
||||
syn region elixirSigil matchgroup=elixirDelimiter start="\~\u\[" end="\]" skip="\\\\\|\\\]" contains=elixirDelimEscape fold
|
||||
syn region elixirSigil matchgroup=elixirDelimiter start="\~\u(" end=")" skip="\\\\\|\\)" contains=elixirDelimEscape fold
|
||||
|
||||
syn region elixirSigil matchgroup=elixirDelimiter start="%[bcrw]\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="%[bcrw]<" 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="%[bcrw](" end=")" skip="\\\\\|\\)" fold contains=@elixirStringContained,elixirRegexEscapePunctuation
|
||||
syn region elixirSigil matchgroup=elixirDelimiter start="\~\l\z(/\|\"\|'\||\)" end="\z1" skip="\\\\\|\\\z1" fold
|
||||
syn region elixirSigil matchgroup=elixirDelimiter start="\~\l{" 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="\~\l\[" 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=+%[BCRWbcrw]\z("""\)+ end=+^\s*\zs\z1+ skip=+\\"+ fold
|
||||
syn region elixirSigil matchgroup=elixirDelimiter start=+%[BCRWbcrw]\z('''\)+ end=+^\s*\zs\z1+ skip=+\\'+ fold
|
||||
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
|
||||
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 elixirModuleDefine defmodule nextgroup=elixirModuleDeclaration skipwhite skipnl
|
||||
syn keyword elixirProtocolDefine defprotocol nextgroup=elixirProtocolDeclaration skipwhite skipnl
|
||||
@@ -110,21 +117,23 @@ syn keyword elixirDelegateDefine defdelegate nextgroup=elixirDelegateDec
|
||||
syn keyword elixirOverridableDefine defoverridable nextgroup=elixirOverridableDeclaration skipwhite skipnl
|
||||
syn keyword elixirExceptionDefine defexception nextgroup=elixirExceptionDeclaration skipwhite skipnl
|
||||
syn keyword elixirCallbackDefine defcallback nextgroup=elixirCallbackDeclaration skipwhite skipnl
|
||||
syn keyword elixirStructDefine defstruct nextgroup=elixirStructDeclaration skipwhite skipnl
|
||||
|
||||
" Declarations
|
||||
syn match elixirModuleDeclaration "[^[:space:];#<]\+" contained contains=elixirName nextgroup=elixirBlock skipwhite skipnl
|
||||
syn match elixirFunctionDeclaration "[^[:space:];#<,()\[\]]\+" contained nextgroup=elixirArguments skipwhite skipnl
|
||||
syn match elixirProtocolDeclaration "[^[:space:];#<]\+" contained contains=elixirName skipwhite skipnl
|
||||
syn match elixirImplDeclaration "[^[:space:];#<]\+" contained contains=elixirName skipwhite skipnl
|
||||
syn match elixirRecordDeclaration "[^[:space:];#<]\+" contained contains=elixirName,elixirSymbol skipwhite skipnl
|
||||
syn match elixirMacroDeclaration "[^[:space:];#<,()\[\]]\+" contained nextgroup=elixirArguments skipwhite skipnl
|
||||
syn match elixirDelegateDeclaration "[^[:space:];#<,()\[\]]\+" 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 elixirExceptionDeclaration "[^[:space:];#<]\+" contained contains=elixirName skipwhite skipnl
|
||||
syn match elixirCallbackDeclaration "[^[:space:];#<,()\[\]]\+" contained contains=elixirFunctionDeclaration skipwhite skipnl
|
||||
syn match elixirModuleDeclaration "[^[:space:];#<]\+" contained contains=elixirAlias nextgroup=elixirBlock skipwhite skipnl
|
||||
syn match elixirFunctionDeclaration "[^[:space:];#<,()\[\]]\+" contained nextgroup=elixirArguments skipwhite skipnl
|
||||
syn match elixirProtocolDeclaration "[^[:space:];#<]\+" contained contains=elixirAlias skipwhite skipnl
|
||||
syn match elixirImplDeclaration "[^[:space:];#<]\+" contained contains=elixirAlias skipwhite skipnl
|
||||
syn match elixirRecordDeclaration "[^[:space:];#<]\+" contained contains=elixirAlias,elixirAtom skipwhite skipnl
|
||||
syn match elixirMacroDeclaration "[^[:space:];#<,()\[\]]\+" contained nextgroup=elixirArguments skipwhite skipnl
|
||||
syn match elixirDelegateDeclaration "[^[:space:];#<,()\[\]]\+" contained contains=elixirFunctionDeclaration skipwhite skipnl
|
||||
syn region elixirDelegateDeclaration start='\[' end='\]' contained contains=elixirFunctionDeclaration skipwhite skipnl
|
||||
syn match elixirOverridableDeclaration "[^[:space:];#<]\+" contained contains=elixirAlias skipwhite skipnl
|
||||
syn match elixirExceptionDeclaration "[^[:space:];#<]\+" contained contains=elixirAlias 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 elixirPrivateDefine Define
|
||||
@@ -139,6 +148,7 @@ hi def link elixirDelegateDefine Define
|
||||
hi def link elixirOverridableDefine Define
|
||||
hi def link elixirExceptionDefine Define
|
||||
hi def link elixirCallbackDefine Define
|
||||
hi def link elixirStructDefine Define
|
||||
hi def link elixirFunctionDeclaration Function
|
||||
hi def link elixirMacroDeclaration Macro
|
||||
hi def link elixirInclude Include
|
||||
@@ -146,15 +156,15 @@ hi def link elixirComment Comment
|
||||
hi def link elixirTodo Todo
|
||||
hi def link elixirKeyword Keyword
|
||||
hi def link elixirOperator Operator
|
||||
hi def link elixirSymbol Constant
|
||||
hi def link elixirAtom Constant
|
||||
hi def link elixirPseudoVariable Constant
|
||||
hi def link elixirName Type
|
||||
hi def link elixirAlias Type
|
||||
hi def link elixirBoolean Boolean
|
||||
hi def link elixirVariable Identifier
|
||||
hi def link elixirUnusedVariable Comment
|
||||
hi def link elixirNumber Number
|
||||
hi def link elixirDocString String
|
||||
hi def link elixirSymbolInterpolated elixirSymbol
|
||||
hi def link elixirAtomInterpolated elixirAtom
|
||||
hi def link elixirRegex elixirString
|
||||
hi def link elixirRegexEscape elixirSpecial
|
||||
hi def link elixirRegexEscapePunctuation elixirSpecial
|
||||
|
||||
31
syntax/ember-script.vim
Normal file
31
syntax/ember-script.vim
Normal 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'
|
||||
156
syntax/emblem.vim
Normal file
156
syntax/emblem.vim
Normal file
@@ -0,0 +1,156 @@
|
||||
" Language: emblem
|
||||
" Maintainer: heartsentwined <heartsentwined@cogito-lab.com>
|
||||
" URL: http://github.com/heartsentwined/vim-emblem
|
||||
" Version: 1.2.0
|
||||
" Last Change: 2013 Apr 22
|
||||
" License: GPL-3.0
|
||||
|
||||
" Quit when a syntax file is already loaded.
|
||||
if exists('b:current_syntax') && b:current_syntax == 'emblem'
|
||||
finish
|
||||
endif
|
||||
|
||||
if !exists('main_syntax')
|
||||
let main_syntax = 'emblem'
|
||||
endif
|
||||
|
||||
syn match eblLineStart '^\s*' nextgroup=@eblStartElements display
|
||||
syn match eblLineOp '\s*:' nextgroup=@eblStartElements skipwhite contained display
|
||||
hi def link eblLineOp eblOperator
|
||||
|
||||
syn cluster eblStartElements contains=eblIdOp,eblClassOp,eblHbsOp,@eblHbsHelpers,eblHbsPartialOp,eblView,@eblTag,eblComment,eblText
|
||||
|
||||
syn cluster eblComponent contains=eblIdOp,eblClassOp,eblInlineText,eblAttr,eblHbsOp,eblHbsAttrRegion,eblHbsPartialOp,eblLineOp
|
||||
|
||||
syn match eblIdOp '#' nextgroup=eblId contained display
|
||||
syn match eblId '\v(\w|-)+' nextgroup=@eblComponent contained display
|
||||
syn match eblClassOp '\.' nextgroup=eblClass contained display
|
||||
syn match eblClass '\v(\w|-)+' nextgroup=@eblComponent contained display
|
||||
hi def link eblIdOp eblId
|
||||
hi def link eblClassOp eblClass
|
||||
|
||||
syn region eblHbsAttrRegion matchgroup=eblHbsAttrRegionOp start='{' end='}' contains=@eblHbsHelpers nextgroup=@eblComponent keepend contained display
|
||||
hi def link eblHbsAttrRegionOp eblOperator
|
||||
|
||||
syn match eblInlineText '\v\s+[^:]+.*$' contains=eblItpl contained display
|
||||
hi def link eblInlineText eblRaw
|
||||
|
||||
syn cluster eblHbsComponent contains=eblHbsArg,eblHbsAttr,eblHbsTextOp,eblLineOp
|
||||
|
||||
syn match eblHbsOp '\v\s*\=+' nextgroup=@eblHbsHelpers skipwhite contained display
|
||||
syn match eblHbsHelper '\v\w(\w|-|\.)*' nextgroup=@eblHbsComponent skipwhite contained display
|
||||
syn match eblHbsTextOp '|' nextgroup=eblHbsText contained display
|
||||
syn match eblHbsText '.*' contained display
|
||||
hi def link eblHbsOp eblOperator
|
||||
hi def link eblHbsHelper eblFunction
|
||||
hi def link eblHbsTextOp eblOperator
|
||||
hi def link eblHbsText eblRaw
|
||||
|
||||
syn cluster eblHbsHelpers contains=eblHbsHelper,eblHbsCtrlFlowHelper,eblHbsEachHelper
|
||||
|
||||
syn match eblHbsCtrlFlowHelper '\v<(if|unless|else|with)>' nextgroup=@eblHbsComponent skipwhite contained display
|
||||
syn match eblHbsEachHelper '\v<each>' nextgroup=eblHbsEachArg skipwhite contained display
|
||||
syn match eblHbsEachArg /\v((["'])[^\2]{-}\2|(\w|\.|-|\>)+)/ nextgroup=eblHbsIn,eblLineOp skipwhite contained display
|
||||
syn match eblHbsIn '\v<in>' nextgroup=eblHbsInArg skipwhite contained display
|
||||
syn match eblHbsInArg /\v((["'])[^\2]{-}\2|(\w|\.|-|\>)+)/ nextgroup=eblLineOp skipwhite contained display
|
||||
hi def link eblHbsCtrlFlowHelper eblKeyword
|
||||
hi def link eblHbsEachHelper eblKeyword
|
||||
hi def link eblHbsEachArg eblLiteral
|
||||
hi def link eblHbsIn eblKeyword
|
||||
hi def link eblHbsInArg eblLiteral
|
||||
|
||||
syn match eblHbsArg /\v\s*((["'])[^\2]{-}\2|(\w|\.|-|\>)+)/ nextgroup=@eblHbsComponent skipwhite contained display
|
||||
syn match eblHbsAttr '\v\s*(\w|-)+\=@=' contains=eblHbsAttrBind nextgroup=eblHbsAttrOp contained display
|
||||
syn match eblHbsAttrBind /\v<(\w|-)+Bind>/ contained display
|
||||
syn match eblHbsAttrOp '=' nextgroup=eblHbsAttrLit contained display
|
||||
syn match eblHbsAttrLit /\v(["'])[^\1]{-}\1|[^: ]+/ contains=eblItpl nextgroup=@eblHbsComponent skipwhite contained display
|
||||
hi def link eblHbsArg eblLiteral
|
||||
hi def link eblHbsAttr eblAttr
|
||||
hi def link eblhbsAttrBind eblBind
|
||||
hi def link eblHbsAttrOp eblOperator
|
||||
hi def link eblHbsAttrLit eblLiteral
|
||||
|
||||
syn cluster eblAttrComponent contains=eblAttr,eblInlineText,eblLineOp
|
||||
|
||||
syn match eblAttr '\v\s*(\w|-)+\=@=' contains=eblKnownEvent nextgroup=eblAttrOp contained display
|
||||
syn match eblAttrOp '=' nextgroup=eblAttrLit,eblAttrClassLit,eblAttrBind,eblAttrRegion contained display
|
||||
syn match eblAttrLit /\v(["'])[^\1]{-}\1/ contains=eblItpl nextgroup=@eblAttrComponent skipwhite contained display
|
||||
syn match eblAttrBind /\v(\w|-)+/ nextgroup=eblAttrBindAltOp,eblAttrBindUnboundOp,@eblAttrComponent skipwhite contained display
|
||||
syn match eblAttrBindAltOp '\v(\w|-|:)@=:(\w|-|:)@=' nextgroup=eblAttrBindAlt,eblAttrBindAltOp contained display
|
||||
syn match eblAttrBindAlt /\v(\w|-)+/ nextgroup=eblAttrBindAltOp,@eblAttrComponent skipwhite contained display
|
||||
syn match eblAttrClassLit '\v:(\w|-)+' nextgroup=@eblAttrComponent skipwhite contained display
|
||||
syn match eblAttrBindUnboundOp '\v(\w|-)@!!' nextgroup=@eblAttrComponent skipwhite contained display
|
||||
hi def link eblAttrOp eblOperator
|
||||
hi def link eblAttrLit eblLiteral
|
||||
hi def link eblAttrBind eblBind
|
||||
hi def link eblAttrBindAltOp eblOperator
|
||||
hi def link eblAttrBindAlt eblBool
|
||||
hi def link eblAttrClassLit eblLiteral
|
||||
hi def link eblAttrBindUnboundOp eblOperator
|
||||
|
||||
syn region eblAttrRegion matchgroup=eblAttrRegionOp start='{' end='}' keepend contains=eblAttrRegionBind,eblAttrRegionClassLit nextgroup=@eblAttrComponent skipwhite contained display
|
||||
syn match eblAttrRegionBind /\v(\w|-)+/ nextgroup=eblAttrRegionBindAltOp contained display
|
||||
syn match eblAttrRegionBindAltOp '\v(\w|-|:)@=:(\w|-|:)@=' nextgroup=eblAttrRegionBindAlt,eblAttrRegionBindAltOp contained display
|
||||
syn match eblAttrRegionBindAlt /\v(\w|-)+/ nextgroup=eblAttrRegionBindAltOp contained display
|
||||
syn match eblAttrRegionClassLit '\v:(\w|-)+:@!' nextgroup=eblAttrRegionBind skipwhite contained display
|
||||
hi def link eblAttrRegionOp eblOperator
|
||||
hi def link eblAttrRegionBind eblBind
|
||||
hi def link eblAttrRegionBindAltOp eblOperator
|
||||
hi def link eblAttrRegionBindAlt eblBool
|
||||
hi def link eblAttrRegionClassLit eblLiteral
|
||||
|
||||
syn match eblKnownEvent '\v\s*<(touchStart|touchMove|touchEnd|touchCancel|keyDown|keyUp|keyPress|mouseDown|mouseUp|contextMenu|click|doubleClick|mouseMove|focusIn|focusOut|mouseEnter|mouseLeave|submit|input|change|dragStart|drag|dragEnter|dragLeave|dragOver|drop|dragEnd)>' contained display
|
||||
hi def link eblKnownEvent eblEvent
|
||||
|
||||
syn region eblItpl matchgroup=eblItplOp start='#{' end='}' contains=@eblHbsHelpers,eblHbsPartialOp keepend contained display
|
||||
syn region eblItpl matchgroup=eblItplOp start='{{' end='}}' contains=@eblHbsHelpers,eblHbsPartialOp keepend contained display
|
||||
hi def link eblItplOp eblOperator
|
||||
|
||||
syn match eblHbsPartialOp '\s*>' nextgroup=@eblHbsHelpers skipwhite contained display
|
||||
hi def link eblhbsPartialOp eblOperator
|
||||
|
||||
syn match eblView '\v[A-Z](\w|\.)*' nextgroup=@eblViewComponent skipwhite contained display
|
||||
|
||||
syn cluster eblViewComponent contains=eblViewIdOp,eblViewClassOp,eblHbsArg,eblHbsAttr,eblLineOp
|
||||
|
||||
syn match eblViewIdOp '#' nextgroup=eblViewId contained display
|
||||
syn match eblViewId '\v(\w|-)+' nextgroup=@eblViewComponent contained display
|
||||
syn match eblViewClassOp '\.' nextgroup=eblViewClass contained display
|
||||
syn match eblViewClass '\v(\w|-)+' nextgroup=@eblViewComponent contained display
|
||||
hi def link eblViewIdOp eblId
|
||||
hi def link eblViewId eblId
|
||||
hi def link eblViewClassOp eblClass
|
||||
hi def link eblViewClass eblClass
|
||||
|
||||
syn cluster eblTag contains=eblKnownTag,eblCustomTag
|
||||
|
||||
syn match eblKnownTag '\v<(figcaption|blockquote|plaintext|textarea|progress|optgroup|noscript|noframes|frameset|fieldset|datalist|colgroup|basefont|summary|section|marquee|listing|isindex|details|command|caption|bgsound|article|address|acronym|strong|strike|spacer|source|select|script|output|option|object|legend|keygen|iframe|hgroup|header|footer|figure|center|canvas|button|applet|video|track|title|thead|tfoot|tbody|table|style|small|param|meter|label|input|frame|embed|blink|audio|aside|time|span|samp|ruby|nobr|meta|menu|mark|main|link|html|head|form|font|data|code|cite|body|base|area|abbr|xmp|wbr|var|sup|sub|pre|nav|map|kbd|ins|img|div|dir|dfn|del|col|big|bdo|bdi|ul|tt|tr|th|td|rt|rp|ol|li|hr|h6|h5|h4|h3|h2|h1|em|dt|dl|dd|br|u|s|q|p|i|b|a)>' nextgroup=@eblComponent contained display
|
||||
syn match eblCustomTag '%[a-z][a-z0-9-]*' nextgroup=@eblComponent contained display
|
||||
hi def link eblKnownTag eblTag
|
||||
hi def link eblCustomTag eblTag
|
||||
|
||||
syn match eblTextOp '\v^(\s*)[|']' contained display
|
||||
syn region eblText start='\v^\z(\s*)[|']' end='\v^(\z1 )@!' contains=eblTextOp,eblItpl
|
||||
syn region eblComment start='\v^\z(\s*)/' end='\v^(\z1 )@!'
|
||||
hi def link eblText eblRaw
|
||||
hi def link eblTextOp eblOperator
|
||||
|
||||
|
||||
hi def link eblOperator Operator
|
||||
hi def link eblFunction Function
|
||||
hi def link eblBool Boolean
|
||||
hi def link eblLiteral String
|
||||
hi def link eblRaw NONE
|
||||
hi def link eblComment Comment
|
||||
|
||||
hi def link eblAttr Label
|
||||
hi def link eblBind Identifier
|
||||
hi def link eblKeyword Keyword
|
||||
hi def link eblEvent Special
|
||||
|
||||
hi def link eblView Type
|
||||
hi def link eblTag Type
|
||||
hi def link eblId Constant
|
||||
hi def link eblClass Identifier
|
||||
|
||||
let b:current_syntax = 'emblem'
|
||||
@@ -39,9 +39,10 @@ syn region gitcommitDiscarded start=/^# Change\%(s not staged for commit\|d but
|
||||
syn region gitcommitSelected start=/^# Changes to be committed:/ end=/^#$\|^#\@!/ contains=gitcommitHeader,gitcommitHead,gitcommitSelectedType fold
|
||||
syn region gitcommitUnmerged start=/^# Unmerged paths:/ end=/^#$\|^#\@!/ contains=gitcommitHeader,gitcommitHead,gitcommitUnmergedType fold
|
||||
|
||||
syn match gitcommitDiscardedType "\t\@<=[a-z][a-z ]*[a-z]: "he=e-2 contained containedin=gitcommitComment nextgroup=gitcommitDiscardedFile skipwhite
|
||||
syn match gitcommitSelectedType "\t\@<=[a-z][a-z ]*[a-z]: "he=e-2 contained containedin=gitcommitComment nextgroup=gitcommitSelectedFile skipwhite
|
||||
syn match gitcommitUnmergedType "\t\@<=[a-z][a-z ]*[a-z]: "he=e-2 contained containedin=gitcommitComment nextgroup=gitcommitUnmergedFile skipwhite
|
||||
|
||||
syn match gitcommitDiscardedType "\t\@<=[[:lower:]][^:]*[[:lower:]]: "he=e-2 contained containedin=gitcommitComment nextgroup=gitcommitDiscardedFile skipwhite
|
||||
syn match gitcommitSelectedType "\t\@<=[[:lower:]][^:]*[[:lower:]]: "he=e-2 contained containedin=gitcommitComment nextgroup=gitcommitSelectedFile skipwhite
|
||||
syn match gitcommitUnmergedType "\t\@<=[[:lower:]][^:]*[[:lower:]]: "he=e-2 contained containedin=gitcommitComment nextgroup=gitcommitUnmergedFile skipwhite
|
||||
syn match gitcommitDiscardedFile ".\{-\}\%($\| -> \)\@=" contained nextgroup=gitcommitDiscardedArrow
|
||||
syn match gitcommitSelectedFile ".\{-\}\%($\| -> \)\@=" contained nextgroup=gitcommitSelectedArrow
|
||||
syn match gitcommitUnmergedFile ".\{-\}\%($\| -> \)\@=" contained nextgroup=gitcommitSelectedArrow
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
" Vim syntax file
|
||||
" Language: git send-email message
|
||||
" Maintainer: Tim Pope
|
||||
" Filenames: *.msg.[0-9]* (first line is "From ... # This line is ignored.")
|
||||
" Filenames: .gitsendemail.*
|
||||
" Last Change: 2010 May 21
|
||||
|
||||
if exists("b:current_syntax")
|
||||
@@ -9,6 +9,10 @@ if exists("b:current_syntax")
|
||||
endif
|
||||
|
||||
runtime! syntax/mail.vim
|
||||
unlet! b:current_syntax
|
||||
syn include @gitsendemailDiff syntax/diff.vim
|
||||
syn region gitsendemailDiff start=/\%(^diff --\%(git\|cc\|combined\) \)\@=/ end=/^-- %/ fold contains=@gitsendemailDiff
|
||||
|
||||
syn case match
|
||||
|
||||
syn match gitsendemailComment "\%^From.*#.*"
|
||||
|
||||
@@ -32,19 +32,39 @@ endif
|
||||
if !exists("go_highlight_array_whitespace_error")
|
||||
let go_highlight_array_whitespace_error = 1
|
||||
endif
|
||||
|
||||
if !exists("go_highlight_chan_whitespace_error")
|
||||
let go_highlight_chan_whitespace_error = 1
|
||||
endif
|
||||
|
||||
if !exists("go_highlight_extra_types")
|
||||
let go_highlight_extra_types = 1
|
||||
endif
|
||||
|
||||
if !exists("go_highlight_space_tab_error")
|
||||
let go_highlight_space_tab_error = 1
|
||||
endif
|
||||
|
||||
if !exists("go_highlight_trailing_whitespace_error")
|
||||
let go_highlight_trailing_whitespace_error = 1
|
||||
endif
|
||||
|
||||
if !exists("go_highlight_operators")
|
||||
let go_highlight_operators = 1
|
||||
endif
|
||||
|
||||
if !exists("go_highlight_functions")
|
||||
let go_highlight_functions = 1
|
||||
endif
|
||||
|
||||
if !exists("go_highlight_methods")
|
||||
let go_highlight_methods = 1
|
||||
endif
|
||||
|
||||
if !exists("go_highlight_structs")
|
||||
let go_highlight_structs = 1
|
||||
endif
|
||||
|
||||
syn case match
|
||||
|
||||
syn keyword goDirective package import
|
||||
@@ -81,8 +101,8 @@ hi def link goComplexes Type
|
||||
|
||||
" Treat func specially: it's a declaration at the start of a line, but a type
|
||||
" elsewhere. Order matters here.
|
||||
syn match goType /\<func\>/
|
||||
syn match goDeclaration /^func\>/
|
||||
syn match goDeclaration /\<func\>/
|
||||
|
||||
|
||||
" Predefined functions and values
|
||||
syn keyword goBuiltins append cap close complex copy delete imag len
|
||||
@@ -197,6 +217,55 @@ endif
|
||||
hi def link goExtraType Type
|
||||
hi def link goSpaceError Error
|
||||
|
||||
|
||||
|
||||
" included from: https://github.com/athom/more-colorful.vim/blob/master/after/syntax/go.vim
|
||||
"
|
||||
" Comments; their contents
|
||||
syn keyword goTodo contained NOTE
|
||||
hi def link goTodo Todo
|
||||
|
||||
|
||||
" Operators;
|
||||
if go_highlight_operators != 0
|
||||
syn match goOperator /:=/
|
||||
syn match goOperator />=/
|
||||
syn match goOperator /<=/
|
||||
syn match goOperator /==/
|
||||
syn match goOperator /!=/
|
||||
syn match goOperator /+=/
|
||||
syn match goOperator /-=/
|
||||
syn match goOperator /\s>\s/
|
||||
syn match goOperator /\s<\s/
|
||||
syn match goOperator /\s+\s/
|
||||
syn match goOperator /\s-\s/
|
||||
syn match goOperator /\s\*\s/
|
||||
syn match goOperator /\s\/\s/
|
||||
syn match goOperator /\s%\s/
|
||||
endif
|
||||
hi def link goOperator Operator
|
||||
|
||||
" Functions;
|
||||
if go_highlight_functions != 0
|
||||
syn match goFunction /\(func\s\+\)\@<=\w\+\((\)\@=/
|
||||
syn match goFunction /\()\s\+\)\@<=\w\+\((\)\@=/
|
||||
endif
|
||||
hi def link goFunction Function
|
||||
|
||||
" Methods;
|
||||
if go_highlight_methods != 0
|
||||
syn match goMethod /\(\.\)\@<=\w\+\((\)\@=/
|
||||
endif
|
||||
hi def link goMethod Type
|
||||
|
||||
" Structs;
|
||||
if go_highlight_structs != 0
|
||||
syn match goStruct /\(.\)\@<=\w\+\({\)\@=/
|
||||
syn match goStructDef /\(type\s\+\)\@<=\w\+\(\s\+struct\s\+{\)\@=/
|
||||
endif
|
||||
hi def link goStruct Function
|
||||
hi def link goStructDef Function
|
||||
|
||||
" Search backwards for a global declaration to start processing the syntax.
|
||||
"syn sync match goSync grouphere NONE /^\(const\|var\|type\|func\)\>/
|
||||
|
||||
|
||||
@@ -7,13 +7,40 @@ if exists("b:current_syntax")
|
||||
endif
|
||||
|
||||
syn case match
|
||||
syn match godocTitle "^\([A-Z][A-Z ]*\)$"
|
||||
|
||||
command -nargs=+ HiLink hi def link <args>
|
||||
syn match godocTitle "^\([A-Z][A-Z ]*\)$"
|
||||
hi def link godocTitle Title
|
||||
|
||||
HiLink godocTitle Title
|
||||
" Single Line Definitions
|
||||
syn match godocMethodRec /\i\+\ze)/ contained
|
||||
syn match godocMethodName /) \zs\i\+\ze(/ contained
|
||||
syn match godocMethod /^func \((\i\+ [^)]*)\) \i\+(/ contains=godocMethodRec,godocMethodName
|
||||
syn match godocFunction /^func \zs\i\+\ze(/
|
||||
|
||||
delcommand HiLink
|
||||
syn match godocType /^type \zs\i\+\ze.*/
|
||||
syn match godocVar /^var \zs\i\+\ze.*/
|
||||
syn match godocConst /^const \zs\i\+\ze.*/
|
||||
|
||||
hi def link godocMethodRec Type
|
||||
hi def link godocType Type
|
||||
hi def link godocMethodName Function
|
||||
hi def link godocFunction Function
|
||||
hi def link godocVar Identifier
|
||||
hi def link godocConst Identifier
|
||||
|
||||
" Definition Blocks
|
||||
syn region godocComment start="/\*" end="\*/" contained
|
||||
syn region godocComment start="//" end="$" contained
|
||||
syn match godocDefinition /^\s\+\i\+/ contained
|
||||
|
||||
syn region godocVarBlock start=/^var (/ end=/^)/ contains=godocComment,godocDefinition
|
||||
syn region godocConstBlock start=/^const (/ end=/^)/ contains=godocComment,godocDefinition
|
||||
syn region godocTypeBlock start=/^type \i\+ \(interface\|struct\) {/ end=/^}/ matchgroup=godocType contains=godocComment,godocType
|
||||
|
||||
hi def link godocComment Comment
|
||||
hi def link godocDefinition Identifier
|
||||
|
||||
syn sync minlines=500
|
||||
|
||||
let b:current_syntax = "godoc"
|
||||
|
||||
|
||||
@@ -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 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 match hamlError "\$" contained
|
||||
|
||||
|
||||
@@ -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'
|
||||
@@ -26,8 +26,8 @@ syn match hsFloat "\<[0-9]\+\.[0-9]\+\([eE][-+]\=[0-9]\+\)\=\>"
|
||||
" This case matches the names of types and constructors: names beginning with
|
||||
" a capital letter. Note that this also handles the case of @M.lookup@ where
|
||||
" M is a qualified import. There is a big negative lookbehind assertion here
|
||||
" so that we don't highlight import and module statements oddly.
|
||||
syn match hsTypeName "\(^import\s.*\|^module\s.*\)\@<!\([^a-zA-Z0-9]\)\@<=[A-Z][a-zA-Z0-9_]*"
|
||||
" so that we don't highlight import and module statements oddly.
|
||||
syn match hsTypeName "\(^import\s.*\|^module\s.*\)\@<!\(^\|[^a-zA-Z0-9]\)\@<=[A-Z][a-zA-Z0-9_]*"
|
||||
" Also make unit and the empty list easy to spot - they are constructors too.
|
||||
syn match hsTypeName "()"
|
||||
syn match hsTypeName "\[\]"
|
||||
@@ -37,24 +37,26 @@ syn keyword hsFIXME contained FIXME TODO XXX BUG NOTE
|
||||
|
||||
" Comment stuff
|
||||
syn region hsPragma start='{-#' end='#-}'
|
||||
syn region hsBlockComment start='{-' end='-}' fold contains=hsFIXME,hsBlockComment
|
||||
syn region hsBlockComment start='{-' end='-}' fold contains=hsFIXME,hsBlockComment,@Spell
|
||||
" FIXME: haddock block comments should be able to contain hsBlockComments, but
|
||||
" it doesn't seem to work at the moment.
|
||||
syn region hsHaddockComment start='{-|' end='-}' contains=hsFIXME
|
||||
syn match hsLineComment "--.*$" contains=hsFIXME
|
||||
syn region hsHaddockComment start='{-|' end='-}' contains=hsFIXME,@Spell
|
||||
syn match hsLineComment "--.*$" contains=hsFIXME,@Spell
|
||||
" Line-based haddock comments are trickier - they continue until
|
||||
" the next line that isn't part of the same block of comments.
|
||||
syn region hsHaddockComment start='-- |' end='^\(\s*--\)\@!' contains=hsFIXME
|
||||
syn region hsHaddockComment start='-- \$\w\+' end='^\(\s*--\)\@!' contains=hsFIXME
|
||||
syn region hsHaddockComment start='-- ^' end='^\(\s*--\)\@!' contains=hsFIXME
|
||||
syn region hsHaddockComment start='-- |' end='^\(\s*--\)\@!' contains=hsFIXME,@Spell
|
||||
syn region hsHaddockComment start='-- \$\w\+' end='^\(\s*--\)\@!' contains=hsFIXME,@Spell
|
||||
syn region hsHaddockComment start='-- ^' end='^\(\s*--\)\@!' contains=hsFIXME,@Spell
|
||||
" Haddock sections for import lists
|
||||
syn match hsHaddockSection '-- \*.*$'
|
||||
" Named documentation chunks (also for import lists)
|
||||
syn match hsHaddockSection '-- \$.*$'
|
||||
" Treat a shebang line at the start of the file as a comment
|
||||
syn match hsLineComment "\%^\#\!.*$"
|
||||
|
||||
|
||||
" Keywords appearing in expressions, plus a few top-level keywords
|
||||
syn keyword hsKeyword do let in _ where
|
||||
syn keyword hsKeyword do mdo let in _ where
|
||||
syn keyword hsKeyword infix infixl infixr
|
||||
syn keyword hsKeyword forall foreign
|
||||
syn match hsKeyword '\(^\(data\|type\)\s\+\)\@<=family\(\W\)\@='
|
||||
@@ -68,21 +70,19 @@ syn keyword hsConditional case of if then else
|
||||
" headers (-- *) can be highlighted specially only within this context.
|
||||
syn region hsModuleHeader start="^module\s" end="where" contains=hsHaddockSection keepend fold transparent
|
||||
" Treat Module imports as the #include category; it maps reasonably well
|
||||
syn keyword hsImport import qualified as hiding module
|
||||
syn keyword hsImport import module
|
||||
" Treat 'qualified', 'as', and 'hiding' as keywords when following 'import'
|
||||
syn match hsImport '\(\<import\>.*\)\@<=\<\(qualified\|as\|hiding\)\>'
|
||||
|
||||
syn keyword hsTypeDecls class instance data newtype type deriving default
|
||||
" FIXME: Maybe we can do something fancy for data/type families? 'family' is
|
||||
" only a keyword if it follows data/type...
|
||||
|
||||
" This is uglier than I'd like. We want to let '-' participate in operators,
|
||||
" but we can't let it match '--' because that interferes with comments. Hacks
|
||||
" for now - just include some common operators with '-'.
|
||||
syn match hsOperator "<-\|->\|-->\|-\(-\)\@!\|[%\~\&\*/\$\^|@:+<!>=#!\?]\+"
|
||||
" A bare . is an operator (but not surrounded by alnum chars)
|
||||
syn match hsOperator "\s\@<=\.\s\@="
|
||||
" . is also an operator if adjacent to some other operator char
|
||||
syn match hsOperator "[%\~\&\*\$\^|@:+<!>=#!\?]\+\.[%\~\&\*\$\^|@:+<\.!>=#!\?]*"
|
||||
syn match hsOperator "[%\~\&\*\$\^|@:+<!>=#!\?]*\.[%\~\&\*\$\^|@:+\.<!>=#!\?]\+"
|
||||
" We want to let '-' participate in operators, but we can't let it match
|
||||
" '--', '---', etc. because it interferes with comments. The same goes for
|
||||
" '#!' at the start of a file. Also, the dot (.) is an operator character,
|
||||
" but not when it comes immediately after a module name.
|
||||
syn match hsOperator "\(\%^\#\!\)\@!\(\(\<[A-Z]\w*\)\@64<=\.\)\@!\(--\+\([^.%\~\&\*/\$\^|@:+<!>=#!\?]\|$\)\)\@![-.%\~\&\*/\$\^|@:+<!>=#!\?]\+"
|
||||
" Include support for infix functions as operators
|
||||
syn match hsOperator "`[a-zA-Z0-9\.]\+`"
|
||||
|
||||
@@ -90,11 +90,11 @@ syn match hsOperator "`[a-zA-Z0-9\.]\+`"
|
||||
" after a name. This allows whitespace before the name so that it can match
|
||||
" in a 'where,' but it won't match local type annotations on random little
|
||||
" things.
|
||||
syn match hsFunctionList "^\s*\([a-z][a-zA-Z0-9']*[[:space:]\n,]\+\)*[a-z][a-zA-Z0-9']*[[:space:]\n]*::" contains=hsFunction
|
||||
syn match hsFunction "\s*[a-z][a-zA-Z0-9']*[[:space:]\n]*\(::\|,\)\@=" contained
|
||||
syn match hsFunctionList "^\s*\(\<\(where\>\|let\>\)\@![a-z][a-zA-Z0-9']*[[:space:]\n,]\+\)*[a-z][a-zA-Z0-9']*[[:space:]\n]*::" contains=hsFunction
|
||||
syn match hsFunction "\s*[a-z][a-zA-Z0-9']*\([[:space:]\n]*\(::\|,\)\)\@=" contained
|
||||
" Also support the style where the first where binding is on the same line as
|
||||
" the where keyword.
|
||||
syn match hsFunction "\(^\s\+where\s\+\)\@<=[a-z][a-zA-Z0-9']*\(\s*::\)\@="
|
||||
syn match hsFunction "\(\<\(where\|let\)\s\+\([a-z][a-zA-Z0-9']*\s*,\s*\)*\)\@<=[a-z][a-zA-Z0-9']*\(\s*\(,\s*[a-z][a-zA-Z0-9']*\s*\)*::\)\@="
|
||||
|
||||
" FIXME Ignoring proc for now, also mdo and rec
|
||||
|
||||
|
||||
427
syntax/haxe.vim
Normal file
427
syntax/haxe.vim
Normal 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"
|
||||
@@ -41,6 +41,7 @@ syn keyword htmlTagName contained linearGradient marker mask pattern radialGradi
|
||||
syn keyword htmlTagName contained missing-glyph mpath
|
||||
syn keyword htmlTagName contained text textPath tref tspan vkern
|
||||
|
||||
" Custom Element
|
||||
syn match htmlTagName contained "\<[a-z_]\+\(\-[a-z_]\+\)\+\>"
|
||||
|
||||
" HTML 5 arguments
|
||||
|
||||
@@ -1,12 +1,11 @@
|
||||
" Vim syntax file
|
||||
" Language: WAI-ARIA
|
||||
" Maintainer: othree <othree@gmail.com>
|
||||
" URL: http://github.com/othree/html5-syntax.vim
|
||||
" Last Change: 2010-09-25
|
||||
" Maintainer: othree <othree@gmail.com>
|
||||
" URL: http://github.com/othree/html5-syntax.vim
|
||||
" Last Change: 2014-05-02
|
||||
" License: MIT
|
||||
" Changes: update to Draft 16 September 2010
|
||||
|
||||
setlocal iskeyword+=-
|
||||
" Changes: Add match rules
|
||||
" update to Draft 16 September 2010
|
||||
|
||||
" 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-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\)\>"
|
||||
|
||||
|
||||
@@ -12,8 +12,6 @@ if !exists("main_syntax")
|
||||
let main_syntax = 'jade'
|
||||
endif
|
||||
|
||||
runtime! syntax/html.vim
|
||||
runtime! syntax/html/html5.vim
|
||||
silent! syntax include @htmlCoffeescript syntax/coffee.vim
|
||||
unlet! b:current_syntax
|
||||
silent! syntax include @htmlStylus syntax/stylus.vim
|
||||
@@ -29,15 +27,15 @@ syn cluster htmlJavascript add=javascriptParenthesisBlock
|
||||
syn region jadeJavascript matchgroup=jadeJavascriptOutputChar start="[!&]\==\|\~" skip=",\s*$" end="$" contained contains=@htmlJavascript keepend
|
||||
syn region jadeJavascript matchgroup=jadeJavascriptChar start="-" skip=",\s*$" end="$" contained contains=@htmlJavascript keepend
|
||||
syn cluster jadeTop contains=jadeBegin,jadeComment,jadeHtmlComment,jadeJavascript
|
||||
syn match jadeBegin "^\s*\%([<>]\|&[^=~ ]\)\@!" nextgroup=jadeTag,jadeClassChar,jadeIdChar,jadePlainChar,jadeJavascript,jadeScriptConditional,jadeScriptStatement
|
||||
syn match jadeBegin "^\s*\%([<>]\|&[^=~ ]\)\@!" nextgroup=jadeTag,jadeClassChar,jadeIdChar,jadePlainChar,jadeJavascript,jadeScriptConditional,jadeScriptStatement,jadePipedText
|
||||
syn match jadeTag "+\?\w\+\%(:\w\+\)\=" contained contains=htmlTagName,htmlSpecialTagName nextgroup=@jadeComponent
|
||||
syn cluster jadeComponent contains=jadeAttributes,jadeIdChar,jadeBlockExpansionChar,jadeClassChar,jadePlainChar,jadeJavascript
|
||||
syn cluster jadeComponent contains=jadeAttributes,jadeIdChar,jadeBlockExpansionChar,jadeClassChar,jadePlainChar,jadeJavascript,jadeTagBlockChar,jadeTagInlineText
|
||||
syn match jadeComment '\s*\/\/.*$'
|
||||
syn region jadeHtmlComment start="^\z(\s*\)/" end="^\%(\z1\s\|\s*$\)\@!"
|
||||
syn region jadeHtmlConditionalComment start="<!--\%(.*\)>" end="<!\%(.*\)-->"
|
||||
syn region jadeAttributes matchgroup=jadeAttributesDelimiter start="(" end=")" contained contains=@htmlJavascript,jadeHtmlArg,htmlArg,htmlEvent,htmlCssDefinition nextgroup=@jadeComponent
|
||||
syn match jadeClassChar "\." contained nextgroup=jadeClass
|
||||
syn match jadeBlockExpansionChar ":\s" contained nextgroup=jadeTag
|
||||
syn match jadeIdChar "#{\@!" contained nextgroup=jadeId
|
||||
syn match jadeBlockExpansionChar ":\s\+" contained nextgroup=jadeTag
|
||||
syn match jadeIdChar "#[[{]\@!" contained nextgroup=jadeId
|
||||
syn match jadeClass "\%(\w\|-\)\+" contained nextgroup=@jadeComponent
|
||||
syn match jadeId "\%(\w\|-\)\+" contained nextgroup=@jadeComponent
|
||||
syn region jadeDocType start="^\s*\(!!!\|doctype\)" end="$"
|
||||
@@ -49,6 +47,12 @@ syn keyword jadeHtmlArg contained href title
|
||||
syn match jadePlainChar "\\" contained
|
||||
syn region jadeInterpolation matchgroup=jadeInterpolationDelimiter start="#{" end="}" contains=@htmlJavascript
|
||||
syn match jadeInterpolationEscape "\\\@<!\%(\\\\\)*\\\%(\\\ze#{\|#\ze{\)"
|
||||
syn match jadeTagInlineText "\s.*$" contained contains=jadeInterpolation,jadeTextInlineJade
|
||||
syn region jadePipedText matchgroup=jadePipeChar start="|" end="$" contained contains=jadeInterpolation,jadeTextInlineJade nextgroup=jadePipedText skipnl
|
||||
syn match jadeTagBlockChar "\.$" contained nextgroup=jadeTagBlockText,jadeTagBlockEnd skipnl
|
||||
syn region jadeTagBlockText start="\%(\s*\)\S" end="\ze\n" contained contains=jadeInterpolation,jadeTextInlineJade nextgroup=jadeTagBlockText,jadeTagBlockEnd skipnl
|
||||
syn region jadeTagBlockEnd start="\s*\S" end="$" contained contains=jadeInterpolation,jadeTextInlineJade nextgroup=jadeBegin skipnl
|
||||
syn region jadeTextInlineJade matchgroup=jadeInlineDelimiter start="#\[" end="]" contained contains=jadeTag keepend
|
||||
|
||||
syn region jadeJavascriptFilter matchgroup=jadeFilter start="^\z(\s*\):javascript\s*$" end="^\%(\z1\s\|\s*$\)\@!" contains=@htmlJavascript
|
||||
syn region jadeCoffeescriptFilter matchgroup=jadeFilter start="^\z(\s*\):coffeescript\s*$" end="^\%(\z1\s\|\s*$\)\@!" contains=@htmlCoffeescript
|
||||
@@ -56,8 +60,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 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 jadeScriptStatement "\<\%(each\|block\|prepend\|append\|mixin\|extends\|include\)\>[?!]\@!"
|
||||
syn match jadeScriptConditional "^\s*\<\%(if\|else\|unless\|while\|until\|case\|when\|default\)\>[?!]\@!"
|
||||
syn match jadeScriptStatement "^\s*\<\%(each\|for\|block\|prepend\|append\|mixin\|extends\|include\)\>[?!]\@!"
|
||||
syn region jadeScriptLoopRegion start="^\s*\(for \)" end="$" contains=jadeScriptLoopKeywords
|
||||
syn keyword jadeScriptLoopKeywords for in contained
|
||||
|
||||
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
|
||||
@@ -67,6 +73,7 @@ syn match jadeError "\$" contained
|
||||
|
||||
hi def link jadePlainChar Special
|
||||
hi def link jadeScriptConditional PreProc
|
||||
hi def link jadeScriptLoopKeywords PreProc
|
||||
hi def link jadeScriptStatement PreProc
|
||||
hi def link jadeHtmlArg htmlArg
|
||||
hi def link jadeAttributeString String
|
||||
@@ -74,13 +81,16 @@ hi def link jadeAttributesDelimiter Identifier
|
||||
hi def link jadeIdChar Special
|
||||
hi def link jadeClassChar Special
|
||||
hi def link jadeBlockExpansionChar Special
|
||||
hi def link jadePipeChar Special
|
||||
hi def link jadeTagBlockChar Special
|
||||
hi def link jadeId Identifier
|
||||
hi def link jadeClass Type
|
||||
hi def link jadeInterpolationDelimiter Delimiter
|
||||
hi def link jadeInlineDelimiter Delimiter
|
||||
hi def link jadeFilter PreProc
|
||||
hi def link jadeDocType PreProc
|
||||
hi def link jadeComment Comment
|
||||
hi def link jadeHtmlComment jadeComment
|
||||
hi def link jadeHtmlConditionalComment jadeComment
|
||||
|
||||
let b:current_syntax = "jade"
|
||||
|
||||
|
||||
34
syntax/jasmine.vim
Normal file
34
syntax/jasmine.vim
Normal 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
|
||||
@@ -55,15 +55,15 @@ if !exists("javascript_ignore_javaScriptdoc")
|
||||
syntax region jsDocComment matchgroup=jsComment start="/\*\*\s*" end="\*/" contains=jsDocTags,jsCommentTodo,jsCvsTag,@jsHtml,@Spell fold
|
||||
|
||||
" 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
|
||||
syntax match jsDocTags contained "@\(arg\|argument\|param\|property\)\>" nextgroup=jsDocType skipwhite
|
||||
" tags containing type but no param
|
||||
syntax match jsDocTags contained "@\(callback\|enum\|external\|this\|type\|typedef\|return\|returns\)\>" nextgroup=jsDocTypeNoParam skipwhite
|
||||
" 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)
|
||||
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 match jsDocType contained "\%(#\|\"\|\w\|\.\|:\|\/\)\+" nextgroup=jsDocParam skipwhite
|
||||
@@ -79,39 +79,40 @@ syntax case match
|
||||
|
||||
"" Syntax in the JavaScript code
|
||||
syntax match jsFuncCall /\k\+\%(\s*(\)\@=/
|
||||
syntax match jsSpecial "\v\\%(0|\\x\x\{2\}\|\\u\x\{4\}\|\c[A-Z]|.)"
|
||||
syntax region jsStringD start=+"+ skip=+\\\\\|\\$"+ end=+"+ contains=jsSpecial,@htmlPreproc
|
||||
syntax region jsStringS start=+'+ skip=+\\\\\|\\$'+ end=+'+ contains=jsSpecial,@htmlPreproc
|
||||
syntax region jsRegexpCharClass start=+\[+ end=+\]+ contained
|
||||
syntax match jsSpecial "\v\\%(0|\\x\x\{2\}\|\\u\x\{4\}\|\c[A-Z]|.)" contained
|
||||
syntax match jsTemplateVar "\${.\{-}}" contained
|
||||
syntax region jsStringD start=+"+ skip=+\\\\\|\\$"+ end=+"+ contains=jsSpecial,@htmlPreproc,@Spell
|
||||
syntax region jsStringS start=+'+ skip=+\\\\\|\\$'+ end=+'+ contains=jsSpecial,@htmlPreproc,@Spell
|
||||
syntax region jsTemplateString start=+`+ skip=+\\\\\|\\$`+ end=+`+ contains=jsTemplateVar,jsSpecial,@htmlPreproc
|
||||
syntax region jsRegexpCharClass start=+\[+ skip=+\\.+ end=+\]+ contained
|
||||
syntax match jsRegexpBoundary "\v%(\<@![\^$]|\\[bB])" contained
|
||||
syntax match jsRegexpBackRef "\v\\[1-9][0-9]*" contained
|
||||
syntax match jsRegexpQuantifier "\v\\@<!%([?*+]|\{\d+%(,|,\d+)?})\??" contained
|
||||
syntax match jsRegexpOr "\v\<@!\|" contained
|
||||
syntax match jsRegexpMod "\v\(@<=\?[:=!>]" contained
|
||||
syntax cluster jsRegexpSpecial contains=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 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 keyword jsNumber Infinity
|
||||
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
|
||||
|
||||
"" JavaScript Prototype
|
||||
syntax keyword jsPrototype prototype
|
||||
|
||||
if g:javascript_conceal == 1
|
||||
syntax keyword jsNull null conceal cchar=ø
|
||||
syntax keyword jsThis this conceal cchar=@
|
||||
syntax keyword jsReturn return conceal cchar=⇚
|
||||
syntax keyword jsUndefined undefined conceal cchar=¿
|
||||
syntax keyword jsNan NaN conceal cchar=ℕ
|
||||
syntax keyword jsPrototype prototype conceal cchar=¶
|
||||
else
|
||||
syntax keyword jsNull null
|
||||
syntax keyword jsThis this
|
||||
syntax keyword jsReturn return
|
||||
syntax keyword jsUndefined undefined
|
||||
syntax keyword jsNan NaN
|
||||
syntax keyword jsPrototype prototype
|
||||
endif
|
||||
|
||||
"" Statement Keywords
|
||||
@@ -133,18 +134,18 @@ syntax keyword jsFutureKeys abstract enum int short boolean export interface
|
||||
|
||||
"" DOM/HTML/CSS specified things
|
||||
|
||||
" DOM2 Objects
|
||||
syntax keyword jsGlobalObjects DOMImplementation DocumentFragment Document Node NodeList NamedNodeMap CharacterData Attr Element Text Comment CDATASection DocumentType Notation Entity EntityReference ProcessingInstruction
|
||||
syntax keyword jsExceptions DOMException
|
||||
" DOM2 Objects
|
||||
syntax keyword jsGlobalObjects DOMImplementation DocumentFragment Document Node NodeList NamedNodeMap CharacterData Attr Element Text Comment CDATASection DocumentType Notation Entity EntityReference ProcessingInstruction
|
||||
syntax keyword jsExceptions DOMException
|
||||
|
||||
" 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 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
|
||||
" 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 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
|
||||
syntax case ignore
|
||||
syntax keyword jsHtmlEvents onblur onclick oncontextmenu ondblclick onfocus onkeydown onkeypress onkeyup onmousedown onmousemove onmouseout onmouseover onmouseup onresize
|
||||
syntax case match
|
||||
" HTML events and internal variables
|
||||
syntax case ignore
|
||||
syntax keyword jsHtmlEvents onblur onclick oncontextmenu ondblclick onfocus onkeydown onkeypress onkeyup onmousedown onmousemove onmouseout onmouseover onmouseup onresize
|
||||
syntax case match
|
||||
|
||||
" Follow stuff should be highligh within a special context
|
||||
" While it can't be handled with context depended with Regex based highlight
|
||||
@@ -181,7 +182,7 @@ endif "DOM/HTML/CSS
|
||||
|
||||
|
||||
"" 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 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
|
||||
@@ -208,10 +209,13 @@ else
|
||||
endif
|
||||
|
||||
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 jsFuncArgRest contained /\%(\.\.\.[a-zA-Z_$][0-9a-zA-Z_$]*\))/
|
||||
syntax keyword jsArgsObj arguments contained containedin=jsFuncBlock
|
||||
|
||||
syntax match jsArrowFunction /=>/
|
||||
|
||||
" 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
|
||||
@@ -222,6 +226,7 @@ if version >= 508 || !exists("did_javascript_syn_inits")
|
||||
else
|
||||
command -nargs=+ HiLink hi def link <args>
|
||||
endif
|
||||
HiLink jsFuncArgRest Special
|
||||
HiLink jsComment Comment
|
||||
HiLink jsLineComment Comment
|
||||
HiLink jsEnvComment PreProc
|
||||
@@ -235,6 +240,7 @@ if version >= 508 || !exists("did_javascript_syn_inits")
|
||||
HiLink jsDocParam Label
|
||||
HiLink jsStringS String
|
||||
HiLink jsStringD String
|
||||
HiLink jsTemplateString String
|
||||
HiLink jsTernaryIfOperator Conditional
|
||||
HiLink jsRegexpString String
|
||||
HiLink jsRegexpBoundary SpecialChar
|
||||
@@ -254,6 +260,7 @@ if version >= 508 || !exists("did_javascript_syn_inits")
|
||||
HiLink jsStatement Statement
|
||||
HiLink jsException Exception
|
||||
HiLink jsKeyword Keyword
|
||||
HiLink jsArrowFunction Type
|
||||
HiLink jsFunction Type
|
||||
HiLink jsFuncName Function
|
||||
HiLink jsArgsObj Special
|
||||
@@ -279,6 +286,7 @@ if version >= 508 || !exists("did_javascript_syn_inits")
|
||||
HiLink jsFuncBraces Noise
|
||||
HiLink jsFuncParens Noise
|
||||
HiLink jsSpecial Special
|
||||
HiLink jsTemplateVar Special
|
||||
HiLink jsGlobalObjects Special
|
||||
HiLink jsExceptions Special
|
||||
HiLink jsFutureKeys Special
|
||||
|
||||
138
syntax/liquid.vim
Normal file
138
syntax/liquid.vim
Normal file
@@ -0,0 +1,138 @@
|
||||
" Vim syntax file
|
||||
" Language: Liquid
|
||||
" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
|
||||
" Filenames: *.liquid
|
||||
" Last Change: 2010 May 21
|
||||
|
||||
if exists('b:current_syntax')
|
||||
finish
|
||||
endif
|
||||
|
||||
if !exists('main_syntax')
|
||||
let main_syntax = 'liquid'
|
||||
endif
|
||||
|
||||
if !exists('g:liquid_default_subtype')
|
||||
let g:liquid_default_subtype = 'html'
|
||||
endif
|
||||
|
||||
if !exists('b:liquid_subtype') && main_syntax == 'liquid'
|
||||
let s:lines = getline(1)."\n".getline(2)."\n".getline(3)."\n".getline(4)."\n".getline(5)."\n".getline("$")
|
||||
let b:liquid_subtype = matchstr(s:lines,'liquid_subtype=\zs\w\+')
|
||||
if b:liquid_subtype == ''
|
||||
let b:liquid_subtype = matchstr(&filetype,'^liquid\.\zs\w\+')
|
||||
endif
|
||||
if b:liquid_subtype == ''
|
||||
let b:liquid_subtype = matchstr(substitute(expand('%:t'),'\c\%(\.liquid\)\+$','',''),'\.\zs\w\+$')
|
||||
endif
|
||||
if b:liquid_subtype == ''
|
||||
let b:liquid_subtype = g:liquid_default_subtype
|
||||
endif
|
||||
endif
|
||||
|
||||
if exists('b:liquid_subtype') && b:liquid_subtype != ''
|
||||
exe 'runtime! syntax/'.b:liquid_subtype.'.vim'
|
||||
unlet! b:current_syntax
|
||||
endif
|
||||
|
||||
syn case match
|
||||
|
||||
if exists('b:liquid_subtype') && b:liquid_subtype != 'yaml'
|
||||
" YAML Front Matter
|
||||
syn include @liquidYamlTop syntax/yaml.vim
|
||||
unlet! b:current_syntax
|
||||
syn region liquidYamlHead start="\%^---$" end="^---\s*$" keepend contains=@liquidYamlTop,@Spell
|
||||
endif
|
||||
|
||||
if !exists('g:liquid_highlight_types')
|
||||
let g:liquid_highlight_types = []
|
||||
endif
|
||||
|
||||
if !exists('s:subtype')
|
||||
let s:subtype = exists('b:liquid_subtype') ? b:liquid_subtype : ''
|
||||
|
||||
for s:type in map(copy(g:liquid_highlight_types),'matchstr(v:val,"[^=]*$")')
|
||||
if s:type =~ '\.'
|
||||
let b:{matchstr(s:type,'[^.]*')}_subtype = matchstr(s:type,'\.\zs.*')
|
||||
endif
|
||||
exe 'syn include @liquidHighlight'.substitute(s:type,'\.','','g').' syntax/'.matchstr(s:type,'[^.]*').'.vim'
|
||||
unlet! b:current_syntax
|
||||
endfor
|
||||
unlet! s:type
|
||||
|
||||
if s:subtype == ''
|
||||
unlet! b:liquid_subtype
|
||||
else
|
||||
let b:liquid_subtype = s:subtype
|
||||
endif
|
||||
unlet s:subtype
|
||||
endif
|
||||
|
||||
syn region liquidStatement matchgroup=liquidDelimiter start="{%" end="%}" contains=@liquidStatement containedin=ALLBUT,@liquidExempt keepend
|
||||
syn region liquidExpression matchgroup=liquidDelimiter start="{{" end="}}" contains=@liquidExpression containedin=ALLBUT,@liquidExempt keepend
|
||||
syn region liquidComment matchgroup=liquidDelimiter start="{%\s*comment\s*%}" end="{%\s*endcomment\s*%}" contains=liquidTodo,@Spell containedin=ALLBUT,@liquidExempt keepend
|
||||
syn region liquidRaw matchgroup=liquidDelimiter start="{%\s*raw\s*%}" end="{%\s*endraw\s*%}" contains=TOP,@liquidExempt containedin=ALLBUT,@liquidExempt keepend
|
||||
|
||||
syn cluster liquidExempt contains=liquidStatement,liquidExpression,liquidComment,liquidRaw,@liquidStatement,liquidYamlHead
|
||||
syn cluster liquidStatement contains=liquidConditional,liquidRepeat,liquidKeyword,@liquidExpression
|
||||
syn cluster liquidExpression contains=liquidOperator,liquidString,liquidNumber,liquidFloat,liquidBoolean,liquidNull,liquidEmpty,liquidPipe,liquidForloop
|
||||
|
||||
syn keyword liquidKeyword highlight nextgroup=liquidTypeHighlight skipwhite contained
|
||||
syn keyword liquidKeyword endhighlight contained
|
||||
syn region liquidHighlight start="{%\s*highlight\s\+\w\+\s*%}" end="{% endhighlight %}" keepend
|
||||
|
||||
for s:type in g:liquid_highlight_types
|
||||
exe 'syn match liquidTypeHighlight "\<'.matchstr(s:type,'[^=]*').'\>" contained'
|
||||
exe 'syn region liquidHighlight'.substitute(matchstr(s:type,'[^=]*$'),'\..*','','').' start="{%\s*highlight\s\+'.matchstr(s:type,'[^=]*').'\s*%}" end="{% endhighlight %}" keepend contains=@liquidHighlight'.substitute(matchstr(s:type,'[^=]*$'),'\.','','g')
|
||||
endfor
|
||||
unlet! s:type
|
||||
|
||||
syn region liquidString matchgroup=liquidQuote start=+"+ end=+"+ contained
|
||||
syn region liquidString matchgroup=liquidQuote start=+'+ end=+'+ contained
|
||||
syn match liquidNumber "-\=\<\d\+\>" contained
|
||||
syn match liquidFloat "-\=\<\d\+\>\.\.\@!\%(\d\+\>\)\=" contained
|
||||
syn keyword liquidBoolean true false contained
|
||||
syn keyword liquidNull null nil contained
|
||||
syn match liquidEmpty "\<empty\>" contained
|
||||
|
||||
syn keyword liquidOperator and or not contained
|
||||
syn match liquidPipe '|' contained skipwhite nextgroup=liquidFilter
|
||||
|
||||
syn keyword liquidFilter date capitalize downcase upcase first last join sort size strip_html strip_newlines newline_to_br replace replace_first remove remove_first truncate truncatewords prepend append minus plus times divided_by contained
|
||||
|
||||
syn keyword liquidConditional if elsif else endif unless endunless case when endcase ifchanged endifchanged contained
|
||||
syn keyword liquidRepeat for endfor tablerow endtablerow in contained
|
||||
syn match liquidRepeat "\%({%\s*\)\@<=empty\>" contained
|
||||
syn keyword liquidKeyword assign cycle include with contained
|
||||
|
||||
syn keyword liquidForloop forloop nextgroup=liquidForloopDot contained
|
||||
syn match liquidForloopDot "\." nextgroup=liquidForloopAttribute contained
|
||||
syn keyword liquidForloopAttribute length index index0 rindex rindex0 first last contained
|
||||
|
||||
syn keyword liquidTablerowloop tablerowloop nextgroup=liquidTablerowloopDot contained
|
||||
syn match liquidTablerowloopDot "\." nextgroup=liquidTableForloopAttribute contained
|
||||
syn keyword liquidTablerowloopAttribute length index index0 col col0 index0 rindex rindex0 first last col_first col_last contained
|
||||
|
||||
hi def link liquidDelimiter PreProc
|
||||
hi def link liquidComment Comment
|
||||
hi def link liquidTypeHighlight Type
|
||||
hi def link liquidConditional Conditional
|
||||
hi def link liquidRepeat Repeat
|
||||
hi def link liquidKeyword Keyword
|
||||
hi def link liquidOperator Operator
|
||||
hi def link liquidString String
|
||||
hi def link liquidQuote Delimiter
|
||||
hi def link liquidNumber Number
|
||||
hi def link liquidFloat Float
|
||||
hi def link liquidEmpty liquidNull
|
||||
hi def link liquidNull liquidBoolean
|
||||
hi def link liquidBoolean Boolean
|
||||
hi def link liquidFilter Function
|
||||
hi def link liquidForloop Identifier
|
||||
hi def link liquidForloopAttribute Identifier
|
||||
|
||||
let b:current_syntax = 'liquid'
|
||||
|
||||
if exists('main_syntax') && main_syntax == 'liquid'
|
||||
unlet main_syntax
|
||||
endif
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user