Compare commits

..

20 Commits

Author SHA1 Message Date
Adam Stankiewicz
10b28c4175 Add opencl support 2014-03-16 14:52:12 +01:00
Adam Stankiewicz
95bc6710a4 Update elixir, perl and rust 2014-03-16 14:48:30 +01:00
Adam Stankiewicz
94f72a68c3 Update 2014-03-11 00:36:09 +01:00
Adam Stankiewicz
9b3b092d15 Update 2014-03-01 00:15:51 +01:00
Adam Stankiewicz
959a2ffa3d Update README 2014-02-04 19:17:27 +01:00
Adam Stankiewicz
d51b8fd17e Change handlebars syntax vendor, fixes #13 2014-02-04 19:15:58 +01:00
Adam Stankiewicz
fa57320919 Update 2014-02-04 19:13:11 +01:00
Adam Stankiewicz
9a2b4f5cd8 Update 2014-01-24 18:06:22 +01:00
Adam Stankiewicz
f211f02d1e Update 2014-01-09 11:59:09 +01:00
Adam Stankiewicz
e45b23b6ee Allow for reusing vim server locally (testing) 2013-12-27 16:44:34 +01:00
Adam Stankiewicz
a0c5f3ee55 Try to not reuse server for Travis 2013-12-27 16:40:01 +01:00
Adam Stankiewicz
6b8c72637f Set timeout on test cases 2013-12-27 00:06:18 +01:00
Adam Stankiewicz
d330fdc01b Update scala 2013-12-27 00:01:27 +01:00
Adam Stankiewicz
c225bf8826 fix: For some reason stylus test hangs on travis 2013-12-27 00:01:14 +01:00
Adam Stankiewicz
20125ac3ac fix: For some reason stylus test hangs on travis 2013-12-26 23:42:00 +01:00
Adam Stankiewicz
9f19823a30 Enable verbose testing 2013-12-26 23:13:05 +01:00
Adam Stankiewicz
56d5fc498b Test all possible file extensions, fixes #7 2013-12-26 23:03:02 +01:00
Adam Stankiewicz
ab679f37dd Replace css-color with vim-coloresque, closes #11 2013-12-26 21:09:58 +01:00
Adam Stankiewicz
ca95a47a93 Change strategy to appending instead of copying 2013-12-26 04:05:26 +01:00
Adam Stankiewicz
a26bebbeb9 Update 2013-12-26 03:34:22 +01:00
58 changed files with 1633 additions and 706 deletions

View File

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

View File

@@ -25,21 +25,20 @@ Optionally download one of the [releases](https://github.com/sheerun/vim-polyglo
## Language packs ## Language packs
- [arduino](https://github.com/sudar/vim-arduino-syntax) (syntax, ftdetect) - [arduino](https://github.com/sudar/vim-arduino-syntax) (syntax, indent, ftdetect)
- [c++11](https://github.com/octol/vim-cpp-enhanced-highlight) (syntax) - [c++11](https://github.com/octol/vim-cpp-enhanced-highlight) (syntax)
- [c/c++](https://github.com/vim-jp/cpp-vim) (syntax) - [c/c++](https://github.com/vim-jp/cpp-vim) (syntax)
- [clojure](https://github.com/guns/vim-clojure-static) (syntax, indent, autoload, ftplugin, ftdetect) - [clojure](https://github.com/guns/vim-clojure-static) (syntax, indent, autoload, ftplugin, ftdetect)
- [coffee-script](https://github.com/kchmck/vim-coffee-script) (syntax, indent, compiler, autoload, ftplugin, ftdetect) - [coffee-script](https://github.com/kchmck/vim-coffee-script) (syntax, indent, compiler, autoload, ftplugin, ftdetect)
- [css-color](https://github.com/ap/vim-css-color) (syntax)
- [csv](https://github.com/chrisbra/csv.vim) (syntax, ftplugin, ftdetect) - [csv](https://github.com/chrisbra/csv.vim) (syntax, ftplugin, ftdetect)
- [cucumber](https://github.com/tpope/vim-cucumber) (syntax, indent, compiler, ftplugin, ftdetect) - [cucumber](https://github.com/tpope/vim-cucumber) (syntax, indent, compiler, ftplugin, ftdetect)
- [dockerfile](https://github.com/honza/dockerfile.vim) (syntax, ftdetect) - [dockerfile](https://github.com/honza/dockerfile.vim) (syntax, ftdetect)
- [elixir](https://github.com/elixir-lang/vim-elixir) (syntax, indent, compiler, ftplugin, ftdetect) - [elixir](https://github.com/elixir-lang/vim-elixir) (syntax, indent, compiler, ftplugin, ftdetect)
- [erlang](https://github.com/oscarh/vimerl) (syntax, indent, compiler, autoload, ftplugin) - [erlang](https://github.com/oscarh/vimerl) (syntax, indent, compiler, autoload, ftplugin)
- [git](https://github.com/tpope/vim-git) (syntax, indent, ftplugin, ftdetect) - [git](https://github.com/tpope/vim-git) (syntax, indent, ftplugin, ftdetect)
- [go](https://github.com/jnwhiteh/vim-golang) (syntax, indent, autoload, ftplugin, ftdetect) - [go](https://github.com/jnwhiteh/vim-golang) (syntax, indent, compiler, autoload, ftplugin, ftdetect)
- [haml](https://github.com/tpope/vim-haml) (syntax, indent, compiler, ftplugin, ftdetect) - [haml](https://github.com/tpope/vim-haml) (syntax, indent, compiler, ftplugin, ftdetect)
- [handlebars](https://github.com/nono/vim-handlebars) (syntax, ftplugin, ftdetect) - [handlebars](https://github.com/mustache/vim-mustache-handlebars) (syntax, ftplugin, ftdetect)
- [haskell](https://github.com/travitch/hasksyn) (syntax, indent, ftplugin) - [haskell](https://github.com/travitch/hasksyn) (syntax, indent, ftplugin)
- [html5](https://github.com/othree/html5.vim) (syntax, indent, autoload) - [html5](https://github.com/othree/html5.vim) (syntax, indent, autoload)
- [jade](https://github.com/digitaltoad/vim-jade) (syntax, indent, ftplugin, ftdetect) - [jade](https://github.com/digitaltoad/vim-jade) (syntax, indent, ftplugin, ftdetect)
@@ -52,7 +51,8 @@ Optionally download one of the [releases](https://github.com/sheerun/vim-polyglo
- [nginx](https://github.com/mutewinter/nginx.vim) (syntax, ftdetect) - [nginx](https://github.com/mutewinter/nginx.vim) (syntax, ftdetect)
- [ocaml](https://github.com/jrk/vim-ocaml) (syntax, indent, ftplugin) - [ocaml](https://github.com/jrk/vim-ocaml) (syntax, indent, ftplugin)
- [octave](https://github.com/vim-scripts/octave.vim--) (syntax) - [octave](https://github.com/vim-scripts/octave.vim--) (syntax)
- [perl](https://github.com/vim-perl/vim-perl) (syntax, indent, ftplugin) - [opencl](https://github.com/petRUShka/vim-opencl) (syntax, indent, ftplugin, ftdetect)
- [perl](https://github.com/vim-perl/vim-perl) (syntax, indent, ftplugin, ftdetect)
- [php](https://github.com/StanAngeloff/php.vim) (syntax) - [php](https://github.com/StanAngeloff/php.vim) (syntax)
- [puppet](https://github.com/ajf/puppet-vim) (syntax, indent, ftplugin, ftdetect) - [puppet](https://github.com/ajf/puppet-vim) (syntax, indent, ftplugin, ftdetect)
- [protobuf](https://github.com/uarun/vim-protobuf) (syntax, ftdetect) - [protobuf](https://github.com/uarun/vim-protobuf) (syntax, ftdetect)
@@ -72,6 +72,7 @@ Optionally download one of the [releases](https://github.com/sheerun/vim-polyglo
- [vbnet](https://github.com/vim-scripts/vbnet.vim) (syntax) - [vbnet](https://github.com/vim-scripts/vbnet.vim) (syntax)
- [twig](https://github.com/beyondwords/vim-twig) (syntax, ftplugin, ftdetect) - [twig](https://github.com/beyondwords/vim-twig) (syntax, ftplugin, ftdetect)
- [xls](https://github.com/vim-scripts/XSLT-syntax) (syntax) - [xls](https://github.com/vim-scripts/XSLT-syntax) (syntax)
- [css-color](https://github.com/gorodinskiy/vim-coloresque) (syntax)
## Contributing ## Contributing

View File

@@ -2,10 +2,11 @@
" Language: C++ Additions " Language: C++ Additions
" Maintainer: Jon Haggblad <jon@haeggblad.com> " Maintainer: Jon Haggblad <jon@haeggblad.com>
" URL: http://www.haeggblad.com " URL: http://www.haeggblad.com
" Last Change: 17 May 2013 " Last Change: 26 Jan 2014
" Version: 0.1 " Version: 0.2
" Changelog: " Changelog:
" 0.1 - initial version. " 0.1 - initial version.
" 0.2 - C++14
" "
" Additional Vim syntax highlighting for C++ (including C++11) " Additional Vim syntax highlighting for C++ (including C++11)
" "
@@ -139,6 +140,7 @@ syntax keyword cppSTLfunction atexit
syntax keyword cppSTLfunction atof syntax keyword cppSTLfunction atof
syntax keyword cppSTLfunction atoi syntax keyword cppSTLfunction atoi
syntax keyword cppSTLfunction atol syntax keyword cppSTLfunction atol
syntax keyword cppSTLfunction atoll
syntax keyword cppSTLfunction back syntax keyword cppSTLfunction back
syntax keyword cppSTLfunction back_inserter syntax keyword cppSTLfunction back_inserter
syntax keyword cppSTLfunction bad syntax keyword cppSTLfunction bad
@@ -423,8 +425,11 @@ syntax keyword cppSTLfunction strrchr
syntax keyword cppSTLfunction strspn syntax keyword cppSTLfunction strspn
syntax keyword cppSTLfunction strstr syntax keyword cppSTLfunction strstr
syntax keyword cppSTLfunction strtod syntax keyword cppSTLfunction strtod
syntax keyword cppSTLfunction strtof
syntax keyword cppSTLfunction strtold
syntax keyword cppSTLfunction strtok syntax keyword cppSTLfunction strtok
syntax keyword cppSTLfunction strtol syntax keyword cppSTLfunction strtol
syntax keyword cppSTLfunction strtoll
syntax keyword cppSTLfunction strtoul syntax keyword cppSTLfunction strtoul
syntax keyword cppSTLfunction strxfrm syntax keyword cppSTLfunction strxfrm
syntax keyword cppSTLfunction substr syntax keyword cppSTLfunction substr
@@ -440,7 +445,6 @@ syntax keyword cppSTLfunction tellg
syntax keyword cppSTLfunction tellp syntax keyword cppSTLfunction tellp
syntax keyword cppSTLfunction test syntax keyword cppSTLfunction test
syntax keyword cppSTLfunction time syntax keyword cppSTLfunction time
syntax keyword cppSTLfunction time_t
syntax keyword cppSTLfunction tmpfile syntax keyword cppSTLfunction tmpfile
syntax keyword cppSTLfunction tmpnam syntax keyword cppSTLfunction tmpnam
syntax keyword cppSTLfunction tolower syntax keyword cppSTLfunction tolower
@@ -615,6 +619,7 @@ syntax keyword cppSTLtype stringbuf
syntax keyword cppSTLtype stringstream syntax keyword cppSTLtype stringstream
syntax keyword cppSTLtype temporary_buffer syntax keyword cppSTLtype temporary_buffer
syntax keyword cppSTLtype test_type syntax keyword cppSTLtype test_type
syntax keyword cppSTLtype time_t
syntax keyword cppSTLtype tm syntax keyword cppSTLtype tm
syntax keyword cppSTLtype traits_type syntax keyword cppSTLtype traits_type
syntax keyword cppSTLtype type_info syntax keyword cppSTLtype type_info
@@ -635,6 +640,84 @@ syntax keyword cppSTLtype wstring
syntax keyword cppSTLtype wstringbuf syntax keyword cppSTLtype wstringbuf
syntax keyword cppSTLtype wstringstream syntax keyword cppSTLtype wstringstream
syntax keyword cppSTLfunction mblen
syntax keyword cppSTLfunction mbtowc
syntax keyword cppSTLfunction wctomb
syntax keyword cppSTLfunction mbstowcs
syntax keyword cppSTLfunction wcstombs
syntax keyword cppSTLfunction mbsinit
syntax keyword cppSTLfunction btowc
syntax keyword cppSTLfunction wctob
syntax keyword cppSTLfunction mbrlen
syntax keyword cppSTLfunction mbrtowc
syntax keyword cppSTLfunction wcrtomb
syntax keyword cppSTLfunction mbsrtowcs
syntax keyword cppSTLfunction wcsrtombs
syntax keyword cppSTLtype mbstate_t
syntax keyword cppSTLconstant MB_LEN_MAX
syntax keyword cppSTLconstant MB_CUR_MAX
syntax keyword cppSTLconstant __STDC_UTF_16__
syntax keyword cppSTLconstant __STDC_UTF_32__
syntax keyword cppSTLfunction iswalnum
syntax keyword cppSTLfunction iswalpha
syntax keyword cppSTLfunction iswlower
syntax keyword cppSTLfunction iswupper
syntax keyword cppSTLfunction iswdigit
syntax keyword cppSTLfunction iswxdigit
syntax keyword cppSTLfunction iswcntrl
syntax keyword cppSTLfunction iswgraph
syntax keyword cppSTLfunction iswspace
syntax keyword cppSTLfunction iswprint
syntax keyword cppSTLfunction iswpunct
syntax keyword cppSTLfunction iswctype
syntax keyword cppSTLfunction wctype
syntax keyword cppSTLfunction towlower
syntax keyword cppSTLfunction towupper
syntax keyword cppSTLfunction towctrans
syntax keyword cppSTLfunction wctrans
syntax keyword cppSTLfunction wcstol
syntax keyword cppSTLfunction wcstoll
syntax keyword cppSTLfunction wcstoul
syntax keyword cppSTLfunction wcstoull
syntax keyword cppSTLfunction wcstof
syntax keyword cppSTLfunction wcstod
syntax keyword cppSTLfunction wcstold
syntax keyword cppSTLfunction wcscpy
syntax keyword cppSTLfunction wcsncpy
syntax keyword cppSTLfunction wcscat
syntax keyword cppSTLfunction wcsncat
syntax keyword cppSTLfunction wcsxfrm
syntax keyword cppSTLfunction wcslen
syntax keyword cppSTLfunction wcscmp
syntax keyword cppSTLfunction wcsncmp
syntax keyword cppSTLfunction wcscoll
syntax keyword cppSTLfunction wcschr
syntax keyword cppSTLfunction wcsrchr
syntax keyword cppSTLfunction wcsspn
syntax keyword cppSTLfunction wcscspn
syntax keyword cppSTLfunction wcspbrk
syntax keyword cppSTLfunction wcsstr
syntax keyword cppSTLfunction wcstok
syntax keyword cppSTLfunction wmemcpy
syntax keyword cppSTLfunction wmemmove
syntax keyword cppSTLfunction wmemcmp
syntax keyword cppSTLfunction wmemchr
syntax keyword cppSTLfunction wmemset
syntax keyword cppSTLtype wctrans_t
syntax keyword cppSTLtype wctype_t
syntax keyword cppSTLtype wint_t
syntax keyword cppSTLconstant WEOF
syntax keyword cppSTLconstant WCHAR_MIN
syntax keyword cppSTLconstant WCHAR_MAX
if !exists("cpp_no_cpp11") if !exists("cpp_no_cpp11")
syntax keyword cppSTLtype nullptr_t max_align_t syntax keyword cppSTLtype nullptr_t max_align_t
syntax keyword cppSTLtype type_index syntax keyword cppSTLtype type_index
@@ -968,6 +1051,7 @@ if !exists("cpp_no_cpp11")
" locale " locale
syntax keyword cppSTLfunction isblank syntax keyword cppSTLfunction isblank
syntax keyword cppSTLfunction iswblank
syntax keyword cppSTLtype wstring_convert syntax keyword cppSTLtype wstring_convert
syntax keyword cppSTLtype wbuffer_convert syntax keyword cppSTLtype wbuffer_convert
syntax keyword cppSTLtype codecvt_utf8 syntax keyword cppSTLtype codecvt_utf8
@@ -1016,13 +1100,51 @@ if !exists("cpp_no_cpp11")
syntax keyword cppSTLfunction atomic_flag_clear syntax keyword cppSTLfunction atomic_flag_clear
syntax keyword cppSTLfunction atomic_flag_clear_explicit syntax keyword cppSTLfunction atomic_flag_clear_explicit
syntax keyword cppSTLtype atomic_bool
syntax keyword cppSTLtype atomic_char
syntax keyword cppSTLtype atomic_schar
syntax keyword cppSTLtype atomic_uchar
syntax keyword cppSTLtype atomic_short
syntax keyword cppSTLtype atomic_ushort
syntax keyword cppSTLtype atomic_int
syntax keyword cppSTLtype atomic_uint
syntax keyword cppSTLtype atomic_long
syntax keyword cppSTLtype atomic_ulong
syntax keyword cppSTLtype atomic_llong
syntax keyword cppSTLtype atomic_ullong
syntax keyword cppSTLtype atomic_char16_t
syntax keyword cppSTLtype atomic_char32_t
syntax keyword cppSTLtype atomic_wchar_t
syntax keyword cppSTLtype atomic_int_least8_t
syntax keyword cppSTLtype atomic_uint_least8_t
syntax keyword cppSTLtype atomic_int_least16_t
syntax keyword cppSTLtype atomic_uint_least16_t
syntax keyword cppSTLtype atomic_int_least32_t
syntax keyword cppSTLtype atomic_uint_least32_t
syntax keyword cppSTLtype atomic_int_least64_t
syntax keyword cppSTLtype atomic_uint_least64_t
syntax keyword cppSTLtype atomic_int_fast8_t
syntax keyword cppSTLtype atomic_uint_fast8_t
syntax keyword cppSTLtype atomic_int_fast16_t
syntax keyword cppSTLtype atomic_uint_fast16_t
syntax keyword cppSTLtype atomic_int_fast32_t
syntax keyword cppSTLtype atomic_uint_fast32_t
syntax keyword cppSTLtype atomic_int_fast64_t
syntax keyword cppSTLtype atomic_uint_fast64_t
syntax keyword cppSTLtype atomic_intptr_t
syntax keyword cppSTLtype atomic_uintptr_t
syntax keyword cppSTLtype atomic_size_t
syntax keyword cppSTLtype atomic_ptrdiff_t
syntax keyword cppSTLtype atomic_intmax_t
syntax keyword cppSTLtype atomic_uintmax_t
syntax keyword cppSTLtype memory_order syntax keyword cppSTLtype memory_order
syntax keyword cppSTLfunction atomic_init syntax keyword cppSTLfunction atomic_init
syntax keyword cppSTLfunction ATOMIC_VAR_INIT syntax keyword cppSTLfunction ATOMIC_VAR_INIT
syntax keyword cppSTLconstant ATOMIC_FLAG_INIT syntax keyword cppSTLconstant ATOMIC_FLAG_INIT
syntax keyword cppSTLconstant kill_dependency syntax keyword cppSTLfunction kill_dependency
syntax keyword cppSTLconstant atomic_thread_fence syntax keyword cppSTLfunction atomic_thread_fence
syntax keyword cppSTLconstant atomic_signal_fence syntax keyword cppSTLfunction atomic_signal_fence
" thread " thread
syntax keyword cppSTLtype thread syntax keyword cppSTLtype thread
@@ -1061,8 +1183,8 @@ if !exists("cpp_no_cpp11")
syntax keyword cppSTLtype future syntax keyword cppSTLtype future
syntax keyword cppSTLtype shared_future syntax keyword cppSTLtype shared_future
"syntax keyword cppSTLfunction async syntax keyword cppSTLfunction async
"syntax keyword cppSTLenum launch syntax keyword cppSTLenum launch
syntax keyword cppSTLenum future_status syntax keyword cppSTLenum future_status
syntax keyword cppSTLenum future_errc syntax keyword cppSTLenum future_errc
@@ -1114,7 +1236,36 @@ if !exists("cpp_no_cpp11")
"limits "limits
syntax keyword cppSTLfunction lowest syntax keyword cppSTLfunction lowest
endif
"cuchar
syntax keyword cppSTLfunction mbrtoc16
syntax keyword cppSTLfunction c16rtomb
syntax keyword cppSTLfunction mbrtoc32
syntax keyword cppSTLfunction c32rtomb
"cinttypes
syntax keyword cppSTLfunction strtoimax
syntax keyword cppSTLfunction strtoumax
syntax keyword cppSTLfunction wcstoimax
syntax keyword cppSTLfunction wcstoumax
endif " C++11
if !exists("cpp_no_cpp14")
"optional
syntax keyword cppSTLtype optional
"syntax keyword cppSTLfunction value
syntax keyword cppSTLfunction value_or
syntax keyword cppSTLfunction make_optional
"dynarray
syntax keyword cppSTLtype dynarray
"thread
syntax keyword cppSTLtype shared_mutex
syntax keyword cppSTLtype shared_lock
endif " C++14
" Default highlighting " Default highlighting
if version >= 508 || !exists("did_cpp_syntax_inits") if version >= 508 || !exists("did_cpp_syntax_inits")

View File

@@ -1,13 +1,18 @@
" Language: Colorful CSS Color Preview " Name: Coloresque
" Author: Aristotle Pagaltzis <pagaltzis@gmx.de> " Language: color preview in vim
" Last Change: 2013-03-09 " Author: Gorodinskii Konstantin <gor.konstantin@gmail.com>
" Licence: No Warranties. WTFPL. But please tell me! " Licence: Vim license
" Version: 0.7.3 " 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 " vim:et:ts=2 sw=2 sts=2
"
" KNOWN PROBLEMS: compatibility with `cursorline` -- https://github.com/ap/vim-css-color/issues/24
let s:hex={} let s:hex={}
let b:matchescache = {}
let b:color_pattern = {}
let w:colorDictRegExp=''
for i in range(0, 255) for i in range(0, 255)
let s:hex[ printf( '%02x', i ) ] = i let s:hex[ printf( '%02x', i ) ] = i
endfor endfor
@@ -24,25 +29,52 @@ function! s:FGForBG(color)
return r*30 + g*59 + b*11 > 12000 ? s:black : s:white return r*30 + g*59 + b*11 > 12000 ? s:black : s:white
endfunction endfunction
let b:color_pattern = {}
let s:color_prefix = 'gui' let s:color_prefix = 'gui'
let s:fg_color_calc = 'let color = "#" . toupper(a:color)' let s:fg_color_calc = 'let color = "#" . toupper(a:color)'
function! s:MatchColorValue(color, pattern) 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 if ! len(a:color) | return | endif
if has_key( b:color_pattern, a:pattern ) | return | endif let group = 'cssColor' . tolower(a:color)
let b:color_pattern[a:pattern] = 1
let pattern = a:pattern if !exists('b:color_pattern[a:part]')
" iff pattern ends on word character, require word break to match exe s:fg_color_calc
if pattern =~ '\>$' | let pattern .= '\>' | endif 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))
let group = 'cssColor' . tolower(a:color)
exe 'syn match' group '/'.escape(pattern, '/').'/ contained'
exe 'syn cluster cssColors add='.group
exe s:fg_color_calc
exe 'hi' group s:color_prefix.'bg='.color s:color_prefix.'fg='.s:FGForBG(a:color)
return '' return ''
endfunction endfunction
@@ -73,18 +105,265 @@ function! s:HexForHSLValue(h,s,l)
return printf( '%02x%02x%02x', rgb[0], rgb[1], rgb[2] ) return printf( '%02x%02x%02x', rgb[0], rgb[1], rgb[2] )
endfunction endfunction
function! s:PreviewCSSColorInLine() function! s:ClearMatches()
" TODO use cssColor matchdata call clearmatches()
"
" N.B. these substitute() calls are here just for the side effect if !exists('b:matchescache')
" of invoking s:MatchColorValue during substitution -- because return
" match() and friends do not allow finding all matches in a single endif
" scan without examining the start of the string over and over "for i in values(b:matchescache)
call substitute( substitute( substitute( substitute( getline('.'), "call matchdelete(i)
\ '#\(\x\)\(\x\)\(\x\)\>', '\=s:MatchColorValue(submatch(1).submatch(1).submatch(2).submatch(2).submatch(3).submatch(3), submatch(0))', 'g' ), "endfor
\ '#\(\x\{6}\)\>', '\=s:MatchColorValue(submatch(1), submatch(0))', 'g' ), unlet b:matchescache
\ 'rgba\?(\s*\(\d\{1,3}%\?\)\s*,\s*\(\d\{1,3}%\?\)\s*,\s*\(\d\{1,3}%\?\)\s*\%(,[^)]*\)\?)', '\=s:MatchColorValue(s:HexForRGBValue(submatch(1),submatch(2),submatch(3)),submatch(0))', 'g' ), endfunction
\ 'hsla\?(\s*\(\d\{1,3}%\?\)\s*,\s*\(\d\{1,3}%\?\)\s*,\s*\(\d\{1,3}%\?\)\s*\%(,[^)]*\)\?)', '\=s:MatchColorValue(s:HexForHSLValue(submatch(1),submatch(2),submatch(3)),submatch(0))', 'g' )
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 endfunction
if has("gui_running") || &t_Co==256 if has("gui_running") || &t_Co==256
@@ -97,7 +376,6 @@ if has("gui_running") || &t_Co==256
if out !~ '^cssDefinition ' | continue | endif if out !~ '^cssDefinition ' | continue | endif
let out = substitute( out, ' \+xxx \+', ' ', '' ) let out = substitute( out, ' \+xxx \+', ' ', '' )
let out = substitute( out, ' contains=\zs', '@cssColors,', '' ) let out = substitute( out, ' contains=\zs', '@cssColors,', '' )
syn clear cssDefinition
exe 'syn region' out exe 'syn region' out
endfor endfor
endif endif
@@ -341,161 +619,14 @@ if has("gui_running") || &t_Co==256
hi cssColorfffff0 guibg=#FFFFF0 guifg=#000000 ctermbg=15 ctermfg=16 | syn cluster cssColors add=cssColorfffff0 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 hi cssColorffffff guibg=#FFFFFF guifg=#000000 ctermbg=231 ctermfg=16 | syn cluster cssColors add=cssColorffffff
" w3c Colors "call s:VimCssInit(1)
syn keyword cssColor000000 black contained
syn keyword cssColorc0c0c0 silver contained
syn keyword cssColor808080 gray contained
syn match cssColorffffff "\<white\(-\)\@!\>" contained
syn keyword cssColor800000 maroon contained
syn keyword cssColorff0000 red contained
syn keyword cssColor800080 purple contained
syn keyword cssColorff00ff fuchsia contained
syn keyword cssColor008000 green contained
syn keyword cssColor00ff00 lime contained
syn keyword cssColor808000 olive contained
syn keyword cssColorffff00 yellow contained
syn keyword cssColor000080 navy contained
syn keyword cssColor0000ff blue contained
syn keyword cssColor008080 teal contained
syn keyword cssColor00ffff aqua contained
" extra colors ":augroup css
syn keyword cssColorf0f8ff AliceBlue contained "au!
syn keyword cssColorfaebd7 AntiqueWhite contained autocmd CursorMovedI <buffer> silent call s:ProcessByLine('.')
syn keyword cssColor7fffd4 Aquamarine contained autocmd ColorScheme <buffer> silent call s:VimCssInit(1)
syn keyword cssColorf0ffff Azure contained autocmd BufEnter <buffer> silent call s:VimCssInit(1)
syn keyword cssColorf5f5dc Beige contained ":augroup END
syn keyword cssColorffe4c4 Bisque contained
syn keyword cssColorffebcd BlanchedAlmond contained
syn keyword cssColor8a2be2 BlueViolet contained
syn keyword cssColora52a2a Brown contained
syn keyword cssColordeb887 BurlyWood contained
syn keyword cssColor5f9ea0 CadetBlue contained
syn keyword cssColor7fff00 Chartreuse contained
syn keyword cssColord2691e Chocolate contained
syn keyword cssColorff7f50 Coral contained
syn keyword cssColor6495ed CornflowerBlue contained
syn keyword cssColorfff8dc Cornsilk contained
syn keyword cssColordc143c Crimson contained
syn keyword cssColor00ffff Cyan contained
syn keyword cssColor00008b DarkBlue contained
syn keyword cssColor008b8b DarkCyan contained
syn keyword cssColorb8860b DarkGoldenRod contained
syn keyword cssColora9a9a9 DarkGray contained
syn keyword cssColor006400 DarkGreen contained
syn keyword cssColora9a9a9 DarkGrey contained
syn keyword cssColorbdb76b DarkKhaki contained
syn keyword cssColor8b008b DarkMagenta contained
syn keyword cssColor556b2f DarkOliveGreen contained
syn keyword cssColor9932cc DarkOrchid contained
syn keyword cssColor8b0000 DarkRed contained
syn keyword cssColore9967a DarkSalmon contained
syn keyword cssColor8fbc8f DarkSeaGreen contained
syn keyword cssColor483d8b DarkSlateBlue contained
syn keyword cssColor2f4f4f DarkSlateGray contained
syn keyword cssColor2f4f4f DarkSlateGrey contained
syn keyword cssColor00ced1 DarkTurquoise contained
syn keyword cssColor9400d3 DarkViolet contained
syn keyword cssColorff8c00 Darkorange contained
syn keyword cssColorff1493 DeepPink contained
syn keyword cssColor00bfff DeepSkyBlue contained
syn keyword cssColor696969 DimGray contained
syn keyword cssColor696969 DimGrey contained
syn keyword cssColor1e90ff DodgerBlue contained
syn keyword cssColorb22222 FireBrick contained
syn keyword cssColorfffaf0 FloralWhite contained
syn keyword cssColor228b22 ForestGreen contained
syn keyword cssColordcdcdc Gainsboro contained
syn keyword cssColorf8f8ff GhostWhite contained
syn keyword cssColorffd700 Gold contained
syn keyword cssColordaa520 GoldenRod contained
syn keyword cssColoradff2f GreenYellow contained
syn keyword cssColor808080 Grey contained
syn keyword cssColorf0fff0 HoneyDew contained
syn keyword cssColorff69b4 HotPink contained
syn keyword cssColorcd5c5c IndianRed contained
syn keyword cssColor4b0082 Indigo contained
syn keyword cssColorfffff0 Ivory contained
syn keyword cssColorf0e68c Khaki contained
syn keyword cssColore6e6fa Lavender contained
syn keyword cssColorfff0f5 LavenderBlush contained
syn keyword cssColor7cfc00 LawnGreen contained
syn keyword cssColorfffacd LemonChiffon contained
syn keyword cssColoradd8e6 LightBlue contained
syn keyword cssColorf08080 LightCoral contained
syn keyword cssColore0ffff LightCyan contained
syn keyword cssColorfafad2 LightGoldenRodYellow contained
syn keyword cssColord3d3d3 LightGray contained
syn keyword cssColor90ee90 LightGreen contained
syn keyword cssColord3d3d3 LightGrey contained
syn keyword cssColorffb6c1 LightPink contained
syn keyword cssColorffa07a LightSalmon contained
syn keyword cssColor20b2aa LightSeaGreen contained
syn keyword cssColor87cefa LightSkyBlue contained
syn keyword cssColor778899 LightSlateGray contained
syn keyword cssColor778899 LightSlateGrey contained
syn keyword cssColorb0c4de LightSteelBlue contained
syn keyword cssColorffffe0 LightYellow contained
syn keyword cssColor32cd32 LimeGreen contained
syn keyword cssColorfaf0e6 Linen contained
syn keyword cssColorff00ff Magenta contained
syn keyword cssColor66cdaa MediumAquaMarine contained
syn keyword cssColor0000cd MediumBlue contained
syn keyword cssColorba55d3 MediumOrchid contained
syn keyword cssColor9370d8 MediumPurple contained
syn keyword cssColor3cb371 MediumSeaGreen contained
syn keyword cssColor7b68ee MediumSlateBlue contained
syn keyword cssColor00fa9a MediumSpringGreen contained
syn keyword cssColor48d1cc MediumTurquoise contained
syn keyword cssColorc71585 MediumVioletRed contained
syn keyword cssColor191970 MidnightBlue contained
syn keyword cssColorf5fffa MintCream contained
syn keyword cssColorffe4e1 MistyRose contained
syn keyword cssColorffe4b5 Moccasin contained
syn keyword cssColorffdead NavajoWhite contained
syn keyword cssColorfdf5e6 OldLace contained
syn keyword cssColor6b8e23 OliveDrab contained
syn keyword cssColorffa500 Orange contained
syn keyword cssColorff4500 OrangeRed contained
syn keyword cssColorda70d6 Orchid contained
syn keyword cssColoreee8aa PaleGoldenRod contained
syn keyword cssColor98fb98 PaleGreen contained
syn keyword cssColorafeeee PaleTurquoise contained
syn keyword cssColord87093 PaleVioletRed contained
syn keyword cssColorffefd5 PapayaWhip contained
syn keyword cssColorffdab9 PeachPuff contained
syn keyword cssColorcd853f Peru contained
syn keyword cssColorffc0cb Pink contained
syn keyword cssColordda0dd Plum contained
syn keyword cssColorb0e0e6 PowderBlue contained
syn keyword cssColorbc8f8f RosyBrown contained
syn keyword cssColor4169e1 RoyalBlue contained
syn keyword cssColor8b4513 SaddleBrown contained
syn keyword cssColorfa8072 Salmon contained
syn keyword cssColorf4a460 SandyBrown contained
syn keyword cssColor2e8b57 SeaGreen contained
syn keyword cssColorfff5ee SeaShell contained
syn keyword cssColora0522d Sienna contained
syn keyword cssColor87ceeb SkyBlue contained
syn keyword cssColor6a5acd SlateBlue contained
syn keyword cssColor708090 SlateGray contained
syn keyword cssColor708090 SlateGrey contained
syn keyword cssColorfffafa Snow contained
syn keyword cssColor00ff7f SpringGreen contained
syn keyword cssColor4682b4 SteelBlue contained
syn keyword cssColord2b48c Tan contained
syn keyword cssColord8bfd8 Thistle contained
syn keyword cssColorff6347 Tomato contained
syn keyword cssColor40e0d0 Turquoise contained
syn keyword cssColoree82ee Violet contained
syn keyword cssColorf5deb3 Wheat contained
syn keyword cssColorf5f5f5 WhiteSmoke contained
syn keyword cssColor9acd32 YellowGreen contained
let view = winsaveview() "autocmd CursorMoved <buffer> silent call s:ProcessByLine('.')
%call s:PreviewCSSColorInLine()
call winrestview(view)
autocmd CursorMoved <buffer> silent call s:PreviewCSSColorInLine()
autocmd CursorMovedI <buffer> silent call s:PreviewCSSColorInLine()
endif endif

View File

@@ -9,3 +9,4 @@ syn region coffeeScript start=#<script [^>]*type="text/coffeescript"[^>]*>#
\ end=#</script>#me=s-1 keepend \ end=#</script>#me=s-1 keepend
\ contains=@htmlCoffeeScript,htmlScriptTag,@htmlPreproc \ contains=@htmlCoffeeScript,htmlScriptTag,@htmlPreproc
\ containedin=htmlHead \ containedin=htmlHead
syn include syntax/css/vim-coloresque.vim

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

@@ -0,0 +1 @@
syn include syntax/css/vim-coloresque.vim

View File

@@ -1 +1 @@
syn cluster sassCssAttributes add=@cssColors syn include syntax/css/vim-coloresque.vim

1
after/syntax/scss.vim Normal file
View File

@@ -0,0 +1 @@
syn include syntax/css/vim-coloresque.vim

View File

@@ -1 +1 @@
syn cluster stylusCssAttributes add=@cssColors syn include syntax/css/vim-coloresque.vim

View File

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

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

@@ -0,0 +1 @@
syn include syntax/css/vim-coloresque.vim

View File

@@ -15,7 +15,7 @@ function! clojurecomplete#Complete(findstart, base)
if a:findstart if a:findstart
return searchpos('\<', 'bnW', line('.'))[1] - 1 return searchpos('\<', 'bnW', line('.'))[1] - 1
else else
return { 'words': filter(copy(s:words), 'v:val =~ "\\V\\^' . a:base . '"') } return { 'words': filter(copy(s:words), 'v:val =~# "\\V\\^' . a:base . '"') }
endif endif
endfunction endfunction

8
build
View File

@@ -54,7 +54,8 @@ copy_dir() {
for file in $(find "$1/$2" -name '*.vim'); do for file in $(find "$1/$2" -name '*.vim'); do
file_path="$(dirname "${file##$1/}")" file_path="$(dirname "${file##$1/}")"
mkdir -p "$file_path" mkdir -p "$file_path"
cp $file $file_path/ touch "$file_path/$(basename "$file")"
cat $file >> $file_path/$(basename "$file")
done done
} }
@@ -70,7 +71,6 @@ PACKS="
c/c++:vim-jp/cpp-vim c/c++:vim-jp/cpp-vim
clojure:guns/vim-clojure-static clojure:guns/vim-clojure-static
coffee-script:kchmck/vim-coffee-script coffee-script:kchmck/vim-coffee-script
css-color:ap/vim-css-color
csv:chrisbra/csv.vim csv:chrisbra/csv.vim
cucumber:tpope/vim-cucumber cucumber:tpope/vim-cucumber
dockerfile:honza/dockerfile.vim dockerfile:honza/dockerfile.vim
@@ -79,7 +79,7 @@ PACKS="
git:tpope/vim-git git:tpope/vim-git
go:jnwhiteh/vim-golang go:jnwhiteh/vim-golang
haml:tpope/vim-haml haml:tpope/vim-haml
handlebars:nono/vim-handlebars handlebars:mustache/vim-mustache-handlebars
haskell:travitch/hasksyn haskell:travitch/hasksyn
html5:othree/html5.vim html5:othree/html5.vim
jade:digitaltoad/vim-jade jade:digitaltoad/vim-jade
@@ -92,6 +92,7 @@ PACKS="
nginx:mutewinter/nginx.vim nginx:mutewinter/nginx.vim
ocaml:jrk/vim-ocaml ocaml:jrk/vim-ocaml
octave:vim-scripts/octave.vim-- octave:vim-scripts/octave.vim--
opencl:petRUShka/vim-opencl
perl:vim-perl/vim-perl perl:vim-perl/vim-perl
php:StanAngeloff/php.vim php:StanAngeloff/php.vim
puppet:ajf/puppet-vim puppet:ajf/puppet-vim
@@ -112,6 +113,7 @@ PACKS="
vbnet:vim-scripts/vbnet.vim vbnet:vim-scripts/vbnet.vim
twig:beyondwords/vim-twig twig:beyondwords/vim-twig
xls:vim-scripts/XSLT-syntax xls:vim-scripts/XSLT-syntax
css-color:gorodinskiy/vim-coloresque
" "
rm -rf tmp rm -rf tmp

View File

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

30
compiler/go.vim Normal file
View File

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

View File

@@ -1,5 +1,5 @@
au BufRead,BufNewFile *.ino,*.pde set filetype=arduino au BufRead,BufNewFile *.ino,*.pde set filetype=arduino
au BufNewFile,BufRead *.clj,*.cljs,*.edn setf clojure autocmd BufNewFile,BufRead *.clj,*.cljs,*.edn setlocal filetype=clojure
autocmd BufNewFile,BufRead *.coffee set filetype=coffee autocmd BufNewFile,BufRead *.coffee set filetype=coffee
autocmd BufNewFile,BufRead *Cakefile set filetype=coffee autocmd BufNewFile,BufRead *Cakefile set filetype=coffee
autocmd BufNewFile,BufRead *.coffeekup,*.ck set filetype=coffee autocmd BufNewFile,BufRead *.coffeekup,*.ck set filetype=coffee
@@ -20,10 +20,7 @@ autocmd BufNewFile,BufRead *.git/config,.gitconfig,.gitmodules set ft=gitconfig
autocmd BufNewFile,BufRead */.config/git/config set ft=gitconfig autocmd BufNewFile,BufRead */.config/git/config set ft=gitconfig
autocmd BufNewFile,BufRead *.git/modules/**/config set ft=gitconfig autocmd BufNewFile,BufRead *.git/modules/**/config set ft=gitconfig
autocmd BufNewFile,BufRead git-rebase-todo set ft=gitrebase autocmd BufNewFile,BufRead git-rebase-todo set ft=gitrebase
autocmd BufNewFile,BufRead .msg.[0-9]* autocmd BufNewFile,BufRead .gitsendemail.* set ft=gitsendemail
\ if getline(1) =~ '^From.*# This line is ignored.$' |
\ set ft=gitsendemail |
\ endif
autocmd BufNewFile,BufRead *.git/** autocmd BufNewFile,BufRead *.git/**
\ if getline(1) =~ '^\x\{40\}\>\|^ref: ' | \ if getline(1) =~ '^\x\{40\}\>\|^ref: ' |
\ set ft=git | \ set ft=git |
@@ -50,9 +47,6 @@ au BufReadPost *.go call s:gofiletype_post()
autocmd BufNewFile,BufRead *.haml,*.hamlbars setf haml autocmd BufNewFile,BufRead *.haml,*.hamlbars setf haml
autocmd BufNewFile,BufRead *.sass setf sass autocmd BufNewFile,BufRead *.sass setf sass
autocmd BufNewFile,BufRead *.scss setf scss autocmd BufNewFile,BufRead *.scss setf scss
if has("autocmd")
au BufNewFile,BufRead *.{handlebars,hb,hbs,hbt}{,.erb} set ft=handlebars.html syntax=handlebars | runtime! ftplugin/handlebars.vim ftplugin/handlebars*.vim ftplugin/handlebars/*.vim
endif
autocmd BufNewFile,BufReadPost *.jade set filetype=jade autocmd BufNewFile,BufReadPost *.jade set filetype=jade
au BufNewFile,BufRead *.js setf javascript au BufNewFile,BufRead *.js setf javascript
au BufNewFile,BufRead *.jsm setf javascript au BufNewFile,BufRead *.jsm setf javascript
@@ -84,11 +78,15 @@ autocmd BufRead *.html
\ if getline(1) =~ '^\(%\|<[%&].*>\)' | \ if getline(1) =~ '^\(%\|<[%&].*>\)' |
\ set filetype=mason | \ set filetype=mason |
\ endif \ endif
if has("autocmd")
au BufNewFile,BufRead *.mustache,*.handlebars,*.hbs,*.hogan,*.hulk,*.hjs set filetype=html syntax=mustache | runtime! ftplugin/mustache.vim ftplugin/mustache*.vim ftplugin/mustache/*.vim
endif
au BufRead,BufNewFile /etc/nginx/*,/usr/local/nginx/*,*/nginx/vhosts.d/*,nginx.conf if &ft == '' | setfiletype nginx | endif au BufRead,BufNewFile /etc/nginx/*,/usr/local/nginx/*,*/nginx/vhosts.d/*,nginx.conf if &ft == '' | setfiletype nginx | endif
au BufRead,BufNewFile *.cl set filetype=opencl
autocmd BufNewFile,BufRead *.proto setfiletype proto autocmd BufNewFile,BufRead *.proto setfiletype proto
au BufRead,BufNewFile *.pp set filetype=puppet au BufRead,BufNewFile *.pp set filetype=puppet
au BufNewFile,BufRead *.rb,*.rbw,*.gemspec set filetype=ruby au BufNewFile,BufRead *.rb,*.rbw,*.gemspec set filetype=ruby
au BufNewFile,BufRead *.builder,*.rxml,*.rjs set filetype=ruby au BufNewFile,BufRead *.builder,*.rxml,*.rjs,*.ruby set filetype=ruby
au BufNewFile,BufRead [rR]akefile,*.rake set filetype=ruby au BufNewFile,BufRead [rR]akefile,*.rake set filetype=ruby
au BufNewFile,BufRead [rR]antfile,*.rant set filetype=ruby au BufNewFile,BufRead [rR]antfile,*.rant set filetype=ruby
au BufNewFile,BufRead .irbrc,irbrc set filetype=ruby au BufNewFile,BufRead .irbrc,irbrc set filetype=ruby
@@ -108,7 +106,8 @@ au BufNewFile,BufRead *.jbuilder set filetype=ruby
au BufNewFile,BufRead Puppetfile set filetype=ruby au BufNewFile,BufRead Puppetfile set filetype=ruby
au BufNewFile,BufRead [Bb]uildfile set filetype=ruby au BufNewFile,BufRead [Bb]uildfile set filetype=ruby
au BufNewFile,BufRead Appraisals set filetype=ruby au BufNewFile,BufRead Appraisals set filetype=ruby
au BufRead,BufNewFile *.rs,*.rc set filetype=rust au BufNewFile,BufRead Podfile,*.podspec set filetype=ruby
au BufRead,BufNewFile *.rs set filetype=rust
au BufRead,BufNewFile *.sbt set filetype=sbt au BufRead,BufNewFile *.sbt set filetype=sbt
fun! s:DetectScala() fun! s:DetectScala()
if getline(1) == '#!/usr/bin/env scala' if getline(1) == '#!/usr/bin/env scala'
@@ -117,7 +116,7 @@ fun! s:DetectScala()
endfun endfun
au BufRead,BufNewFile *.scala,*.sbt set filetype=scala au BufRead,BufNewFile *.scala,*.sbt set filetype=scala
au BufRead,BufNewFile * call s:DetectScala() au BufRead,BufNewFile * call s:DetectScala()
autocmd BufNewFile,BufRead *.slim setf slim autocmd BufNewFile,BufRead *.slim set filetype=slim
autocmd BufNewFile,BufReadPost *.styl set filetype=stylus autocmd BufNewFile,BufReadPost *.styl set filetype=stylus
autocmd BufNewFile,BufReadPost *.stylus set filetype=stylus autocmd BufNewFile,BufReadPost *.stylus set filetype=stylus
au BufRead,BufNewFile *.textile set filetype=textile au BufRead,BufNewFile *.textile set filetype=textile

View File

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

View File

@@ -11,10 +11,10 @@
" though, implementation differs. " though, implementation differs.
" Plugin folklore "{{{2 " Plugin folklore "{{{2
if v:version < 700 || exists('b:did_csv_ftplugin') if v:version < 700 || exists('b:did_ftplugin')
finish finish
endif endif
let b:did_csv_ftplugin = 1 let b:did_ftplugin = 1
let s:cpo_save = &cpo let s:cpo_save = &cpo
set cpo&vim set cpo&vim
@@ -137,6 +137,7 @@ fu! <sid>Init(startline, endline) "{{{3
\ . "| unlet! b:csv_SplitWindow b:csv_headerline" \ . "| unlet! b:csv_SplitWindow b:csv_headerline"
\ . "| unlet! b:csv_thousands_sep b:csv_decimal_sep" \ . "| unlet! b:csv_thousands_sep b:csv_decimal_sep"
\. " | unlet! b:browsefilter b:csv_cmt" \. " | unlet! b:browsefilter b:csv_cmt"
\. " | unlet! b:csv_arrange_leftalign"
" Delete all functions " Delete all functions
" disabled currently, because otherwise when switching ft " disabled currently, because otherwise when switching ft
@@ -696,7 +697,11 @@ endfu
fu! <sid>UnArrangeCol(match) "{{{3 fu! <sid>UnArrangeCol(match) "{{{3
" Strip leading white space, also trims empty records: " Strip leading white space, also trims empty records:
return substitute(a:match, '^\s\+', '', '') if get(b:, 'csv_arrange_leftalign',0)
return substitute(a:match, '\s\+\ze'. b:delimiter. '\?$', '', '')
else
return substitute(a:match, '^\s\+', '', '')
endif
" only strip leading white space, if a non-white space follows: " only strip leading white space, if a non-white space follows:
"return substitute(a:match, '^\s\+\ze\S', '', '') "return substitute(a:match, '^\s\+\ze\S', '', '')
endfu endfu
@@ -744,9 +749,18 @@ fu! <sid>Columnize(field) "{{{3
let width=get(b:col_width, (s:columnize_count % s:max_cols), 20) let width=get(b:col_width, (s:columnize_count % s:max_cols), 20)
let s:columnize_count += 1 let s:columnize_count += 1
let has_delimiter = (a:field =~# b:delimiter.'$')
if v:version > 703 || v:version == 703 && has("patch713") if v:version > 703 || v:version == 703 && has("patch713")
" printf knows about %S (e.g. can handle char length " printf knows about %S (e.g. can handle char length
return printf("%*S", width+1 , a:field) if get(b:, 'csv_arrange_leftalign',0)
" left-align content
return printf("%-*S%s", width+1 ,
\ (has_delimiter ?
\ matchstr(a:field, '.*\%('.b:delimiter.'\)\@=') : a:field),
\ (has_delimiter ? b:delimiter : ''))
else
return printf("%*S", width+1 , a:field)
endif
else else
" printf only handles bytes " printf only handles bytes
if !exists("g:csv_no_multibyte") && if !exists("g:csv_no_multibyte") &&
@@ -768,7 +782,14 @@ fu! <sid>Columnize(field) "{{{3
" Column has correct length, don't use printf() " Column has correct length, don't use printf()
return a:field return a:field
else else
return printf("%*s", width , a:field) if get(b:, 'csv_arrange_leftalign',0)
" left-align content
return printf("%-*s%s", width,
\ (has_delimiter ? matchstr(a:field, '.*\%('.b:delimiter.'\)\@=') : a:field),
\ (has_delimiter ? b:delimiter : ''))
else
return printf("%*s", width , a:field)
endif
endif endif
endif endif
endfun endfun
@@ -1250,8 +1271,8 @@ fu! <sid>SumColumn(list) "{{{3
if empty(item) if empty(item)
continue continue
endif endif
let nr = matchstr(item, '\d\(.*\d\)\?$') let nr = matchstr(item, '-\?\d\(.*\d\)\?$')
let format1 = '^\d\+\zs\V' . s:nr_format[0] . '\m\ze\d' let format1 = '^-\?\d\+\zs\V' . s:nr_format[0] . '\m\ze\d'
let format2 = '\d\+\zs\V' . s:nr_format[1] . '\m\ze\d' let format2 = '\d\+\zs\V' . s:nr_format[1] . '\m\ze\d'
try try
let nr = substitute(nr, format1, '', '') let nr = substitute(nr, format1, '', '')
@@ -1606,6 +1627,9 @@ fu! <sid>AnalyzeColumn(...) "{{{3
let qty = len(data) let qty = len(data)
let res = {} let res = {}
for item in data for item in data
if empty(item)
let item = 'NULL'
endif
if !get(res, item) if !get(res, item)
let res[item] = 0 let res[item] = 0
endif endif
@@ -1613,6 +1637,7 @@ fu! <sid>AnalyzeColumn(...) "{{{3
endfor endfor
let max_items = reverse(sort(values(res))) let max_items = reverse(sort(values(res)))
let count_items = keys(res)
if len(max_items) > 5 if len(max_items) > 5
call remove(max_items, 5, -1) call remove(max_items, 5, -1)
call filter(res, 'v:val =~ ''^''.join(max_items, ''\|'').''$''') call filter(res, 'v:val =~ ''^''.join(max_items, ''\|'').''$''')
@@ -1623,9 +1648,9 @@ fu! <sid>AnalyzeColumn(...) "{{{3
else else
let title="Nr\tCount\tValue" let title="Nr\tCount\tValue"
endif endif
echohl "Title" echohl Title
echo printf("%s", title) echo printf("%s", title)
echohl "Normal" echohl Normal
echo printf("%s", repeat('=', strdisplaywidth(title))) echo printf("%s", repeat('=', strdisplaywidth(title)))
let i=1 let i=1
@@ -1650,6 +1675,8 @@ fu! <sid>AnalyzeColumn(...) "{{{3
endif endif
endfor endfor
endfor endfor
echo printf("%s", repeat('=', strdisplaywidth(title)))
echo printf("different values: %d", len(count_items))
unlet max_items unlet max_items
endfunc endfunc
@@ -2354,11 +2381,12 @@ fu! <sid>SubstituteInColumn(command, line1, line2) range "{{{3
endfu endfu
fu! <sid>ColumnMode() "{{{3 fu! <sid>ColumnMode() "{{{3
if mode() =~# 'R' let mode = mode()
if mode =~# 'R'
" (virtual) Replace mode " (virtual) Replace mode
let new_line = (line('.') == line('$') || let new_line = (line('.') == line('$') ||
\ (synIDattr(synIDtrans(synID(line("."), col("."), 1)), "name") !~# "comment")) \ (synIDattr(synIDtrans(synID(line("."), col("."), 1)), "name") =~? "comment"))
return "\<ESC>". (new_line ? "o" : "JE".mode()) return "\<ESC>g`[". (new_line ? "o" : "J".mode)
else else
return "\<CR>" return "\<CR>"
endif endif
@@ -2373,7 +2401,7 @@ fu! csv#EvalColumn(nr, func, first, last) range "{{{3
endif endif
let save = winsaveview() let save = winsaveview()
call <sid>CheckHeaderLine() call <sid>CheckHeaderLine()
let nr = matchstr(a:nr, '^\d\+') let nr = matchstr(a:nr, '^\-\?\d\+')
let col = (empty(nr) ? <sid>WColumn() : nr) let col = (empty(nr) ? <sid>WColumn() : nr)
" don't take the header line into consideration " don't take the header line into consideration
let start = a:first - 1 + s:csv_fold_headerline let start = a:first - 1 + s:csv_fold_headerline

17
ftplugin/go.vim Normal file
View File

@@ -0,0 +1,17 @@
" 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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,6 +1,7 @@
" Vim filetype plugin " Vim filetype plugin
" Language: Markdown " Language: Markdown
" Maintainer: Tim Pope <vimNOSPAM@tpope.org> " Maintainer: Tim Pope <vimNOSPAM@tpope.org>
" Last Change: 2013 May 30
if exists("b:did_ftplugin") if exists("b:did_ftplugin")
finish finish

107
ftplugin/mustache.vim Normal file
View File

@@ -0,0 +1,107 @@
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
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>
function! s:wrap_around()
" If the cursor is at the end of the tag element, move back
" so that the end tag can be detected.
while getline('.')[col('.')-1] ==# '}'
execute 'norm h'
endwhile
" Moves to the end of the closing tag
let pos = search('}}','We')
if pos != 0
if getline('.')[col('.')] ==# '}'
" Ending tag contains 3 closing brackets '}}}',
" move to the last bracket.
execute 'norm l'
endif
" select the whole tag
execute 'norm v%'
endif
endfunction
function! s:wrap_inside()
" If the cursor is at the end of the tag element, move back
" so that the end tag can be detected.
while getline('.')[col('.')-1] ==# '}'
execute 'norm h'
endwhile
" Moves to the end of the closing tag
let pos = search('}}','W')
if pos != 0
" select only inside the tag
execute 'norm v%loho'
endif
endfunction
let &cpo = s:cpo_save
unlet s:cpo_save
" vim: nofoldenable

15
ftplugin/opencl.vim Normal file
View File

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

View File

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

View File

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

View File

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

View File

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

15
indent/arduino.vim Normal file
View File

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

View File

@@ -21,7 +21,7 @@ let b:did_indent = 1
let s:save_cpo = &cpo let s:save_cpo = &cpo
set cpo&vim set cpo&vim
let b:undo_indent = 'setlocal autoindent< smartindent< lispwords< expandtab< softtabstop< shiftwidth< indentexpr< indentkeys<' let b:undo_indent = 'setlocal autoindent< smartindent< expandtab< softtabstop< shiftwidth< indentexpr< indentkeys<'
setlocal noautoindent nosmartindent setlocal noautoindent nosmartindent
setlocal softtabstop=2 shiftwidth=2 expandtab setlocal softtabstop=2 shiftwidth=2 expandtab
@@ -53,6 +53,10 @@ if exists("*searchpairpos")
let g:clojure_align_multiline_strings = 0 let g:clojure_align_multiline_strings = 0
endif endif
if !exists('g:clojure_align_subforms')
let g:clojure_align_subforms = 0
endif
function! s:SynIdName() function! s:SynIdName()
return synIDattr(synID(line("."), col("."), 0), "name") return synIDattr(synID(line("."), col("."), 0), "name")
endfunction endfunction
@@ -66,7 +70,7 @@ if exists("*searchpairpos")
endfunction endfunction
function! s:IsParen() function! s:IsParen()
return s:CurrentChar() =~ '\v[\(\)\[\]\{\}]' && return s:CurrentChar() =~# '\v[\(\)\[\]\{\}]' &&
\ s:SynIdName() !~? '\vstring|regex|comment|character' \ s:SynIdName() !~? '\vstring|regex|comment|character'
endfunction endfunction
@@ -78,7 +82,7 @@ if exists("*searchpairpos")
\ ? a:patterns \ ? a:patterns
\ : map(split(a:patterns, ','), '"^" . v:val . "$"') \ : map(split(a:patterns, ','), '"^" . v:val . "$"')
for pat in list for pat in list
if a:string =~ pat | return 1 | endif if a:string =~# pat | return 1 | endif
endfor endfor
endfunction endfunction
@@ -144,6 +148,10 @@ if exists("*searchpairpos")
return val return val
endfunction endfunction
function! s:StripNamespaceAndMacroChars(word)
return substitute(a:word, "\\v%(.*/|[#'`~@^,]*)(.*)", '\1', '')
endfunction
function! s:ClojureIsMethodSpecialCaseWorker(position) function! s:ClojureIsMethodSpecialCaseWorker(position)
" Find the next enclosing form. " Find the next enclosing form.
call search('\S', 'Wb') call search('\S', 'Wb')
@@ -163,7 +171,8 @@ if exists("*searchpairpos")
call cursor(nextParen) call cursor(nextParen)
call search('\S', 'W') call search('\S', 'W')
if g:clojure_special_indent_words =~ '\<' . s:CurrentWord() . '\>' let w = s:StripNamespaceAndMacroChars(s:CurrentWord())
if g:clojure_special_indent_words =~# '\V\<' . w . '\>'
return 1 return 1
endif endif
@@ -269,9 +278,9 @@ if exists("*searchpairpos")
" metacharacters. " metacharacters.
" "
" e.g. clojure.core/defn and #'defn should both indent like defn. " e.g. clojure.core/defn and #'defn should both indent like defn.
let ww = substitute(w, "\\v%(.*/|[#'`~@^,]*)(.*)", '\1', '') let ww = s:StripNamespaceAndMacroChars(w)
if &lispwords =~ '\V\<' . ww . '\>' if &lispwords =~# '\V\<' . ww . '\>'
return paren[1] + &shiftwidth - 1 return paren[1] + &shiftwidth - 1
endif endif
@@ -284,7 +293,7 @@ if exists("*searchpairpos")
call search('\v\_s', 'cW') call search('\v\_s', 'cW')
call search('\v\S', 'W') call search('\v\S', 'W')
if paren[0] < line(".") if paren[0] < line(".")
return paren[1] + &shiftwidth - 1 return paren[1] + (g:clojure_align_subforms ? 0 : &shiftwidth - 1)
endif endif
call search('\v\S', 'bW') call search('\v\S', 'bW')
@@ -303,85 +312,6 @@ else
endif endif
" Specially indented symbols from clojure.core and clojure.test.
"
" Clojure symbols are indented in the defn style when they:
"
" * Define vars and anonymous functions
" * Create new lexical scopes or scopes with altered environments
" * Create conditional branches from a predicate function or value
"
" The arglists for these functions are generally in the form of [x & body];
" Functions that accept a flat list of forms do not treat the first argument
" specially and hence are not indented specially.
" Definitions
setlocal lispwords=
setlocal lispwords+=bound-fn
setlocal lispwords+=def
setlocal lispwords+=definline
setlocal lispwords+=definterface
setlocal lispwords+=defmacro
setlocal lispwords+=defmethod
setlocal lispwords+=defmulti
setlocal lispwords+=defn
setlocal lispwords+=defn-
setlocal lispwords+=defonce
setlocal lispwords+=defprotocol
setlocal lispwords+=defrecord
setlocal lispwords+=defstruct
setlocal lispwords+=deftest " clojure.test
setlocal lispwords+=deftest- " clojure.test
setlocal lispwords+=deftype
setlocal lispwords+=extend
setlocal lispwords+=extend-protocol
setlocal lispwords+=extend-type
setlocal lispwords+=fn
setlocal lispwords+=ns
setlocal lispwords+=proxy
setlocal lispwords+=reify
setlocal lispwords+=set-test " clojure.test
" Binding forms
setlocal lispwords+=as->
setlocal lispwords+=binding
setlocal lispwords+=doall
setlocal lispwords+=dorun
setlocal lispwords+=doseq
setlocal lispwords+=dotimes
setlocal lispwords+=doto
setlocal lispwords+=for
setlocal lispwords+=if-let
setlocal lispwords+=let
setlocal lispwords+=letfn
setlocal lispwords+=locking
setlocal lispwords+=loop
setlocal lispwords+=testing " clojure.test
setlocal lispwords+=when-first
setlocal lispwords+=when-let
setlocal lispwords+=with-bindings
setlocal lispwords+=with-in-str
setlocal lispwords+=with-local-vars
setlocal lispwords+=with-open
setlocal lispwords+=with-precision
setlocal lispwords+=with-redefs
setlocal lispwords+=with-redefs-fn
setlocal lispwords+=with-test " clojure.test
" Conditional branching
setlocal lispwords+=case
setlocal lispwords+=cond->
setlocal lispwords+=cond->>
setlocal lispwords+=condp
setlocal lispwords+=if
setlocal lispwords+=if-not
setlocal lispwords+=when
setlocal lispwords+=when-not
setlocal lispwords+=while
" Exception handling
setlocal lispwords+=catch
let &cpo = s:save_cpo let &cpo = s:save_cpo
unlet! s:save_cpo unlet! s:save_cpo

View File

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

View File

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

View File

@@ -1,41 +1,10 @@
" Vim indent file " Vim indent file
" Language: LessCSS " Language: LessCSS
" Maintainer: Leonard Ehrenfried <leonard.ehrenfried@web.de> " Maintainer: Leonard Ehrenfried <leonard.ehrenfried@web.de>
" Last Change: 2011 Sep 26 " Last Change: 2011 Sep 26
if exists("b:did_indent") if exists("b:did_indent")
finish finish
endif endif
let b:did_indent = 1
setlocal autoindent sw=2 et
setlocal indentexpr=GetLessIndent()
setlocal indentkeys=o,O,*<Return>,<:>,!^F
" Only define the function once.
if exists("*GetLessIndent")
finish
endif
let s:property = '^\s*:\|^\s*[[:alnum:]#{}-]\+\%(:\|\s*=\)'
function! GetLessIndent()
let lnum = prevnonblank(v:lnum-1)
let line = substitute(getline(lnum),'\s\+$','','')
let cline = substitute(substitute(getline(v:lnum),'\s\+$','',''),'^\s\+','','')
let lastcol = strlen(line)
let line = substitute(line,'^\s\+','','')
let indent = indent(lnum)
let cindent = indent(v:lnum)
if line !~ s:property && cline =~ s:property
return indent + &sw
"elseif line =~ s:property && cline !~ s:property
"return indent - &sw
else
return -1
endif
endfunction
" vim:set sw=2:
runtime! indent/css.vim

10
indent/opencl.vim Normal file
View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

File diff suppressed because one or more lines are too long

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

View File

@@ -16,8 +16,8 @@ syn match elixirComment '#.*' contains=elixirTodo
syn keyword elixirTodo FIXME NOTE TODO OPTIMIZE XXX HACK contained syn keyword elixirTodo FIXME NOTE TODO OPTIMIZE XXX HACK contained
syn keyword elixirKeyword is_atom is_binary is_bitstring is_boolean is_float is_function is_integer is_list is_number is_pid is_port is_record is_reference is_tuple is_exception syn keyword elixirKeyword is_atom is_binary is_bitstring is_boolean is_float is_function is_integer is_list is_number is_pid is_port is_record is_reference is_tuple is_exception
syn keyword elixirKeyword case cond bc lc inlist inbits if unless try receive function syn keyword elixirKeyword case cond bc lc inlist inbits if unless try receive
syn keyword elixirKeyword exit raise throw after rescue catch else syn keyword elixirKeyword exit raise throw after rescue catch else do end
syn keyword elixirKeyword quote unquote super syn keyword elixirKeyword quote unquote super
syn match elixirKeyword '\<\%(->\)\>\s*' syn match elixirKeyword '\<\%(->\)\>\s*'
@@ -27,7 +27,7 @@ syn keyword elixirOperator and not or when xor in
syn match elixirOperator '%=\|\*=\|\*\*=\|+=\|-=\|\^=\|||=' syn match elixirOperator '%=\|\*=\|\*\*=\|+=\|-=\|\^=\|||='
syn match elixirOperator "\%(<=>\|<\%(<\|=\)\@!\|>\%(<\|=\|>\)\@!\|<=\|>=\|===\|==\|=\~\|!=\|!\~\|\s?[ \t]\@=\)" syn match elixirOperator "\%(<=>\|<\%(<\|=\)\@!\|>\%(<\|=\|>\)\@!\|<=\|>=\|===\|==\|=\~\|!=\|!\~\|\s?[ \t]\@=\)"
syn match elixirOperator "!+[ \t]\@=\|&&\|||\|\^\|\*\|+\|-\|/" syn match elixirOperator "!+[ \t]\@=\|&&\|||\|\^\|\*\|+\|-\|/"
syn match elixirOperator "|\|++\|--\|\*\*\|\/\/\|<-\|<>\|<<\|>>\|=\|\.\|::" syn match elixirOperator "|\|++\|--\|\*\*\|\/\/\|\\\\\|<-\|<>\|<<\|>>\|=\|\.\|::"
syn match elixirSymbol '\(:\)\@<!:\%([a-zA-Z_]\w*\%([?!]\|=[>=]\@!\)\?\|<>\|===\?\|>=\?\|<=\?\)' syn match elixirSymbol '\(:\)\@<!:\%([a-zA-Z_]\w*\%([?!]\|=[>=]\@!\)\?\|<>\|===\?\|>=\?\|<=\?\)'
syn match elixirSymbol '\(:\)\@<!:\%(<=>\|&&\?\|%\(()\|\[\]\|{}\)\|++\?\|--\?\|||\?\|!\|//\|[%&`/|]\)' syn match elixirSymbol '\(:\)\@<!:\%(<=>\|&&\?\|%\(()\|\[\]\|{}\)\|++\?\|--\?\|||\?\|!\|//\|[%&`/|]\)'
@@ -65,8 +65,8 @@ syn region elixirInterpolation matchgroup=elixirDelimiter start="#{" end="}" con
syn region elixirDocStringStart matchgroup=elixirDocString start=+"""+ end=+$+ oneline contains=ALLBUT,@elixirNotTop syn region elixirDocStringStart matchgroup=elixirDocString start=+"""+ end=+$+ oneline contains=ALLBUT,@elixirNotTop
syn region elixirDocStringStart matchgroup=elixirDocString start=+'''+ end=+$+ oneline contains=ALLBUT,@elixirNotTop syn region elixirDocStringStart matchgroup=elixirDocString start=+'''+ end=+$+ oneline contains=ALLBUT,@elixirNotTop
syn region elixirDocString start=+\z("""\)+ end=+^\s*\zs\z1+ contains=elixirDocStringStart,elixirTodo fold keepend syn region elixirDocString start=+\z("""\)+ end=+^\s*\zs\z1+ contains=elixirDocStringStart,elixirTodo,elixirInterpolation fold keepend
syn region elixirDocString start=+\z('''\)+ end=+^\s*\zs\z1+ contains=elixirDocStringStart,elixirTodo fold keepend syn region elixirDocString start=+\z('''\)+ end=+^\s*\zs\z1+ contains=elixirDocStringStart,elixirTodo,elixirInterpolation fold keepend
syn match elixirSymbolInterpolated ':\("\)\@=' contains=elixirString syn match elixirSymbolInterpolated ':\("\)\@=' contains=elixirString
syn match elixirString "\(\w\)\@<!?\%(\\\(x\d{1,2}\|\h{1,2}\h\@!\>\|0[0-7]{0,2}[0-7]\@!\>\|[^x0MC]\)\|(\\[MC]-)+\w\|[^\s\\]\)" syn match elixirString "\(\w\)\@<!?\%(\\\(x\d{1,2}\|\h{1,2}\h\@!\>\|0[0-7]{0,2}[0-7]\@!\>\|[^x0MC]\)\|(\\[MC]-)+\w\|[^\s\\]\)"
@@ -74,22 +74,26 @@ syn match elixirString "\(\w\)\@<!?\%(\\\(x\d{1,2}\|\h{1,2}\h\@!\>\|
syn region elixirBlock matchgroup=elixirKeyword start="\<do\>\(:\)\@!" end="\<end\>" contains=ALLBUT,@elixirNotTop fold syn region elixirBlock matchgroup=elixirKeyword start="\<do\>\(:\)\@!" end="\<end\>" contains=ALLBUT,@elixirNotTop fold
syn region elixirAnonymousFunction matchgroup=elixirKeyword start="\<fn\>" end="\<end\>" contains=ALLBUT,@elixirNotTop fold syn region elixirAnonymousFunction matchgroup=elixirKeyword start="\<fn\>" end="\<end\>" contains=ALLBUT,@elixirNotTop fold
syn region elixirArguments start="(" end=")" contained contains=elixirOperator,elixirSymbol,elixirPseudoVariable,elixirName,elixirBoolean,elixirVariable,elixirUnusedVariable,elixirNumber,elixirDocString,elixirSymbolInterpolated,elixirRegex,elixirRegexEscape,elixirRegexEscapePunctuation,elixirRegexCharClass,elixirRegexQuantifier,elixirSpecial,elixirString,elixirDelimiter syn region elixirArguments start="(" end=")" contained contains=elixirOperator,elixirSymbol,elixirPseudoVariable,elixirName,elixirBoolean,elixirVariable,elixirUnusedVariable,elixirNumber,elixirDocString,elixirSymbolInterpolated,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="[%~]\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="[%~][SCRW]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" fold
syn region elixirSigil matchgroup=elixirDelimiter start="%[BCRW]\={" end="}" skip="\\\\\|\\}" contains=elixirDelimEscape fold syn region elixirSigil matchgroup=elixirDelimiter start="[%~][SCRW]\={" end="}" skip="\\\\\|\\}" contains=elixirDelimEscape fold
syn region elixirSigil matchgroup=elixirDelimiter start="%[BCRW]\=<" end=">" skip="\\\\\|\\>" contains=elixirDelimEscape fold syn region elixirSigil matchgroup=elixirDelimiter start="[%~][SCRW]\=<" end=">" skip="\\\\\|\\>" contains=elixirDelimEscape fold
syn region elixirSigil matchgroup=elixirDelimiter start="%[BCRW]\=\[" end="\]" skip="\\\\\|\\\]" contains=elixirDelimEscape fold syn region elixirSigil matchgroup=elixirDelimiter start="[%~][SCRW]\=\[" end="\]" skip="\\\\\|\\\]" contains=elixirDelimEscape fold
syn region elixirSigil matchgroup=elixirDelimiter start="%[BCRW]\=(" end=")" skip="\\\\\|\\)" contains=elixirDelimEscape fold syn region elixirSigil matchgroup=elixirDelimiter start="[%~][SCRW]\=(" end=")" skip="\\\\\|\\)" contains=elixirDelimEscape fold
syn region elixirSigil matchgroup=elixirDelimiter start="%[bcrw]\z([~`!@#$%^&*_\-+=|\:;"',.?/]\)" end="\z1" skip="\\\\\|\\\z1" fold syn region elixirSigil matchgroup=elixirDelimiter start="[%~][scrw]\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="[%~][scrw]{" 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="[%~][scrw]<" 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="[%~][scrw]\[" 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="[%~][scrw](" end=")" skip="\\\\\|\\)" fold contains=@elixirStringContained,elixirRegexEscapePunctuation
" Sigils surrounded with docString
syn region elixirSigil matchgroup=elixirDelimiter start=+[%~][SCRWscrw]\z("""\)+ end=+^\s*\zs\z1+ skip=+\\"+ fold
syn region elixirSigil matchgroup=elixirDelimiter start=+[%~][SCRWscrw]\z('''\)+ end=+^\s*\zs\z1+ skip=+\\'+ fold
" Defines " Defines
syn keyword elixirDefine def nextgroup=elixirFunctionDeclaration skipwhite skipnl syn keyword elixirDefine def nextgroup=elixirFunctionDeclaration skipwhite skipnl
@@ -149,7 +153,7 @@ hi def link elixirBoolean Boolean
hi def link elixirVariable Identifier hi def link elixirVariable Identifier
hi def link elixirUnusedVariable Comment hi def link elixirUnusedVariable Comment
hi def link elixirNumber Number hi def link elixirNumber Number
hi def link elixirDocString Comment hi def link elixirDocString String
hi def link elixirSymbolInterpolated elixirSymbol hi def link elixirSymbolInterpolated elixirSymbol
hi def link elixirRegex elixirString hi def link elixirRegex elixirString
hi def link elixirRegexEscape elixirSpecial hi def link elixirRegexEscape elixirSpecial

View File

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

View File

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

View File

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

89
syntax/mustache.vim Normal file
View File

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

157
syntax/opencl.vim Normal file
View File

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

View File

@@ -83,7 +83,7 @@ syn match perlControl "\<\%(BEGIN\|CHECK\|INIT\|END\|UNITCHECK\)\>\_s*" nextgr
syn match perlStatementStorage "\<\%(my\|our\|local\|state\)\>" syn match perlStatementStorage "\<\%(my\|our\|local\|state\)\>"
syn match perlStatementControl "\<\%(return\|last\|next\|redo\|goto\|break\)\>" syn match perlStatementControl "\<\%(return\|last\|next\|redo\|goto\|break\)\>"
syn match perlStatementScalar "\<\%(chom\=p\|chr\|crypt\|r\=index\|lc\%(first\)\=\|length\|ord\|pack\|sprintf\|substr\|uc\%(first\)\=\)\>" syn match perlStatementScalar "\<\%(chom\=p\|chr\|crypt\|r\=index\|lc\%(first\)\=\|length\|ord\|pack\|sprintf\|substr\|fc\|uc\%(first\)\=\)\>"
syn match perlStatementRegexp "\<\%(pos\|quotemeta\|split\|study\)\>" syn match perlStatementRegexp "\<\%(pos\|quotemeta\|split\|study\)\>"
syn match perlStatementNumeric "\<\%(abs\|atan2\|cos\|exp\|hex\|int\|log\|oct\|rand\|sin\|sqrt\|srand\)\>" syn match perlStatementNumeric "\<\%(abs\|atan2\|cos\|exp\|hex\|int\|log\|oct\|rand\|sin\|sqrt\|srand\)\>"
syn match perlStatementList "\<\%(splice\|unshift\|shift\|push\|pop\|join\|reverse\|grep\|map\|sort\|unpack\)\>" syn match perlStatementList "\<\%(splice\|unshift\|shift\|push\|pop\|join\|reverse\|grep\|map\|sort\|unpack\)\>"
@@ -94,8 +94,8 @@ syn match perlStatementFiledesc "\<\%(fcntl\|flock\|ioctl\|open\%(dir\)\=\|read
syn match perlStatementVector "\<vec\>" syn match perlStatementVector "\<vec\>"
syn match perlStatementFiles "\<\%(ch\%(dir\|mod\|own\|root\)\|glob\|link\|mkdir\|readlink\|rename\|rmdir\|symlink\|umask\|unlink\|utime\)\>" syn match perlStatementFiles "\<\%(ch\%(dir\|mod\|own\|root\)\|glob\|link\|mkdir\|readlink\|rename\|rmdir\|symlink\|umask\|unlink\|utime\)\>"
syn match perlStatementFiles "-[rwxoRWXOezsfdlpSbctugkTBMAC]\>" syn match perlStatementFiles "-[rwxoRWXOezsfdlpSbctugkTBMAC]\>"
syn match perlStatementFlow "\<\%(caller\|die\|dump\|eval\|exit\|wantarray\)\>" syn match perlStatementFlow "\<\%(caller\|die\|dump\|eval\|exit\|wantarray\|evalbytes\)\>"
syn match perlStatementInclude "\<\%(require\|import\)\>" syn match perlStatementInclude "\<\%(require\|import\|unimport\)\>"
syn match perlStatementInclude "\<\%(use\|no\)\s\+\%(\%(attributes\|attrs\|autouse\|parent\|base\|big\%(int\|num\|rat\)\|blib\|bytes\|charnames\|constant\|diagnostics\|encoding\%(::warnings\)\=\|feature\|fields\|filetest\|if\|integer\|less\|lib\|locale\|mro\|open\|ops\|overload\|re\|sigtrap\|sort\|strict\|subs\|threads\%(::shared\)\=\|utf8\|vars\|version\|vmsish\|warnings\%(::register\)\=\)\>\)\=" syn match perlStatementInclude "\<\%(use\|no\)\s\+\%(\%(attributes\|attrs\|autouse\|parent\|base\|big\%(int\|num\|rat\)\|blib\|bytes\|charnames\|constant\|diagnostics\|encoding\%(::warnings\)\=\|feature\|fields\|filetest\|if\|integer\|less\|lib\|locale\|mro\|open\|ops\|overload\|re\|sigtrap\|sort\|strict\|subs\|threads\%(::shared\)\=\|utf8\|vars\|version\|vmsish\|warnings\%(::register\)\=\)\>\)\="
syn match perlStatementProc "\<\%(alarm\|exec\|fork\|get\%(pgrp\|ppid\|priority\)\|kill\|pipe\|set\%(pgrp\|priority\)\|sleep\|system\|times\|wait\%(pid\)\=\)\>" syn match perlStatementProc "\<\%(alarm\|exec\|fork\|get\%(pgrp\|ppid\|priority\)\|kill\|pipe\|set\%(pgrp\|priority\)\|sleep\|system\|times\|wait\%(pid\)\=\)\>"
syn match perlStatementSocket "\<\%(accept\|bind\|connect\|get\%(peername\|sock\%(name\|opt\)\)\|listen\|recv\|send\|setsockopt\|shutdown\|socket\%(pair\)\=\)\>" syn match perlStatementSocket "\<\%(accept\|bind\|connect\|get\%(peername\|sock\%(name\|opt\)\)\|listen\|recv\|send\|setsockopt\|shutdown\|socket\%(pair\)\=\)\>"
@@ -176,10 +176,10 @@ endif
" File Descriptors " File Descriptors
syn match perlFiledescRead "<\h\w*>" syn match perlFiledescRead "<\h\w*>"
syn match perlFiledescStatementComma "(\=\s*\u\w*\s*,"me=e-1 transparent contained contains=perlFiledescStatement syn match perlFiledescStatementComma "(\=\s*\<\u\w*\>\s*,"me=e-1 transparent contained contains=perlFiledescStatement
syn match perlFiledescStatementNocomma "(\=\s*\u\w*\s*[^, \t]"me=e-1 transparent contained contains=perlFiledescStatement syn match perlFiledescStatementNocomma "(\=\s*\<\u\w*\>\s*[^, \t]"me=e-1 transparent contained contains=perlFiledescStatement
syn match perlFiledescStatement "\u\w*" contained syn match perlFiledescStatement "\<\u\w*\>" contained
" Special characters in strings and matches " Special characters in strings and matches
syn match perlSpecialString "\\\%(\o\{1,3}\|x\%({\x\+}\|\x\{1,2}\)\|c.\|[^cx]\)" contained extend syn match perlSpecialString "\\\%(\o\{1,3}\|x\%({\x\+}\|\x\{1,2}\)\|c.\|[^cx]\)" contained extend
@@ -365,8 +365,10 @@ else
syn match perlSubAttributes "" contained nextgroup=perlSubError syn match perlSubAttributes "" contained nextgroup=perlSubError
syn match perlSubAttributes ":\_s*" contained nextgroup=@perlSubAttrMaybe syn match perlSubAttributes ":\_s*" contained nextgroup=@perlSubAttrMaybe
endif endif
syn match perlSubPrototypeError "(\%(\_s*\%(\%(\\\%([$@%&*]\|\[[$@%&*]\+\]\)\|[$&*]\|[@%]\%(\_s*)\)\@=\|;\%(\_s*[)$@%&*\\]\)\@=\|_\%(\_s*[);]\)\@=\)\_s*\)*\)\@>\zs\_[^)]\+" contained if !exists("perl_no_subprototype_error") " Set 1 if using signatures feature in perl5.19.9
syn match perlSubPrototype +(\_[^)]*)\_s*\|+ nextgroup=perlSubAttributes,perlComment contained contains=perlSubPrototypeError syn match perlSubPrototypeError "(\%(\_s*\%(\%(\\\%([$@%&*]\|\[[$@%&*]\+\]\)\|[$&*]\|[@%]\%(\_s*)\)\@=\|;\%(\_s*[)$@%&*\\]\)\@=\|_\%(\_s*[);]\)\@=\)\_s*\)*\)\@>\zs\_[^)]\+" contained
syn match perlSubPrototype +(\_[^)]*)\_s*\|+ nextgroup=perlSubAttributes,perlComment contained contains=perlSubPrototypeError
endif
syn match perlSubName +\%(\h\|::\|'\w\)\%(\w\|::\|'\w\)*\_s*\|+ contained nextgroup=perlSubPrototype,perlComment syn match perlSubName +\%(\h\|::\|'\w\)\%(\w\|::\|'\w\)*\_s*\|+ contained nextgroup=perlSubPrototype,perlComment
syn match perlFunction +\<sub\>\_s*+ nextgroup=perlSubName syn match perlFunction +\<sub\>\_s*+ nextgroup=perlSubName
@@ -408,7 +410,7 @@ if exists("perl_fold")
endif endif
if !exists("perl_nofold_subs") if !exists("perl_nofold_subs")
if exists("perl_fold_anonymous_subs") && perl_fold_anonymous_subs if exists("perl_fold_anonymous_subs") && perl_fold_anonymous_subs
syn region perlSubFold start="\<sub\>[^\n;]*{" end="}" transparent fold keepend extend syn region perlSubFold start="\<sub\>[^;]*{" end="}" transparent fold keepend extend
syn region perlSubFold start="\<\%(BEGIN\|END\|CHECK\|INIT\)\>\s*{" end="}" transparent fold keepend syn region perlSubFold start="\<\%(BEGIN\|END\|CHECK\|INIT\)\>\s*{" end="}" transparent fold keepend
else else
syn region perlSubFold start="^\z(\s*\)\<sub\>.*[^};]$" end="^\z1}\s*\%(#.*\)\=$" transparent fold keepend syn region perlSubFold start="^\z(\s*\)\<sub\>.*[^};]$" end="^\z1}\s*\%(#.*\)\=$" transparent fold keepend
@@ -511,7 +513,9 @@ HiLink perlStatementIndirObj perlStatement
HiLink perlFunctionName perlIdentifier HiLink perlFunctionName perlIdentifier
HiLink perlMethod perlIdentifier HiLink perlMethod perlIdentifier
HiLink perlFunctionPRef perlType HiLink perlFunctionPRef perlType
HiLink perlPOD perlComment if !get(g:, 'perl_include_pod', 1)
HiLink perlPOD perlComment
endif
HiLink perlShellCommand perlString HiLink perlShellCommand perlString
HiLink perlSpecialAscii perlSpecial HiLink perlSpecialAscii perlSpecial
HiLink perlSpecialDollar perlSpecial HiLink perlSpecialDollar perlSpecial

File diff suppressed because one or more lines are too long

View File

@@ -101,9 +101,9 @@ syn match rubySymbol "[]})\"':]\@<!:\$\%(-.\|[`~<=>_,;:!?/.'"@$*\&+0]\)"
syn match rubySymbol "[]})\"':]\@<!:\%(\$\|@@\=\)\=\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*" syn match rubySymbol "[]})\"':]\@<!:\%(\$\|@@\=\)\=\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*"
syn match rubySymbol "[]})\"':]\@<!:\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\%([?!=]>\@!\)\=" syn match rubySymbol "[]})\"':]\@<!:\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*\%([?!=]>\@!\)\="
syn match rubySymbol "\%([{(,]\_s*\)\@<=\l\w*[!?]\=::\@!"he=e-1 syn match rubySymbol "\%([{(,]\_s*\)\@<=\l\w*[!?]\=::\@!"he=e-1
syn match rubySymbol "[]})\"':]\@<!\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*[!?]\=:\s\@="he=e-1 syn match rubySymbol "[]})\"':]\@<!\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*[!?]\=:[[:space:],]\@="he=e-1
syn match rubySymbol "\%([{(,]\_s*\)\@<=[[:space:],{]\l\w*[!?]\=::\@!"hs=s+1,he=e-1 syn match rubySymbol "\%([{(,]\_s*\)\@<=[[:space:],{]\l\w*[!?]\=::\@!"hs=s+1,he=e-1
syn match rubySymbol "[[:space:],{(]\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*[!?]\=:\s\@="hs=s+1,he=e-1 syn match rubySymbol "[[:space:],{(]\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*[!?]\=:[[:space:],]\@="hs=s+1,he=e-1
syn region rubySymbol start="[]})\"':]\@<!:'" end="'" skip="\\\\\|\\'" contains=rubyQuoteEscape fold syn region rubySymbol start="[]})\"':]\@<!:'" end="'" skip="\\\\\|\\'" contains=rubyQuoteEscape fold
syn region rubySymbol start="[]})\"':]\@<!:\"" end="\"" skip="\\\\\|\\\"" contains=@rubyStringSpecial fold syn region rubySymbol start="[]})\"':]\@<!:\"" end="\"" skip="\\\\\|\\\"" contains=@rubyStringSpecial fold
@@ -121,7 +121,7 @@ syn match rubyPredefinedConstant "\%(\%(^\|[^.]\)\.\s*\)\@<!\<\%(ARGF\|ARGV\|ENV
syn match rubyPredefinedConstant "\%(\%(^\|[^.]\)\.\s*\)\@<!\<\%(RUBY_\%(VERSION\|RELEASE_DATE\|PLATFORM\|PATCHLEVEL\|REVISION\|DESCRIPTION\|COPYRIGHT\|ENGINE\)\)\>\%(\s*(\)\@!" syn match rubyPredefinedConstant "\%(\%(^\|[^.]\)\.\s*\)\@<!\<\%(RUBY_\%(VERSION\|RELEASE_DATE\|PLATFORM\|PATCHLEVEL\|REVISION\|DESCRIPTION\|COPYRIGHT\|ENGINE\)\)\>\%(\s*(\)\@!"
" Normal Regular Expression " Normal Regular Expression
syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="\%(\%(^\|\<\%(and\|or\|while\|until\|unless\|if\|elsif\|when\|not\|then\|else\)\|[;\~=!|&(,[<>?:*+-]\)\s*\)\@<=/" end="/[iomxneus]*" skip="\\\\\|\\/" contains=@rubyRegexpSpecial fold syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="\%(\%(^\|\<\%(and\|or\|while\|until\|unless\|if\|elsif\|when\|not\|then\|else\)\|[;\~=!|&(,{[<>?:*+-]\)\s*\)\@<=/" end="/[iomxneus]*" skip="\\\\\|\\/" contains=@rubyRegexpSpecial fold
syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="\%(\h\k*\s\+\)\@<=/[ \t=]\@!" end="/[iomxneus]*" skip="\\\\\|\\/" contains=@rubyRegexpSpecial fold syn region rubyRegexp matchgroup=rubyRegexpDelimiter start="\%(\h\k*\s\+\)\@<=/[ \t=]\@!" end="/[iomxneus]*" skip="\\\\\|\\/" contains=@rubyRegexpSpecial fold
" Generalized Regular Expression " Generalized Regular Expression
@@ -143,6 +143,7 @@ syn region rubyString matchgroup=rubyStringDelimiter start="%[qwi]<" end="
syn region rubyString matchgroup=rubyStringDelimiter start="%[qwi]\[" end="\]" skip="\\\\\|\\\]" fold contains=rubyNestedSquareBrackets,rubyDelimEscape syn region rubyString matchgroup=rubyStringDelimiter start="%[qwi]\[" end="\]" skip="\\\\\|\\\]" fold contains=rubyNestedSquareBrackets,rubyDelimEscape
syn region rubyString matchgroup=rubyStringDelimiter start="%[qwi](" end=")" skip="\\\\\|\\)" fold contains=rubyNestedParentheses,rubyDelimEscape syn region rubyString matchgroup=rubyStringDelimiter start="%[qwi](" end=")" skip="\\\\\|\\)" fold contains=rubyNestedParentheses,rubyDelimEscape
syn region rubyString matchgroup=rubyStringDelimiter start="%q " end=" " skip="\\\\\|\\)" fold syn region rubyString matchgroup=rubyStringDelimiter start="%q " end=" " skip="\\\\\|\\)" fold
syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s\z([~`!@#$%^&*_\-+=|\:;"',.? /]\)" end="\z1" skip="\\\\\|\\\z1" fold syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s\z([~`!@#$%^&*_\-+=|\:;"',.? /]\)" end="\z1" skip="\\\\\|\\\z1" fold
syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s{" end="}" skip="\\\\\|\\}" fold contains=rubyNestedCurlyBraces,rubyDelimEscape syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s{" end="}" skip="\\\\\|\\}" fold contains=rubyNestedCurlyBraces,rubyDelimEscape
syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s<" end=">" skip="\\\\\|\\>" fold contains=rubyNestedAngleBrackets,rubyDelimEscape syn region rubySymbol matchgroup=rubySymbolDelimiter start="%s<" end=">" skip="\\\\\|\\>" fold contains=rubyNestedAngleBrackets,rubyDelimEscape
@@ -197,7 +198,7 @@ syn match rubyControl "\<\%(and\|break\|in\|next\|not\|or\|redo\|rescue
syn match rubyOperator "\<defined?" display syn match rubyOperator "\<defined?" display
syn match rubyKeyword "\<\%(super\|yield\)\>[?!]\@!" syn match rubyKeyword "\<\%(super\|yield\)\>[?!]\@!"
syn match rubyBoolean "\<\%(true\|false\)\>[?!]\@!" syn match rubyBoolean "\<\%(true\|false\)\>[?!]\@!"
syn match rubyPseudoVariable "\<\%(nil\|self\|__ENCODING__\|__FILE__\|__LINE__\|__callee__\|__method__\)\>[?!]\@!" " TODO: reorganise syn match rubyPseudoVariable "\<\%(nil\|self\|__ENCODING__\|__dir__\|__FILE__\|__LINE__\|__callee__\|__method__\)\>[?!]\@!" " TODO: reorganise
syn match rubyBeginEnd "\<\%(BEGIN\|END\)\>[?!]\@!" syn match rubyBeginEnd "\<\%(BEGIN\|END\)\>[?!]\@!"
" Expensive Mode - match 'end' with the appropriate opening keyword for syntax " Expensive Mode - match 'end' with the appropriate opening keyword for syntax
@@ -261,7 +262,7 @@ if !exists("ruby_no_special_methods")
syn keyword rubyException raise fail catch throw syn keyword rubyException raise fail catch throw
" false positive with 'include?' " false positive with 'include?'
syn match rubyInclude "\<include\>[?!]\@!" syn match rubyInclude "\<include\>[?!]\@!"
syn keyword rubyInclude autoload extend load prepend require require_relative syn keyword rubyInclude autoload extend load prepend refine require require_relative using
syn keyword rubyKeyword callcc caller lambda proc syn keyword rubyKeyword callcc caller lambda proc
endif endif
@@ -279,18 +280,18 @@ endif
" Note: this is a hack to prevent 'keywords' being highlighted as such when called as methods with an explicit receiver " Note: this is a hack to prevent 'keywords' being highlighted as such when called as methods with an explicit receiver
syn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(alias\|and\|begin\|break\|case\|class\|def\|defined\|do\|else\)\>" transparent contains=NONE syn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(alias\|and\|begin\|break\|case\|class\|def\|defined\|do\|else\)\>" transparent contains=NONE
syn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(elsif\|end\|ensure\|false\|for\|if\|in\|module\|next\|nil\)\>" transparent contains=NONE syn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(elsif\|end\|ensure\|false\|for\|if\|in\|module\|next\|nil\)\>" transparent contains=NONE
syn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(not\|or\|redo\|rescue\|retry\|return\|self\|super\|then\|true\)\>" transparent contains=NONE syn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(not\|or\|redo\|refine\|rescue\|retry\|return\|self\|super\|then\|true\)\>" transparent contains=NONE
syn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(undef\|unless\|until\|when\|while\|yield\|BEGIN\|END\|__FILE__\|__LINE__\)\>" transparent contains=NONE syn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(undef\|unless\|until\|when\|while\|yield\|BEGIN\|END\|__FILE__\|__LINE__\)\>" transparent contains=NONE
syn match rubyKeywordAsMethod "\<\%(alias\|begin\|case\|class\|def\|do\|end\)[?!]" transparent contains=NONE syn match rubyKeywordAsMethod "\<\%(alias\|begin\|case\|class\|def\|do\|end\)[?!]" transparent contains=NONE
syn match rubyKeywordAsMethod "\<\%(if\|module\|undef\|unless\|until\|while\)[?!]" transparent contains=NONE syn match rubyKeywordAsMethod "\<\%(if\|module\|refine\|undef\|unless\|until\|while\)[?!]" transparent contains=NONE
syn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(abort\|at_exit\|attr\|attr_accessor\|attr_reader\)\>" transparent contains=NONE syn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(abort\|at_exit\|attr\|attr_accessor\|attr_reader\)\>" transparent contains=NONE
syn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(attr_writer\|autoload\|callcc\|catch\|caller\)\>" transparent contains=NONE syn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(attr_writer\|autoload\|callcc\|catch\|caller\)\>" transparent contains=NONE
syn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(eval\|class_eval\|instance_eval\|module_eval\|exit\)\>" transparent contains=NONE syn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(eval\|class_eval\|instance_eval\|module_eval\|exit\)\>" transparent contains=NONE
syn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(extend\|fail\|fork\|include\|lambda\)\>" transparent contains=NONE syn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(extend\|fail\|fork\|include\|lambda\)\>" transparent contains=NONE
syn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(load\|loop\|prepend\|private\|proc\|protected\)\>" transparent contains=NONE syn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(load\|loop\|prepend\|private\|proc\|protected\)\>" transparent contains=NONE
syn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(public\|require\|require_relative\|raise\|throw\|trap\)\>" transparent contains=NONE syn match rubyKeywordAsMethod "\%(\%(\.\@<!\.\)\|::\)\_s*\%(public\|require\|require_relative\|raise\|throw\|trap\|using\)\>" transparent contains=NONE
" __END__ Directive " __END__ Directive
syn region rubyData matchgroup=rubyDataDirective start="^__END__$" end="\%$" fold syn region rubyData matchgroup=rubyDataDirective start="^__END__$" end="\%$" fold

View File

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

View File

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

View File

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

View File

@@ -317,7 +317,6 @@ endif
" Based On: Tim Pope (sass.vim) " Based On: Tim Pope (sass.vim)
syn case ignore syn case ignore
syn region cssInclude start="@import" end="\n" contains=cssComment,cssFuncVal,cssRuleProp
syn cluster stylusCssSelectors contains=cssTagName,cssSelector,cssPseudo syn cluster stylusCssSelectors contains=cssTagName,cssSelector,cssPseudo
syn cluster stylusCssValues contains=cssValueLength,cssValueInteger,cssValueNumber,cssValueAngle,cssValueTime,cssValueFrequency,cssColorVal,cssCommonVal,cssFontVal,cssListVal,cssTextVal,cssVisualVal,cssBorderVal,cssBackgroundVal,cssFuncVal,cssAdvancedVal syn cluster stylusCssValues contains=cssValueLength,cssValueInteger,cssValueNumber,cssValueAngle,cssValueTime,cssValueFrequency,cssColorVal,cssCommonVal,cssFontVal,cssListVal,cssTextVal,cssVisualVal,cssBorderVal,cssBackgroundVal,cssFuncVal,cssAdvancedVal
@@ -345,6 +344,9 @@ syn match stylusFunction "\<\%(opposite-position\|image-size\|add-property\)\>(\
syn keyword stylusVariable null true false arguments syn keyword stylusVariable null true false arguments
syn keyword stylusControl if else unless for in return syn keyword stylusControl if else unless for in return
syn match stylusImport "@\%(import\|require\)" nextgroup=stylusImportList
syn match stylusImportList "[^;]\+" contained contains=cssString.*,cssMediaType,cssURL
syn match stylusAmpersand "&" syn match stylusAmpersand "&"
syn match stylusClass "[[:alnum:]_-]\+" contained syn match stylusClass "[[:alnum:]_-]\+" contained
syn match stylusClassChar "\.[[:alnum:]_-]\@=" nextgroup=stylusClass syn match stylusClassChar "\.[[:alnum:]_-]\@=" nextgroup=stylusClass