mirror of
https://github.com/sheerun/vim-polyglot.git
synced 2025-11-09 12:03:53 -05:00
Compare commits
29 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
94f72a68c3 | ||
|
|
9b3b092d15 | ||
|
|
959a2ffa3d | ||
|
|
d51b8fd17e | ||
|
|
fa57320919 | ||
|
|
9a2b4f5cd8 | ||
|
|
f211f02d1e | ||
|
|
e45b23b6ee | ||
|
|
a0c5f3ee55 | ||
|
|
6b8c72637f | ||
|
|
d330fdc01b | ||
|
|
c225bf8826 | ||
|
|
20125ac3ac | ||
|
|
9f19823a30 | ||
|
|
56d5fc498b | ||
|
|
ab679f37dd | ||
|
|
ca95a47a93 | ||
|
|
a26bebbeb9 | ||
|
|
edd5ee63e6 | ||
|
|
8a255002df | ||
|
|
b2d556d384 | ||
|
|
30c1920e4f | ||
|
|
57cfac7ae3 | ||
|
|
085aad28a4 | ||
|
|
e108a087b4 | ||
|
|
b3257271db | ||
|
|
e9d8c39608 | ||
|
|
04e6a8a73c | ||
|
|
b6a2261cc2 |
@@ -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
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ Optionally download one of the [releases](https://github.com/sheerun/vim-polyglo
|
|||||||
- [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)
|
- [css-color](https://github.com/gorodinskiy/vim-coloresque) (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)
|
||||||
@@ -39,7 +39,7 @@ Optionally download one of the [releases](https://github.com/sheerun/vim-polyglo
|
|||||||
- [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, 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)
|
||||||
@@ -57,6 +57,7 @@ Optionally download one of the [releases](https://github.com/sheerun/vim-polyglo
|
|||||||
- [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)
|
||||||
- [python](https://github.com/vim-scripts/python.vim--Vasiliev) (syntax)
|
- [python](https://github.com/vim-scripts/python.vim--Vasiliev) (syntax)
|
||||||
|
- [r-lang](https://github.com/vim-scripts/R.vim) (syntax, ftplugin)
|
||||||
- [rspec](https://github.com/sheerun/rspec.vim) (syntax, ftdetect)
|
- [rspec](https://github.com/sheerun/rspec.vim) (syntax, ftdetect)
|
||||||
- [ruby](https://github.com/vim-ruby/vim-ruby) (syntax, indent, compiler, autoload, ftplugin, ftdetect)
|
- [ruby](https://github.com/vim-ruby/vim-ruby) (syntax, indent, compiler, autoload, ftplugin, ftdetect)
|
||||||
- [rust](https://github.com/wting/rust.vim) (syntax, indent, compiler, ftplugin, ftdetect)
|
- [rust](https://github.com/wting/rust.vim) (syntax, indent, compiler, ftplugin, ftdetect)
|
||||||
|
|||||||
@@ -4,12 +4,12 @@
|
|||||||
" License: WTFPL
|
" License: WTFPL
|
||||||
|
|
||||||
" Load the coffee and html indent functions.
|
" Load the coffee and html indent functions.
|
||||||
unlet b:did_indent
|
silent! unlet b:did_indent
|
||||||
runtime indent/coffee.vim
|
runtime indent/coffee.vim
|
||||||
let s:coffeeIndentExpr = &l:indentexpr
|
let s:coffeeIndentExpr = &l:indentexpr
|
||||||
|
|
||||||
" Load html last so it can overwrite coffee settings.
|
" Load html last so it can overwrite coffee settings.
|
||||||
unlet b:did_indent
|
silent! unlet b:did_indent
|
||||||
runtime indent/html.vim
|
runtime indent/html.vim
|
||||||
let s:htmlIndentExpr = &l:indentexpr
|
let s:htmlIndentExpr = &l:indentexpr
|
||||||
|
|
||||||
|
|||||||
@@ -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")
|
||||||
|
|||||||
@@ -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 b:color_pattern[a:pattern] = 1
|
|
||||||
|
|
||||||
let pattern = a:pattern
|
|
||||||
" iff pattern ends on word character, require word break to match
|
|
||||||
if pattern =~ '\>$' | let pattern .= '\>' | endif
|
|
||||||
|
|
||||||
let group = 'cssColor' . tolower(a:color)
|
let group = 'cssColor' . tolower(a:color)
|
||||||
exe 'syn match' group '/'.escape(pattern, '/').'/ contained'
|
|
||||||
exe 'syn cluster cssColors add='.group
|
if !exists('b:color_pattern[a:part]')
|
||||||
exe s:fg_color_calc
|
exe s:fg_color_calc
|
||||||
|
exe 'syn cluster cssColors add='.group
|
||||||
exe 'hi' group s:color_prefix.'bg='.color s:color_prefix.'fg='.s:FGForBG(a:color)
|
exe 'hi' group s:color_prefix.'bg='.color s:color_prefix.'fg='.s:FGForBG(a:color)
|
||||||
|
let b:color_pattern[a:part] = a:color
|
||||||
|
endif
|
||||||
|
|
||||||
|
if !exists('b:matchescache')
|
||||||
|
let b:matchescache = {}
|
||||||
|
elseif !exists('b:matchescache[a:part]')
|
||||||
|
let b:matchescache[a:part] = matchadd(group, a:part, -1)
|
||||||
|
endif
|
||||||
|
|
||||||
|
"call add(w:matchescache, matchadd(group, a:part, -1))
|
||||||
|
|
||||||
return ''
|
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
|
||||||
@@ -340,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
|
||||||
@@ -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
1
after/syntax/less.vim
Normal file
@@ -0,0 +1 @@
|
|||||||
|
syn include syntax/css/vim-coloresque.vim
|
||||||
@@ -1 +1 @@
|
|||||||
syn cluster sassCssAttributes add=@cssColors
|
syn include syntax/css/vim-coloresque.vim
|
||||||
|
|||||||
1
after/syntax/scss.vim
Normal file
1
after/syntax/scss.vim
Normal file
@@ -0,0 +1 @@
|
|||||||
|
syn include syntax/css/vim-coloresque.vim
|
||||||
@@ -1 +1 @@
|
|||||||
syn cluster stylusCssAttributes add=@cssColors
|
syn include syntax/css/vim-coloresque.vim
|
||||||
|
|||||||
@@ -1,2 +1,9 @@
|
|||||||
" adds support for cleverref package (`\cref` and `\Cref`)
|
" adds support for cleverref package
|
||||||
syn region texRefZone matchgroup=texStatement start="\\\(c\|C\)ref{" end="}\|%stopzone\>" contains=@texRefGroup
|
" \Cref, \cref, \cpageref, \labelcref, \labelcpageref
|
||||||
|
syn region texRefZone matchgroup=texStatement start="\\Cref{" end="}\|%stopzone\>" contains=@texRefGroup
|
||||||
|
syn region texRefZone matchgroup=texStatement start="\\\(label\|\)c\(page\|\)ref{" end="}\|%stopzone\>" contains=@texRefGroup
|
||||||
|
|
||||||
|
" adds support for listings package
|
||||||
|
syn region texZone start="\\begin{lstlisting}" end="\\end{lstlisting}\|%stopzone\>"
|
||||||
|
syn 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
1
after/syntax/vim.vim
Normal file
@@ -0,0 +1 @@
|
|||||||
|
syn include syntax/css/vim-coloresque.vim
|
||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -28,13 +28,37 @@ if len(s:goarch) == 0
|
|||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
function! go#complete#PackageMembers(package, member)
|
||||||
|
silent! let content = system('godoc ' . a:package)
|
||||||
|
if v:shell_error || !len(content)
|
||||||
|
return []
|
||||||
|
endif
|
||||||
|
let lines = filter(split(content, "\n"),"v:val !~ '^\\s\\+$'")
|
||||||
|
try
|
||||||
|
let mx1 = '^\s\+\(\S+\)\s\+=\s\+.*'
|
||||||
|
let mx2 = '^\%(const\|var\|type\|func\) \([A-Z][^ (]\+\).*'
|
||||||
|
let candidates =
|
||||||
|
\ map(filter(copy(lines), 'v:val =~ mx1'), 'substitute(v:val, mx1, "\\1", "")')
|
||||||
|
\ + map(filter(copy(lines), 'v:val =~ mx2'), 'substitute(v:val, mx2, "\\1", "")')
|
||||||
|
return filter(candidates, '!stridx(v:val, a:member)')
|
||||||
|
catch
|
||||||
|
return []
|
||||||
|
endtry
|
||||||
|
endfunction
|
||||||
|
|
||||||
function! go#complete#Package(ArgLead, CmdLine, CursorPos)
|
function! go#complete#Package(ArgLead, CmdLine, CursorPos)
|
||||||
let dirs = []
|
let dirs = []
|
||||||
|
|
||||||
|
let words = split(a:CmdLine, '\s\+', 1)
|
||||||
|
if len(words) > 2
|
||||||
|
" Complete package members
|
||||||
|
return go#complete#PackageMembers(words[1], words[2])
|
||||||
|
endif
|
||||||
|
|
||||||
if executable('go')
|
if executable('go')
|
||||||
let goroot = substitute(system('go env GOROOT'), '\n', '', 'g')
|
let goroot = substitute(system('go env GOROOT'), '\n', '', 'g')
|
||||||
if v:shell_error
|
if v:shell_error
|
||||||
echo '\'go env GOROOT\' failed'
|
echomsg '\'go env GOROOT\' failed'
|
||||||
endif
|
endif
|
||||||
else
|
else
|
||||||
let goroot = $GOROOT
|
let goroot = $GOROOT
|
||||||
@@ -44,7 +68,11 @@ function! go#complete#Package(ArgLead, CmdLine, CursorPos)
|
|||||||
let dirs += [goroot]
|
let dirs += [goroot]
|
||||||
endif
|
endif
|
||||||
|
|
||||||
let workspaces = split($GOPATH, ':')
|
let pathsep = ':'
|
||||||
|
if s:goos == 'windows'
|
||||||
|
let pathsep = ';'
|
||||||
|
endif
|
||||||
|
let workspaces = split($GOPATH, pathsep)
|
||||||
if workspaces != []
|
if workspaces != []
|
||||||
let dirs += workspaces
|
let dirs += workspaces
|
||||||
endif
|
endif
|
||||||
@@ -56,16 +84,20 @@ function! go#complete#Package(ArgLead, CmdLine, CursorPos)
|
|||||||
|
|
||||||
let ret = {}
|
let ret = {}
|
||||||
for dir in dirs
|
for dir in dirs
|
||||||
let root = expand(dir . '/pkg/' . s:goos . '_' . s:goarch)
|
" this may expand to multiple lines
|
||||||
for i in split(globpath(root, a:ArgLead.'*'), "\n")
|
let root = split(expand(dir . '/pkg/' . s:goos . '_' . s:goarch), "\n")
|
||||||
|
call add(root, expand(dir . '/src'))
|
||||||
|
for r in root
|
||||||
|
for i in split(globpath(r, a:ArgLead.'*'), "\n")
|
||||||
if isdirectory(i)
|
if isdirectory(i)
|
||||||
let i .= '/'
|
let i .= '/'
|
||||||
elseif i !~ '\.a$'
|
elseif i !~ '\.a$'
|
||||||
continue
|
continue
|
||||||
endif
|
endif
|
||||||
let i = substitute(substitute(i[len(root)+1:], '[\\]', '/', 'g'), '\.a$', '', 'g')
|
let i = substitute(substitute(i[len(r)+1:], '[\\]', '/', 'g'), '\.a$', '', 'g')
|
||||||
let ret[i] = i
|
let ret[i] = i
|
||||||
endfor
|
endfor
|
||||||
endfor
|
endfor
|
||||||
|
endfor
|
||||||
return sort(keys(ret))
|
return sort(keys(ret))
|
||||||
endfunction
|
endfunction
|
||||||
|
|||||||
@@ -61,7 +61,7 @@ let charset = [
|
|||||||
" }}}
|
" }}}
|
||||||
|
|
||||||
" Attributes_and_Settings: {{{
|
" Attributes_and_Settings: {{{
|
||||||
let core_attributes = {'accesskey': [], 'class': [], 'contenteditable': ['true', 'false', ''], 'contextmenu': [], 'dir': ['ltr', 'rtl'], 'draggable': ['true', 'false'], 'hidden': ['hidden', ''], 'id': [], 'lang': lang_tag, 'spellcheck': ['true', 'false', ''], 'style': [], 'tabindex': [], 'title': []}
|
let core_attributes = {'accesskey': [], 'class': [], 'contenteditable': ['true', 'false', ''], 'contextmenu': [], 'dir': ['ltr', 'rtl'], 'draggable': ['true', 'false'], 'hidden': ['hidden', ''], 'id': [], 'is': [], 'lang': lang_tag, 'spellcheck': ['true', 'false', ''], 'style': [], 'tabindex': [], 'title': []}
|
||||||
let xml_attributes = {'xml:lang': lang_tag, 'xml:space': ['preserve'], 'xml:base': [], 'xmlns': ['http://www.w3.org/1999/xhtml', 'http://www.w3.org/1998/Math/MathML', 'http://www.w3.org/2000/svg', 'http://www.w3.org/1999/xlink']}
|
let xml_attributes = {'xml:lang': lang_tag, 'xml:space': ['preserve'], 'xml:base': [], 'xmlns': ['http://www.w3.org/1999/xhtml', 'http://www.w3.org/1998/Math/MathML', 'http://www.w3.org/2000/svg', 'http://www.w3.org/1999/xlink']}
|
||||||
|
|
||||||
let body_attributes = {}
|
let body_attributes = {}
|
||||||
@@ -101,6 +101,7 @@ let attributes_value = {
|
|||||||
\ 'disabled': ['Bool', ''],
|
\ 'disabled': ['Bool', ''],
|
||||||
\ 'draggable': ['true/false', ''],
|
\ 'draggable': ['true/false', ''],
|
||||||
\ 'enctype': ['Token', ''],
|
\ 'enctype': ['Token', ''],
|
||||||
|
\ 'extends': ['Text', ''],
|
||||||
\ 'for': ['ID', ''],
|
\ 'for': ['ID', ''],
|
||||||
\ 'form': ['ID', ''],
|
\ 'form': ['ID', ''],
|
||||||
\ 'formaction': ['URL', ''],
|
\ 'formaction': ['URL', ''],
|
||||||
@@ -152,6 +153,7 @@ let attributes_value = {
|
|||||||
\ 'scope': ['Token', ''],
|
\ 'scope': ['Token', ''],
|
||||||
\ 'scoped': ['Bool', ''],
|
\ 'scoped': ['Bool', ''],
|
||||||
\ 'seamless': ['Bool', ''],
|
\ 'seamless': ['Bool', ''],
|
||||||
|
\ 'select': ['Text', ''],
|
||||||
\ 'selected': ['Bool', ''],
|
\ 'selected': ['Bool', ''],
|
||||||
\ 'shape': ['Token', ''],
|
\ 'shape': ['Token', ''],
|
||||||
\ 'size': ['Int', ''],
|
\ 'size': ['Int', ''],
|
||||||
@@ -322,16 +324,16 @@ endif
|
|||||||
|
|
||||||
" Ref: http://dev.w3.org/html5/markup/
|
" Ref: http://dev.w3.org/html5/markup/
|
||||||
" Version: Draft 05 April 2011
|
" Version: Draft 05 April 2011
|
||||||
let phrasing_elements = ['a', 'em', 'strong', 'small', 'mark', 'abbr', 'dfn', 'i', 'b', 'u', 'code', 'var', 'samp', 'kbd', 'sup', 'sub', 'q', 'cite', 'span', 'bdo', 'bdi', 'br', 'wbr', 'ins', 'del', 'img', 'embed', 'object', 'iframe', 'map', 'area', 'script', 'noscript', 'ruby', 'video', 'audio', 'input', 'textarea', 'select', 'button', 'label', 'output', 'datalist', 'keygen', 'progress', 'command', 'canvas', 'time', 'meter', 'data']
|
let phrasing_elements = ['a', 'em', 'strong', 'small', 'mark', 'abbr', 'dfn', 'i', 'b', 'u', 'code', 'var', 'samp', 'kbd', 'sup', 'sub', 'q', 'cite', 'span', 'bdo', 'bdi', 'br', 'wbr', 'ins', 'del', 'img', 'embed', 'object', 'iframe', 'map', 'area', 'script', 'noscript', 'ruby', 'video', 'audio', 'input', 'textarea', 'select', 'button', 'label', 'output', 'datalist', 'keygen', 'progress', 'command', 'canvas', 'time', 'meter', 'data', 'content', 'shadow']
|
||||||
|
|
||||||
let metadata_elements = ['link', 'style', 'meta', 'script', 'noscript', 'command']
|
let metadata_elements = ['link', 'style', 'meta', 'script', 'noscript', 'command']
|
||||||
|
|
||||||
let flow_elements = phrasing_elements + ['p', 'hr', 'pre', 'ul', 'ol', 'dl', 'div', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'hgroup', 'address', 'blockquote', 'ins', 'del', 'object', 'main', 'map', 'noscript', 'section', 'nav', 'article', 'aside', 'header', 'footer', 'video', 'audio', 'figure', 'table', 'template', 'form', 'fieldset', 'menu', 'canvas', 'details']
|
let flow_elements = phrasing_elements + ['p', 'hr', 'pre', 'ul', 'ol', 'dl', 'div', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'hgroup', 'address', 'blockquote', 'ins', 'del', 'element', 'object', 'main', 'map', 'noscript', 'section', 'nav', 'article', 'aside', 'header', 'footer', 'video', 'audio', 'figure', 'table', 'template', 'form', 'fieldset', 'menu', 'canvas', 'details']
|
||||||
|
|
||||||
" http://dev.w3.org/html5/spec/Overview.html#linkTypes
|
" http://dev.w3.org/html5/spec/Overview.html#linkTypes
|
||||||
let linktypes = ['alternate', 'author', 'bookmark', 'external', 'help', 'icon', 'license', 'next', 'nofollow', 'noreferrer', 'pingback', 'prefetch', 'prev', 'search', 'stylesheet', 'sidebar', 'tag']
|
let linktypes = ['alternate', 'author', 'bookmark', 'external', 'help', 'icon', 'license', 'next', 'nofollow', 'noreferrer', 'pingback', 'prefetch', 'prev', 'search', 'stylesheet', 'sidebar', 'tag']
|
||||||
" http://googlewebmastercentral.blogspot.com/2009/02/specify-your-canonical.html
|
" http://googlewebmastercentral.blogspot.com/2009/02/specify-your-canonical.html
|
||||||
let linkreltypes = linktypes + ['canonical']
|
let linkreltypes = linktypes + ['canonical', 'import']
|
||||||
|
|
||||||
" a and button are special elements for interactive, some element can't be its descendent
|
" a and button are special elements for interactive, some element can't be its descendent
|
||||||
let abutton_dec = 'details\\|embed\\|iframe\\|keygen\\|label\\|menu\\|select\\|textarea'
|
let abutton_dec = 'details\\|embed\\|iframe\\|keygen\\|label\\|menu\\|select\\|textarea'
|
||||||
@@ -425,6 +427,10 @@ let g:xmldata_html5 = {
|
|||||||
\ [],
|
\ [],
|
||||||
\ extend(copy(global_attributes), {'span': []})
|
\ extend(copy(global_attributes), {'span': []})
|
||||||
\ ],
|
\ ],
|
||||||
|
\ 'content': [
|
||||||
|
\ [],
|
||||||
|
\ extend(copy(global_attributes), {'select': []})
|
||||||
|
\ ],
|
||||||
\ 'command': [
|
\ 'command': [
|
||||||
\ ['col'],
|
\ ['col'],
|
||||||
\ extend(copy(global_attributes), {'type': ['command', 'radio', 'checkbox'], 'radiogroup': [], 'checked': ['checked', ''], 'label': [], 'icon': [], 'disabled': ['disabled', '']})
|
\ extend(copy(global_attributes), {'type': ['command', 'radio', 'checkbox'], 'radiogroup': [], 'checked': ['checked', ''], 'label': [], 'icon': [], 'disabled': ['disabled', '']})
|
||||||
@@ -677,6 +683,10 @@ let g:xmldata_html5 = {
|
|||||||
\ ['optgroup', 'option'],
|
\ ['optgroup', 'option'],
|
||||||
\ extend(copy(global_attributes), {'name': [], 'disabled': ['disabled', ''], 'form': [], 'size': [], 'multiple': ['multiple', '']})
|
\ extend(copy(global_attributes), {'name': [], 'disabled': ['disabled', ''], 'form': [], 'size': [], 'multiple': ['multiple', '']})
|
||||||
\ ],
|
\ ],
|
||||||
|
\ 'shadow': [
|
||||||
|
\ [],
|
||||||
|
\ global_attributes
|
||||||
|
\ ],
|
||||||
\ 'small': [
|
\ 'small': [
|
||||||
\ phrasing_elements,
|
\ phrasing_elements,
|
||||||
\ global_attributes
|
\ global_attributes
|
||||||
|
|||||||
8
build
8
build
@@ -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
|
||||||
@@ -97,6 +97,7 @@ PACKS="
|
|||||||
puppet:ajf/puppet-vim
|
puppet:ajf/puppet-vim
|
||||||
protobuf:uarun/vim-protobuf
|
protobuf:uarun/vim-protobuf
|
||||||
python:vim-scripts/python.vim--Vasiliev
|
python:vim-scripts/python.vim--Vasiliev
|
||||||
|
r-lang:vim-scripts/R.vim
|
||||||
rspec:sheerun/rspec.vim
|
rspec:sheerun/rspec.vim
|
||||||
ruby:vim-ruby/vim-ruby
|
ruby:vim-ruby/vim-ruby
|
||||||
rust:wting/rust.vim
|
rust:wting/rust.vim
|
||||||
@@ -111,6 +112,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
|
||||||
|
|||||||
@@ -27,8 +27,8 @@ function! s:GetMakePrg()
|
|||||||
\ ' -c' .
|
\ ' -c' .
|
||||||
\ ' ' . b:coffee_litcoffee .
|
\ ' ' . b:coffee_litcoffee .
|
||||||
\ ' ' . g:coffee_make_options .
|
\ ' ' . g:coffee_make_options .
|
||||||
\ ' ' . fnameescape(expand('%')) .
|
\ ' $*' .
|
||||||
\ ' $*'
|
\ ' ' . fnameescape(expand('%'))
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
" Set `makeprg` and return 1 if coffee is still the compiler, else return 0.
|
" Set `makeprg` and return 1 if coffee is still the compiler, else return 0.
|
||||||
@@ -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
30
compiler/go.vim
Normal 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
|
||||||
@@ -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,13 +47,9 @@ 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=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
|
||||||
au BufNewFile,BufRead *.json setf javascript
|
|
||||||
au BufNewFile,BufRead Jakefile setf javascript
|
au BufNewFile,BufRead Jakefile setf javascript
|
||||||
fun! s:SelectJavascript()
|
fun! s:SelectJavascript()
|
||||||
if getline(1) =~# '^#!.*/bin/env\s\+node\>'
|
if getline(1) =~# '^#!.*/bin/env\s\+node\>'
|
||||||
@@ -81,11 +74,18 @@ autocmd BufNewFile,BufRead *.markdown,*.md,*.mdown,*.mkd,*.mkdn
|
|||||||
\ else |
|
\ else |
|
||||||
\ setf markdown |
|
\ setf markdown |
|
||||||
\ endif
|
\ endif
|
||||||
|
autocmd BufRead *.html
|
||||||
|
\ if getline(1) =~ '^\(%\|<[%&].*>\)' |
|
||||||
|
\ set filetype=mason |
|
||||||
|
\ endif
|
||||||
|
if has("autocmd")
|
||||||
|
au BufNewFile,BufRead *.mustache,*.handlebars,*.hbs,*.hogan,*.hulk,*.hjs set filetype=html syntax=mustache | runtime! ftplugin/mustache.vim ftplugin/mustache*.vim ftplugin/mustache/*.vim
|
||||||
|
endif
|
||||||
au BufRead,BufNewFile /etc/nginx/*,/usr/local/nginx/*,*/nginx/vhosts.d/*,nginx.conf if &ft == '' | setfiletype nginx | endif
|
au BufRead,BufNewFile /etc/nginx/*,/usr/local/nginx/*,*/nginx/vhosts.d/*,nginx.conf if &ft == '' | setfiletype nginx | endif
|
||||||
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
|
||||||
@@ -105,7 +105,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'
|
||||||
@@ -114,7 +115,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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
245
ftplugin/csv.vim
245
ftplugin/csv.vim
@@ -136,7 +136,8 @@ fu! <sid>Init(startline, endline) "{{{3
|
|||||||
\ . "| unlet! b:csv_fixed_width b:csv_list b:col_width"
|
\ . "| unlet! b:csv_fixed_width b:csv_list b:col_width"
|
||||||
\ . "| 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_start b:csv_end"
|
\. " | 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
|
||||||
@@ -168,6 +169,7 @@ fu! <sid>Init(startline, endline) "{{{3
|
|||||||
" \ delf <sid>SaveOptions | delf <sid>CheckDuplicates |
|
" \ delf <sid>SaveOptions | delf <sid>CheckDuplicates |
|
||||||
" \ delf <sid>CompleteColumnNr | delf <sid>CSVPat | delf <sid>Transpose |
|
" \ delf <sid>CompleteColumnNr | delf <sid>CSVPat | delf <sid>Transpose |
|
||||||
" \ delf <sid>LocalSettings() | delf <sid>AddColumn | delf <sid>SubstituteInColumn
|
" \ delf <sid>LocalSettings() | delf <sid>AddColumn | delf <sid>SubstituteInColumn
|
||||||
|
" \ delf <sid>SetupQuitPre() | delf CSV_CloseBuffer
|
||||||
endfu
|
endfu
|
||||||
|
|
||||||
fu! <sid>LocalSettings(type) "{{{3
|
fu! <sid>LocalSettings(type) "{{{3
|
||||||
@@ -275,7 +277,9 @@ fu! <sid>DoAutoCommands() "{{{3
|
|||||||
au BufNewFile,BufNew * call <sid>Menu(0)
|
au BufNewFile,BufNew * call <sid>Menu(0)
|
||||||
augroup END
|
augroup END
|
||||||
"let b:undo_ftplugin .= '| sil! amenu disable CSV'
|
"let b:undo_ftplugin .= '| sil! amenu disable CSV'
|
||||||
let b:undo_ftplugin .= '| sil! call <sid>Menu(0)'
|
"
|
||||||
|
" b:undo_ftplugin does not support calling <sid> Functions
|
||||||
|
"let b:undo_ftplugin .= '| sil! call <sid>Menu(0)'
|
||||||
endif
|
endif
|
||||||
endfu
|
endfu
|
||||||
|
|
||||||
@@ -658,7 +662,7 @@ fu! <sid>ArrangeCol(first, last, bang) range "{{{3
|
|||||||
else
|
else
|
||||||
let ro = 0
|
let ro = 0
|
||||||
endif
|
endif
|
||||||
exe a:first . ',' . a:last .'s/' . (b:col) .
|
exe "sil". a:first . ',' . a:last .'s/' . (b:col) .
|
||||||
\ '/\=<SID>Columnize(submatch(0))/' . (&gd ? '' : 'g')
|
\ '/\=<SID>Columnize(submatch(0))/' . (&gd ? '' : 'g')
|
||||||
" Clean up variables, that were only needed for <sid>Columnize() function
|
" Clean up variables, that were only needed for <sid>Columnize() function
|
||||||
unlet! s:columnize_count s:max_cols s:prev_line
|
unlet! s:columnize_count s:max_cols s:prev_line
|
||||||
@@ -693,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:
|
||||||
|
if get(b:, 'csv_arrange_leftalign',0)
|
||||||
|
return substitute(a:match, '\s\+\ze'. b:delimiter. '\?$', '', '')
|
||||||
|
else
|
||||||
return substitute(a:match, '^\s\+', '', '')
|
return substitute(a:match, '^\s\+', '', '')
|
||||||
|
endif
|
||||||
" only strip leading white space, if a non-white space follows:
|
" only strip leading white space, if a non-white space follows:
|
||||||
"return substitute(a:match, '^\s\+\ze\S', '', '')
|
"return substitute(a:match, '^\s\+\ze\S', '', '')
|
||||||
endfu
|
endfu
|
||||||
@@ -741,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
|
||||||
|
if get(b:, 'csv_arrange_leftalign',0)
|
||||||
|
" left-align content
|
||||||
|
return printf("%-*S%s", width+1 ,
|
||||||
|
\ (has_delimiter ?
|
||||||
|
\ matchstr(a:field, '.*\%('.b:delimiter.'\)\@=') : a:field),
|
||||||
|
\ (has_delimiter ? b:delimiter : ''))
|
||||||
|
else
|
||||||
return printf("%*S", width+1 , a:field)
|
return printf("%*S", width+1 , a:field)
|
||||||
|
endif
|
||||||
else
|
else
|
||||||
" printf only handles bytes
|
" printf only handles bytes
|
||||||
if !exists("g:csv_no_multibyte") &&
|
if !exists("g:csv_no_multibyte") &&
|
||||||
@@ -764,10 +781,17 @@ fu! <sid>Columnize(field) "{{{3
|
|||||||
if width == strlen(a:field)
|
if width == strlen(a:field)
|
||||||
" Column has correct length, don't use printf()
|
" Column has correct length, don't use printf()
|
||||||
return a:field
|
return a:field
|
||||||
|
else
|
||||||
|
if get(b:, 'csv_arrange_leftalign',0)
|
||||||
|
" left-align content
|
||||||
|
return printf("%-*s%s", width,
|
||||||
|
\ (has_delimiter ? matchstr(a:field, '.*\%('.b:delimiter.'\)\@=') : a:field),
|
||||||
|
\ (has_delimiter ? b:delimiter : ''))
|
||||||
else
|
else
|
||||||
return printf("%*s", width , a:field)
|
return printf("%*s", width , a:field)
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
endif
|
||||||
endfun
|
endfun
|
||||||
|
|
||||||
fu! <sid>GetColPat(colnr, zs_flag) "{{{3
|
fu! <sid>GetColPat(colnr, zs_flag) "{{{3
|
||||||
@@ -795,16 +819,13 @@ fu! <sid>GetColPat(colnr, zs_flag) "{{{3
|
|||||||
return pat . (a:zs_flag ? '\zs' : '')
|
return pat . (a:zs_flag ? '\zs' : '')
|
||||||
endfu
|
endfu
|
||||||
|
|
||||||
fu! <sid>SetupQuitPre() "{{{3
|
fu! <sid>SetupQuitPre(window) "{{{3
|
||||||
" Setup QuitPre autocommand to quit cleanly
|
" Setup QuitPre autocommand to quit cleanly
|
||||||
if exists("##QuitPre")
|
if exists("##QuitPre")
|
||||||
let bufnr=bufnr('')
|
|
||||||
noa wincmd p
|
|
||||||
augroup CSV_QuitPre
|
augroup CSV_QuitPre
|
||||||
au!
|
au!
|
||||||
exe "au QuitPre * ". bufnr. "bw"
|
exe "au QuitPre * call CSV_CloseBuffer(".winbufnr(a:window).")"
|
||||||
augroup end
|
augroup end
|
||||||
noa wincmd p
|
|
||||||
endif
|
endif
|
||||||
endfu
|
endfu
|
||||||
|
|
||||||
@@ -839,7 +860,7 @@ fu! <sid>SplitHeaderLine(lines, bang, hor) "{{{3
|
|||||||
"let b:col=b
|
"let b:col=b
|
||||||
"setl syntax=csv
|
"setl syntax=csv
|
||||||
sil! doautocmd FileType csv
|
sil! doautocmd FileType csv
|
||||||
1
|
noa 1
|
||||||
exe "resize" . lines
|
exe "resize" . lines
|
||||||
setl scrollopt=hor winfixheight nowrap
|
setl scrollopt=hor winfixheight nowrap
|
||||||
"let &l:stl=repeat(' ', winwidth(0))
|
"let &l:stl=repeat(' ', winwidth(0))
|
||||||
@@ -848,31 +869,31 @@ fu! <sid>SplitHeaderLine(lines, bang, hor) "{{{3
|
|||||||
let &l:fdc = _fdc
|
let &l:fdc = _fdc
|
||||||
else
|
else
|
||||||
setl scrollopt=ver scrollbind
|
setl scrollopt=ver scrollbind
|
||||||
0
|
noa 0
|
||||||
let a=<sid>CopyCol('',1)
|
let a=<sid>CopyCol('',1,a:lines)
|
||||||
" Force recalculating columns width
|
|
||||||
unlet! b:csv_list
|
|
||||||
try
|
|
||||||
let width = <sid>ColWidth(1)
|
|
||||||
catch /ColWidth/
|
|
||||||
call <sid>Warn("Error: getting Column Width, using default!")
|
|
||||||
endtry
|
|
||||||
" Does it make sense to use the preview window?
|
" Does it make sense to use the preview window?
|
||||||
"vert sil! pedit |wincmd w | enew!
|
"vert sil! pedit |wincmd w | enew!
|
||||||
above vsp +enew
|
above vsp +enew
|
||||||
call append(0, a)
|
call append(0, a)
|
||||||
$d _
|
$d _
|
||||||
sil %s/.*/\=printf("%.*s", width, submatch(0))/eg
|
|
||||||
0
|
|
||||||
exe "vert res" width
|
|
||||||
let b:col = b
|
let b:col = b
|
||||||
|
sil! doautocmd FileType csv
|
||||||
|
" remove leading delimiter
|
||||||
|
exe "sil :%s/^". b:delimiter. "//e"
|
||||||
|
" remove trailing delimiter
|
||||||
|
exe "sil :%s/". b:delimiter. "\s*$//e"
|
||||||
|
syn clear
|
||||||
|
noa 0
|
||||||
|
let b:csv_SplitWindow = winnr()
|
||||||
|
sil :call <sid>ArrangeCol(1,line('$'), 1)
|
||||||
|
exe "vert res" . len(split(getline(1), '\zs'))
|
||||||
call matchadd("CSVHeaderLine", b:col)
|
call matchadd("CSVHeaderLine", b:col)
|
||||||
setl scrollopt=ver winfixwidth
|
setl scrollopt=ver winfixwidth
|
||||||
endif
|
endif
|
||||||
call <sid>SetupQuitPre()
|
call <sid>SetupQuitPre(winnr())
|
||||||
let win = winnr()
|
let win = winnr()
|
||||||
setl scrollbind buftype=nowrite bufhidden=wipe noswapfile nobuflisted
|
setl scrollbind buftype=nowrite bufhidden=wipe noswapfile nobuflisted
|
||||||
wincmd p
|
noa wincmd p
|
||||||
let b:csv_SplitWindow = win
|
let b:csv_SplitWindow = win
|
||||||
aug CSV_Preview
|
aug CSV_Preview
|
||||||
au!
|
au!
|
||||||
@@ -891,7 +912,12 @@ fu! <sid>SplitHeaderLine(lines, bang, hor) "{{{3
|
|||||||
let &sbo = _sbo
|
let &sbo = _sbo
|
||||||
endif
|
endif
|
||||||
setl noscrollbind
|
setl noscrollbind
|
||||||
|
try
|
||||||
wincmd c
|
wincmd c
|
||||||
|
catch /^Vim\%((\a\+)\)\=:E444/ " cannot close last window
|
||||||
|
catch /^Vim\%((\a\+)\)\=:E517/ " buffer already wiped
|
||||||
|
" no-op
|
||||||
|
endtry
|
||||||
"pclose!
|
"pclose!
|
||||||
unlet! b:csv_SplitWindow
|
unlet! b:csv_SplitWindow
|
||||||
aug CSV_Preview
|
aug CSV_Preview
|
||||||
@@ -910,8 +936,11 @@ fu! <sid>SplitHeaderToggle(hor) "{{{3
|
|||||||
endfu
|
endfu
|
||||||
|
|
||||||
" TODO: from here on add logic for fixed-width csv files!
|
" TODO: from here on add logic for fixed-width csv files!
|
||||||
fu! <sid>MoveCol(forward, line) "{{{3
|
fu! <sid>MoveCol(forward, line, ...) "{{{3
|
||||||
" Move cursor position upwards/downwards left/right
|
" Move cursor position upwards/downwards left/right
|
||||||
|
" a:1 is there to have some mappings move in the same
|
||||||
|
" direction but still stop at a different position
|
||||||
|
" see :h csv-mapping-H
|
||||||
let colnr=<SID>WColumn()
|
let colnr=<SID>WColumn()
|
||||||
let maxcol=<SID>MaxColumns()
|
let maxcol=<SID>MaxColumns()
|
||||||
let cpos=getpos('.')[2]
|
let cpos=getpos('.')[2]
|
||||||
@@ -982,6 +1011,17 @@ fu! <sid>MoveCol(forward, line) "{{{3
|
|||||||
norm! 0
|
norm! 0
|
||||||
endif
|
endif
|
||||||
endw
|
endw
|
||||||
|
if (exists("a:1") && a:1)
|
||||||
|
" H also stops at the beginning of the content
|
||||||
|
" of a field.
|
||||||
|
let epos = getpos('.')
|
||||||
|
if getline('.')[col('.')-1] == ' '
|
||||||
|
call search('\S', 'W', line('.'))
|
||||||
|
if getpos('.')[2] > spos
|
||||||
|
call setpos('.', epos)
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endif
|
||||||
else
|
else
|
||||||
norm! 0
|
norm! 0
|
||||||
endif
|
endif
|
||||||
@@ -1043,13 +1083,19 @@ fu! <sid>Sort(bang, line1, line2, colnr) range "{{{3
|
|||||||
call winrestview(wsv)
|
call winrestview(wsv)
|
||||||
endfun
|
endfun
|
||||||
|
|
||||||
fu! <sid>CopyCol(reg, col) "{{{3
|
fu! <sid>CopyCol(reg, col, cnt) "{{{3
|
||||||
" Return Specified Column into register reg
|
" Return Specified Column into register reg
|
||||||
let col = a:col == "0" ? <sid>WColumn() : a:col+0
|
let col = a:col == "0" ? <sid>WColumn() : a:col+0
|
||||||
let mcol = <sid>MaxColumns()
|
let mcol = <sid>MaxColumns()
|
||||||
if col == '$' || col > mcol
|
if col == '$' || col > mcol
|
||||||
let col = mcol
|
let col = mcol
|
||||||
endif
|
endif
|
||||||
|
" The number of columns to return
|
||||||
|
" by default (value of zero, will only return that specific column)
|
||||||
|
let cnt_cols = col - 1
|
||||||
|
if !empty(a:cnt) && a:cnt > 0 && col + a:cnt <= mcol
|
||||||
|
let cnt_cols = col + a:cnt - 1
|
||||||
|
endif
|
||||||
let a = []
|
let a = []
|
||||||
" Don't get lines, that are currently filtered away
|
" Don't get lines, that are currently filtered away
|
||||||
if !exists("b:csv_filter") || empty(b:csv_filter)
|
if !exists("b:csv_filter") || empty(b:csv_filter)
|
||||||
@@ -1068,9 +1114,12 @@ fu! <sid>CopyCol(reg, col) "{{{3
|
|||||||
call filter(a, 'v:val !~ pat')
|
call filter(a, 'v:val !~ pat')
|
||||||
|
|
||||||
if !exists("b:csv_fixed_width_cols")
|
if !exists("b:csv_fixed_width_cols")
|
||||||
call map(a, 'split(v:val, ''^'' . b:col . ''\zs'')[col-1]')
|
call map(a, 'split(v:val, ''^'' . b:col . ''\zs'')[col-1:cnt_cols]')
|
||||||
else
|
else
|
||||||
call map(a, 'matchstr(v:val, <sid>GetColPat(col, 0))')
|
call map(a, 'matchstr(v:val, <sid>GetColPat(col, 0)).*<sid>GetColPat(col+cnt_cols, 0)')
|
||||||
|
endif
|
||||||
|
if type(a[0]) == type([])
|
||||||
|
call map(a, 'join(v:val, "")')
|
||||||
endif
|
endif
|
||||||
if a:reg =~ '[-"0-9a-zA-Z*+]'
|
if a:reg =~ '[-"0-9a-zA-Z*+]'
|
||||||
"exe ':let @' . a:reg . ' = "' . join(a, "\n") . '"'
|
"exe ':let @' . a:reg . ' = "' . join(a, "\n") . '"'
|
||||||
@@ -1222,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, '', '')
|
||||||
@@ -1574,10 +1623,13 @@ fu! <sid>AnalyzeColumn(...) "{{{3
|
|||||||
|
|
||||||
" Initialize s:fold_headerline
|
" Initialize s:fold_headerline
|
||||||
call <sid>CheckHeaderLine()
|
call <sid>CheckHeaderLine()
|
||||||
let data = <sid>CopyCol('', colnr)[s:csv_fold_headerline : -1]
|
let data = <sid>CopyCol('', colnr, '')[s:csv_fold_headerline : -1]
|
||||||
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
|
||||||
@@ -1585,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, ''\|'').''$''')
|
||||||
@@ -1595,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
|
||||||
@@ -1622,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
|
||||||
|
|
||||||
@@ -1665,59 +1720,56 @@ fu! <sid>InitCSVFixedWidth() "{{{3
|
|||||||
endif
|
endif
|
||||||
" Turn off syntax highlighting
|
" Turn off syntax highlighting
|
||||||
syn clear
|
syn clear
|
||||||
|
let max_len = len(split(getline(1), '\zs'))
|
||||||
let _cc = &l:cc
|
let _cc = &l:cc
|
||||||
let &l:cc = 1
|
let &l:cc = 1
|
||||||
redraw!
|
redraw!
|
||||||
let list = []
|
let Dict = {'1': 1} " first column is always the start of a new column
|
||||||
let tcc = &l:cc
|
let tcc = &l:cc
|
||||||
|
let &l:cc = 1
|
||||||
echo "<Cursor>, <Space>, <ESC>, <BS>, <CR>..."
|
echo "<Cursor>, <Space>, <ESC>, <BS>, <CR>..."
|
||||||
let char=getchar()
|
let char=getchar()
|
||||||
while 1
|
while 1
|
||||||
if char == "\<Left>" || char == "\<Right>"
|
if char == "\<Left>" || char == "\<Right>"
|
||||||
let tcc = eval('tcc'.(char=="\<Left>" ? '-' : '+').'1')
|
let tcc = eval('tcc'.(char=="\<Left>" ? '-' : '+').'1')
|
||||||
|
if tcc < 0
|
||||||
|
let tcc=0
|
||||||
|
elseif tcc > max_len
|
||||||
|
let tcc = max_len
|
||||||
|
endif
|
||||||
elseif char == "\<Space>" || char == 32 " Space
|
elseif char == "\<Space>" || char == 32 " Space
|
||||||
call add(list, tcc)
|
let Dict[tcc] = 1
|
||||||
elseif char == "\<BS>" || char == 127
|
elseif char == "\<BS>" || char == 127
|
||||||
call remove(list, -1)
|
try
|
||||||
|
call remove(Dict, reverse(sort(keys(Dict)))[0])
|
||||||
|
catch /^Vim\%((\a\+)\)\=:E\(\%(716\)\|\%(684\)\)/ " Dict or List empty
|
||||||
|
break
|
||||||
|
endtry
|
||||||
elseif char == "\<ESC>" || char == 27
|
elseif char == "\<ESC>" || char == 27
|
||||||
let &l:cc=_cc
|
let &l:cc=_cc
|
||||||
redraw!
|
redraw!
|
||||||
return
|
return
|
||||||
|
elseif char == "\<CR>" || char == "\n" || char == "\r" " Enter
|
||||||
|
let Dict[tcc] = 1
|
||||||
|
break
|
||||||
else
|
else
|
||||||
break
|
break
|
||||||
endif
|
endif
|
||||||
let &l:cc=tcc . (!empty(list)? ',' . join(list, ','):'')
|
let &l:cc=tcc . (!empty(keys(Dict))? ',' . join(keys(Dict), ','):'')
|
||||||
redraw!
|
redraw!
|
||||||
echo "<Cursor>, <Space>, <ESC>, <BS>, <CR>..."
|
echo "<Cursor>, <Space>, <ESC>, <BS>, <CR>..."
|
||||||
let char=getchar()
|
let char=getchar()
|
||||||
endw
|
endw
|
||||||
if tcc > 0
|
|
||||||
call add(list,tcc)
|
|
||||||
endif
|
|
||||||
let b:csv_fixed_width_cols=[]
|
let b:csv_fixed_width_cols=[]
|
||||||
let tcc=0
|
let tcc=0
|
||||||
if !empty(list)
|
let b:csv_fixed_width_cols = sort(keys(Dict), "<sid>SortList")
|
||||||
call Break()
|
let b:csv_fixed_width = join(sort(keys(Dict), "<sid>SortList"), ',')
|
||||||
" Remove duplicate entries
|
|
||||||
for val in sort(list, "<sid>SortList")
|
|
||||||
if val==tcc
|
|
||||||
continue
|
|
||||||
endif
|
|
||||||
call add(b:csv_fixed_width_cols, val)
|
|
||||||
let tcc=val
|
|
||||||
endfor
|
|
||||||
let b:csv_fixed_width=join(sort(b:csv_fixed_width_cols,
|
|
||||||
\ "<sid>SortList"), ',')
|
|
||||||
call <sid>Init(1, line('$'))
|
call <sid>Init(1, line('$'))
|
||||||
endif
|
|
||||||
let &l:cc=_cc
|
let &l:cc=_cc
|
||||||
redraw!
|
redraw!
|
||||||
endfu
|
endfu
|
||||||
|
|
||||||
fu! Break()
|
|
||||||
return
|
|
||||||
endfu
|
|
||||||
|
|
||||||
fu! <sid>NewRecord(line1, line2, count) "{{{3
|
fu! <sid>NewRecord(line1, line2, count) "{{{3
|
||||||
if a:count =~ "\D"
|
if a:count =~ "\D"
|
||||||
call <sid>WarningMsg("Invalid count specified")
|
call <sid>WarningMsg("Invalid count specified")
|
||||||
@@ -1757,33 +1809,53 @@ fu! <sid>MoveOver(outer) "{{{3
|
|||||||
" Move over a field
|
" Move over a field
|
||||||
" a:outer means include the delimiter
|
" a:outer means include the delimiter
|
||||||
let last = 0
|
let last = 0
|
||||||
let mode = a:outer
|
let outer_field = a:outer
|
||||||
|
let cur_field = <sid>WColumn()
|
||||||
|
let _wsv = winsaveview()
|
||||||
|
|
||||||
if <sid>WColumn() == <sid>MaxColumns()
|
if cur_field == <sid>MaxColumns()
|
||||||
let last = 1
|
let last = 1
|
||||||
if !mode && getline('.')[-1:] != b:delimiter
|
if !outer_field && getline('.')[-1:] != b:delimiter
|
||||||
" No trailing delimiter, so inner == outer
|
" No trailing delimiter, so inner == outer
|
||||||
let mode = 1
|
let outer_field = 1
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
" Use the mapped key
|
" Move 1 column backwards, unless the cursor is in the first column
|
||||||
exe ":sil! norm E"
|
" or in front of a delimiter
|
||||||
|
if matchstr(getline('.'), '.\%'.virtcol('.').'v') != b:delimiter && virtcol('.') > 1
|
||||||
|
call <sid>MoveCol(-1, line('.'))
|
||||||
|
endif
|
||||||
|
" if cur_field != <sid>WColumn()
|
||||||
|
" cursor was at the beginning of the field, and moved back to the
|
||||||
|
" previous field, move back to original position
|
||||||
|
" call cursor(_wsv.lnum, _wsv.col)
|
||||||
|
" endif
|
||||||
let _s = @/
|
let _s = @/
|
||||||
if last
|
if last
|
||||||
exe "sil! norm! /" . b:col . "\<cr>v$h" . (mode ? "" : "\<Left>")
|
exe "sil! norm! v$h" . (outer_field ? "" : "h") . (&sel ==# 'exclusive' ? "l" : '')
|
||||||
else
|
else
|
||||||
exe "sil! norm! /" . b:col . "\<cr>vn\<Left>" . (mode ? "" : "\<Left>")
|
exe "sil! norm! v/." . b:col . "\<cr>h" . (outer_field ? "" : "h") . (&sel ==# 'exclusive' ? "l" : '')
|
||||||
endif
|
endif
|
||||||
|
let _wsv.col = col('.')-1
|
||||||
|
call winrestview(_wsv)
|
||||||
let @/ = _s
|
let @/ = _s
|
||||||
endfu
|
endfu
|
||||||
|
|
||||||
fu! <sid>CSVMappings() "{{{3
|
fu! <sid>CSVMappings() "{{{3
|
||||||
call <sid>Map('noremap', 'W', ':<C-U>call <SID>MoveCol(1, line("."))<CR>')
|
call <sid>Map('noremap', 'W', ':<C-U>call <SID>MoveCol(1, line("."))<CR>')
|
||||||
|
call <sid>Map('noremap', '<C-Right>', ':<C-U>call <SID>MoveCol(1, line("."))<CR>')
|
||||||
|
call <sid>Map('noremap', 'L', ':<C-U>call <SID>MoveCol(1, line("."))<CR>')
|
||||||
call <sid>Map('noremap', 'E', ':<C-U>call <SID>MoveCol(-1, line("."))<CR>')
|
call <sid>Map('noremap', 'E', ':<C-U>call <SID>MoveCol(-1, line("."))<CR>')
|
||||||
|
call <sid>Map('noremap', '<C-Left>', ':<C-U>call <SID>MoveCol(-1, line("."))<CR>')
|
||||||
|
call <sid>Map('noremap', 'H', ':<C-U>call <SID>MoveCol(-1, line("."), 1)<CR>')
|
||||||
call <sid>Map('noremap', 'K', ':<C-U>call <SID>MoveCol(0,
|
call <sid>Map('noremap', 'K', ':<C-U>call <SID>MoveCol(0,
|
||||||
\ line(".")-v:count1)<CR>')
|
\ line(".")-v:count1)<CR>')
|
||||||
|
call <sid>Map('noremap', '<Up>', ':<C-U>call <SID>MoveCol(0,
|
||||||
|
\ line(".")-v:count1)<CR>')
|
||||||
call <sid>Map('noremap', 'J', ':<C-U>call <SID>MoveCol(0,
|
call <sid>Map('noremap', 'J', ':<C-U>call <SID>MoveCol(0,
|
||||||
\ line(".")+v:count1)<CR>')
|
\ line(".")+v:count1)<CR>')
|
||||||
|
call <sid>Map('noremap', '<Down>', ':<C-U>call <SID>MoveCol(0,
|
||||||
|
\ line(".")+v:count1)<CR>')
|
||||||
call <sid>Map('nnoremap', '<CR>', ':<C-U>call <SID>PrepareFolding(1,
|
call <sid>Map('nnoremap', '<CR>', ':<C-U>call <SID>PrepareFolding(1,
|
||||||
\ 1)<CR>')
|
\ 1)<CR>')
|
||||||
call <sid>Map('nnoremap', '<Space>', ':<C-U>call <SID>PrepareFolding(1,
|
call <sid>Map('nnoremap', '<Space>', ':<C-U>call <SID>PrepareFolding(1,
|
||||||
@@ -1806,12 +1878,6 @@ fu! <sid>CSVMappings() "{{{3
|
|||||||
call <sid>Map('nnoremap', '<LocalLeader><CR>', '<CR>')
|
call <sid>Map('nnoremap', '<LocalLeader><CR>', '<CR>')
|
||||||
call <sid>Map('nnoremap', '<LocalLeader><Space>', '<Space>')
|
call <sid>Map('nnoremap', '<LocalLeader><Space>', '<Space>')
|
||||||
call <sid>Map('nnoremap', '<LocalLeader><BS>', '<BS>')
|
call <sid>Map('nnoremap', '<LocalLeader><BS>', '<BS>')
|
||||||
call <sid>Map('map', '<C-Right>', 'W')
|
|
||||||
call <sid>Map('map', '<C-Left>', 'E')
|
|
||||||
call <sid>Map('map', 'H', 'E')
|
|
||||||
call <sid>Map('map', 'L', 'W')
|
|
||||||
call <sid>Map('map', '<Up>', 'K')
|
|
||||||
call <sid>Map('map', '<Down>', 'J')
|
|
||||||
endfu
|
endfu
|
||||||
|
|
||||||
fu! <sid>CommandDefinitions() "{{{3
|
fu! <sid>CommandDefinitions() "{{{3
|
||||||
@@ -1845,8 +1911,8 @@ fu! <sid>CommandDefinitions() "{{{3
|
|||||||
\ ':call <sid>Sort(<bang>0, <line1>,<line2>,<q-args>)',
|
\ ':call <sid>Sort(<bang>0, <line1>,<line2>,<q-args>)',
|
||||||
\ '-nargs=* -bang -range=% -complete=custom,<sid>SortComplete')
|
\ '-nargs=* -bang -range=% -complete=custom,<sid>SortComplete')
|
||||||
call <sid>LocalCmd("Column",
|
call <sid>LocalCmd("Column",
|
||||||
\ ':call <sid>CopyCol(empty(<q-reg>)?''"'':<q-reg>,<q-count>)',
|
\ ':call <sid>CopyCol(empty(<q-reg>)?''"'':<q-reg>,<q-count>,<q-args>)',
|
||||||
\ '-count -register')
|
\ '-count -register -nargs=?')
|
||||||
call <sid>LocalCmd("MoveColumn",
|
call <sid>LocalCmd("MoveColumn",
|
||||||
\ ':call <sid>MoveColumn(<line1>,<line2>,<f-args>)',
|
\ ':call <sid>MoveColumn(<line1>,<line2>,<f-args>)',
|
||||||
\ '-range=% -nargs=* -complete=custom,<sid>SortComplete')
|
\ '-range=% -nargs=* -complete=custom,<sid>SortComplete')
|
||||||
@@ -2315,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
|
||||||
@@ -2327,15 +2394,20 @@ endfu
|
|||||||
|
|
||||||
" Global functions "{{{2
|
" Global functions "{{{2
|
||||||
fu! csv#EvalColumn(nr, func, first, last) range "{{{3
|
fu! csv#EvalColumn(nr, func, first, last) range "{{{3
|
||||||
|
" Make sure, the function is called for the correct filetype.
|
||||||
|
if match(split(&ft, '\.'), 'csv') == -1
|
||||||
|
call <sid>Warn("File is no CSV file!")
|
||||||
|
return
|
||||||
|
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
|
||||||
let stop = a:last - 1 + s:csv_fold_headerline
|
let stop = a:last - 1 + s:csv_fold_headerline
|
||||||
|
|
||||||
let column = <sid>CopyCol('', col)[start : stop]
|
let column = <sid>CopyCol('', col, '')[start : stop]
|
||||||
" Delete delimiter
|
" Delete delimiter
|
||||||
call map(column, 'substitute(v:val, b:delimiter . "$", "", "g")')
|
call map(column, 'substitute(v:val, b:delimiter . "$", "", "g")')
|
||||||
" Revmoe trailing whitespace
|
" Revmoe trailing whitespace
|
||||||
@@ -2395,7 +2467,7 @@ fu! CSVField(x, y, ...) "{{{3
|
|||||||
let orig = !empty(a:0)
|
let orig = !empty(a:0)
|
||||||
let y = (y < 0 ? 0 : y)
|
let y = (y < 0 ? 0 : y)
|
||||||
let x = (x > (<sid>MaxColumns()) ? (<sid>MaxColumns()) : x)
|
let x = (x > (<sid>MaxColumns()) ? (<sid>MaxColumns()) : x)
|
||||||
let col = <sid>CopyCol('',x)
|
let col = <sid>CopyCol('',x,'')
|
||||||
if !orig
|
if !orig
|
||||||
" remove leading and trainling whitespace and the delimiter
|
" remove leading and trainling whitespace and the delimiter
|
||||||
return matchstr(col[y], '^\s*\zs.\{-}\ze\s*'.b:delimiter.'\?$')
|
return matchstr(col[y], '^\s*\zs.\{-}\ze\s*'.b:delimiter.'\?$')
|
||||||
@@ -2434,6 +2506,23 @@ fu! CSV_WCol(...) "{{{3
|
|||||||
endtry
|
endtry
|
||||||
endfun
|
endfun
|
||||||
|
|
||||||
|
fu! CSV_CloseBuffer(buffer) "{{{3
|
||||||
|
" Setup by SetupQuitPre autocommand
|
||||||
|
try
|
||||||
|
if bufnr((a:buffer)+0) > -1
|
||||||
|
exe a:buffer. "bw"
|
||||||
|
endif
|
||||||
|
catch /^Vim\%((\a\+)\)\=:E517/ " buffer already wiped
|
||||||
|
" no-op
|
||||||
|
finally
|
||||||
|
augroup CSV_QuitPre
|
||||||
|
au!
|
||||||
|
augroup END
|
||||||
|
augroup! CSV_QuitPre
|
||||||
|
endtry
|
||||||
|
endfu
|
||||||
|
|
||||||
|
|
||||||
" Initialize Plugin "{{{2
|
" Initialize Plugin "{{{2
|
||||||
let b:csv_start = exists("b:csv_start") ? b:csv_start : 1
|
let b:csv_start = exists("b:csv_start") ? b:csv_start : 1
|
||||||
let b:csv_end = exists("b:csv_end") ? b:csv_end : line('$')
|
let b:csv_end = exists("b:csv_end") ? b:csv_end : line('$')
|
||||||
|
|||||||
17
ftplugin/go.vim
Normal file
17
ftplugin/go.vim
Normal 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
|
||||||
@@ -12,15 +12,35 @@
|
|||||||
" It tries to preserve cursor position and avoids
|
" It tries to preserve cursor position and avoids
|
||||||
" replacing the buffer with stderr output.
|
" replacing the buffer with stderr output.
|
||||||
"
|
"
|
||||||
|
" Options:
|
||||||
|
"
|
||||||
|
" g:go_fmt_commands [default=1]
|
||||||
|
"
|
||||||
|
" Flag to indicate whether to enable the commands listed above.
|
||||||
|
"
|
||||||
|
" g:gofmt_command [default="gofmt"]
|
||||||
|
"
|
||||||
|
" Flag naming the gofmt executable to use.
|
||||||
|
"
|
||||||
if exists("b:did_ftplugin_go_fmt")
|
if exists("b:did_ftplugin_go_fmt")
|
||||||
finish
|
finish
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
if !exists("g:go_fmt_commands")
|
||||||
|
let g:go_fmt_commands = 1
|
||||||
|
endif
|
||||||
|
|
||||||
|
if !exists("g:gofmt_command")
|
||||||
|
let g:gofmt_command = "gofmt"
|
||||||
|
endif
|
||||||
|
|
||||||
|
if g:go_fmt_commands
|
||||||
command! -buffer Fmt call s:GoFormat()
|
command! -buffer Fmt call s:GoFormat()
|
||||||
|
endif
|
||||||
|
|
||||||
function! s:GoFormat()
|
function! s:GoFormat()
|
||||||
let view = winsaveview()
|
let view = winsaveview()
|
||||||
silent %!gofmt
|
silent execute "%!" . g:gofmt_command
|
||||||
if v:shell_error
|
if v:shell_error
|
||||||
let errors = []
|
let errors = []
|
||||||
for line in getline(1, line('$'))
|
for line in getline(1, line('$'))
|
||||||
@@ -37,7 +57,7 @@ function! s:GoFormat()
|
|||||||
endif
|
endif
|
||||||
undo
|
undo
|
||||||
if !empty(errors)
|
if !empty(errors)
|
||||||
call setloclist(0, errors, 'r')
|
call setqflist(errors, 'r')
|
||||||
endif
|
endif
|
||||||
echohl Error | echomsg "Gofmt returned error" | echohl None
|
echohl Error | echomsg "Gofmt returned error" | echohl None
|
||||||
endif
|
endif
|
||||||
|
|||||||
@@ -24,23 +24,40 @@
|
|||||||
" imported, an error will be displayed and the buffer will be
|
" imported, an error will be displayed and the buffer will be
|
||||||
" untouched.
|
" untouched.
|
||||||
"
|
"
|
||||||
" In addition to these commands, there are also two shortcuts mapped:
|
" If you would like to add shortcuts, you can do so by doing the following:
|
||||||
"
|
"
|
||||||
" \f - Runs :Import fmt
|
" Import fmt
|
||||||
" \F - Runs :Drop fmt
|
" au Filetype go nnoremap <buffer> <LocalLeader>f :Import fmt<CR>
|
||||||
"
|
"
|
||||||
" The backslash is the default maplocalleader, so it is possible that
|
" Drop fmt
|
||||||
|
" au Filetype go nnoremap <buffer> <LocalLeader>F :Drop fmt<CR>
|
||||||
|
"
|
||||||
|
" Import the word under your cursor
|
||||||
|
" au Filetype go nnoremap <buffer> <LocalLeader>k
|
||||||
|
" \ :exe 'Import ' . expand('<cword>')<CR>
|
||||||
|
"
|
||||||
|
" The backslash '\' is the default maplocalleader, so it is possible that
|
||||||
" your vim is set to use a different character (:help maplocalleader).
|
" your vim is set to use a different character (:help maplocalleader).
|
||||||
"
|
"
|
||||||
|
" Options:
|
||||||
|
"
|
||||||
|
" g:go_import_commands [default=1]
|
||||||
|
"
|
||||||
|
" Flag to indicate whether to enable the commands listed above.
|
||||||
|
"
|
||||||
if exists("b:did_ftplugin_go_import")
|
if exists("b:did_ftplugin_go_import")
|
||||||
finish
|
finish
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
if !exists("g:go_import_commands")
|
||||||
|
let g:go_import_commands = 1
|
||||||
|
endif
|
||||||
|
|
||||||
|
if g:go_import_commands
|
||||||
command! -buffer -nargs=? -complete=customlist,go#complete#Package Drop call s:SwitchImport(0, '', <f-args>)
|
command! -buffer -nargs=? -complete=customlist,go#complete#Package Drop call s:SwitchImport(0, '', <f-args>)
|
||||||
command! -buffer -nargs=1 -complete=customlist,go#complete#Package Import call s:SwitchImport(1, '', <f-args>)
|
command! -buffer -nargs=1 -complete=customlist,go#complete#Package Import call s:SwitchImport(1, '', <f-args>)
|
||||||
command! -buffer -nargs=* -complete=customlist,go#complete#Package ImportAs call s:SwitchImport(1, <f-args>)
|
command! -buffer -nargs=* -complete=customlist,go#complete#Package ImportAs call s:SwitchImport(1, <f-args>)
|
||||||
map <buffer> <LocalLeader>f :Import fmt<CR>
|
endif
|
||||||
map <buffer> <LocalLeader>F :Drop fmt<CR>
|
|
||||||
|
|
||||||
function! s:SwitchImport(enabled, localname, path)
|
function! s:SwitchImport(enabled, localname, path)
|
||||||
let view = winsaveview()
|
let view = winsaveview()
|
||||||
|
|||||||
@@ -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
|
|
||||||
@@ -45,7 +45,7 @@ endif
|
|||||||
|
|
||||||
setlocal comments=://-,:// commentstring=//\ %s
|
setlocal comments=://-,:// commentstring=//\ %s
|
||||||
|
|
||||||
setlocal suffixesadd=.jade
|
setlocal suffixesadd+=.jade
|
||||||
|
|
||||||
let b:undo_ftplugin = "setl cms< com< "
|
let b:undo_ftplugin = "setl cms< com< "
|
||||||
\ " | unlet! b:browsefilter b:match_words | " . s:undo_ftplugin
|
\ " | unlet! b:browsefilter b:match_words | " . s:undo_ftplugin
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
" Error Format {{{
|
" Error Format {{{
|
||||||
" Note: The error formats assume we're using the -file-line-error with
|
" Note: The error formats assume we're using the -file-line-error with
|
||||||
" [pdf]latex.
|
" [pdf]latex.
|
||||||
|
" Note: See |errorformat-LaTeX| for more info.
|
||||||
|
|
||||||
" Check for options
|
" Check for options
|
||||||
if !exists("g:LatexBox_show_warnings")
|
if !exists("g:LatexBox_show_warnings")
|
||||||
@@ -15,9 +16,14 @@ if !exists("g:LatexBox_ignore_warnings")
|
|||||||
\ 'specifier changed to']
|
\ 'specifier changed to']
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" See |errorformat-LaTeX|
|
" Standard error message formats
|
||||||
|
" Note: We consider statements that starts with "!" as errors
|
||||||
setlocal efm=%E!\ LaTeX\ %trror:\ %m
|
setlocal efm=%E!\ LaTeX\ %trror:\ %m
|
||||||
setlocal efm+=%E%f:%l:\ %m
|
setlocal efm+=%E%f:%l:\ %m
|
||||||
|
setlocal efm+=%E!\ %m
|
||||||
|
|
||||||
|
" More info for undefined control sequences
|
||||||
|
setlocal efm+=%Z<argument>\ %m
|
||||||
|
|
||||||
" Show or ignore warnings
|
" Show or ignore warnings
|
||||||
if g:LatexBox_show_warnings
|
if g:LatexBox_show_warnings
|
||||||
@@ -28,22 +34,18 @@ if g:LatexBox_show_warnings
|
|||||||
setlocal efm+=%+WLaTeX\ %.%#Warning:\ %.%#line\ %l%.%#
|
setlocal efm+=%+WLaTeX\ %.%#Warning:\ %.%#line\ %l%.%#
|
||||||
setlocal efm+=%+W%.%#\ at\ lines\ %l--%*\\d
|
setlocal efm+=%+W%.%#\ at\ lines\ %l--%*\\d
|
||||||
setlocal efm+=%+WLaTeX\ %.%#Warning:\ %m
|
setlocal efm+=%+WLaTeX\ %.%#Warning:\ %m
|
||||||
setlocal efm+=%+W%.%#%.%#Warning:\ %m
|
setlocal efm+=%+W%.%#Warning:\ %m
|
||||||
else
|
else
|
||||||
setlocal efm+=%-WLaTeX\ %.%#Warning:\ %.%#line\ %l%.%#
|
setlocal efm+=%-WLaTeX\ %.%#Warning:\ %.%#line\ %l%.%#
|
||||||
setlocal efm+=%-W%.%#\ at\ lines\ %l--%*\\d
|
setlocal efm+=%-W%.%#\ at\ lines\ %l--%*\\d
|
||||||
setlocal efm+=%-WLaTeX\ %.%#Warning:\ %m
|
setlocal efm+=%-WLaTeX\ %.%#Warning:\ %m
|
||||||
setlocal efm+=%-W%.%#%.%#Warning:\ %m
|
setlocal efm+=%-W%.%#Warning:\ %m
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" Consider the remaining statements that starts with "!" as errors
|
|
||||||
setlocal efm+=%E!\ %m
|
|
||||||
|
|
||||||
" Push file to file stack
|
" Push file to file stack
|
||||||
setlocal efm+=%+P**%f
|
setlocal efm+=%+P**%f
|
||||||
|
|
||||||
" Ignore unmatched lines
|
" Ignore unmatched lines
|
||||||
setlocal efm+=%-G\\s%#
|
|
||||||
setlocal efm+=%-G%.%#
|
setlocal efm+=%-G%.%#
|
||||||
" }}}
|
" }}}
|
||||||
|
|
||||||
@@ -100,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
|
||||||
@@ -213,7 +222,7 @@ function! LatexBox_View()
|
|||||||
if has('win32')
|
if has('win32')
|
||||||
let cmd = '!start /b' . cmd . ' >nul'
|
let cmd = '!start /b' . cmd . ' >nul'
|
||||||
else
|
else
|
||||||
let cmd = '!' . cmd . ' >/dev/null &'
|
let cmd = '!' . cmd . ' &>/dev/null &'
|
||||||
endif
|
endif
|
||||||
silent execute cmd
|
silent execute cmd
|
||||||
if !has("gui_running")
|
if !has("gui_running")
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ if !exists('g:LatexBox_cite_pattern')
|
|||||||
let g:LatexBox_cite_pattern = '\C\\\a*cite\a*\*\?\(\[[^\]]*\]\)*\_\s*{'
|
let g:LatexBox_cite_pattern = '\C\\\a*cite\a*\*\?\(\[[^\]]*\]\)*\_\s*{'
|
||||||
endif
|
endif
|
||||||
if !exists('g:LatexBox_ref_pattern')
|
if !exists('g:LatexBox_ref_pattern')
|
||||||
let g:LatexBox_ref_pattern = '\C\\v\?\(eq\|page\|[cC]\)\?ref\*\?\_\s*{'
|
let g:LatexBox_ref_pattern = '\C\\v\?\(eq\|page\|[cC]\|labelc\)\?ref\*\?\_\s*{'
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if !exists('g:LatexBox_completion_environments')
|
if !exists('g:LatexBox_completion_environments')
|
||||||
@@ -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
|
||||||
@@ -196,37 +196,42 @@ function! s:FindBibData(...)
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
if !filereadable(file)
|
if !filereadable(file)
|
||||||
return ''
|
return []
|
||||||
endif
|
endif
|
||||||
|
let lines = readfile(file)
|
||||||
|
let bibdata_list = []
|
||||||
|
|
||||||
|
"
|
||||||
|
" Search for added bibliographies
|
||||||
|
"
|
||||||
let bibliography_cmds = [
|
let bibliography_cmds = [
|
||||||
\ '\\bibliography',
|
\ '\\bibliography',
|
||||||
\ '\\addbibresource',
|
\ '\\addbibresource',
|
||||||
\ '\\addglobalbib',
|
\ '\\addglobalbib',
|
||||||
\ '\\addsectionbib',
|
\ '\\addsectionbib',
|
||||||
\ ]
|
\ ]
|
||||||
|
|
||||||
let lines = readfile(file)
|
|
||||||
|
|
||||||
let bibdata_list = []
|
|
||||||
|
|
||||||
for cmd in bibliography_cmds
|
for cmd in bibliography_cmds
|
||||||
let bibdata_list += map(filter(copy(lines),
|
let filtered = filter(copy(lines),
|
||||||
\ 'v:val =~ ''\C' . cmd . '\s*{[^}]\+}'''),
|
\ 'v:val =~ ''\C' . cmd . '\s*{[^}]\+}''')
|
||||||
|
let files = map(filtered,
|
||||||
\ 'matchstr(v:val, ''\C' . cmd . '\s*{\zs[^}]\+\ze}'')')
|
\ 'matchstr(v:val, ''\C' . cmd . '\s*{\zs[^}]\+\ze}'')')
|
||||||
|
for file in files
|
||||||
|
let bibdata_list += map(split(file, ','),
|
||||||
|
\ 'fnamemodify(v:val, '':r'')')
|
||||||
|
endfor
|
||||||
endfor
|
endfor
|
||||||
|
|
||||||
let bibdata_list += map(filter(copy(lines),
|
"
|
||||||
\ 'v:val =~ ''\C\\\%(input\|include\)\s*{[^}]\+}'''),
|
" Also search included files
|
||||||
\ 's:FindBibData(LatexBox_kpsewhich(matchstr(v:val,'
|
"
|
||||||
\ . '''\C\\\%(input\|include\)\s*{\zs[^}]\+\ze}'')))')
|
for input in filter(lines,
|
||||||
|
\ 'v:val =~ ''\C\\\%(input\|include\)\s*{[^}]\+}''')
|
||||||
|
let bibdata_list += s:FindBibData(LatexBox_kpsewhich(
|
||||||
|
\ matchstr(input,
|
||||||
|
\ '\C\\\%(input\|include\)\s*{\zs[^}]\+\ze}')))
|
||||||
|
endfor
|
||||||
|
|
||||||
let bibdata_list += map(filter(copy(lines),
|
return bibdata_list
|
||||||
\ 'v:val =~ ''\C\\\%(input\|include\)\s\+\S\+'''),
|
|
||||||
\ 's:FindBibData(LatexBox_kpsewhich(matchstr(v:val,'
|
|
||||||
\ . '''\C\\\%(input\|include\)\s\+\zs\S\+\ze'')))')
|
|
||||||
|
|
||||||
return join(bibdata_list, ',')
|
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
let s:bstfile = expand('<sfile>:p:h') . '/vimcomplete'
|
let s:bstfile = expand('<sfile>:p:h') . '/vimcomplete'
|
||||||
@@ -235,7 +240,7 @@ function! LatexBox_BibSearch(regexp)
|
|||||||
let res = []
|
let res = []
|
||||||
|
|
||||||
" Find data from bib files
|
" Find data from bib files
|
||||||
let bibdata = s:FindBibData()
|
let bibdata = join(s:FindBibData(), ',')
|
||||||
if bibdata != ''
|
if bibdata != ''
|
||||||
|
|
||||||
" write temporary aux file
|
" write temporary aux file
|
||||||
@@ -247,9 +252,18 @@ function! LatexBox_BibSearch(regexp)
|
|||||||
call writefile(['\citation{*}', '\bibstyle{' . s:bstfile . '}',
|
call writefile(['\citation{*}', '\bibstyle{' . s:bstfile . '}',
|
||||||
\ '\bibdata{' . bibdata . '}'], auxfile)
|
\ '\bibdata{' . bibdata . '}'], auxfile)
|
||||||
|
|
||||||
|
if has('win32')
|
||||||
|
let l:old_shellslash = &l:shellslash
|
||||||
|
setlocal noshellslash
|
||||||
|
silent execute '! cd ' shellescape(LatexBox_GetTexRoot()) .
|
||||||
|
\ ' & bibtex -terse '
|
||||||
|
\ . fnamemodify(auxfile, ':t') . ' >nul'
|
||||||
|
let &l:shellslash = l:old_shellslash
|
||||||
|
else
|
||||||
silent execute '! cd ' shellescape(LatexBox_GetTexRoot()) .
|
silent execute '! cd ' shellescape(LatexBox_GetTexRoot()) .
|
||||||
\ ' ; bibtex -terse '
|
\ ' ; bibtex -terse '
|
||||||
\ . fnamemodify(auxfile, ':t') . ' >/dev/null'
|
\ . fnamemodify(auxfile, ':t') . ' >/dev/null'
|
||||||
|
endif
|
||||||
|
|
||||||
let lines = split(substitute(join(readfile(bblfile), "\n"),
|
let lines = split(substitute(join(readfile(bblfile), "\n"),
|
||||||
\ '\n\n\@!\(\s\=\)\s*\|{\|}', '\1', 'g'), "\n")
|
\ '\n\n\@!\(\s\=\)\s*\|{\|}', '\1', 'g'), "\n")
|
||||||
@@ -258,6 +272,8 @@ function! LatexBox_BibSearch(regexp)
|
|||||||
let matches = matchlist(line,
|
let matches = matchlist(line,
|
||||||
\ '^\(.*\)||\(.*\)||\(.*\)||\(.*\)||\(.*\)')
|
\ '^\(.*\)||\(.*\)||\(.*\)||\(.*\)||\(.*\)')
|
||||||
if !empty(matches) && !empty(matches[1])
|
if !empty(matches) && !empty(matches[1])
|
||||||
|
let s:type_length = max([s:type_length,
|
||||||
|
\ len(matches[2]) + 3])
|
||||||
call add(res, {
|
call add(res, {
|
||||||
\ 'key': matches[1],
|
\ 'key': matches[1],
|
||||||
\ 'type': matches[2],
|
\ 'type': matches[2],
|
||||||
@@ -275,7 +291,7 @@ function! LatexBox_BibSearch(regexp)
|
|||||||
|
|
||||||
" Find data from 'thebibliography' environments
|
" Find data from 'thebibliography' environments
|
||||||
let lines = readfile(LatexBox_GetMainTexFile())
|
let lines = readfile(LatexBox_GetMainTexFile())
|
||||||
if match(lines, '\C\\begin{thebibliography}')
|
if match(lines, '\C\\begin{thebibliography}') >= 0
|
||||||
for line in filter(filter(lines, 'v:val =~ ''\C\\bibitem'''),
|
for line in filter(filter(lines, 'v:val =~ ''\C\\bibitem'''),
|
||||||
\ 'v:val =~ a:regexp')
|
\ 'v:val =~ a:regexp')
|
||||||
let match = matchlist(line, '\\bibitem{\([^}]*\)')[1]
|
let match = matchlist(line, '\\bibitem{\([^}]*\)')[1]
|
||||||
@@ -294,6 +310,7 @@ endfunction
|
|||||||
" }}}
|
" }}}
|
||||||
|
|
||||||
" BibTeX completion {{{
|
" BibTeX completion {{{
|
||||||
|
let s:type_length=0
|
||||||
function! LatexBox_BibComplete(regexp)
|
function! LatexBox_BibComplete(regexp)
|
||||||
|
|
||||||
" treat spaces as '.*' if needed
|
" treat spaces as '.*' if needed
|
||||||
@@ -305,9 +322,12 @@ function! LatexBox_BibComplete(regexp)
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
let res = []
|
let res = []
|
||||||
|
let s:type_length = 4
|
||||||
for m in LatexBox_BibSearch(regexp)
|
for m in LatexBox_BibSearch(regexp)
|
||||||
let type = m['type'] == '' ? '[-]' : '[' . m['type'] . '] '
|
let type = m['type'] == '' ? '[-]' : '[' . m['type'] . '] '
|
||||||
|
let type = printf('%-' . s:type_length . 's', type)
|
||||||
let auth = m['author'] == '' ? '' : m['author'][:20] . ' '
|
let auth = m['author'] == '' ? '' : m['author'][:20] . ' '
|
||||||
|
let auth = substitute(auth, '\~', ' ', 'g')
|
||||||
let year = m['year'] == '' ? '' : '(' . m['year'] . ')'
|
let year = m['year'] == '' ? '' : '(' . m['year'] . ')'
|
||||||
let w = { 'word': m['key'],
|
let w = { 'word': m['key'],
|
||||||
\ 'abbr': type . auth . year,
|
\ 'abbr': type . auth . year,
|
||||||
@@ -345,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
|
||||||
@@ -362,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
|
||||||
@@ -437,7 +457,7 @@ function! s:GetLabelCache(file)
|
|||||||
|
|
||||||
if !has_key(s:LabelCache , a:file) || s:LabelCache[a:file][0] != getftime(a:file)
|
if !has_key(s:LabelCache , a:file) || s:LabelCache[a:file][0] != getftime(a:file)
|
||||||
" Open file in temporary split window for label extraction.
|
" Open file in temporary split window for label extraction.
|
||||||
silent execute '1sp +let\ labels=s:ExtractLabels()|let\ inputs=s:ExtractInputs()|quit! ' . a:file
|
silent execute '1sp +let\ labels=s:ExtractLabels()|let\ inputs=s:ExtractInputs()|quit! ' . fnameescape(a:file)
|
||||||
let s:LabelCache[a:file] = [ getftime(a:file), labels, inputs ]
|
let s:LabelCache[a:file] = [ getftime(a:file), labels, inputs ]
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@@ -735,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()
|
||||||
|
|
||||||
@@ -838,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
|
||||||
|
|||||||
@@ -31,6 +31,9 @@ endif
|
|||||||
if !exists('g:LatexBox_fold_envs')
|
if !exists('g:LatexBox_fold_envs')
|
||||||
let g:LatexBox_fold_envs=1
|
let g:LatexBox_fold_envs=1
|
||||||
endif
|
endif
|
||||||
|
if !exists('g:LatexBox_fold_envs_force')
|
||||||
|
let g:LatexBox_fold_envs_force = []
|
||||||
|
endif
|
||||||
if !exists('g:LatexBox_fold_parts')
|
if !exists('g:LatexBox_fold_parts')
|
||||||
let g:LatexBox_fold_parts=[
|
let g:LatexBox_fold_parts=[
|
||||||
\ "appendix",
|
\ "appendix",
|
||||||
@@ -159,11 +162,27 @@ function! LatexBox_FoldLevel(lnum)
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
" Fold environments
|
" Fold environments
|
||||||
if g:LatexBox_fold_envs == 1
|
|
||||||
if line =~# s:envbeginpattern
|
if line =~# s:envbeginpattern
|
||||||
|
if g:LatexBox_fold_envs == 1
|
||||||
return "a1"
|
return "a1"
|
||||||
|
else
|
||||||
|
let env = matchstr(line,'\\begin\*\?{\zs\w*\*\?\ze}')
|
||||||
|
if index(g:LatexBox_fold_envs_force, env) >= 0
|
||||||
|
return "a1"
|
||||||
|
else
|
||||||
|
return "="
|
||||||
|
endif
|
||||||
|
endif
|
||||||
elseif line =~# s:envendpattern
|
elseif line =~# s:envendpattern
|
||||||
|
if g:LatexBox_fold_envs == 1
|
||||||
return "s1"
|
return "s1"
|
||||||
|
else
|
||||||
|
let env = matchstr(line,'\\end\*\?{\zs\w*\*\?\ze}')
|
||||||
|
if index(g:LatexBox_fold_envs_force, env) >= 0
|
||||||
|
return "s1"
|
||||||
|
else
|
||||||
|
return "="
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|||||||
@@ -92,8 +92,8 @@ function! s:LatexmkCallback(basename, status)
|
|||||||
" Only remove the pid if not in continuous mode
|
" Only remove the pid if not in continuous mode
|
||||||
if !g:LatexBox_latexmk_preview_continuously
|
if !g:LatexBox_latexmk_preview_continuously
|
||||||
call remove(g:latexmk_running_pids, a:basename)
|
call remove(g:latexmk_running_pids, a:basename)
|
||||||
call LatexBox_LatexErrors(a:status, a:basename)
|
|
||||||
endif
|
endif
|
||||||
|
call LatexBox_LatexErrors(a:status, a:basename)
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:setup_vim_server()
|
function! s:setup_vim_server()
|
||||||
@@ -104,7 +104,7 @@ function! s:setup_vim_server()
|
|||||||
if has('win32')
|
if has('win32')
|
||||||
" Just drop through to the default for windows
|
" Just drop through to the default for windows
|
||||||
else
|
else
|
||||||
if match(&shell, '/\(bash\|zsh\)$') >= 0
|
if match(&shell, '\(bash\|zsh\)$') >= 0
|
||||||
let ppid = '$PPID'
|
let ppid = '$PPID'
|
||||||
else
|
else
|
||||||
let ppid = '$$'
|
let ppid = '$$'
|
||||||
@@ -143,6 +143,13 @@ function! LatexBox_Latexmk(force)
|
|||||||
let texroot = shellescape(LatexBox_GetTexRoot())
|
let texroot = shellescape(LatexBox_GetTexRoot())
|
||||||
let mainfile = fnameescape(fnamemodify(LatexBox_GetMainTexFile(), ':t'))
|
let mainfile = fnameescape(fnamemodify(LatexBox_GetMainTexFile(), ':t'))
|
||||||
|
|
||||||
|
" Check if latexmk is installed
|
||||||
|
if !executable('latexmk')
|
||||||
|
echomsg "Error: LaTeX-Box relies on latexmk for compilation, but it" .
|
||||||
|
\ " is not installed!"
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
|
||||||
" Check if already running
|
" Check if already running
|
||||||
if has_key(g:latexmk_running_pids, basepath)
|
if has_key(g:latexmk_running_pids, basepath)
|
||||||
echomsg "latexmk is already running for `" . basename . "'"
|
echomsg "latexmk is already running for `" . basename . "'"
|
||||||
@@ -181,6 +188,10 @@ function! LatexBox_Latexmk(force)
|
|||||||
endif
|
endif
|
||||||
let cmd .= ' -e ' . shellescape('$pdflatex =~ s/ / -file-line-error /')
|
let cmd .= ' -e ' . shellescape('$pdflatex =~ s/ / -file-line-error /')
|
||||||
let cmd .= ' -e ' . shellescape('$latex =~ s/ / -file-line-error /')
|
let cmd .= ' -e ' . shellescape('$latex =~ s/ / -file-line-error /')
|
||||||
|
if g:LatexBox_latexmk_preview_continuously
|
||||||
|
let cmd .= ' -e ' . shellescape('$success_cmd = $ENV{SUCCESSCMD}')
|
||||||
|
let cmd .= ' -e ' . shellescape('$failure_cmd = $ENV{FAILURECMD}')
|
||||||
|
endif
|
||||||
let cmd .= ' ' . mainfile
|
let cmd .= ' ' . mainfile
|
||||||
|
|
||||||
" Redirect output to null
|
" Redirect output to null
|
||||||
@@ -216,8 +227,27 @@ function! LatexBox_Latexmk(force)
|
|||||||
let callback = callbackfunc . '(''' . basepath . ''', %LATEXERR%)'
|
let callback = callbackfunc . '(''' . basepath . ''', %LATEXERR%)'
|
||||||
let vimcmd = vim_program . ' --servername ' . v:servername
|
let vimcmd = vim_program . ' --servername ' . v:servername
|
||||||
\ . ' --remote-expr ' . shellescape(callback)
|
\ . ' --remote-expr ' . shellescape(callback)
|
||||||
|
let scallback = callbackfunc . '(''' . basepath . ''', 0)'
|
||||||
|
let svimcmd = vim_program . ' --servername ' . v:servername
|
||||||
|
\ . ' --remote-expr ' . shellescape(scallback)
|
||||||
|
let fcallback = callbackfunc . '(''' . basepath . ''', 1)'
|
||||||
|
let fvimcmd = vim_program . ' --servername ' . v:servername
|
||||||
|
\ . ' --remote-expr ' . shellescape(fcallback)
|
||||||
|
|
||||||
let asyncbat = tempname() . '.bat'
|
let asyncbat = tempname() . '.bat'
|
||||||
|
if g:LatexBox_latexmk_preview_continuously
|
||||||
|
call writefile(['setlocal',
|
||||||
|
\ 'set T=%TEMP%\sthUnique.tmp',
|
||||||
|
\ 'wmic process where (Name="WMIC.exe" AND CommandLine LIKE "%%%TIME%%%") '
|
||||||
|
\ . 'get ParentProcessId /value | find "ParentProcessId" >%T%',
|
||||||
|
\ 'set /P A=<%T%',
|
||||||
|
\ 'set CMDPID=%A:~16% & del %T%',
|
||||||
|
\ vimsetpid,
|
||||||
|
\ 'set SUCCESSCMD='.svimcmd,
|
||||||
|
\ 'set FAILURECMD='.fvimcmd,
|
||||||
|
\ cmd,
|
||||||
|
\ 'endlocal'], asyncbat)
|
||||||
|
else
|
||||||
call writefile(['setlocal',
|
call writefile(['setlocal',
|
||||||
\ 'set T=%TEMP%\sthUnique.tmp',
|
\ 'set T=%TEMP%\sthUnique.tmp',
|
||||||
\ 'wmic process where (Name="WMIC.exe" AND CommandLine LIKE "%%%TIME%%%") '
|
\ 'wmic process where (Name="WMIC.exe" AND CommandLine LIKE "%%%TIME%%%") '
|
||||||
@@ -229,6 +259,7 @@ function! LatexBox_Latexmk(force)
|
|||||||
\ 'set LATEXERR=%ERRORLEVEL%',
|
\ 'set LATEXERR=%ERRORLEVEL%',
|
||||||
\ vimcmd,
|
\ vimcmd,
|
||||||
\ 'endlocal'], asyncbat)
|
\ 'endlocal'], asyncbat)
|
||||||
|
endif
|
||||||
|
|
||||||
" Define command
|
" Define command
|
||||||
let cmd = '!start /b ' . asyncbat . ' & del ' . asyncbat
|
let cmd = '!start /b ' . asyncbat . ' & del ' . asyncbat
|
||||||
@@ -242,12 +273,25 @@ function! LatexBox_Latexmk(force)
|
|||||||
let callback = shellescape(callbackfunc).'"(\"'.basepath.'\",$?)"'
|
let callback = shellescape(callbackfunc).'"(\"'.basepath.'\",$?)"'
|
||||||
let vimcmd = g:vim_program . ' --servername ' . v:servername
|
let vimcmd = g:vim_program . ' --servername ' . v:servername
|
||||||
\ . ' --remote-expr ' . callback
|
\ . ' --remote-expr ' . callback
|
||||||
|
let scallback = shellescape(callbackfunc).'"(\"'.basepath.'\",0)"'
|
||||||
|
let svimcmd = g:vim_program . ' --servername ' . v:servername
|
||||||
|
\ . ' --remote-expr ' . scallback
|
||||||
|
let fcallback = shellescape(callbackfunc).'"(\"'.basepath.'\",1)"'
|
||||||
|
let fvimcmd = g:vim_program . ' --servername ' . v:servername
|
||||||
|
\ . ' --remote-expr ' . fcallback
|
||||||
|
|
||||||
" Define command
|
" Define command
|
||||||
" Note: Here we escape '%' because it may be given as a user option
|
" Note: Here we escape '%' because it may be given as a user option
|
||||||
" through g:LatexBox_latexmk_options, for instance with
|
" through g:LatexBox_latexmk_options, for instance with
|
||||||
" g:Latex..._options = "-pdflatex='pdflatex -synctex=1 \%O \%S'"
|
" g:Latex..._options = "-pdflatex='pdflatex -synctex=1 \%O \%S'"
|
||||||
|
if g:LatexBox_latexmk_preview_continuously
|
||||||
|
let cmd = vimsetpid . ' ; '
|
||||||
|
\ . 'export SUCCESSCMD=' . shellescape(svimcmd) . ' '
|
||||||
|
\ . ' FAILURECMD=' . shellescape(fvimcmd) . ' ; '
|
||||||
|
\ . escape(cmd, '%')
|
||||||
|
else
|
||||||
let cmd = vimsetpid . ' ; ' . escape(cmd, '%') . ' ; ' . vimcmd
|
let cmd = vimsetpid . ' ; ' . escape(cmd, '%') . ' ; ' . vimcmd
|
||||||
|
endif
|
||||||
let cmd = '! (' . cmd . ') >/dev/null &'
|
let cmd = '! (' . cmd . ') >/dev/null &'
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@@ -281,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
|
||||||
@@ -301,7 +345,15 @@ endfunction
|
|||||||
|
|
||||||
" LatexmkClean {{{
|
" LatexmkClean {{{
|
||||||
function! LatexBox_LatexmkClean(cleanall)
|
function! LatexBox_LatexmkClean(cleanall)
|
||||||
|
" Check if latexmk is installed
|
||||||
|
if !executable('latexmk')
|
||||||
|
echomsg "Error: LaTeX-Box relies on latexmk for compilation, but it" .
|
||||||
|
\ " is not installed!"
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
|
||||||
let basename = LatexBox_GetTexBasename(1)
|
let basename = LatexBox_GetTexBasename(1)
|
||||||
|
|
||||||
if has_key(g:latexmk_running_pids, basename)
|
if has_key(g:latexmk_running_pids, basename)
|
||||||
echomsg "don't clean when latexmk is running"
|
echomsg "don't clean when latexmk is running"
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -312,7 +312,7 @@ function! s:ReadTOC(auxfile, texfile, ...)
|
|||||||
if included != ''
|
if included != ''
|
||||||
" append the input TOX to `toc` and `fileindices`
|
" append the input TOX to `toc` and `fileindices`
|
||||||
let newaux = prefix . '/' . included
|
let newaux = prefix . '/' . included
|
||||||
let newtex = fnamemodify(fnamemodify(newaux, ':t:r') . '.tex', ':p')
|
let newtex = fnamemodify(newaux, ':r') . '.tex'
|
||||||
call s:ReadTOC(newaux, newtex, toc, fileindices)
|
call s:ReadTOC(newaux, newtex, toc, fileindices)
|
||||||
continue
|
continue
|
||||||
endif
|
endif
|
||||||
@@ -344,10 +344,11 @@ function! s:ReadTOC(auxfile, texfile, ...)
|
|||||||
let page = ''
|
let page = ''
|
||||||
endif
|
endif
|
||||||
" parse section number
|
" parse section number
|
||||||
|
let secnum = ''
|
||||||
if len(tree[1]) > 3 && empty(tree[1][1])
|
if len(tree[1]) > 3 && empty(tree[1][1])
|
||||||
call remove(tree[1], 1)
|
call remove(tree[1], 1)
|
||||||
endif
|
endif
|
||||||
if len(tree[1]) > 1
|
if len(tree[1]) > 1 && tree[1][0] =~ '\(numberline\|tocsection\)'
|
||||||
if !empty(tree[1][1])
|
if !empty(tree[1][1])
|
||||||
let secnum = LatexBox_TreeToTex(tree[1][1])
|
let secnum = LatexBox_TreeToTex(tree[1][1])
|
||||||
let secnum = substitute(secnum, '\\\S\+\s', '', 'g')
|
let secnum = substitute(secnum, '\\\S\+\s', '', 'g')
|
||||||
@@ -356,12 +357,12 @@ function! s:ReadTOC(auxfile, texfile, ...)
|
|||||||
endif
|
endif
|
||||||
let tree = tree[1][2:]
|
let tree = tree[1][2:]
|
||||||
else
|
else
|
||||||
let secnum = ''
|
|
||||||
let tree = tree[1]
|
let tree = tree[1]
|
||||||
endif
|
endif
|
||||||
" parse section title
|
" parse section title
|
||||||
let text = LatexBox_TreeToTex(tree)
|
let text = LatexBox_TreeToTex(tree)
|
||||||
let text = substitute(text, '^{\+\|}\+$', '', 'g')
|
let text = substitute(text, '^{\+\|}\+$', '', 'g')
|
||||||
|
let text = substitute(text, '\*', '', 'g')
|
||||||
|
|
||||||
" add TOC entry
|
" add TOC entry
|
||||||
call add(fileindices[texfile], len(toc))
|
call add(fileindices[texfile], len(toc))
|
||||||
@@ -436,10 +437,11 @@ endfunction
|
|||||||
function! s:FindClosestSection(toc, fileindices)
|
function! s:FindClosestSection(toc, fileindices)
|
||||||
let file = expand('%:p')
|
let file = expand('%:p')
|
||||||
if !has_key(a:fileindices, file)
|
if !has_key(a:fileindices, file)
|
||||||
echoe 'Current file is not included in main tex file ' . LatexBox_GetMainTexFile() . '.'
|
return 0
|
||||||
endif
|
endif
|
||||||
|
|
||||||
let imax = len(a:fileindices[file])
|
let imax = len(a:fileindices[file])
|
||||||
|
if imax > 0
|
||||||
let imin = 0
|
let imin = 0
|
||||||
while imin < imax - 1
|
while imin < imax - 1
|
||||||
let i = (imax + imin) / 2
|
let i = (imax + imin) / 2
|
||||||
@@ -455,8 +457,10 @@ function! s:FindClosestSection(toc, fileindices)
|
|||||||
let imin = i
|
let imin = i
|
||||||
endif
|
endif
|
||||||
endwhile
|
endwhile
|
||||||
|
|
||||||
return a:fileindices[file][imin]
|
return a:fileindices[file][imin]
|
||||||
|
else
|
||||||
|
return 0
|
||||||
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
let s:ConvBackPats = map([
|
let s:ConvBackPats = map([
|
||||||
|
|||||||
@@ -80,24 +80,14 @@ function! s:TOCActivate(close)
|
|||||||
|
|
||||||
execute b:calling_win . 'wincmd w'
|
execute b:calling_win . 'wincmd w'
|
||||||
|
|
||||||
let bnr = bufnr(entry['file'])
|
let files = [entry['file']]
|
||||||
if bnr == -1
|
for line in filter(readfile(entry['file']), 'v:val =~ ''\\input{''')
|
||||||
execute 'badd ' . entry['file']
|
call add(files, matchstr(line, '{\zs.*\ze\(\.tex\)\?}') . '.tex')
|
||||||
let bnr = bufnr(entry['file'])
|
endfor
|
||||||
endif
|
|
||||||
|
|
||||||
execute 'buffer! ' . bnr
|
" Find section in buffer (or inputted files)
|
||||||
|
call s:TOCFindMatch('\\' . entry['level'] . '\_\s*{' . titlestr . '}',
|
||||||
" skip duplicates
|
\ duplicates, files)
|
||||||
while duplicates > 0
|
|
||||||
if search('\\' . entry['level'] . '\_\s*{' . titlestr . '}', 'ws')
|
|
||||||
let duplicates -= 1
|
|
||||||
endif
|
|
||||||
endwhile
|
|
||||||
|
|
||||||
if search('\\' . entry['level'] . '\_\s*{' . titlestr . '}', 'ws')
|
|
||||||
normal zv
|
|
||||||
endif
|
|
||||||
|
|
||||||
if a:close
|
if a:close
|
||||||
if g:LatexBox_split_resize
|
if g:LatexBox_split_resize
|
||||||
@@ -109,6 +99,30 @@ function! s:TOCActivate(close)
|
|||||||
endif
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
" {{{2 TOCFindMatch
|
||||||
|
function! s:TOCFindMatch(strsearch,duplicates,files)
|
||||||
|
|
||||||
|
call s:TOCOpenBuf(a:files[0])
|
||||||
|
let dups = a:duplicates
|
||||||
|
|
||||||
|
" Skip duplicates
|
||||||
|
while dups > 0
|
||||||
|
if search(a:strsearch, 'w')
|
||||||
|
let dups -= 1
|
||||||
|
else
|
||||||
|
break
|
||||||
|
endif
|
||||||
|
endwhile
|
||||||
|
|
||||||
|
if search(a:strsearch, 'w')
|
||||||
|
normal! zv
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
|
||||||
|
call s:TOCFindMatch(a:strsearch,dups,a:files[1:])
|
||||||
|
|
||||||
|
endfunction
|
||||||
|
|
||||||
" {{{2 TOCFoldLevel
|
" {{{2 TOCFoldLevel
|
||||||
function! TOCFoldLevel(lnum)
|
function! TOCFoldLevel(lnum)
|
||||||
let line = getline(a:lnum)
|
let line = getline(a:lnum)
|
||||||
@@ -140,12 +154,25 @@ function! TOCFoldLevel(lnum)
|
|||||||
" Return previous fold level
|
" Return previous fold level
|
||||||
return "="
|
return "="
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
" {{{2 TOCFoldText
|
" {{{2 TOCFoldText
|
||||||
function! TOCFoldText()
|
function! TOCFoldText()
|
||||||
let parts = matchlist(getline(v:foldstart), '^\(.*\)\t\(.*\)$')
|
let parts = matchlist(getline(v:foldstart), '^\(.*\)\t\(.*\)$')
|
||||||
return printf('%-8s%-72s', parts[1], parts[2])
|
return printf('%-8s%-72s', parts[1], parts[2])
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
" {{{2 TOCOpenBuf
|
||||||
|
function! s:TOCOpenBuf(file)
|
||||||
|
|
||||||
|
let bnr = bufnr(a:file)
|
||||||
|
if bnr == -1
|
||||||
|
execute 'badd ' . a:file
|
||||||
|
let bnr = bufnr(a:file)
|
||||||
|
endif
|
||||||
|
execute 'buffer! ' . bnr
|
||||||
|
|
||||||
|
endfunction
|
||||||
|
|
||||||
" }}}1
|
" }}}1
|
||||||
|
|
||||||
" {{{1 Mappings
|
" {{{1 Mappings
|
||||||
|
|||||||
@@ -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
107
ftplugin/mustache.vim
Normal 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
|
||||||
@@ -33,14 +33,14 @@ endif
|
|||||||
setlocal include=\\<\\(use\\\|require\\)\\>
|
setlocal include=\\<\\(use\\\|require\\)\\>
|
||||||
setlocal includeexpr=substitute(substitute(substitute(v:fname,'::','/','g'),'->\*','',''),'$','.pm','')
|
setlocal includeexpr=substitute(substitute(substitute(v:fname,'::','/','g'),'->\*','',''),'$','.pm','')
|
||||||
setlocal define=[^A-Za-z_]
|
setlocal define=[^A-Za-z_]
|
||||||
|
setlocal iskeyword+=:
|
||||||
|
|
||||||
" The following line changes a global variable but is necessary to make
|
" The following line changes a global variable but is necessary to make
|
||||||
" gf and similar commands work. The change to iskeyword was incorrect.
|
" gf and similar commands work. Thanks to Andrew Pimlott for pointing
|
||||||
" Thanks to Andrew Pimlott for pointing out the problem. If this causes a
|
" out the problem. If this causes a problem for you, add an
|
||||||
" problem for you, add an after/ftplugin/perl.vim file that contains
|
" after/ftplugin/perl.vim file that contains
|
||||||
" set isfname-=:
|
" set isfname-=:
|
||||||
set isfname+=:
|
set isfname+=:
|
||||||
set iskeyword+=:
|
|
||||||
|
|
||||||
" Set this once, globally.
|
" Set this once, globally.
|
||||||
if !exists("perlpath")
|
if !exists("perlpath")
|
||||||
@@ -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
|
||||||
|
|||||||
69
ftplugin/r.vim
Normal file
69
ftplugin/r.vim
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
" ftplugin for R files
|
||||||
|
"
|
||||||
|
" Author: Iago Mosqueira <i.mosqueira@ic.ac.uk>
|
||||||
|
" Author: Johannes Ranke <jranke@uni-bremen.de>
|
||||||
|
" Author: Fernando Henrique Ferraz Pereira da Rosa <feferraz@ime.usp.br>
|
||||||
|
" Maintainer: Johannes Ranke <jranke@uni-bremen.de>
|
||||||
|
" Last Change: 2007 Nov 21
|
||||||
|
" SVN: $Id: r.vim 75 2007-11-21 13:34:02Z ranke $
|
||||||
|
"
|
||||||
|
" Code written in vim is sent to R through a perl pipe
|
||||||
|
" [funnel.pl, by Larry Clapp <vim@theclapp.org>], as individual lines,
|
||||||
|
" blocks, or the whole file.
|
||||||
|
|
||||||
|
" Press <F2> to open a new xterm with a new R interpreter listening
|
||||||
|
" to its standard input (you can type R commands into the xterm)
|
||||||
|
" as well as to code pasted from within vim.
|
||||||
|
"
|
||||||
|
" After selecting a visual block, 'r' sends it to the R interpreter
|
||||||
|
"
|
||||||
|
" In insert mode, <M-Enter> sends the active line to R and moves to the next
|
||||||
|
" line (write and process mode).
|
||||||
|
"
|
||||||
|
" Maps:
|
||||||
|
" <F2> Start a listening R interpreter in new xterm
|
||||||
|
" <F3> Start a listening R-devel interpreter in new xterm
|
||||||
|
" <F4> Start a listening R --vanilla interpreter in new xterm
|
||||||
|
" <F5> Run current file
|
||||||
|
" <F9> Run line under cursor
|
||||||
|
" r Run visual block
|
||||||
|
" <M-Enter> Write and process
|
||||||
|
|
||||||
|
" Only do this when not yet done for this buffer
|
||||||
|
if exists("b:did_ftplugin")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Don't load another plugin for this buffer
|
||||||
|
let b:did_ftplugin = 1
|
||||||
|
|
||||||
|
" Disable backup for .r-pipe
|
||||||
|
setl backupskip=.*pipe
|
||||||
|
|
||||||
|
" Set tabstop so it is compatible with the emacs edited code. Personally, I
|
||||||
|
" prefer shiftwidth=2, which I have in my .vimrc anyway
|
||||||
|
set expandtab
|
||||||
|
set shiftwidth=4
|
||||||
|
set tabstop=8
|
||||||
|
|
||||||
|
" Start a listening R interpreter in new xterm
|
||||||
|
noremap <buffer> <F2> :!xterm -T 'R' -e funnel.pl ~/.r-pipe "R && echo -e 'Interpreter has finished. Exiting. Goodbye.\n'"&<CR><CR>
|
||||||
|
|
||||||
|
" Start a listening R-devel interpreter in new xterm
|
||||||
|
noremap <buffer> <F3> :!xterm -T 'R' -e funnel.pl ~/.r-pipe "R-devel && echo 'Interpreter has finished. Exiting. Goodbye.'"&<CR><CR>
|
||||||
|
|
||||||
|
" Start a listening R --vanilla interpreter in new xterm
|
||||||
|
noremap <buffer> <F4> :!xterm -T 'R' -e funnel.pl ~/.r-pipe "R -vanilla && echo 'Interpreter has finished. Exiting. Goodbye.'"&<CR><CR>
|
||||||
|
|
||||||
|
" Send line under cursor to R
|
||||||
|
noremap <buffer> <F9> :execute line(".") 'w >> ~/.r-pipe'<CR>
|
||||||
|
inoremap <buffer> <F9> <Esc> :execute line(".") 'w >> ~/.r-pipe'<CR>
|
||||||
|
|
||||||
|
" Send visual selected block to R
|
||||||
|
vnoremap <buffer> r :w >> ~/.r-pipe<CR>
|
||||||
|
|
||||||
|
" Write and process mode (somehow mapping <C-Enter> does not work)
|
||||||
|
inoremap <M-Enter> <Esc>:execute line(".") 'w >> ~/.r-pipe'<CR>o
|
||||||
|
|
||||||
|
" Send current file to R
|
||||||
|
noremap <buffer> <F5> :execute '1 ,' line("$") 'w >> ~/.r-pipe' <CR><CR>
|
||||||
48
ftplugin/rhelp.vim
Normal file
48
ftplugin/rhelp.vim
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
" ftplugin for R help files
|
||||||
|
"
|
||||||
|
" Author: Johannes Ranke <jranke@uni-bremen.de>
|
||||||
|
" Last Change: 2007 Nov 21
|
||||||
|
" SVN: $Id: rhelp.vim 75 2007-11-21 13:34:02Z ranke $
|
||||||
|
"
|
||||||
|
" Usage:
|
||||||
|
"
|
||||||
|
" Press <F2> to open a new xterm with a new R interpreter listening
|
||||||
|
" to its standard input (you can type R commands into the xterm)
|
||||||
|
" as well as to code pasted from within vim.
|
||||||
|
"
|
||||||
|
" After selecting a visual block, 'r' sends it to the R interpreter
|
||||||
|
"
|
||||||
|
" Add to filetypes.vim, if you don't use vim 7
|
||||||
|
" au BufNewFile,BufRead *.Rd,*.rd setf rhelp
|
||||||
|
"
|
||||||
|
" Maps:
|
||||||
|
" <F2> Start a listening R interpreter in new xterm
|
||||||
|
" <F9> Run line under cursor
|
||||||
|
" r Run visual block
|
||||||
|
" <M-Enter> Write and process R code
|
||||||
|
|
||||||
|
" Only do this when not yet done for this buffer
|
||||||
|
if exists("b:did_ftplugin")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Don't load another plugin for this buffer
|
||||||
|
let b:did_ftplugin = 1
|
||||||
|
|
||||||
|
" Set tabbing
|
||||||
|
set expandtab
|
||||||
|
set tabstop=2
|
||||||
|
set shiftwidth=2
|
||||||
|
|
||||||
|
" Start a listening R interpreter in new xterm
|
||||||
|
noremap <buffer> <F2> :!xterm -T 'R' -e funnel.pl ~/.r-pipe "R && echo -e 'Interpreter has finished. Exiting. Goodbye.\n'"&<CR><CR>
|
||||||
|
|
||||||
|
" Send line under cursor to R
|
||||||
|
noremap <buffer> <F9> :execute line(".") 'w >> ~/.r-pipe'<CR>
|
||||||
|
inoremap <buffer> <F9> <Esc> :execute line(".") 'w >> ~/.r-pipe'<CR>
|
||||||
|
|
||||||
|
" Send visual selected block to R
|
||||||
|
vnoremap <buffer> r :w >> ~/.r-pipe<CR>
|
||||||
|
|
||||||
|
" Write and process mode (somehow mapping <C-Enter> does not work)
|
||||||
|
inoremap <M-Enter> <Esc>:execute line(".") 'w >> ~/.r-pipe'<CR>o
|
||||||
59
ftplugin/rnoweb.vim
Normal file
59
ftplugin/rnoweb.vim
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
" ftplugin for Sweave files containing both LaTeX and R code
|
||||||
|
"
|
||||||
|
" Maintainer: Johannes Ranke <jranke@uni-bremen.de>
|
||||||
|
" Last Change: 2007 Nov 21
|
||||||
|
" SVN: $Id: rnoweb.vim 75 2007-11-21 13:34:02Z ranke $
|
||||||
|
"
|
||||||
|
" Usage:
|
||||||
|
"
|
||||||
|
" Press <F2> to open a new xterm with a new R interpreter listening
|
||||||
|
" to its standard input (you can type R commands into the xterm)
|
||||||
|
" as well as to code pasted from within vim.
|
||||||
|
"
|
||||||
|
" A Makefile for producing R noweb files is in included in my Vim script
|
||||||
|
" R.vim:
|
||||||
|
" http://www.vim.org/scripts/script.php?script_id=1048
|
||||||
|
" You can also look in my SVN repository under:
|
||||||
|
" http://kri/viewcvs/*checkout*/Makefile.rnoweb?root=vim
|
||||||
|
"
|
||||||
|
"
|
||||||
|
" After selecting a visual block, 'r' sends it to the R interpreter
|
||||||
|
"
|
||||||
|
" Add to filetypes.vim, if you don't use vim 7
|
||||||
|
" au BufNewFile,BufRead *.Rnw,*.rnw setf rnoweb
|
||||||
|
" and/or
|
||||||
|
" au BufNewFile,BufRead *.Snw,*.snw setf rnoweb
|
||||||
|
"
|
||||||
|
" Maps:
|
||||||
|
" <F2> Start a listening R interpreter in new xterm
|
||||||
|
" <F9> Run line under cursor
|
||||||
|
" r Run visual block
|
||||||
|
" <M-Enter> Write and process R code
|
||||||
|
|
||||||
|
" Only do this when not yet done for this buffer
|
||||||
|
if exists("b:did_ftplugin")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Don't load another plugin for this buffer
|
||||||
|
let b:did_ftplugin = 1
|
||||||
|
|
||||||
|
" Disable backup for .r-pipe
|
||||||
|
setl backupskip=.*pipe
|
||||||
|
|
||||||
|
" Set R friendly tabbing
|
||||||
|
set expandtab
|
||||||
|
set shiftwidth=2
|
||||||
|
|
||||||
|
" Start a listening R interpreter in new xterm
|
||||||
|
noremap <buffer> <F2> :!xterm -T 'R' -e funnel.pl ~/.r-pipe "R && echo -e 'Interpreter has finished. Exiting. Goodbye.\n'"&<CR><CR>
|
||||||
|
|
||||||
|
" Send line under cursor to R
|
||||||
|
noremap <buffer> <F9> :execute line(".") 'w >> ~/.r-pipe'<CR>
|
||||||
|
inoremap <buffer> <F9> <Esc> :execute line(".") 'w >> ~/.r-pipe'<CR>
|
||||||
|
|
||||||
|
" Send visual selected block to R
|
||||||
|
vnoremap <buffer> r :w >> ~/.r-pipe<CR>
|
||||||
|
|
||||||
|
" Write and process mode (somehow mapping <C-Enter> does not work)
|
||||||
|
inoremap <M-Enter> <Esc>:execute line(".") 'w >> ~/.r-pipe'<CR>o
|
||||||
@@ -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\\|" .
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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,
|
||||||
@@ -117,16 +116,21 @@ if globpath(&rtp, 'plugin/fuf.vim') != ''
|
|||||||
return scala#GetDirForFuzzyFinder(a:from, 'src/../')
|
return scala#GetDirForFuzzyFinder(a:from, 'src/../')
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
nnoremap <buffer> <silent> ,ft :FufFile <c-r>=scala#GetTestDirForFuzzyFinder('%:p:h')<cr><cr>
|
" If you want to disable the default key mappings, write the following line in
|
||||||
nnoremap <buffer> <silent> ,fs :FufFile <c-r>=scala#GetMainDirForFuzzyFinder('%:p:h')<cr><cr>
|
" your ~/.vimrc
|
||||||
nnoremap <buffer> <silent> ,fr :FufFile <c-r>=scala#GetRootDirForFuzzyFinder('%:p:h')<cr><cr>
|
" let g:scala_use_default_keymappings = 0
|
||||||
|
if get(g:, 'scala_use_default_keymappings', 1)
|
||||||
|
nnoremap <buffer> <silent> <Leader>ft :FufFile <c-r>=scala#GetTestDirForFuzzyFinder('%:p:h')<cr><cr>
|
||||||
|
nnoremap <buffer> <silent> <Leader>fs :FufFile <c-r>=scala#GetMainDirForFuzzyFinder('%:p:h')<cr><cr>
|
||||||
|
nnoremap <buffer> <silent> <Leader>fr :FufFile <c-r>=scala#GetRootDirForFuzzyFinder('%:p:h')<cr><cr>
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" If you want to disable the default key mappings, write the following line in
|
" If you want to disable the default key mappings, write the following line in
|
||||||
" your ~/.vimrc
|
" your ~/.vimrc
|
||||||
" let g:scala_use_default_keymappings = 0
|
" let g:scala_use_default_keymappings = 0
|
||||||
if get(g:, 'scala_use_default_keymappings', 1)
|
if get(g:, 'scala_use_default_keymappings', 1)
|
||||||
nnoremap <buffer> ,jt :call JustifyCurrentLine()<cr>
|
nnoremap <buffer> <Leader>jt :call JustifyCurrentLine()<cr>
|
||||||
endif
|
endif
|
||||||
|
|
||||||
"
|
"
|
||||||
@@ -164,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>
|
||||||
|
|||||||
@@ -1,8 +1,10 @@
|
|||||||
compiler typescript
|
compiler typescript
|
||||||
|
|
||||||
setlocal autoindent
|
setlocal autoindent
|
||||||
setlocal cindent
|
|
||||||
setlocal smartindent
|
setlocal smartindent
|
||||||
setlocal indentexpr&
|
setlocal indentexpr&
|
||||||
|
|
||||||
|
setlocal cindent
|
||||||
|
setlocal cino=j1J1
|
||||||
|
|
||||||
setlocal commentstring=//\ %s
|
setlocal commentstring=//\ %s
|
||||||
|
|||||||
15
indent/arduino.vim
Normal file
15
indent/arduino.vim
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
" Vim indent file
|
||||||
|
" Language: Arduino
|
||||||
|
" Maintainer: Kevin Sjöberg <kev.sjoberg@gmail.com>
|
||||||
|
" Last Change: 2014 Feb 28
|
||||||
|
|
||||||
|
" Only load this indent file when no other was loaded.
|
||||||
|
if exists("b:did_indent")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
let b:did_indent = 1
|
||||||
|
|
||||||
|
" C++ indenting is built-in, thus this is very simple
|
||||||
|
setlocal cindent
|
||||||
|
|
||||||
|
let b:undo_indent = "setl cin<"
|
||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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,11 +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: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)
|
||||||
|
|
||||||
@@ -38,27 +40,60 @@ function! GetElixirIndent(...)
|
|||||||
return 0
|
return 0
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if synIDattr(synID(v:lnum, 1, 1), "name") !~ '\(Comment\|String\)$'
|
" TODO: Remove these 2 lines
|
||||||
let splited_line = split(getline(lnum), '\zs')
|
" 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
|
||||||
|
let current_line = getline(v:lnum)
|
||||||
|
let last_line = getline(lnum)
|
||||||
|
|
||||||
|
let splited_line = split(last_line, '\zs')
|
||||||
let opened_symbol = 0
|
let opened_symbol = 0
|
||||||
let opened_symbol += count(splited_line, '[') - count(splited_line, ']')
|
let opened_symbol += count(splited_line, '[') - count(splited_line, ']')
|
||||||
let opened_symbol += count(splited_line, '{') - count(splited_line, '}')
|
let opened_symbol += count(splited_line, '{') - count(splited_line, '}')
|
||||||
|
|
||||||
let ind += opened_symbol * &sw
|
let ind += opened_symbol * &sw
|
||||||
|
|
||||||
if getline(lnum) =~ s:indent_keywords .
|
if last_line =~ s:indent_keywords
|
||||||
\ '\|^\s*\%(.*->\)$'
|
|
||||||
let ind += &sw
|
let ind += &sw
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if getline(v:lnum) =~ s:deindent_keywords
|
" if line starts with pipeline
|
||||||
|
" and last line is an attribution
|
||||||
|
" indents pipeline in same level as attribution
|
||||||
|
if current_line =~ s:pipeline &&
|
||||||
|
\ last_line =~ '^[^=]\+=.\+$'
|
||||||
|
let b:old_ind = ind
|
||||||
|
let ind = float2nr(matchend(last_line, '=\s*[^ ]') / &sw) * &sw
|
||||||
|
endif
|
||||||
|
|
||||||
|
" if last line starts with pipeline
|
||||||
|
" and current line doesn't start with pipeline
|
||||||
|
" returns the indentation before the pipeline
|
||||||
|
if last_line =~ s:pipeline &&
|
||||||
|
\ current_line !~ s:pipeline
|
||||||
|
let ind = b:old_ind
|
||||||
|
endif
|
||||||
|
|
||||||
|
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
|
||||||
|
|||||||
@@ -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({})
|
||||||
|
|||||||
@@ -130,12 +130,14 @@ call add(s:tags, 'rt')
|
|||||||
call add(s:tags, 'ruby')
|
call add(s:tags, 'ruby')
|
||||||
call add(s:tags, 'section')
|
call add(s:tags, 'section')
|
||||||
call add(s:tags, 'summary')
|
call add(s:tags, 'summary')
|
||||||
call add(s:tags, 'template')
|
|
||||||
call add(s:tags, 'time')
|
call add(s:tags, 'time')
|
||||||
call add(s:tags, 'video')
|
call add(s:tags, 'video')
|
||||||
call add(s:tags, 'bdi')
|
call add(s:tags, 'bdi')
|
||||||
call add(s:tags, 'data')
|
call add(s:tags, 'data')
|
||||||
|
|
||||||
|
" Web Component
|
||||||
|
call add(s:tags, 'template')
|
||||||
|
|
||||||
" Common inline used SVG elements
|
" Common inline used SVG elements
|
||||||
call add(s:tags, 'clipPath')
|
call add(s:tags, 'clipPath')
|
||||||
call add(s:tags, 'defs')
|
call add(s:tags, 'defs')
|
||||||
@@ -167,6 +169,16 @@ call add(s:tags, 'tr')
|
|||||||
call add(s:tags, 'th')
|
call add(s:tags, 'th')
|
||||||
call add(s:tags, 'td')
|
call add(s:tags, 'td')
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
let s:omittable = [
|
||||||
|
\ ['address', 'article', 'aside', 'blockquote', 'dir', 'div', 'dl', 'fieldset', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'header', 'hr', 'menu', 'nav', 'ol', 'p', 'pre', 'section', 'table', 'ul'],
|
||||||
|
\ ['dt', 'dd'],
|
||||||
|
\ ['li'],
|
||||||
|
\ ['thead', 'tbody', 'tfoot'],
|
||||||
|
\ ['th', 'td'],
|
||||||
|
\]
|
||||||
|
|
||||||
if exists('g:html_exclude_tags')
|
if exists('g:html_exclude_tags')
|
||||||
for tag in g:html_exclude_tags
|
for tag in g:html_exclude_tags
|
||||||
call remove(s:tags, index(s:tags, tag))
|
call remove(s:tags, index(s:tags, tag))
|
||||||
@@ -331,11 +343,35 @@ fun! HtmlIndentGet(lnum)
|
|||||||
let ind = ind - 1
|
let ind = ind - 1
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
let lind = indent(lnum)
|
||||||
|
|
||||||
|
" for tags in s:omittable
|
||||||
|
" let tags_exp = '<\(' . join(tags, '\|') . '\)>'
|
||||||
|
" let close_tags_exp = '</\(' . join(tags, '\|') . '\)>'
|
||||||
|
" if getline(a:lnum) =~ tags_exp
|
||||||
|
" let block_start = search('^'.repeat(' ', lind + (&sw * ind - 1)).'\S' , 'bnW')
|
||||||
|
" let prev_tag = search(tags_exp, 'bW', block_start)
|
||||||
|
" let prev_closetag = search(close_tags_exp, 'W', a:lnum)
|
||||||
|
" if prev_tag && !prev_closetag
|
||||||
|
" let ind = ind - 1
|
||||||
|
" endif
|
||||||
|
" endif
|
||||||
|
|
||||||
|
" if getline(a:lnum) =~ '</\w\+>'
|
||||||
|
" let block_start = search('^'.repeat(' ', lind + (&sw * ind - 1)).'\S' , 'bnW')
|
||||||
|
" let prev_tag = search(tags_exp, 'bW', block_start)
|
||||||
|
" let prev_closetag = search(close_tags_exp, 'W', a:lnum)
|
||||||
|
" if prev_tag && !prev_closetag
|
||||||
|
" let ind = ind - 1
|
||||||
|
" endif
|
||||||
|
" endif
|
||||||
|
" endfor
|
||||||
|
|
||||||
if restore_ic == 0
|
if restore_ic == 0
|
||||||
setlocal noic
|
setlocal noic
|
||||||
endif
|
endif
|
||||||
|
|
||||||
return indent(lnum) + (&sw * ind)
|
return lind + (&sw * ind)
|
||||||
endfun
|
endfun
|
||||||
|
|
||||||
let &cpo = s:cpo_save
|
let &cpo = s:cpo_save
|
||||||
|
|||||||
@@ -8,4 +8,3 @@ if exists("b:did_indent")
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
runtime! indent/css.vim
|
runtime! indent/css.vim
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
121
indent/ruby.vim
121
indent/ruby.vim
@@ -13,12 +13,18 @@ if exists("b:did_indent")
|
|||||||
endif
|
endif
|
||||||
let b:did_indent = 1
|
let b:did_indent = 1
|
||||||
|
|
||||||
|
if !exists('g:ruby_indent_access_modifier_style')
|
||||||
|
" Possible values: "normal", "indent", "outdent"
|
||||||
|
let g:ruby_indent_access_modifier_style = 'normal'
|
||||||
|
endif
|
||||||
|
|
||||||
setlocal nosmartindent
|
setlocal nosmartindent
|
||||||
|
|
||||||
" Now, set up our indentation expression and keys that trigger it.
|
" Now, set up our indentation expression and keys that trigger it.
|
||||||
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
|
||||||
|
|
||||||
" Only define the function once.
|
" Only define the function once.
|
||||||
if exists("*GetRubyIndent")
|
if exists("*GetRubyIndent")
|
||||||
@@ -34,7 +40,7 @@ set cpo&vim
|
|||||||
" Regex of syntax group names that are or delimit strings/symbols or are comments.
|
" Regex of syntax group names that are or delimit strings/symbols or are comments.
|
||||||
let s:syng_strcom = '\<ruby\%(Regexp\|RegexpDelimiter\|RegexpEscape' .
|
let s:syng_strcom = '\<ruby\%(Regexp\|RegexpDelimiter\|RegexpEscape' .
|
||||||
\ '\|Symbol\|String\|StringDelimiter\|StringEscape\|ASCIICode' .
|
\ '\|Symbol\|String\|StringDelimiter\|StringEscape\|ASCIICode' .
|
||||||
\ '\|Interpolation\|NoInterpolation\|Comment\|Documentation\)\>'
|
\ '\|Interpolation\|InterpolationDelimiter\|NoInterpolation\|Comment\|Documentation\)\>'
|
||||||
|
|
||||||
" Regex of syntax group names that are strings.
|
" Regex of syntax group names that are strings.
|
||||||
let s:syng_string =
|
let s:syng_string =
|
||||||
@@ -49,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\):\@!\>'
|
||||||
|
|
||||||
@@ -64,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.
|
||||||
@@ -92,6 +100,12 @@ let s:bracket_continuation_regex = '%\@<!\%([({[]\)\s*\%(#.*\)\=$'
|
|||||||
" Regex that defines the first part of a splat pattern
|
" Regex that defines the first part of a splat pattern
|
||||||
let s:splat_regex = '[[,(]\s*\*\s*\%(#.*\)\=$'
|
let s:splat_regex = '[[,(]\s*\*\s*\%(#.*\)\=$'
|
||||||
|
|
||||||
|
" Regex that describes all indent access modifiers
|
||||||
|
let s:access_modifier_regex = '\C^\s*\%(public\|protected\|private\)\s*\%(#.*\)\=$'
|
||||||
|
|
||||||
|
" Regex that describes the indent access modifiers (excludes public)
|
||||||
|
let s:indent_access_modifier_regex = '\C^\s*\%(protected\|private\)\s*\%(#.*\)\=$'
|
||||||
|
|
||||||
" Regex that defines blocks.
|
" Regex that defines blocks.
|
||||||
"
|
"
|
||||||
" Note that there's a slight problem with this regex and s:continuation_regex.
|
" Note that there's a slight problem with this regex and s:continuation_regex.
|
||||||
@@ -106,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
|
||||||
" ======================
|
" ======================
|
||||||
|
|
||||||
@@ -165,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.
|
||||||
"
|
"
|
||||||
@@ -175,7 +196,7 @@ function s:GetMSL(lnum)
|
|||||||
" something
|
" something
|
||||||
"
|
"
|
||||||
return msl
|
return msl
|
||||||
elseif s:Match(line, s:non_bracket_continuation_regex) &&
|
elseif s:Match(lnum, s:non_bracket_continuation_regex) &&
|
||||||
\ s:Match(msl, s:non_bracket_continuation_regex)
|
\ s:Match(msl, s:non_bracket_continuation_regex)
|
||||||
" If the current line is a non-bracket continuation and so is the
|
" If the current line is a non-bracket continuation and so is the
|
||||||
" previous one, keep its indent and continue looking for an MSL.
|
" previous one, keep its indent and continue looking for an MSL.
|
||||||
@@ -299,18 +320,39 @@ function s:ExtraBrackets(lnum)
|
|||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function s:Match(lnum, regex)
|
function s:Match(lnum, regex)
|
||||||
let col = match(getline(a:lnum), '\C'.a:regex) + 1
|
let line = getline(a:lnum)
|
||||||
return col > 0 && !s:IsInStringOrComment(a:lnum, col) ? col : 0
|
let offset = match(line, '\C'.a:regex)
|
||||||
|
let col = offset + 1
|
||||||
|
|
||||||
|
while offset > -1 && s:IsInStringOrComment(a:lnum, col)
|
||||||
|
let offset = match(line, '\C'.a:regex, offset + 1)
|
||||||
|
let col = offset + 1
|
||||||
|
endwhile
|
||||||
|
|
||||||
|
if offset > -1
|
||||||
|
return col
|
||||||
|
else
|
||||||
|
return 0
|
||||||
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function s:MatchLast(lnum, regex)
|
" Locates the containing class/module's definition line, ignoring nested classes
|
||||||
let line = getline(a:lnum)
|
" along the way.
|
||||||
let col = match(line, '.*\zs' . a:regex)
|
"
|
||||||
while col != -1 && s:IsInStringOrComment(a:lnum, col)
|
function! s:FindContainingClass()
|
||||||
let line = strpart(line, 0, col)
|
let saved_position = getpos('.')
|
||||||
let col = match(line, '.*' . a:regex)
|
|
||||||
endwhile
|
while searchpair(s:end_start_regex, s:end_middle_regex, s:end_end_regex, 'bW',
|
||||||
return col + 1
|
\ s:end_skip_expr) > 0
|
||||||
|
if expand('<cword>') =~# '\<class\|module\>'
|
||||||
|
let found_lnum = line('.')
|
||||||
|
call setpos('.', saved_position)
|
||||||
|
return found_lnum
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
call setpos('.', saved_position)
|
||||||
|
return 0
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
" 3. GetRubyIndent Function {{{1
|
" 3. GetRubyIndent Function {{{1
|
||||||
@@ -333,6 +375,24 @@ function GetRubyIndent(...)
|
|||||||
let line = getline(clnum)
|
let line = getline(clnum)
|
||||||
let ind = -1
|
let ind = -1
|
||||||
|
|
||||||
|
" If this line is an access modifier keyword, align according to the closest
|
||||||
|
" class declaration.
|
||||||
|
if g:ruby_indent_access_modifier_style == 'indent'
|
||||||
|
if s:Match(clnum, s:access_modifier_regex)
|
||||||
|
let class_line = s:FindContainingClass()
|
||||||
|
if class_line > 0
|
||||||
|
return indent(class_line) + &sw
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
elseif g:ruby_indent_access_modifier_style == 'outdent'
|
||||||
|
if s:Match(clnum, s:access_modifier_regex)
|
||||||
|
let class_line = s:FindContainingClass()
|
||||||
|
if class_line > 0
|
||||||
|
return indent(class_line)
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
" If we got a closing bracket on an empty line, find its match and indent
|
" If we got a closing bracket on an empty line, find its match and indent
|
||||||
" according to it. For parentheses we indent to its column - 1, for the
|
" according to it. For parentheses we indent to its column - 1, for the
|
||||||
" others we indent to the containing line's MSL's level. Return -1 if fail.
|
" others we indent to the containing line's MSL's level. Return -1 if fail.
|
||||||
@@ -389,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
|
||||||
" -------------------------------
|
" -------------------------------
|
||||||
|
|
||||||
@@ -409,11 +474,31 @@ function GetRubyIndent(...)
|
|||||||
let line = getline(lnum)
|
let line = getline(lnum)
|
||||||
let ind = indent(lnum)
|
let ind = indent(lnum)
|
||||||
|
|
||||||
|
if g:ruby_indent_access_modifier_style == 'indent'
|
||||||
|
" If the previous line was a private/protected keyword, add a
|
||||||
|
" level of indent.
|
||||||
|
if s:Match(lnum, s:indent_access_modifier_regex)
|
||||||
|
return indent(lnum) + &sw
|
||||||
|
endif
|
||||||
|
elseif g:ruby_indent_access_modifier_style == 'outdent'
|
||||||
|
" If the previous line was a private/protected/public keyword, add
|
||||||
|
" a level of indent, since the keyword has been out-dented.
|
||||||
|
if s:Match(lnum, s:access_modifier_regex)
|
||||||
|
return indent(lnum) + &sw
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
" If the previous line ended with a block opening, add a level of indent.
|
" If the previous line ended with a block opening, add a level of indent.
|
||||||
if s:Match(lnum, s:block_regex)
|
if s:Match(lnum, s:block_regex)
|
||||||
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
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
" Vim indent file
|
" Vim indent file
|
||||||
" Language: Rust
|
" Language: Rust
|
||||||
" Author: Chris Morgan <me@chrismorgan.info>
|
" Author: Chris Morgan <me@chrismorgan.info>
|
||||||
" Last Change: 2013 Jul 10
|
" Last Change: 2013 Oct 29
|
||||||
|
|
||||||
" Only load this indent file when no other was loaded.
|
" Only load this indent file when no other was loaded.
|
||||||
if exists("b:did_indent")
|
if exists("b:did_indent")
|
||||||
@@ -104,8 +104,23 @@ function GetRustIndent(lnum)
|
|||||||
let prevline = s:get_line_trimmed(prevnonblank(a:lnum - 1))
|
let prevline = s:get_line_trimmed(prevnonblank(a:lnum - 1))
|
||||||
if prevline[len(prevline) - 1] == ","
|
if prevline[len(prevline) - 1] == ","
|
||||||
\ && s:get_line_trimmed(a:lnum) !~ "^\\s*[\\[\\]{}]"
|
\ && s:get_line_trimmed(a:lnum) !~ "^\\s*[\\[\\]{}]"
|
||||||
|
\ && prevline !~ "^\\s*fn\\s"
|
||||||
" Oh ho! The previous line ended in a comma! I bet cindent will try to
|
" Oh ho! The previous line ended in a comma! I bet cindent will try to
|
||||||
" take this too far... For now, let's use the previous line's indent
|
" take this too far... For now, let's normally use the previous line's
|
||||||
|
" indent.
|
||||||
|
|
||||||
|
" One case where this doesn't work out is where *this* line contains
|
||||||
|
" square or curly brackets; then we normally *do* want to be indenting
|
||||||
|
" further.
|
||||||
|
"
|
||||||
|
" Another case where we don't want to is one like a function
|
||||||
|
" definition with arguments spread over multiple lines:
|
||||||
|
"
|
||||||
|
" fn foo(baz: Baz,
|
||||||
|
" baz: Baz) // <-- cindent gets this right by itself
|
||||||
|
"
|
||||||
|
" There are probably other cases where we don't want to do this as
|
||||||
|
" well. Add them as needed.
|
||||||
return GetRustIndent(a:lnum - 1)
|
return GetRustIndent(a:lnum - 1)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -1,14 +1,22 @@
|
|||||||
require 'spec_helper'
|
require 'spec_helper'
|
||||||
|
require 'timeout'
|
||||||
|
|
||||||
describe "My Vim plugin" do
|
describe "My Vim plugin" do
|
||||||
languages = Dir["#{$plugin_path}/syntax/*.vim"].map { |f| f.split('/').last.gsub('.vim', '') }
|
|
||||||
|
|
||||||
languages.each do |lang|
|
extensions = `cat ftdetect/polyglot.vim | grep '^au' | tr "\t" ' ' | cut -d ' ' -f 3 | grep -v / | grep -v '^\*$' | grep -v '^$'`.strip
|
||||||
it "should parse .#{lang} file" do
|
|
||||||
write_file "test.#{lang}", ""
|
extensions.gsub!(/\[(.).+\]/) { $1 }.gsub!('*', 'test')
|
||||||
vim.edit "test.#{lang}"
|
|
||||||
|
extensions = extensions.split(/[\n,]/)
|
||||||
|
|
||||||
|
extensions.each do |ext|
|
||||||
|
it "should parse #{ext} file" do
|
||||||
|
Timeout::timeout(5) do
|
||||||
|
write_file "#{ext}", ""
|
||||||
|
vim.edit "#{ext}"
|
||||||
vim.insert "sample"
|
vim.insert "sample"
|
||||||
vim.write
|
vim.write
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|||||||
16
syntax/c.vim
16
syntax/c.vim
@@ -1,7 +1,7 @@
|
|||||||
" Vim syntax file
|
" Vim syntax file
|
||||||
" Language: C
|
" Language: C
|
||||||
" Maintainer: Bram Moolenaar <Bram@vim.org>
|
" Maintainer: Bram Moolenaar <Bram@vim.org>
|
||||||
" Last Change: 2013 Jun 06
|
" Last Change: 2013 Jul 05
|
||||||
|
|
||||||
" Quit when a (custom) syntax file was already loaded
|
" Quit when a (custom) syntax file was already loaded
|
||||||
if exists("b:current_syntax")
|
if exists("b:current_syntax")
|
||||||
@@ -11,6 +11,8 @@ endif
|
|||||||
let s:cpo_save = &cpo
|
let s:cpo_save = &cpo
|
||||||
set cpo&vim
|
set cpo&vim
|
||||||
|
|
||||||
|
let s:ft = matchstr(&ft, '^\([^.]\)\+')
|
||||||
|
|
||||||
" A bunch of useful C keywords
|
" A bunch of useful C keywords
|
||||||
syn keyword cStatement goto break return continue asm
|
syn keyword cStatement goto break return continue asm
|
||||||
syn keyword cLabel case default
|
syn keyword cLabel case default
|
||||||
@@ -110,7 +112,7 @@ endif
|
|||||||
" But avoid matching <::.
|
" But avoid matching <::.
|
||||||
syn cluster cParenGroup contains=cParenError,cIncluded,cSpecial,cCommentSkip,cCommentString,cComment2String,@cCommentGroup,cCommentStartError,cUserLabel,cBitField,cOctalZero,@cCppOutInGroup,cFormat,cNumber,cFloat,cOctal,cOctalError,cNumbersCom
|
syn cluster cParenGroup contains=cParenError,cIncluded,cSpecial,cCommentSkip,cCommentString,cComment2String,@cCommentGroup,cCommentStartError,cUserLabel,cBitField,cOctalZero,@cCppOutInGroup,cFormat,cNumber,cFloat,cOctal,cOctalError,cNumbersCom
|
||||||
if exists("c_no_curly_error")
|
if exists("c_no_curly_error")
|
||||||
if &filetype ==# 'cpp' && !exists("cpp_no_cpp11")
|
if s:ft ==# 'cpp' && !exists("cpp_no_cpp11")
|
||||||
syn region cParen transparent start='(' end=')' contains=ALLBUT,@cParenGroup,cCppParen,cCppString,@Spell
|
syn region cParen transparent start='(' end=')' contains=ALLBUT,@cParenGroup,cCppParen,cCppString,@Spell
|
||||||
" cCppParen: same as cParen but ends at end-of-line; used in cDefine
|
" cCppParen: same as cParen but ends at end-of-line; used in cDefine
|
||||||
syn region cCppParen transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@cParenGroup,cParen,cString,@Spell
|
syn region cCppParen transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@cParenGroup,cParen,cString,@Spell
|
||||||
@@ -124,7 +126,7 @@ if exists("c_no_curly_error")
|
|||||||
syn match cErrInParen display contained "^[{}]\|^<%\|^%>"
|
syn match cErrInParen display contained "^[{}]\|^<%\|^%>"
|
||||||
endif
|
endif
|
||||||
elseif exists("c_no_bracket_error")
|
elseif exists("c_no_bracket_error")
|
||||||
if &filetype ==# 'cpp' && !exists("cpp_no_cpp11")
|
if s:ft ==# 'cpp' && !exists("cpp_no_cpp11")
|
||||||
syn region cParen transparent start='(' end=')' contains=ALLBUT,@cParenGroup,cCppParen,cCppString,@Spell
|
syn region cParen transparent start='(' end=')' contains=ALLBUT,@cParenGroup,cCppParen,cCppString,@Spell
|
||||||
" cCppParen: same as cParen but ends at end-of-line; used in cDefine
|
" cCppParen: same as cParen but ends at end-of-line; used in cDefine
|
||||||
syn region cCppParen transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@cParenGroup,cParen,cString,@Spell
|
syn region cCppParen transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@cParenGroup,cParen,cString,@Spell
|
||||||
@@ -138,7 +140,7 @@ elseif exists("c_no_bracket_error")
|
|||||||
syn match cErrInParen display contained "[{}]\|<%\|%>"
|
syn match cErrInParen display contained "[{}]\|<%\|%>"
|
||||||
endif
|
endif
|
||||||
else
|
else
|
||||||
if &filetype ==# 'cpp' && !exists("cpp_no_cpp11")
|
if s:ft ==# 'cpp' && !exists("cpp_no_cpp11")
|
||||||
syn region cParen transparent start='(' end=')' contains=ALLBUT,@cParenGroup,cCppParen,cErrInBracket,cCppBracket,cCppString,@Spell
|
syn region cParen transparent start='(' end=')' contains=ALLBUT,@cParenGroup,cCppParen,cErrInBracket,cCppBracket,cCppString,@Spell
|
||||||
" cCppParen: same as cParen but ends at end-of-line; used in cDefine
|
" cCppParen: same as cParen but ends at end-of-line; used in cDefine
|
||||||
syn region cCppParen transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@cParenGroup,cErrInBracket,cParen,cBracket,cString,@Spell
|
syn region cCppParen transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@cParenGroup,cErrInBracket,cParen,cBracket,cString,@Spell
|
||||||
@@ -158,7 +160,7 @@ else
|
|||||||
syn match cErrInBracket display contained "[);{}]\|<%\|%>"
|
syn match cErrInBracket display contained "[);{}]\|<%\|%>"
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if &filetype ==# 'c' || exists("cpp_no_cpp11")
|
if s:ft ==# 'c' || exists("cpp_no_cpp11")
|
||||||
syn region cBadBlock keepend start="{" end="}" contained containedin=cParen,cBracket,cBadBlock transparent fold
|
syn region cBadBlock keepend start="{" end="}" contained containedin=cParen,cBracket,cBadBlock transparent fold
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@@ -370,7 +372,7 @@ syn region cPreProc start="^\s*\(%:\|#\)\s*\(pragma\>\|line\>\|warning\>\|warn\>
|
|||||||
|
|
||||||
" Highlight User Labels
|
" Highlight User Labels
|
||||||
syn cluster cMultiGroup contains=cIncluded,cSpecial,cCommentSkip,cCommentString,cComment2String,@cCommentGroup,cCommentStartError,cUserCont,cUserLabel,cBitField,cOctalZero,cCppOutWrapper,cCppInWrapper,@cCppOutInGroup,cFormat,cNumber,cFloat,cOctal,cOctalError,cNumbersCom,cCppParen,cCppBracket,cCppString
|
syn cluster cMultiGroup contains=cIncluded,cSpecial,cCommentSkip,cCommentString,cComment2String,@cCommentGroup,cCommentStartError,cUserCont,cUserLabel,cBitField,cOctalZero,cCppOutWrapper,cCppInWrapper,@cCppOutInGroup,cFormat,cNumber,cFloat,cOctal,cOctalError,cNumbersCom,cCppParen,cCppBracket,cCppString
|
||||||
if &filetype ==# 'c' || exists("cpp_no_cpp11")
|
if s:ft ==# 'c' || exists("cpp_no_cpp11")
|
||||||
syn region cMulti transparent start='?' skip='::' end=':' contains=ALLBUT,@cMultiGroup,@Spell
|
syn region cMulti transparent start='?' skip='::' end=':' contains=ALLBUT,@cMultiGroup,@Spell
|
||||||
endif
|
endif
|
||||||
" Avoid matching foo::bar() in C++ by requiring that the next char is not ':'
|
" Avoid matching foo::bar() in C++ by requiring that the next char is not ':'
|
||||||
@@ -457,6 +459,8 @@ hi def link cCppOut Comment
|
|||||||
|
|
||||||
let b:current_syntax = "c"
|
let b:current_syntax = "c"
|
||||||
|
|
||||||
|
unlet s:ft
|
||||||
|
|
||||||
let &cpo = s:cpo_save
|
let &cpo = s:cpo_save
|
||||||
unlet s:cpo_save
|
unlet s:cpo_save
|
||||||
" vim: ts=8
|
" vim: ts=8
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
18
syntax/coffee.vim
Executable file → Normal file
18
syntax/coffee.vim
Executable file → Normal file
@@ -15,9 +15,6 @@ silent! unlet b:current_syntax
|
|||||||
" Highlight long strings.
|
" Highlight long strings.
|
||||||
syntax sync fromstart
|
syntax sync fromstart
|
||||||
|
|
||||||
" CoffeeScript identifiers can have dollar signs.
|
|
||||||
setlocal isident+=$
|
|
||||||
|
|
||||||
" These are `matches` instead of `keywords` because vim's highlighting
|
" These are `matches` instead of `keywords` because vim's highlighting
|
||||||
" priority for keywords is higher than matches. This causes keywords to be
|
" priority for keywords is higher than matches. This causes keywords to be
|
||||||
" highlighted inside matches, even if a match says it shouldn't contain them --
|
" highlighted inside matches, even if a match says it shouldn't contain them --
|
||||||
@@ -67,7 +64,7 @@ syn match coffeeSpecialVar /\<\%(this\|prototype\|arguments\)\>/ display
|
|||||||
hi def link coffeeSpecialVar Special
|
hi def link coffeeSpecialVar Special
|
||||||
|
|
||||||
" An @-variable
|
" An @-variable
|
||||||
syn match coffeeSpecialIdent /@\%(\I\i*\)\?/ display
|
syn match coffeeSpecialIdent /@\%(\%(\I\|\$\)\%(\i\|\$\)*\)\?/ display
|
||||||
hi def link coffeeSpecialIdent Identifier
|
hi def link coffeeSpecialIdent Identifier
|
||||||
|
|
||||||
" A class-like name that starts with a capital letter
|
" A class-like name that starts with a capital letter
|
||||||
@@ -95,15 +92,16 @@ syn region coffeeString start=/'/ skip=/\\\\\|\\'/ end=/'/
|
|||||||
hi def link coffeeString String
|
hi def link coffeeString String
|
||||||
|
|
||||||
" A integer, including a leading plus or minus
|
" A integer, including a leading plus or minus
|
||||||
syn match coffeeNumber /\i\@<![-+]\?\d\+\%([eE][+-]\?\d\+\)\?/ display
|
syn match coffeeNumber /\%(\i\|\$\)\@<![-+]\?\d\+\%([eE][+-]\?\d\+\)\?/ display
|
||||||
" A hex, binary, or octal number
|
" A hex, binary, or octal number
|
||||||
syn match coffeeNumber /\<0[xX]\x\+\>/ display
|
syn match coffeeNumber /\<0[xX]\x\+\>/ display
|
||||||
syn match coffeeNumber /\<0[bB][01]\+\>/ display
|
syn match coffeeNumber /\<0[bB][01]\+\>/ display
|
||||||
syn match coffeeNumber /\<0[oO][0-7]\+\>/ display
|
syn match coffeeNumber /\<0[oO][0-7]\+\>/ display
|
||||||
|
syn match coffeeNumber /\<\%(Infinity\|NaN\)\>/ display
|
||||||
hi def link coffeeNumber Number
|
hi def link coffeeNumber Number
|
||||||
|
|
||||||
" A floating-point number, including a leading plus or minus
|
" A floating-point number, including a leading plus or minus
|
||||||
syn match coffeeFloat /\i\@<![-+]\?\d*\.\@<!\.\d\+\%([eE][+-]\?\d\+\)\?/
|
syn match coffeeFloat /\%(\i\|\$\)\@<![-+]\?\d*\.\@<!\.\d\+\%([eE][+-]\?\d\+\)\?/
|
||||||
\ display
|
\ display
|
||||||
hi def link coffeeFloat Float
|
hi def link coffeeFloat Float
|
||||||
|
|
||||||
@@ -114,7 +112,7 @@ syn match coffeeReservedError /\<\%(case\|default\|function\|var\|void\|with\|co
|
|||||||
hi def link coffeeReservedError Error
|
hi def link coffeeReservedError Error
|
||||||
|
|
||||||
" A normal object assignment
|
" A normal object assignment
|
||||||
syn match coffeeObjAssign /@\?\I\i*\s*\ze::\@!/ contains=@coffeeIdentifier display
|
syn match coffeeObjAssign /@\?\%(\I\|\$\)\%(\i\|\$\)*\s*\ze::\@!/ contains=@coffeeIdentifier display
|
||||||
hi def link coffeeObjAssign Identifier
|
hi def link coffeeObjAssign Identifier
|
||||||
|
|
||||||
syn keyword coffeeTodo TODO FIXME XXX contained
|
syn keyword coffeeTodo TODO FIXME XXX contained
|
||||||
@@ -148,7 +146,7 @@ hi def link coffeeEscape SpecialChar
|
|||||||
|
|
||||||
" A regex -- must not follow a parenthesis, number, or identifier, and must not
|
" A regex -- must not follow a parenthesis, number, or identifier, and must not
|
||||||
" be followed by a number
|
" be followed by a number
|
||||||
syn region coffeeRegex start=#\%(\%()\|\i\@<!\d\)\s*\|\i\)\@<!/=\@!\s\@!#
|
syn region coffeeRegex start=#\%(\%()\|\%(\i\|\$\)\@<!\d\)\s*\|\i\)\@<!/=\@!\s\@!#
|
||||||
\ end=#/[gimy]\{,4}\d\@!#
|
\ end=#/[gimy]\{,4}\d\@!#
|
||||||
\ oneline contains=@coffeeBasicString,coffeeRegexCharSet
|
\ oneline contains=@coffeeBasicString,coffeeRegexCharSet
|
||||||
syn region coffeeRegexCharSet start=/\[/ end=/]/ contained
|
syn region coffeeRegexCharSet start=/\[/ end=/]/ contained
|
||||||
@@ -182,11 +180,11 @@ syn match coffeeSemicolonError /;$/ display
|
|||||||
hi def link coffeeSemicolonError Error
|
hi def link coffeeSemicolonError Error
|
||||||
|
|
||||||
" Ignore reserved words in dot accesses.
|
" Ignore reserved words in dot accesses.
|
||||||
syn match coffeeDotAccess /\.\@<!\.\s*\I\i*/he=s+1 contains=@coffeeIdentifier
|
syn match coffeeDotAccess /\.\@<!\.\s*\%(\I\|\$\)\%(\i\|\$\)*/he=s+1 contains=@coffeeIdentifier
|
||||||
hi def link coffeeDotAccess coffeeExtendedOp
|
hi def link coffeeDotAccess coffeeExtendedOp
|
||||||
|
|
||||||
" Ignore reserved words in prototype accesses.
|
" Ignore reserved words in prototype accesses.
|
||||||
syn match coffeeProtoAccess /::\s*\I\i*/he=s+2 contains=@coffeeIdentifier
|
syn match coffeeProtoAccess /::\s*\%(\I\|\$\)\%(\i\|\$\)*/he=s+2 contains=@coffeeIdentifier
|
||||||
hi def link coffeeProtoAccess coffeeExtendedOp
|
hi def link coffeeProtoAccess coffeeExtendedOp
|
||||||
|
|
||||||
" This is required for interpolations to work.
|
" This is required for interpolations to work.
|
||||||
|
|||||||
@@ -39,6 +39,9 @@ if !exists("cpp_no_cpp11")
|
|||||||
syn keyword cppExceptions noexcept
|
syn keyword cppExceptions noexcept
|
||||||
syn keyword cppStorageClass constexpr decltype
|
syn keyword cppStorageClass constexpr decltype
|
||||||
syn keyword cppConstant nullptr
|
syn keyword cppConstant nullptr
|
||||||
|
" A C++11 raw-string literal. It tries to follow 2.14.5 and 2.14.5.2 of the
|
||||||
|
" standard.
|
||||||
|
syn region cppRawString matchgroup=cppRawDelim start=+\%(u8\=\|[LU]\)\=R"\z(\%([ ()\\\d9-\d12]\@![\d0-\d127]\)\{,16}\)(+ end=+)\z1"+ contains=@Spell
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" The minimum and maximum operators in GNU C++
|
" The minimum and maximum operators in GNU C++
|
||||||
@@ -62,6 +65,8 @@ if version >= 508 || !exists("did_cpp_syntax_inits")
|
|||||||
HiLink cppStructure Structure
|
HiLink cppStructure Structure
|
||||||
HiLink cppBoolean Boolean
|
HiLink cppBoolean Boolean
|
||||||
HiLink cppConstant Constant
|
HiLink cppConstant Constant
|
||||||
|
HiLink cppRawDelim cFormat
|
||||||
|
HiLink cppRawString String
|
||||||
delcommand HiLink
|
delcommand HiLink
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|||||||
@@ -16,18 +16,18 @@ 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 use quote unquote super alias
|
syn keyword elixirKeyword quote unquote super
|
||||||
syn match elixirKeyword '\<\%(->\)\>\s*'
|
syn match elixirKeyword '\<\%(->\)\>\s*'
|
||||||
|
|
||||||
syn keyword elixirInclude import require
|
syn keyword elixirInclude import require alias use
|
||||||
|
|
||||||
syn keyword elixirOperator and not or when xor in
|
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
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ if exists("b:current_syntax")
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
syn case match
|
syn case match
|
||||||
syn match godocTitle "^\([A-Z]*\)$"
|
syn match godocTitle "^\([A-Z][A-Z ]*\)$"
|
||||||
|
|
||||||
command -nargs=+ HiLink hi def link <args>
|
command -nargs=+ HiLink hi def link <args>
|
||||||
|
|
||||||
|
|||||||
@@ -1,83 +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 keyword hbsTodo TODO FIXME XXX contained
|
|
||||||
|
|
||||||
syn match hbsError /}}}\?/
|
|
||||||
syn match hbsInsideError /{{[{#<>=!\/]\?/ containedin=@hbsInside
|
|
||||||
|
|
||||||
syn cluster htmlHbsContainer add=htmlHead,htmlTitle,htmlString,htmlH1,htmlH2,htmlH3,htmlH4,htmlH5,htmlH6
|
|
||||||
syn region hbsInside start=/{{/ end=/}}/ keepend transparent containedin=@htmlHbsContainer
|
|
||||||
|
|
||||||
syn match hbsHandlebars "{{\|}}" containedin=hbsInside
|
|
||||||
syn match hbsUnescape "{{{\|}}}" containedin=hbsInside
|
|
||||||
syn match hbsOperators "=\|\.\|/" containedin=hbsInside
|
|
||||||
|
|
||||||
syn region hbsSection start="{{[#/]"lc=2 end=/}}/me=e-2 containedin=hbsInside
|
|
||||||
syn region hbsPartial start=/{{[<>]/lc=2 end=/}}/me=e-2 containedin=hbsInside
|
|
||||||
syn region hbsMarkerSet start=/{{=/lc=2 end=/=}}/me=e-2 containedin=hbsInside
|
|
||||||
|
|
||||||
syn region hbsComment start=/{{!/rs=s+2 end=/}}/re=e-2 containedin=htmlHead contains=hbsTodo,Todo
|
|
||||||
syn region hbsBlockComment start=/{{!--/rs=s+2 end=/--}}/re=e-2 containedin=htmlHead contains=hbsTodo,Todo
|
|
||||||
syn region hbsQString start=/'/ skip=/\\'/ end=/'/ containedin=hbsInside
|
|
||||||
syn region hbsDQString start=/"/ skip=/\\"/ end=/"/ containedin=hbsInside
|
|
||||||
|
|
||||||
syn match hbsConditionals "\([/#]\(if\|unless\)\|else\)" containedin=hbsInside
|
|
||||||
syn match hbsHelpers "[/#]\(with\|each\)" containedin=hbsInside
|
|
||||||
|
|
||||||
|
|
||||||
" 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'
|
|
||||||
@@ -21,7 +21,8 @@
|
|||||||
syn keyword htmlTagName contained article aside audio canvas command
|
syn keyword htmlTagName contained article aside audio canvas command
|
||||||
syn keyword htmlTagName contained datalist details dialog embed figcaption figure footer
|
syn keyword htmlTagName contained datalist details dialog embed figcaption figure footer
|
||||||
syn keyword htmlTagName contained header hgroup keygen main mark meter menu nav output
|
syn keyword htmlTagName contained header hgroup keygen main mark meter menu nav output
|
||||||
syn keyword htmlTagName contained progress ruby rt rp section source summary template time track video data
|
syn keyword htmlTagName contained progress ruby rt rp section source summary time track video data
|
||||||
|
syn keyword htmlTagName contained template content shadow
|
||||||
syn keyword htmlTagName contained wbr bdi
|
syn keyword htmlTagName contained wbr bdi
|
||||||
|
|
||||||
" SVG tags
|
" SVG tags
|
||||||
@@ -40,10 +41,13 @@ 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_]\+\)\+\>"
|
||||||
|
|
||||||
" HTML 5 arguments
|
" HTML 5 arguments
|
||||||
" Core Attributes
|
" Core Attributes
|
||||||
syn keyword htmlArg contained accesskey class contenteditable contextmenu dir
|
syn keyword htmlArg contained accesskey class contenteditable contextmenu dir
|
||||||
syn keyword htmlArg contained draggable hidden id lang spellcheck style tabindex title translate
|
syn keyword htmlArg contained draggable hidden id is lang spellcheck style tabindex title translate
|
||||||
" Event-handler Attributes
|
" Event-handler Attributes
|
||||||
syn keyword htmlArg contained onabort onblur oncanplay oncanplaythrough onchange
|
syn keyword htmlArg contained onabort onblur oncanplay oncanplaythrough onchange
|
||||||
syn keyword htmlArg contained onclick oncontextmenu ondblclick ondrag ondragend ondragenter ondragleave ondragover
|
syn keyword htmlArg contained onclick oncontextmenu ondblclick ondrag ondragend ondragenter ondragleave ondragover
|
||||||
@@ -69,6 +73,8 @@ syn keyword htmlArg contained required placeholder
|
|||||||
syn keyword htmlArg contained label icon open datetime pubdate
|
syn keyword htmlArg contained label icon open datetime pubdate
|
||||||
" <script>
|
" <script>
|
||||||
syn keyword htmlArg contained async
|
syn keyword htmlArg contained async
|
||||||
|
" <content>
|
||||||
|
syn keyword htmlArg contained select
|
||||||
|
|
||||||
" Custom Data Attributes
|
" Custom Data Attributes
|
||||||
" http://dev.w3.org/html5/spec/elements.html#embedding-custom-non-visible-data
|
" http://dev.w3.org/html5/spec/elements.html#embedding-custom-non-visible-data
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ syn match lessClass "[[:alnum:]_-]\+" contained
|
|||||||
" string functions
|
" string functions
|
||||||
syn keyword lessFunction escape e % containedin=cssDefinition contained
|
syn keyword lessFunction escape e % containedin=cssDefinition contained
|
||||||
" misc functions
|
" misc functions
|
||||||
syn keyword lessFunction color unit containedin=cssDefinition contained
|
syn keyword lessFunction unit containedin=cssDefinition contained
|
||||||
" math functions
|
" math functions
|
||||||
syn keyword lessFunction ceil floor percentage round containedin=cssDefinition contained
|
syn keyword lessFunction ceil floor percentage round containedin=cssDefinition contained
|
||||||
" color definition
|
" color definition
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
109
syntax/mason.vim
Normal file
109
syntax/mason.vim
Normal file
@@ -0,0 +1,109 @@
|
|||||||
|
" Vim syntax file
|
||||||
|
" Language: Mason (Perl embedded in HTML)
|
||||||
|
" Maintainer: vim-perl <vim-perl@googlegroups.com>
|
||||||
|
" Homepage: http://github.com/vim-perl/vim-perl/tree/master
|
||||||
|
" Bugs/requests: http://github.com/vim-perl/vim-perl/issues
|
||||||
|
" Last Change: {{LAST_CHANGE}}
|
||||||
|
" Contributors: Hinrik Örn Sigurðsson <hinrik.sig@gmail.com>
|
||||||
|
" Andrew Smith <andrewdsmith@yahoo.com>
|
||||||
|
"
|
||||||
|
" TODO:
|
||||||
|
" - Fix <%text> blocks to show HTML tags but ignore Mason tags.
|
||||||
|
"
|
||||||
|
|
||||||
|
" Clear previous syntax settings unless this is v6 or above, in which case just
|
||||||
|
" exit without doing anything.
|
||||||
|
"
|
||||||
|
if version < 600
|
||||||
|
syn clear
|
||||||
|
elseif exists("b:current_syntax")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
" The HTML syntax file included below uses this variable.
|
||||||
|
"
|
||||||
|
if !exists("main_syntax")
|
||||||
|
let main_syntax = 'mason'
|
||||||
|
endif
|
||||||
|
|
||||||
|
" First pull in the HTML syntax.
|
||||||
|
"
|
||||||
|
if version < 600
|
||||||
|
so <sfile>:p:h/html.vim
|
||||||
|
else
|
||||||
|
runtime! syntax/html.vim
|
||||||
|
unlet b:current_syntax
|
||||||
|
endif
|
||||||
|
|
||||||
|
syn cluster htmlPreproc add=@masonTop
|
||||||
|
|
||||||
|
" Now pull in the Perl syntax.
|
||||||
|
"
|
||||||
|
if version < 600
|
||||||
|
syn include @perlTop <sfile>:p:h/perl.vim
|
||||||
|
unlet b:current_syntax
|
||||||
|
syn include @podTop <sfile>:p:h/pod.vim
|
||||||
|
else
|
||||||
|
syn include @perlTop syntax/perl.vim
|
||||||
|
unlet b:current_syntax
|
||||||
|
syn include @podTop syntax/pod.vim
|
||||||
|
endif
|
||||||
|
|
||||||
|
" It's hard to reduce down to the correct sub-set of Perl to highlight in some
|
||||||
|
" of these cases so I've taken the safe option of just using perlTop in all of
|
||||||
|
" them. If you have any suggestions, please let me know.
|
||||||
|
"
|
||||||
|
syn region masonPod start="^=[a-z]" end="^=cut" keepend contained contains=@podTop
|
||||||
|
syn cluster perlTop remove=perlBraces
|
||||||
|
syn region masonLine matchgroup=Delimiter start="^%" end="$" keepend contains=@perlTop
|
||||||
|
syn region masonPerlComment start="#" end="\%(%>\)\@=\|$" contained contains=perlTodo,@Spell
|
||||||
|
syn region masonExpr matchgroup=Delimiter start="<%" end="%>" contains=@perlTop,masonPerlComment
|
||||||
|
syn region masonPerl matchgroup=Delimiter start="<%perl>" end="</%perl>" contains=masonPod,@perlTop
|
||||||
|
syn region masonComp keepend matchgroup=Delimiter start="<&\s*\%([-._/[:alnum:]]\+:\)\?[-._/[:alnum:]]*" end="&>" contains=@perlTop
|
||||||
|
syn region masonComp keepend matchgroup=Delimiter skipnl start="<&|\s*\%([-._/[:alnum:]]\+:\)\?[-._/[:alnum:]]*" end="&>" contains=@perlTop nextgroup=masonCompContent
|
||||||
|
syn region masonCompContent matchgroup=Delimiter start="" end="</&>" contained contains=@masonTop
|
||||||
|
|
||||||
|
syn region masonArgs matchgroup=Delimiter start="<%args>" end="</%args>" contains=masonPod,@perlTop
|
||||||
|
|
||||||
|
syn region masonInit matchgroup=Delimiter start="<%init>" end="</%init>" contains=masonPod,@perlTop
|
||||||
|
syn region masonCleanup matchgroup=Delimiter start="<%cleanup>" end="</%cleanup>" contains=masonPod,@perlTop
|
||||||
|
syn region masonOnce matchgroup=Delimiter start="<%once>" end="</%once>" contains=masonPod,@perlTop
|
||||||
|
syn region masonClass matchgroup=Delimiter start="<%class>" end="</%class>" contains=masonPod,@perlTop
|
||||||
|
syn region masonShared matchgroup=Delimiter start="<%shared>" end="</%shared>" contains=masonPod,@perlTop
|
||||||
|
|
||||||
|
syn region masonDef matchgroup=Delimiter start="<%def\s*[-._/[:alnum:]]\+\s*>" end="</%def>" contains=@htmlTop
|
||||||
|
syn region masonMethod matchgroup=Delimiter start="<%method\s*[-._/[:alnum:]]\+\s*>" end="</%method>" contains=@htmlTop
|
||||||
|
|
||||||
|
syn region masonFlags matchgroup=Delimiter start="<%flags>" end="</%flags>" contains=masonPod,@perlTop
|
||||||
|
syn region masonAttr matchgroup=Delimiter start="<%attr>" end="</%attr>" contains=masonPod,@perlTop
|
||||||
|
|
||||||
|
syn region masonFilter matchgroup=Delimiter start="<%filter>" end="</%filter>" contains=masonPod,@perlTop
|
||||||
|
|
||||||
|
syn region masonDoc matchgroup=Delimiter start="<%doc>" end="</%doc>"
|
||||||
|
syn region masonText matchgroup=Delimiter start="<%text>" end="</%text>"
|
||||||
|
|
||||||
|
syn cluster masonTop contains=masonLine,masonExpr,masonPerl,masonComp,masonArgs,masonInit,masonCleanup,masonOnce,masonShared,masonDef,masonMethod,masonFlags,masonAttr,masonFilter,masonDoc,masonText
|
||||||
|
|
||||||
|
" Set up default highlighting. Almost all of this is done in the included
|
||||||
|
" syntax files.
|
||||||
|
"
|
||||||
|
if version >= 508 || !exists("did_mason_syn_inits")
|
||||||
|
if version < 508
|
||||||
|
let did_mason_syn_inits = 1
|
||||||
|
com -nargs=+ HiLink hi link <args>
|
||||||
|
else
|
||||||
|
com -nargs=+ HiLink hi def link <args>
|
||||||
|
endif
|
||||||
|
|
||||||
|
HiLink masonDoc Comment
|
||||||
|
HiLink masonPod Comment
|
||||||
|
HiLink masonPerlComment perlComment
|
||||||
|
|
||||||
|
delc HiLink
|
||||||
|
endif
|
||||||
|
|
||||||
|
let b:current_syntax = "mason"
|
||||||
|
|
||||||
|
if main_syntax == 'mason'
|
||||||
|
unlet main_syntax
|
||||||
|
endif
|
||||||
89
syntax/mustache.vim
Normal file
89
syntax/mustache.vim
Normal 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
|
||||||
@@ -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\)\=\)\>"
|
||||||
@@ -108,7 +108,7 @@ syn match perlStatementMisc "\<\%(warn\|format\|formline\|reset\|scalar\|protot
|
|||||||
|
|
||||||
syn keyword perlTodo TODO TODO: TBD TBD: FIXME FIXME: XXX XXX: NOTE NOTE: contained
|
syn keyword perlTodo TODO TODO: TBD TBD: FIXME FIXME: XXX XXX: NOTE NOTE: contained
|
||||||
|
|
||||||
syn region perlStatementIndirObjWrap matchgroup=perlStatementIndirObj start="\<\%(map\|grep\|sort\|printf\=\|say\|system\|exec\)\>\s*{" end="}" contains=@perlTop,perlBraces extend
|
syn region perlStatementIndirObjWrap matchgroup=perlStatementIndirObj start="\%(\<\%(map\|grep\|sort\|printf\=\|say\|system\|exec\)\>\s*\)\@<={" end="}" transparent extend
|
||||||
|
|
||||||
syn match perlLabel "^\s*\h\w*\s*::\@!\%(\<v\d\+\s*:\)\@<!"
|
syn match perlLabel "^\s*\h\w*\s*::\@!\%(\<v\d\+\s*:\)\@<!"
|
||||||
|
|
||||||
@@ -125,7 +125,7 @@ syn match perlLabel "^\s*\h\w*\s*::\@!\%(\<v\d\+\s*:\)\@<!"
|
|||||||
" Special variables first ($^A, ...) and ($|, $', ...)
|
" Special variables first ($^A, ...) and ($|, $', ...)
|
||||||
syn match perlVarPlain "$^[ACDEFHILMNOPRSTVWX]\="
|
syn match perlVarPlain "$^[ACDEFHILMNOPRSTVWX]\="
|
||||||
syn match perlVarPlain "$[\\\"\[\]'&`+*.,;=%~!?@#$<>(-]"
|
syn match perlVarPlain "$[\\\"\[\]'&`+*.,;=%~!?@#$<>(-]"
|
||||||
syn match perlVarPlain "%+"
|
syn match perlVarPlain "@[-+]"
|
||||||
syn match perlVarPlain "$\%(0\|[1-9]\d*\)"
|
syn match perlVarPlain "$\%(0\|[1-9]\d*\)"
|
||||||
" Same as above, but avoids confusion in $::foo (equivalent to $main::foo)
|
" Same as above, but avoids confusion in $::foo (equivalent to $main::foo)
|
||||||
syn match perlVarPlain "$::\@!"
|
syn match perlVarPlain "$::\@!"
|
||||||
@@ -152,6 +152,8 @@ else
|
|||||||
syn match perlFunctionName "&\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)" nextgroup=perlVarMember,perlVarSimpleMember,perlMethod
|
syn match perlFunctionName "&\$*\%(\I\i*\)\=\%(\%(::\|'\)\I\i*\)*\%(::\|\i\@<=\)" nextgroup=perlVarMember,perlVarSimpleMember,perlMethod
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
syn match perlVarPlain2 "%[-+]"
|
||||||
|
|
||||||
if !exists("perl_no_extended_vars")
|
if !exists("perl_no_extended_vars")
|
||||||
syn cluster perlExpr contains=perlStatementIndirObjWrap,perlStatementScalar,perlStatementRegexp,perlStatementNumeric,perlStatementList,perlStatementHash,perlStatementFiles,perlStatementTime,perlStatementMisc,perlVarPlain,perlVarPlain2,perlVarNotInMatches,perlVarSlash,perlVarBlock,perlVarBlock2,perlShellCommand,perlFloat,perlNumber,perlStringUnexpanded,perlString,perlQQ,perlArrow,perlBraces
|
syn cluster perlExpr contains=perlStatementIndirObjWrap,perlStatementScalar,perlStatementRegexp,perlStatementNumeric,perlStatementList,perlStatementHash,perlStatementFiles,perlStatementTime,perlStatementMisc,perlVarPlain,perlVarPlain2,perlVarNotInMatches,perlVarSlash,perlVarBlock,perlVarBlock2,perlShellCommand,perlFloat,perlNumber,perlStringUnexpanded,perlString,perlQQ,perlArrow,perlBraces
|
||||||
syn region perlArrow matchgroup=perlArrow start="->\s*(" end=")" contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod contained
|
syn region perlArrow matchgroup=perlArrow start="->\s*(" end=")" contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember,perlMethod contained
|
||||||
@@ -174,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
|
||||||
@@ -246,11 +248,9 @@ syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m#+
|
|||||||
syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*'+ end=+'[msixpodualgc]*+ contains=@perlInterpSQ keepend extend
|
syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*'+ end=+'[msixpodualgc]*+ contains=@perlInterpSQ keepend extend
|
||||||
syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*/+ end=+/[msixpodualgc]*+ contains=@perlInterpSlash keepend extend
|
syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*/+ end=+/[msixpodualgc]*+ contains=@perlInterpSlash keepend extend
|
||||||
syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*(+ end=+)[msixpodualgc]*+ contains=@perlInterpMatch,perlParensDQ keepend extend
|
syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*(+ end=+)[msixpodualgc]*+ contains=@perlInterpMatch,perlParensDQ keepend extend
|
||||||
|
syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*{+ end=+}[msixpodualgc]*+ contains=@perlInterpMatch,perlBracesDQ extend
|
||||||
" A special case for m{}, m<> and m[] which allows for comments and extra whitespace in the pattern
|
|
||||||
syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*{+ end=+}[msixpodualgc]*+ contains=@perlInterpMatch,perlComment,perlBracesDQ extend
|
|
||||||
syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*<+ end=+>[msixpodualgc]*+ contains=@perlInterpMatch,perlAnglesDQ keepend extend
|
syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*<+ end=+>[msixpodualgc]*+ contains=@perlInterpMatch,perlAnglesDQ keepend extend
|
||||||
syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*\[+ end=+\][msixpodualgc]*+ contains=@perlInterpMatch,perlComment,perlBracketsDQ keepend extend
|
syn region perlMatch matchgroup=perlMatchStartEnd start=+\<\%(::\|'\|->\)\@<!m\s*\[+ end=+\][msixpodualgc]*+ contains=@perlInterpMatch,perlBracketsDQ keepend extend
|
||||||
|
|
||||||
" Below some hacks to recognise the // variant. This is virtually impossible to catch in all
|
" Below some hacks to recognise the // variant. This is virtually impossible to catch in all
|
||||||
" cases as the / is used in so many other ways, but these should be the most obvious ones.
|
" cases as the / is used in so many other ways, but these should be the most obvious ones.
|
||||||
@@ -365,19 +365,14 @@ 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
|
||||||
|
if !exists("perl_no_subprototype_error") " Set 1 if using signatures feature in perl5.19.9
|
||||||
syn match perlSubPrototypeError "(\%(\_s*\%(\%(\\\%([$@%&*]\|\[[$@%&*]\+\]\)\|[$&*]\|[@%]\%(\_s*)\)\@=\|;\%(\_s*[)$@%&*\\]\)\@=\|_\%(\_s*[);]\)\@=\)\_s*\)*\)\@>\zs\_[^)]\+" contained
|
syn match perlSubPrototypeError "(\%(\_s*\%(\%(\\\%([$@%&*]\|\[[$@%&*]\+\]\)\|[$&*]\|[@%]\%(\_s*)\)\@=\|;\%(\_s*[)$@%&*\\]\)\@=\|_\%(\_s*[);]\)\@=\)\_s*\)*\)\@>\zs\_[^)]\+" contained
|
||||||
syn match perlSubPrototype +(\_[^)]*)\_s*\|+ nextgroup=perlSubAttributes,perlComment contained contains=perlSubPrototypeError
|
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
|
||||||
|
|
||||||
if !exists("perl_no_scope_in_variables")
|
|
||||||
syn match perlFunctionPRef "\h\w*::" contained
|
|
||||||
syn match perlFunctionName "\h\w*[^:]" contained
|
|
||||||
else
|
|
||||||
syn match perlFunctionName "\h[[:alnum:]_:]*" contained
|
|
||||||
endif
|
|
||||||
|
|
||||||
" The => operator forces a bareword to the left of it to be interpreted as
|
" The => operator forces a bareword to the left of it to be interpreted as
|
||||||
" a string
|
" a string
|
||||||
syn match perlString "\I\@<!-\?\I\i*\%(\s*=>\)\@="
|
syn match perlString "\I\@<!-\?\I\i*\%(\s*=>\)\@="
|
||||||
@@ -518,7 +513,9 @@ HiLink perlStatementIndirObj perlStatement
|
|||||||
HiLink perlFunctionName perlIdentifier
|
HiLink perlFunctionName perlIdentifier
|
||||||
HiLink perlMethod perlIdentifier
|
HiLink perlMethod perlIdentifier
|
||||||
HiLink perlFunctionPRef perlType
|
HiLink perlFunctionPRef perlType
|
||||||
|
if !get(g:, 'perl_include_pod', 1)
|
||||||
HiLink perlPOD perlComment
|
HiLink perlPOD perlComment
|
||||||
|
endif
|
||||||
HiLink perlShellCommand perlString
|
HiLink perlShellCommand perlString
|
||||||
HiLink perlSpecialAscii perlSpecial
|
HiLink perlSpecialAscii perlSpecial
|
||||||
HiLink perlSpecialDollar perlSpecial
|
HiLink perlSpecialDollar perlSpecial
|
||||||
|
|||||||
151
syntax/php.vim
151
syntax/php.vim
File diff suppressed because one or more lines are too long
155
syntax/rhelp.vim
Normal file
155
syntax/rhelp.vim
Normal file
@@ -0,0 +1,155 @@
|
|||||||
|
" Vim syntax file
|
||||||
|
" Language: R Help File
|
||||||
|
" Maintainer: Johannes Ranke <jranke@uni-bremen.de>
|
||||||
|
" Last Change: 2006 Apr 24
|
||||||
|
" Version: 0.7
|
||||||
|
" SVN: $Id: rhelp.vim 57 2006-04-24 15:52:13Z ranke $
|
||||||
|
" Remarks: - Now includes R syntax highlighting in the appropriate
|
||||||
|
" sections if an r.vim file is in the same directory or in the
|
||||||
|
" default debian location.
|
||||||
|
" - There is no Latex markup in equations
|
||||||
|
|
||||||
|
" Version Clears: {{{1
|
||||||
|
" For version 5.x: Clear all syntax items
|
||||||
|
" For version 6.x and 7.x: Quit when a syntax file was already loaded
|
||||||
|
if version < 600
|
||||||
|
syntax clear
|
||||||
|
elseif exists("b:current_syntax")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
syn case match
|
||||||
|
|
||||||
|
" R help identifiers {{{
|
||||||
|
syn region rhelpIdentifier matchgroup=rhelpSection start="\\name{" end="}"
|
||||||
|
syn region rhelpIdentifier matchgroup=rhelpSection start="\\alias{" end="}"
|
||||||
|
syn region rhelpIdentifier matchgroup=rhelpSection start="\\pkg{" end="}"
|
||||||
|
syn region rhelpIdentifier matchgroup=rhelpSection start="\\item{" end="}" contained contains=rhelpDots
|
||||||
|
syn region rhelpIdentifier matchgroup=rhelpSection start="\\method{" end=/}/ contained
|
||||||
|
|
||||||
|
" Highlighting of R code using an existing r.vim syntax file if available {{{1
|
||||||
|
syn include @R syntax/r.vim
|
||||||
|
syn match rhelpDots "\\dots" containedin=@R
|
||||||
|
syn region rhelpRcode matchgroup=Delimiter start="\\examples{" matchgroup=Delimiter transparent end=/}/ contains=@R,rhelpSection
|
||||||
|
syn region rhelpRcode matchgroup=Delimiter start="\\usage{" matchgroup=Delimiter transparent end=/}/ contains=@R,rhelpIdentifier,rhelpS4method
|
||||||
|
syn region rhelpRcode matchgroup=Delimiter start="\\synopsis{" matchgroup=Delimiter transparent end=/}/ contains=@R
|
||||||
|
syn region rhelpRcode matchgroup=Delimiter start="\\special{" matchgroup=Delimiter transparent end=/}/ contains=@R contained
|
||||||
|
syn region rhelpRcode matchgroup=Delimiter start="\\code{" matchgroup=Delimiter transparent end=/}/ contains=@R,rhelpLink contained
|
||||||
|
syn region rhelpS4method matchgroup=Delimiter start="\\S4method{.*}(" matchgroup=Delimiter transparent end=/)/ contains=@R,rhelpDots contained
|
||||||
|
|
||||||
|
" Strings {{{1
|
||||||
|
syn region rhelpString start=/"/ end=/"/
|
||||||
|
|
||||||
|
" Special characters ( \$ \& \% \# \{ \} \_) {{{1
|
||||||
|
syn match rhelpSpecialChar "\\[$&%#{}_]"
|
||||||
|
|
||||||
|
" Special Delimiters {{{1
|
||||||
|
syn match rhelpDelimiter "\\cr"
|
||||||
|
syn match rhelpDelimiter "\\tab "
|
||||||
|
|
||||||
|
" Keywords {{{1
|
||||||
|
syn match rhelpKeyword "\\R"
|
||||||
|
syn match rhelpKeyword "\\ldots"
|
||||||
|
syn match rhelpKeyword "--"
|
||||||
|
syn match rhelpKeyword "---"
|
||||||
|
syn match rhelpKeyword "<"
|
||||||
|
syn match rhelpKeyword ">"
|
||||||
|
|
||||||
|
" Links {{{1
|
||||||
|
syn region rhelpLink matchgroup=rhelpSection start="\\link{" end="}" contained keepend
|
||||||
|
syn region rhelpLink matchgroup=rhelpSection start="\\link\[.*\]{" end="}" contained keepend
|
||||||
|
syn region rhelpLink matchgroup=rhelpSection start="\\linkS4class{" end="}" contained keepend
|
||||||
|
|
||||||
|
" Type Styles {{{1
|
||||||
|
syn match rhelpType "\\emph\>"
|
||||||
|
syn match rhelpType "\\strong\>"
|
||||||
|
syn match rhelpType "\\bold\>"
|
||||||
|
syn match rhelpType "\\sQuote\>"
|
||||||
|
syn match rhelpType "\\dQuote\>"
|
||||||
|
syn match rhelpType "\\preformatted\>"
|
||||||
|
syn match rhelpType "\\kbd\>"
|
||||||
|
syn match rhelpType "\\samp\>"
|
||||||
|
syn match rhelpType "\\eqn\>"
|
||||||
|
syn match rhelpType "\\deqn\>"
|
||||||
|
syn match rhelpType "\\file\>"
|
||||||
|
syn match rhelpType "\\email\>"
|
||||||
|
syn match rhelpType "\\url\>"
|
||||||
|
syn match rhelpType "\\var\>"
|
||||||
|
syn match rhelpType "\\env\>"
|
||||||
|
syn match rhelpType "\\option\>"
|
||||||
|
syn match rhelpType "\\command\>"
|
||||||
|
syn match rhelpType "\\dfn\>"
|
||||||
|
syn match rhelpType "\\cite\>"
|
||||||
|
syn match rhelpType "\\acronym\>"
|
||||||
|
|
||||||
|
" rhelp sections {{{1
|
||||||
|
syn match rhelpSection "\\encoding\>"
|
||||||
|
syn match rhelpSection "\\title\>"
|
||||||
|
syn match rhelpSection "\\description\>"
|
||||||
|
syn match rhelpSection "\\concept\>"
|
||||||
|
syn match rhelpSection "\\arguments\>"
|
||||||
|
syn match rhelpSection "\\details\>"
|
||||||
|
syn match rhelpSection "\\value\>"
|
||||||
|
syn match rhelpSection "\\references\>"
|
||||||
|
syn match rhelpSection "\\note\>"
|
||||||
|
syn match rhelpSection "\\author\>"
|
||||||
|
syn match rhelpSection "\\seealso\>"
|
||||||
|
syn match rhelpSection "\\keyword\>"
|
||||||
|
syn match rhelpSection "\\docType\>"
|
||||||
|
syn match rhelpSection "\\format\>"
|
||||||
|
syn match rhelpSection "\\source\>"
|
||||||
|
syn match rhelpSection "\\itemize\>"
|
||||||
|
syn match rhelpSection "\\describe\>"
|
||||||
|
syn match rhelpSection "\\enumerate\>"
|
||||||
|
syn match rhelpSection "\\item "
|
||||||
|
syn match rhelpSection "\\item$"
|
||||||
|
syn match rhelpSection "\\tabular{[lcr]*}"
|
||||||
|
syn match rhelpSection "\\dontrun\>"
|
||||||
|
syn match rhelpSection "\\dontshow\>"
|
||||||
|
syn match rhelpSection "\\testonly\>"
|
||||||
|
|
||||||
|
" Freely named Sections {{{1
|
||||||
|
syn region rhelpFreesec matchgroup=Delimiter start="\\section{" matchgroup=Delimiter transparent end=/}/
|
||||||
|
|
||||||
|
" R help file comments {{{1
|
||||||
|
syn match rhelpComment /%.*$/ contained
|
||||||
|
|
||||||
|
" Error {{{1
|
||||||
|
syn region rhelpRegion matchgroup=Delimiter start=/(/ matchgroup=Delimiter end=/)/ transparent contains=ALLBUT,rhelpError,rhelpBraceError,rhelpCurlyError
|
||||||
|
syn region rhelpRegion matchgroup=Delimiter start=/{/ matchgroup=Delimiter end=/}/ transparent contains=ALLBUT,rhelpError,rhelpBraceError,rhelpParenError
|
||||||
|
syn region rhelpRegion matchgroup=Delimiter start=/\[/ matchgroup=Delimiter end=/]/ transparent contains=ALLBUT,rhelpError,rhelpCurlyError,rhelpParenError
|
||||||
|
syn match rhelpError /[)\]}]/
|
||||||
|
syn match rhelpBraceError /[)}]/ contained
|
||||||
|
syn match rhelpCurlyError /[)\]]/ contained
|
||||||
|
syn match rhelpParenError /[\]}]/ contained
|
||||||
|
|
||||||
|
" Define the default highlighting {{{1
|
||||||
|
" 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_rhelp_syntax_inits")
|
||||||
|
if version < 508
|
||||||
|
let did_rhelp_syntax_inits = 1
|
||||||
|
command -nargs=+ HiLink hi link <args>
|
||||||
|
else
|
||||||
|
command -nargs=+ HiLink hi def link <args>
|
||||||
|
endif
|
||||||
|
HiLink rhelpIdentifier Identifier
|
||||||
|
HiLink rhelpString String
|
||||||
|
HiLink rhelpKeyword Keyword
|
||||||
|
HiLink rhelpDots Keyword
|
||||||
|
HiLink rhelpLink Underlined
|
||||||
|
HiLink rhelpType Type
|
||||||
|
HiLink rhelpSection PreCondit
|
||||||
|
HiLink rhelpError Error
|
||||||
|
HiLink rhelpBraceError Error
|
||||||
|
HiLink rhelpCurlyError Error
|
||||||
|
HiLink rhelpParenError Error
|
||||||
|
HiLink rhelpDelimiter Delimiter
|
||||||
|
HiLink rhelpComment Comment
|
||||||
|
HiLink rhelpRComment Comment
|
||||||
|
HiLink rhelpSpecialChar SpecialChar
|
||||||
|
delcommand HiLink
|
||||||
|
endif
|
||||||
|
|
||||||
|
let b:current_syntax = "rhelp"
|
||||||
|
" vim: foldmethod=marker:
|
||||||
56
syntax/rnoweb.vim
Normal file
56
syntax/rnoweb.vim
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
" Vim syntax file
|
||||||
|
" Language: R noweb Files
|
||||||
|
" Maintainer: Johannes Ranke <jranke@uni-bremen.de>
|
||||||
|
" Last Change: 2007 M<>r 30
|
||||||
|
" Version: 0.8
|
||||||
|
" SVN: $Id: rnoweb.vim 69 2007-03-30 08:55:36Z ranke $
|
||||||
|
" Remarks: - This file is inspired by the proposal of
|
||||||
|
" Fernando Henrique Ferraz Pereira da Rosa <feferraz@ime.usp.br>
|
||||||
|
" http://www.ime.usp.br/~feferraz/en/sweavevim.html
|
||||||
|
"
|
||||||
|
|
||||||
|
" Version Clears: {{{1
|
||||||
|
" For version 5.x: Clear all syntax items
|
||||||
|
" For version 6.x and 7.x: Quit when a syntax file was already loaded
|
||||||
|
if version < 600
|
||||||
|
syntax clear
|
||||||
|
elseif exists("b:current_syntax")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
syn case match
|
||||||
|
|
||||||
|
" Extension of Tex clusters {{{1
|
||||||
|
runtime syntax/tex.vim
|
||||||
|
unlet b:current_syntax
|
||||||
|
|
||||||
|
syn cluster texMatchGroup add=@rnoweb
|
||||||
|
syn cluster texEnvGroup add=@rnoweb
|
||||||
|
syn cluster texFoldGroup add=@rnoweb
|
||||||
|
syn cluster texDocGroup add=@rnoweb
|
||||||
|
syn cluster texPartGroup add=@rnoweb
|
||||||
|
syn cluster texChapterGroup add=@rnoweb
|
||||||
|
syn cluster texSectionGroup add=@rnoweb
|
||||||
|
syn cluster texSubSectionGroup add=@rnoweb
|
||||||
|
syn cluster texSubSubSectionGroup add=@rnoweb
|
||||||
|
syn cluster texParaGroup add=@rnoweb
|
||||||
|
|
||||||
|
" Highlighting of R code using an existing r.vim syntax file if available {{{1
|
||||||
|
syn include @rnowebR syntax/r.vim
|
||||||
|
syn region rnowebChunk matchgroup=rnowebDelimiter start="^<<.*>>=" matchgroup=rnowebDelimiter end="^@" contains=@rnowebR,rnowebChunkReference,rnowebChunk fold keepend
|
||||||
|
syn match rnowebChunkReference "^<<.*>>$" contained
|
||||||
|
syn region rnowebSexpr matchgroup=Delimiter start="\\Sexpr{" matchgroup=Delimiter end="}" contains=@rnowebR
|
||||||
|
|
||||||
|
" Sweave options command {{{1
|
||||||
|
syn region rnowebSweaveopts matchgroup=Delimiter start="\\SweaveOpts{" matchgroup=Delimiter end="}"
|
||||||
|
|
||||||
|
" rnoweb Cluster {{{1
|
||||||
|
syn cluster rnoweb contains=rnowebChunk,rnowebChunkReference,rnowebDelimiter,rnowebSexpr,rnowebSweaveopts
|
||||||
|
|
||||||
|
" Highlighting {{{1
|
||||||
|
hi def link rnowebDelimiter Delimiter
|
||||||
|
hi def link rnowebSweaveOpts Statement
|
||||||
|
hi def link rnowebChunkReference Delimiter
|
||||||
|
|
||||||
|
let b:current_syntax = "rnoweb"
|
||||||
|
" vim: foldmethod=marker:
|
||||||
@@ -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
|
||||||
|
|||||||
168
syntax/rust.vim
168
syntax/rust.vim
@@ -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 Sep 4
|
" Last Change: 2014 Feb 27
|
||||||
|
|
||||||
if version < 600
|
if version < 600
|
||||||
syntax clear
|
syntax clear
|
||||||
@@ -18,23 +18,30 @@ 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 do extern
|
syn keyword rustKeyword break continue
|
||||||
syn keyword rustKeyword in if impl let log
|
syn keyword rustKeyword extern nextgroup=rustExternCrate,rustObsoleteExternMod skipwhite
|
||||||
syn keyword rustKeyword for impl let log
|
syn keyword rustKeyword for in if impl let
|
||||||
syn keyword rustKeyword loop mod once priv pub
|
syn keyword rustKeyword loop once priv pub
|
||||||
syn keyword rustKeyword return
|
syn keyword rustKeyword return
|
||||||
syn keyword rustKeyword unsafe while
|
syn keyword rustKeyword unsafe while
|
||||||
syn keyword rustKeyword use nextgroup=rustModPath skipwhite
|
syn keyword rustKeyword use nextgroup=rustModPath skipwhite
|
||||||
" FIXME: Scoped impl's name is also fallen in this category
|
" FIXME: Scoped impl's name is also fallen in this category
|
||||||
syn keyword rustKeyword mod trait struct enum type nextgroup=rustIdentifier skipwhite
|
syn keyword rustKeyword mod trait struct enum type nextgroup=rustIdentifier skipwhite
|
||||||
syn keyword rustKeyword fn nextgroup=rustFuncName skipwhite
|
syn keyword rustKeyword fn nextgroup=rustFuncName skipwhite
|
||||||
syn keyword rustStorage const mut ref static
|
syn keyword rustKeyword proc
|
||||||
|
syn keyword rustStorage mut ref static
|
||||||
|
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 rustKeyword 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
|
||||||
@@ -45,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
|
||||||
@@ -59,63 +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 from_str
|
||||||
"syn keyword rustFunction range
|
"syn keyword rustFunction range
|
||||||
|
"syn keyword rustFunction drop
|
||||||
|
|
||||||
" Types and traits {{{3
|
" Types and traits {{{3
|
||||||
|
syn keyword rustTrait Any AnyOwnExt AnyRefExt AnyMutRefExt
|
||||||
|
syn keyword rustTrait Ascii AsciiCast OwnedAsciiCast AsciiStr IntoBytes
|
||||||
syn keyword rustTrait ToCStr
|
syn keyword rustTrait ToCStr
|
||||||
syn keyword rustTrait Clone DeepClone
|
|
||||||
syn keyword rustTrait Eq ApproxEq Ord TotalEq TotalOrd Ordering Equiv
|
|
||||||
syn keyword rustEnumVariant Less Equal Greater
|
|
||||||
syn keyword rustTrait Char
|
syn keyword rustTrait Char
|
||||||
|
syn keyword rustTrait Clone DeepClone
|
||||||
|
syn keyword rustTrait Eq Ord TotalEq TotalOrd Ordering Equiv
|
||||||
|
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 Hash
|
|
||||||
syn keyword rustTrait Times
|
|
||||||
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 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 Algebraic Trigonometric Exponential Hyperbolic
|
syn keyword rustTrait Primitive Int Float ToPrimitive FromPrimitive
|
||||||
syn keyword rustTrait Integer Fractional Real RealExt
|
syn keyword rustTrait GenericPath Path PosixPath WindowsPath
|
||||||
syn keyword rustTrait Bitwise BitCount Bounded
|
|
||||||
syn keyword rustTrait Primitive Int Float ToStrRadix
|
|
||||||
syn keyword rustTrait GenericPath
|
|
||||||
syn keyword rustTrait Path
|
|
||||||
syn keyword rustTrait PosixPath
|
|
||||||
syn keyword rustTrait WindowsPath
|
|
||||||
syn keyword rustTrait RawPtr
|
syn keyword rustTrait RawPtr
|
||||||
syn keyword rustTrait Ascii AsciiCast OwnedAsciiCast AsciiStr ToBytesConsume
|
syn keyword rustTrait Buffer Writer Reader Seek
|
||||||
syn keyword rustTrait Str StrVector StrSlice OwnedStr
|
syn keyword rustTrait Str StrVector StrSlice OwnedStr IntoMaybeOwned
|
||||||
syn keyword rustTrait FromStr
|
syn keyword rustTrait ToStr IntoStr
|
||||||
syn keyword rustTrait IterBytes
|
syn keyword rustTrait Tuple1 Tuple2 Tuple3 Tuple4
|
||||||
syn keyword rustTrait ToStr ToStrConsume
|
syn keyword rustTrait Tuple5 Tuple6 Tuple7 Tuple8
|
||||||
syn keyword rustTrait CopyableTuple ImmutableTuple
|
syn keyword rustTrait Tuple9 Tuple10 Tuple11 Tuple12
|
||||||
syn keyword rustTrait CloneableTuple1 ImmutableTuple1
|
syn keyword rustTrait ImmutableEqVector ImmutableTotalOrdVector ImmutableCloneableVector
|
||||||
syn keyword rustTrait CloneableTuple2 CloneableTuple3 CloneableTuple4 CloneableTuple5
|
syn keyword rustTrait OwnedVector OwnedCloneableVector OwnedEqVector
|
||||||
syn keyword rustTrait CloneableTuple6 CloneableTuple7 CloneableTuple8 CloneableTuple9
|
syn keyword rustTrait MutableVector MutableTotalOrdVector
|
||||||
syn keyword rustTrait CloneableTuple10 CloneableTuple11 CloneableTuple12
|
syn keyword rustTrait Vector VectorVector CloneableVector ImmutableVector
|
||||||
syn keyword rustTrait ImmutableTuple2 ImmutableTuple3 ImmutableTuple4 ImmutableTuple5
|
|
||||||
syn keyword rustTrait ImmutableTuple6 ImmutableTuple7 ImmutableTuple8 ImmutableTuple9
|
|
||||||
syn keyword rustTrait ImmutableTuple10 ImmutableTuple11 ImmutableTuple12
|
|
||||||
syn keyword rustTrait Vector VectorVector CopyableVector ImmutableVector
|
|
||||||
syn keyword rustTrait ImmutableEqVector ImmutableTotalOrdVector ImmutableCopyableVector
|
|
||||||
syn keyword rustTrait OwnedVector OwnedCopyableVector OwnedEqVector MutableVector
|
|
||||||
syn keyword rustTrait Reader ReaderUtil Writer WriterUtil
|
|
||||||
syn keyword rustTrait Default
|
|
||||||
|
|
||||||
"syn keyword rustFunction stream
|
"syn keyword rustFunction stream
|
||||||
syn keyword rustTrait Port Chan GenericChan GenericSmartChan GenericPort Peekable
|
syn keyword rustTrait Port Chan
|
||||||
"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 "\.").
|
||||||
@@ -143,48 +129,57 @@ syn match rustOperator display "&&\|||"
|
|||||||
syn match rustMacro '\w\(\w\)*!' contains=rustAssert,rustFail
|
syn match rustMacro '\w\(\w\)*!' contains=rustAssert,rustFail
|
||||||
syn match rustMacro '#\w\(\w\)*' contains=rustAssert,rustFail
|
syn match rustMacro '#\w\(\w\)*' contains=rustAssert,rustFail
|
||||||
|
|
||||||
syn match rustFormat display "%\(\d\+\$\)\=[-+' #0*]*\(\d*\|\*\|\*\d\+\$\)\(\.\(\d*\|\*\|\*\d\+\$\)\)\=\([hlLjzt]\|ll\|hh\)\=\([aAbdiuoxXDOUfFeEgGcCsSpn?]\|\[\^\=.[^]]*\]\)" contained
|
syn match rustSpecialError display contained /\\./
|
||||||
syn match rustFormat display "%%" contained
|
syn match rustSpecial display contained /\\\([nrt0\\'"]\|x\x\{2}\|u\x\{4}\|U\x\{8}\)/
|
||||||
syn match rustSpecial display contained /\\\([nrt\\'"]\|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=rustTodo,rustFormat,rustSpecial,rustStringContinuation
|
syn region rustString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=rustSpecial,rustSpecialError,rustStringContinuation,@Spell
|
||||||
|
syn region rustString start='r\z(#*\)"' end='"\z1' contains=@Spell
|
||||||
|
|
||||||
syn region rustAttribute start="#\[" end="\]" contains=rustString,rustDeriving
|
syn region rustAttribute start="#\[" end="\]" contains=rustString,rustDeriving
|
||||||
syn region rustDeriving start="deriving(" end=")" contained contains=rustTrait
|
syn region rustDeriving start="deriving(" end=")" contained contains=rustTrait
|
||||||
|
|
||||||
" Number literals
|
" Number literals
|
||||||
syn match rustNumber display "\<[0-9][0-9_]*\>"
|
syn match rustDecNumber display "\<[0-9][0-9_]*\%([iu]\%(8\|16\|32\|64\)\=\)\="
|
||||||
syn match rustNumber display "\<[0-9][0-9_]*\(u\|u8\|u16\|u32\|u64\)\>"
|
syn match rustHexNumber display "\<0x[a-fA-F0-9_]\+\%([iu]\%(8\|16\|32\|64\)\=\)\="
|
||||||
syn match rustNumber display "\<[0-9][0-9_]*\(i\|i8\|i16\|i32\|i64\)\>"
|
syn match rustOctNumber display "\<0o[0-7_]\+\%([iu]\%(8\|16\|32\|64\)\=\)\="
|
||||||
|
syn match rustBinNumber display "\<0b[01_]\+\%([iu]\%(8\|16\|32\|64\)\=\)\="
|
||||||
|
|
||||||
syn match rustHexNumber display "\<0x[a-fA-F0-9_]\+\>"
|
" Special case for numbers of the form "1." which are float literals, unless followed by
|
||||||
syn match rustHexNumber display "\<0x[a-fA-F0-9_]\+\(u\|u8\|u16\|u32\|u64\)\>"
|
" an identifier, which makes them integer literals with a method call or field access.
|
||||||
syn match rustHexNumber display "\<0x[a-fA-F0-9_]\+\(i8\|i16\|i32\|i64\)\>"
|
" (This must go first so the others take precedence.)
|
||||||
syn match rustBinNumber display "\<0b[01_]\+\>"
|
syn match rustFloat display "\<[0-9][0-9_]*\.\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\@!"
|
||||||
syn match rustBinNumber display "\<0b[01_]\+\(u\|u8\|u16\|u32\|u64\)\>"
|
" To mark a number as a normal float, it must have at least one of the three things integral values don't have:
|
||||||
syn match rustBinNumber display "\<0b[01_]\+\(i8\|i16\|i32\|i64\)\>"
|
" a decimal point and more numbers; an exponent; and a type suffix.
|
||||||
|
syn match rustFloat display "\<[0-9][0-9_]*\%(\.[0-9][0-9_]*\)\%([eE][+-]\=[0-9_]\+\)\=\(f32\|f64\)\="
|
||||||
syn match rustFloat display "\<[0-9][0-9_]*\(f\|f32\|f64\)\>"
|
syn match rustFloat display "\<[0-9][0-9_]*\%(\.[0-9][0-9_]*\)\=\%([eE][+-]\=[0-9_]\+\)\(f32\|f64\)\="
|
||||||
syn match rustFloat display "\<[0-9][0-9_]*\([eE][+-]\=[0-9_]\+\)\>"
|
syn match rustFloat display "\<[0-9][0-9_]*\%(\.[0-9][0-9_]*\)\=\%([eE][+-]\=[0-9_]\+\)\=\(f32\|f64\)"
|
||||||
syn match rustFloat display "\<[0-9][0-9_]*\([eE][+-]\=[0-9_]\+\)\(f\|f32\|f64\)\>"
|
|
||||||
syn match rustFloat display "\<[0-9][0-9_]*\.[0-9_]\+\>"
|
|
||||||
syn match rustFloat display "\<[0-9][0-9_]*\.[0-9_]\+\(f\|f32\|f64\)\>"
|
|
||||||
syn match rustFloat display "\<[0-9][0-9_]*\.[0-9_]\+\%([eE][+-]\=[0-9_]\+\)\>"
|
|
||||||
syn match rustFloat display "\<[0-9][0-9_]*\.[0-9_]\+\%([eE][+-]\=[0-9_]\+\)\(f\|f32\|f64\)\>"
|
|
||||||
|
|
||||||
" For the benefit of delimitMate
|
" For the benefit of delimitMate
|
||||||
syn region rustLifetimeCandidate display start=/&'\%(\([^'\\]\|\\\(['nrt\\\"]\|x\x\{2}\|u\x\{4}\|U\x\{8}\)\)'\)\@!/ end=/[[:cntrl:][:space:][:punct:]]\@=\|$/ contains=rustSigil,rustLifetime
|
syn region rustLifetimeCandidate display start=/&'\%(\([^'\\]\|\\\(['nrt0\\\"]\|x\x\{2}\|u\x\{4}\|U\x\{8}\)\)'\)\@!/ end=/[[:cntrl:][:space:][:punct:]]\@=\|$/ contains=rustSigil,rustLifetime
|
||||||
syn region rustGenericRegion display start=/<\%('\|[^[cntrl:][:space:][:punct:]]\)\@=')\S\@=/ end=/>/ contains=rustGenericLifetimeCandidate
|
syn region rustGenericRegion display start=/<\%('\|[^[cntrl:][:space:][:punct:]]\)\@=')\S\@=/ end=/>/ contains=rustGenericLifetimeCandidate
|
||||||
syn region rustGenericLifetimeCandidate display start=/\%(<\|,\s*\)\@<='/ end=/[[:cntrl:][:space:][:punct:]]\@=\|$/ contains=rustSigil,rustLifetime
|
syn region rustGenericLifetimeCandidate display start=/\%(<\|,\s*\)\@<='/ end=/[[:cntrl:][:space:][:punct:]]\@=\|$/ contains=rustSigil,rustLifetime
|
||||||
|
|
||||||
"rustLifetime must appear before rustCharacter, or chars will get the lifetime highlighting
|
"rustLifetime must appear before rustCharacter, or chars will get the lifetime highlighting
|
||||||
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 /'\([^'\\]\|\\\([nrt\\'"]\|x\x\{2}\|u\x\{4}\|U\x\{8}\)\)'/ contains=rustSpecial
|
syn match rustCharacter /'\([^'\\]\|\\\(.\|x\x\{2}\|u\x\{4}\|U\x\{8}\)\)'/ contains=rustSpecial,rustSpecialError
|
||||||
|
|
||||||
syn region rustCommentML start="/\*" end="\*/" contains=rustTodo
|
syn region rustCommentLine start="//" end="$" contains=rustTodo,@Spell
|
||||||
syn region rustComment start="//" end="$" contains=rustTodo keepend
|
syn region rustCommentLineDoc start="//\%(//\@!\|!\)" end="$" contains=rustTodo,@Spell
|
||||||
syn region rustCommentMLDoc start="/\*\%(!\|\*/\@!\)" end="\*/" contains=rustTodo
|
syn region rustCommentBlock matchgroup=rustCommentBlock start="/\*\%(!\|\*[*/]\@!\)\@!" end="\*/" contains=rustTodo,rustCommentBlockNest,@Spell
|
||||||
syn region rustCommentDoc start="//[/!]" end="$" contains=rustTodo keepend
|
syn region rustCommentBlockDoc matchgroup=rustCommentBlockDoc start="/\*\%(!\|\*[*/]\@!\)" end="\*/" contains=rustTodo,rustCommentBlockDocNest,@Spell
|
||||||
|
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
|
||||||
|
" importantly, a case like ``/* */*`` should have the final ``*`` not being in
|
||||||
|
" a comment, but in practice at present it leaves comments open two levels
|
||||||
|
" deep. But as long as you stay away from that particular case, I *believe*
|
||||||
|
" the highlighting is correct. Due to the way Vim's syntax engine works
|
||||||
|
" (greedy for start matches, unlike Rust's tokeniser which is searching for
|
||||||
|
" the earliest-starting match, start or end), I believe this cannot be solved.
|
||||||
|
" Oh you who would fix it, don't bother with things like duplicating the Block
|
||||||
|
" rules and putting ``\*\@<!`` at the start of them; it makes it worse, as
|
||||||
|
" then you must deal with cases like ``/*/**/*/``. And don't try making it
|
||||||
|
" worse with ``\%(/\@<!\*\)\@<!``, either...
|
||||||
|
|
||||||
syn keyword rustTodo contained TODO FIXME XXX NB NOTE
|
syn keyword rustTodo contained TODO FIXME XXX NB NOTE
|
||||||
|
|
||||||
@@ -196,14 +191,16 @@ syn region rustFoldBraces start="{" end="}" transparent fold
|
|||||||
" It's not enabled by default as it would drive some people mad.
|
" It's not enabled by default as it would drive some people mad.
|
||||||
|
|
||||||
" Default highlighting {{{1
|
" Default highlighting {{{1
|
||||||
|
hi def link rustDecNumber rustNumber
|
||||||
hi def link rustHexNumber rustNumber
|
hi def link rustHexNumber rustNumber
|
||||||
|
hi def link rustOctNumber rustNumber
|
||||||
hi def link rustBinNumber rustNumber
|
hi def link rustBinNumber rustNumber
|
||||||
hi def link rustIdentifierPrime rustIdentifier
|
hi def link rustIdentifierPrime rustIdentifier
|
||||||
hi def link rustTrait rustType
|
hi def link rustTrait rustType
|
||||||
|
|
||||||
hi def link rustSigil StorageClass
|
hi def link rustSigil StorageClass
|
||||||
hi def link rustFormat Special
|
|
||||||
hi def link rustSpecial Special
|
hi def link rustSpecial Special
|
||||||
|
hi def link rustSpecialError Error
|
||||||
hi def link rustStringContinuation Special
|
hi def link rustStringContinuation Special
|
||||||
hi def link rustString String
|
hi def link rustString String
|
||||||
hi def link rustCharacter Character
|
hi def link rustCharacter Character
|
||||||
@@ -216,6 +213,7 @@ hi def link rustSelf Constant
|
|||||||
hi def link rustFloat Float
|
hi def link rustFloat Float
|
||||||
hi def link rustOperator Operator
|
hi def link rustOperator Operator
|
||||||
hi def link rustKeyword Keyword
|
hi def link rustKeyword Keyword
|
||||||
|
hi def link rustReservedKeyword Error
|
||||||
hi def link rustConditional Conditional
|
hi def link rustConditional Conditional
|
||||||
hi def link rustIdentifier Identifier
|
hi def link rustIdentifier Identifier
|
||||||
hi def link rustCapsIdent rustIdentifier
|
hi def link rustCapsIdent rustIdentifier
|
||||||
@@ -224,10 +222,10 @@ hi def link rustModPathSep Delimiter
|
|||||||
hi def link rustFunction Function
|
hi def link rustFunction Function
|
||||||
hi def link rustFuncName Function
|
hi def link rustFuncName Function
|
||||||
hi def link rustFuncCall Function
|
hi def link rustFuncCall Function
|
||||||
hi def link rustCommentMLDoc rustCommentDoc
|
hi def link rustCommentLine Comment
|
||||||
hi def link rustCommentDoc SpecialComment
|
hi def link rustCommentLineDoc SpecialComment
|
||||||
hi def link rustCommentML rustComment
|
hi def link rustCommentBlock rustCommentLine
|
||||||
hi def link rustComment Comment
|
hi def link rustCommentBlockDoc rustCommentLineDoc
|
||||||
hi def link rustAssert PreCondit
|
hi def link rustAssert PreCondit
|
||||||
hi def link rustFail PreCondit
|
hi def link rustFail PreCondit
|
||||||
hi def link rustMacro Macro
|
hi def link rustMacro Macro
|
||||||
@@ -236,7 +234,11 @@ hi def link rustTodo Todo
|
|||||||
hi def link rustAttribute PreProc
|
hi def link rustAttribute PreProc
|
||||||
hi def link rustDeriving PreProc
|
hi def link rustDeriving PreProc
|
||||||
hi def link rustStorage StorageClass
|
hi def link rustStorage StorageClass
|
||||||
|
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
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
" Vim syntax file
|
" Vim syntax file
|
||||||
" Language: sbt
|
" Language: sbt
|
||||||
" Maintainer: Derek Wyatt <derek@{myfirstname}{mylastname}.org>
|
" Maintainer: Derek Wyatt <derek@{myfirstname}{mylastname}.org>
|
||||||
" Last Change: 2012 Jan 19
|
" Last Change: 2013 Oct 20
|
||||||
|
|
||||||
if exists("b:current_syntax")
|
if exists("b:current_syntax")
|
||||||
finish
|
finish
|
||||||
@@ -15,6 +15,7 @@ syn match sbtStringEscape "\\[nrfvb\\\"]" contained
|
|||||||
|
|
||||||
syn match sbtIdentitifer "^\S\+\ze\s*\(:=\|++=\|+=\|<<=\|<+=\)"
|
syn match sbtIdentitifer "^\S\+\ze\s*\(:=\|++=\|+=\|<<=\|<+=\)"
|
||||||
syn match sbtBeginningSeq "^[Ss]eq\>"
|
syn match sbtBeginningSeq "^[Ss]eq\>"
|
||||||
|
syn match sbtAddPlugin "^addSbtPlugin\>"
|
||||||
|
|
||||||
syn match sbtSpecial "\(:=\|++=\|+=\|<<=\|<+=\)"
|
syn match sbtSpecial "\(:=\|++=\|+=\|<<=\|<+=\)"
|
||||||
|
|
||||||
@@ -25,6 +26,7 @@ syn region sbtDocComment start="/\*\*" end="\*/" keepend
|
|||||||
hi link sbtString String
|
hi link sbtString String
|
||||||
hi link sbtIdentitifer Keyword
|
hi link sbtIdentitifer Keyword
|
||||||
hi link sbtBeginningSeq Keyword
|
hi link sbtBeginningSeq Keyword
|
||||||
|
hi link sbtAddPlugin Keyword
|
||||||
hi link sbtSpecial Special
|
hi link sbtSpecial Special
|
||||||
hi link sbtComment Comment
|
hi link sbtComment Comment
|
||||||
hi link sbtLineComment Comment
|
hi link sbtLineComment Comment
|
||||||
|
|||||||
348
syntax/scala.vim
348
syntax/scala.vim
@@ -1,192 +1,172 @@
|
|||||||
" Vim syntax file
|
|
||||||
" Language : Scala (http://scala-lang.org/)
|
|
||||||
" Maintainers: Stefan Matthias Aust, Julien Wetterwald
|
|
||||||
" Last Change: 2007 June 13
|
|
||||||
|
|
||||||
if version < 600
|
if version < 600
|
||||||
syntax clear
|
syntax clear
|
||||||
elseif exists("b:current_syntax")
|
elseif exists("b:current_syntax")
|
||||||
finish
|
finish
|
||||||
endif
|
endif
|
||||||
|
|
||||||
syn case match
|
|
||||||
syn sync minlines=50 maxlines=100
|
|
||||||
|
|
||||||
" most Scala keywords
|
|
||||||
syn keyword scalaKeyword case
|
|
||||||
syn keyword scalaKeyword catch
|
|
||||||
syn keyword scalaKeyword do
|
|
||||||
syn keyword scalaKeyword else
|
|
||||||
syn keyword scalaKeyword extends
|
|
||||||
syn keyword scalaKeyword final
|
|
||||||
syn keyword scalaKeyword finally
|
|
||||||
syn keyword scalaKeyword for
|
|
||||||
syn keyword scalaKeyword forSome
|
|
||||||
syn keyword scalaKeyword if
|
|
||||||
syn keyword scalaKeyword match
|
|
||||||
syn keyword scalaKeyword new
|
|
||||||
syn keyword scalaKeyword null
|
|
||||||
syn keyword scalaKeyword require
|
|
||||||
syn keyword scalaKeyword return
|
|
||||||
syn keyword scalaKeyword super
|
|
||||||
syn keyword scalaKeyword this
|
|
||||||
syn keyword scalaKeyword throw
|
|
||||||
syn keyword scalaKeyword try
|
|
||||||
syn keyword scalaKeyword type
|
|
||||||
syn keyword scalaKeyword while
|
|
||||||
syn keyword scalaKeyword with
|
|
||||||
syn keyword scalaKeyword yield
|
|
||||||
syn keyword scalaKeywordModifier abstract
|
|
||||||
syn keyword scalaKeywordModifier override
|
|
||||||
syn keyword scalaKeywordModifier final
|
|
||||||
syn keyword scalaKeywordModifier implicit
|
|
||||||
syn keyword scalaKeywordModifier lazy
|
|
||||||
syn keyword scalaKeywordModifier private
|
|
||||||
syn keyword scalaKeywordModifier protected
|
|
||||||
syn keyword scalaKeywordModifier sealed
|
|
||||||
syn match scalaKeyword "=>"
|
|
||||||
syn match scalaKeyword "<-"
|
|
||||||
syn match scalaKeyword "\<_\>"
|
|
||||||
|
|
||||||
syn match scalaOperator ":\{2,\}" "this is not a type
|
|
||||||
|
|
||||||
" package and import statements
|
|
||||||
syn keyword scalaPackage package nextgroup=scalaFqn skipwhite
|
|
||||||
syn keyword scalaImport import nextgroup=scalaFqn skipwhite
|
|
||||||
syn match scalaFqn "\<[._$a-zA-Z0-9,]*" contained nextgroup=scalaFqnSet
|
|
||||||
syn region scalaFqnSet start="{" end="}" contained
|
|
||||||
|
|
||||||
" boolean literals
|
|
||||||
syn keyword scalaBoolean true false
|
|
||||||
|
|
||||||
" definitions
|
|
||||||
syn keyword scalaDef def nextgroup=scalaDefName skipwhite
|
|
||||||
syn keyword scalaVal val nextgroup=scalaValName skipwhite
|
|
||||||
syn keyword scalaVar var nextgroup=scalaVarName skipwhite
|
|
||||||
syn keyword scalaClass class nextgroup=scalaClassName skipwhite
|
|
||||||
syn keyword scalaObject object nextgroup=scalaClassName skipwhite
|
|
||||||
syn keyword scalaTrait trait nextgroup=scalaClassName skipwhite
|
|
||||||
syn match scalaDefName "[^ =:;([]\+" contained nextgroup=scalaDefSpecializer skipwhite
|
|
||||||
syn match scalaValName "[^ =:;([]\+" contained
|
|
||||||
syn match scalaVarName "[^ =:;([]\+" contained
|
|
||||||
syn match scalaClassName "[^ =:;(\[]\+" contained nextgroup=scalaClassSpecializer skipwhite
|
|
||||||
syn region scalaDefSpecializer start="\[" end="\]" contained contains=scalaDefSpecializer
|
|
||||||
syn region scalaClassSpecializer start="\[" end="\]" contained contains=scalaClassSpecializer
|
|
||||||
syn match scalaBackTick "`[^`]\+`"
|
|
||||||
|
|
||||||
" type constructor (actually anything with an uppercase letter)
|
|
||||||
syn match scalaConstructor "\<[A-Z][_$a-zA-Z0-9]*\>" nextgroup=scalaConstructorSpecializer
|
|
||||||
syn region scalaConstructorSpecializer start="\[" end="\]" contained contains=scalaConstructorSpecializer
|
|
||||||
|
|
||||||
" method call
|
|
||||||
syn match scalaRoot "\<[a-zA-Z][_$a-zA-Z0-9]*\."me=e-1
|
|
||||||
syn match scalaMethodCall "\.[a-z][_$a-zA-Z0-9]*"ms=s+1
|
|
||||||
|
|
||||||
" type declarations in val/var/def
|
|
||||||
syn match scalaType ":\s*\%(=>\s*\)\?\%([\._$a-zA-Z0-9]\+\|([^)]\{-1,})\)\%(\[[^\]]\{-1,}\]\+\%([^)]*)\]\+\)\?\)\?\%(\s*\%(<:\|>:\|#\|=>\|⇒\)\s*\%([\._$a-zA-Z0-9]\+\|([^)]\{-1,})\)\%(\[[^\]]\{-1,}\]\+\%([^)]*)\]\+\)\?\)*\)*"ms=s+1
|
|
||||||
" type declarations in case statements
|
|
||||||
syn match scalaCaseType "\(case\s\+[_a-zA-Z0-9]\+\)\@<=:\s*[\._$a-zA-Z0-9]\+\(\[[^:]\{-1,}\]\+\)\?"ms=s+1
|
|
||||||
|
|
||||||
" comments
|
|
||||||
syn match scalaTodo "[tT][oO][dD][oO]" contained
|
|
||||||
syn match scalaLineComment "//.*" contains=scalaTodo
|
|
||||||
syn region scalaComment start="/\*" end="\*/" contains=scalaTodo
|
|
||||||
syn case ignore
|
|
||||||
syn include @scalaHtml syntax/html.vim
|
|
||||||
syn case match
|
|
||||||
syn region scalaDocComment start="/\*\*" end="\*/" contains=scalaDocTags,scalaTodo,@scalaHtml keepend
|
|
||||||
syn region scalaDocTags start="{@\(link\|linkplain\|inherit[Dd]oc\|doc[rR]oot\|value\)" end="}" contained
|
|
||||||
syn match scalaDocTags "@[a-z]\+" contained
|
|
||||||
|
|
||||||
" annotations
|
|
||||||
syn match scalaAnnotation "@[a-zA-Z]\+"
|
|
||||||
|
|
||||||
syn match scalaEmptyString "\"\""
|
|
||||||
|
|
||||||
" multi-line string literals
|
|
||||||
syn region scalaMultiLineString start="\"\"\"" end="\"\"\"\"\@!" contains=scalaUnicode
|
|
||||||
syn match scalaUnicode "\\u[0-9a-fA-F]\{4}" contained
|
|
||||||
|
|
||||||
" string literals with escapes
|
|
||||||
syn region scalaString start="\"[^"]" skip="\\\"" end="\"" contains=scalaStringEscape " TODO end \n or not?
|
|
||||||
syn match scalaStringEscape "\\u[0-9a-fA-F]\{4}" contained
|
|
||||||
syn match scalaStringEscape "\\[nrfvb\\\"]" contained
|
|
||||||
|
|
||||||
" symbol and character literals
|
|
||||||
syn match scalaSymbol "'[_a-zA-Z0-9][_a-zA-Z0-9]*\>"
|
|
||||||
syn match scalaChar "'[^'\\]'\|'\\.'\|'\\u[0-9a-fA-F]\{4}'"
|
|
||||||
|
|
||||||
" number literals
|
|
||||||
syn match scalaNumber "\<\(0[0-7]*\|0[xX]\x\+\|\d\+\)[lL]\=\>"
|
|
||||||
syn match scalaNumber "\(\<\d\+\.\d*\|\.\d\+\)\([eE][-+]\=\d\+\)\=[fFdD]\="
|
|
||||||
syn match scalaNumber "\<\d\+[eE][-+]\=\d\+[fFdD]\=\>"
|
|
||||||
syn match scalaNumber "\<\d\+\([eE][-+]\=\d\+\)\=[fFdD]\>"
|
|
||||||
|
|
||||||
" xml literals
|
|
||||||
syn match scalaXmlTag "<[a-zA-Z]\_[^>]*/>" contains=scalaXmlQuote,scalaXmlEscape,scalaXmlString
|
|
||||||
syn region scalaXmlString start="\"" end="\"" contained
|
|
||||||
syn match scalaXmlStart "<[a-zA-Z]\_[^>]*>" contained contains=scalaXmlQuote,scalaXmlEscape,scalaXmlString
|
|
||||||
syn region scalaXml start="<\([a-zA-Z]\_[^>]*\_[^/]\|[a-zA-Z]\)>" matchgroup=scalaXmlStart end="</\_[^>]\+>" contains=scalaXmlEscape,scalaXmlQuote,scalaXml,scalaXmlStart,scalaXmlComment
|
|
||||||
syn region scalaXmlEscape matchgroup=scalaXmlEscapeSpecial start="{" matchgroup=scalaXmlEscapeSpecial end="}" contained contains=TOP
|
|
||||||
syn match scalaXmlQuote "&[^;]\+;" contained
|
|
||||||
syn match scalaXmlComment "<!--\_[^>]*-->" contained
|
|
||||||
|
|
||||||
" REPL
|
|
||||||
syn match scalaREPLCmdLine "\<scala>\>"
|
|
||||||
|
|
||||||
" map Scala groups to standard groups
|
|
||||||
hi link scalaKeyword Keyword
|
|
||||||
hi link scalaKeywordModifier Function
|
|
||||||
hi link scalaAnnotation Include
|
|
||||||
hi link scalaPackage Include
|
|
||||||
hi link scalaImport Include
|
|
||||||
hi link scalaREPLCmdLine Include
|
|
||||||
hi link scalaDocTags Include
|
|
||||||
hi link scalaBackTick Include
|
|
||||||
hi link scalaBoolean Boolean
|
|
||||||
hi link scalaOperator Normal
|
|
||||||
hi link scalaNumber Number
|
|
||||||
hi link scalaEmptyString String
|
|
||||||
hi link scalaString String
|
|
||||||
hi link scalaChar String
|
|
||||||
hi link scalaMultiLineString String
|
|
||||||
hi link scalaStringEscape Special
|
|
||||||
hi link scalaSymbol Special
|
|
||||||
hi link scalaUnicode Special
|
|
||||||
hi link scalaComment Comment
|
|
||||||
hi link scalaLineComment Comment
|
|
||||||
hi link scalaDocComment Comment
|
|
||||||
hi link scalaTodo Todo
|
|
||||||
hi link scalaType Type
|
|
||||||
hi link scalaCaseType Type
|
|
||||||
hi link scalaTypeSpecializer scalaType
|
|
||||||
hi link scalaXml String
|
|
||||||
hi link scalaXmlTag Include
|
|
||||||
hi link scalaXmlString String
|
|
||||||
hi link scalaXmlStart Include
|
|
||||||
hi link scalaXmlEscape Normal
|
|
||||||
hi link scalaXmlEscapeSpecial Special
|
|
||||||
hi link scalaXmlQuote Special
|
|
||||||
hi link scalaXmlComment Comment
|
|
||||||
hi link scalaDef Keyword
|
|
||||||
hi link scalaVar Keyword
|
|
||||||
hi link scalaVal Keyword
|
|
||||||
hi link scalaClass Keyword
|
|
||||||
hi link scalaObject Keyword
|
|
||||||
hi link scalaTrait Keyword
|
|
||||||
hi link scalaDefName Function
|
|
||||||
hi link scalaDefSpecializer Function
|
|
||||||
hi link scalaClassName Special
|
|
||||||
hi link scalaClassSpecializer Special
|
|
||||||
hi link scalaConstructor Special
|
|
||||||
hi link scalaConstructorSpecializer scalaConstructor
|
|
||||||
|
|
||||||
let b:current_syntax = "scala"
|
let b:current_syntax = "scala"
|
||||||
|
|
||||||
" you might like to put these lines in your .vimrc
|
syn case match
|
||||||
"
|
syn sync minlines=200 maxlines=1000
|
||||||
" customize colors a little bit (should be a different file)
|
|
||||||
" hi scalaNew gui=underline
|
syn keyword scalaKeyword catch do else final finally for forSome if
|
||||||
" hi scalaMethodCall gui=italic
|
syn keyword scalaKeyword match return throw try while yield macro
|
||||||
" hi scalaValName gui=underline
|
syn keyword scalaKeyword class trait object extends with nextgroup=scalaInstanceDeclaration skipwhite
|
||||||
" hi scalaVarName gui=underline
|
syn keyword scalaKeyword case nextgroup=scalaKeyword,scalaCaseFollowing skipwhite
|
||||||
|
syn keyword scalaKeyword val nextgroup=scalaNameDefinition,scalaQuasiQuotes skipwhite
|
||||||
|
syn keyword scalaKeyword def var nextgroup=scalaNameDefinition skipwhite
|
||||||
|
hi link scalaKeyword Keyword
|
||||||
|
|
||||||
|
syn keyword scalaAkkaSpecialWord when goto using startWith initialize onTransition stay become unbecome
|
||||||
|
hi link scalaAkkaSpecialWord PreProc
|
||||||
|
|
||||||
|
syn match scalaSymbol /'[_A-Za-z0-9$]\+/
|
||||||
|
hi link scalaSymbol Number
|
||||||
|
|
||||||
|
syn match scalaChar /'.'/
|
||||||
|
syn match scalaEscapedChar /\\[\\ntbrf]/
|
||||||
|
syn match scalaUnicodeChar /\\u[A-Fa-f0-9]\{4}/
|
||||||
|
hi link scalaChar Character
|
||||||
|
hi link scalaEscapedChar Function
|
||||||
|
hi link scalaUnicodeChar Special
|
||||||
|
|
||||||
|
syn match scalaOperator "||"
|
||||||
|
syn match scalaOperator "&&"
|
||||||
|
hi link scalaOperator Special
|
||||||
|
|
||||||
|
syn match scalaNameDefinition /\<[_A-Za-z0-9$]\+\>/ contained nextgroup=scalaPostNameDefinition
|
||||||
|
syn match scalaNameDefinition /`[^`]\+`/ contained nextgroup=scalaPostNameDefinition
|
||||||
|
syn match scalaPostNameDefinition /\_s*:\_s*/ contained nextgroup=scalaTypeDeclaration
|
||||||
|
hi link scalaNameDefinition Function
|
||||||
|
|
||||||
|
syn match scalaInstanceDeclaration /\<[_\.A-Za-z0-9$]\+\>/ contained nextgroup=scalaInstanceHash
|
||||||
|
syn match scalaInstanceDeclaration /`[^`]\+`/ contained
|
||||||
|
syn match scalaInstanceHash /#/ contained nextgroup=scalaInstanceDeclaration
|
||||||
|
hi link scalaInstanceDeclaration Special
|
||||||
|
hi link scalaInstanceHash Type
|
||||||
|
|
||||||
|
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
|
||||||
|
hi link scalaCaseFollowing Special
|
||||||
|
|
||||||
|
syn keyword scalaKeywordModifier abstract override final lazy implicit implicitly private protected sealed null require super
|
||||||
|
hi link scalaKeywordModifier Function
|
||||||
|
|
||||||
|
syn keyword scalaSpecial this true false package import ne eq
|
||||||
|
syn keyword scalaSpecial new nextgroup=scalaInstanceDeclaration skipwhite
|
||||||
|
syn match scalaSpecial "\%(=>\|⇒\|<-\|←\|->\|→\)"
|
||||||
|
syn match scalaSpecial /`[^`]*`/ " Backtick literals
|
||||||
|
hi link scalaSpecial PreProc
|
||||||
|
|
||||||
|
syn match scalaStringEmbeddedQuote /\\"/ contained
|
||||||
|
syn region scalaString start=/"/ end=/"/ contains=scalaStringEmbeddedQuote,scalaEscapedChar,scalaUnicodeChar
|
||||||
|
hi link scalaString String
|
||||||
|
hi link scalaStringEmbeddedQuote String
|
||||||
|
|
||||||
|
syn region scalaSString matchgroup=Special start=/s"/ skip=/\\"/ end=/"/ contains=scalaInterpolation,scalaEscapedChar,scalaUnicodeChar
|
||||||
|
syn match scalaInterpolation /\$[a-zA-Z0-9_$]\+/ contained
|
||||||
|
syn match scalaInterpolation /\${[^}]\+}/ contained
|
||||||
|
hi link scalaSString String
|
||||||
|
hi link scalaInterpolation Function
|
||||||
|
|
||||||
|
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\.]\+/ contained
|
||||||
|
hi link scalaFString String
|
||||||
|
hi link scalaFInterpolation Function
|
||||||
|
|
||||||
|
syn region scalaQuasiQuotes matchgroup=Type start=/\<q"/ skip=/\\"/ end=/"/ contains=scalaInterpolation
|
||||||
|
syn region scalaQuasiQuotes matchgroup=Type start=/\<[tcp]q"/ skip=/\\"/ end=/"/ contains=scalaInterpolation
|
||||||
|
hi link scalaQuasiQuotes String
|
||||||
|
|
||||||
|
syn region scalaTripleQuasiQuotes matchgroup=Type start=/\<q"""/ end=/"""\%([^"]\|$\)/ contains=scalaInterpolation
|
||||||
|
syn region scalaTripleQuasiQuotes matchgroup=Type start=/\<[tcp]q"""/ end=/"""\%([^"]\|$\)/ contains=scalaInterpolation
|
||||||
|
hi link scalaTripleQuasiQuotes String
|
||||||
|
|
||||||
|
syn region scalaTripleString start=/"""/ end=/"""\%([^"]\|$\)/ contains=scalaEscapedChar,scalaUnicodeChar
|
||||||
|
syn region scalaTripleSString matchgroup=Special start=/s"""/ end=/"""\%([^"]\|$\)/ contains=scalaInterpolation,scalaEscapedChar,scalaUnicodeChar
|
||||||
|
syn region scalaTripleFString matchgroup=Special start=/f"""/ end=/"""\%([^"]\|$\)/ contains=scalaInterpolation,scalaFInterpolation,scalaEscapedChar,scalaUnicodeChar
|
||||||
|
hi link scalaTripleString String
|
||||||
|
hi link scalaTripleSString String
|
||||||
|
hi link scalaTripleFString String
|
||||||
|
|
||||||
|
syn match scalaNumber /\<0[dDfFlL]\?\>/ " Just a bare 0
|
||||||
|
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]\?\>/ " Hex number
|
||||||
|
syn match scalaNumber /\%(\<\d\+\.\d*\|\.\d\+\)\%([eE][-+]\=\d\+\)\=[fFdD]\=/ " exponential notation 1
|
||||||
|
syn match scalaNumber /\<\d\+[eE][-+]\=\d\+[fFdD]\=\>/ " exponential notation 2
|
||||||
|
syn match scalaNumber /\<\d\+\%([eE][-+]\=\d\+\)\=[fFdD]\>/ " exponential notation 3
|
||||||
|
hi link scalaNumber Number
|
||||||
|
|
||||||
|
syn region scalaRoundBrackets start="(" end=")" skipwhite contained contains=scalaTypeDeclaration,scalaSquareBrackets,scalaRoundBrackets
|
||||||
|
|
||||||
|
syn region scalaSquareBrackets matchgroup=Type start="\[" end="\]" skipwhite nextgroup=scalaTypeExtension contains=scalaTypeDeclaration,scalaSquareBrackets,scalaTypeOperator,scalaTypeAnnotationParameter
|
||||||
|
syn match scalaTypeOperator /[-+=:<>]\+/ contained
|
||||||
|
syn match scalaTypeAnnotationParameter /@\<[`_A-Za-z0-9$]\+\>/ contained
|
||||||
|
hi link scalaTypeOperator Keyword
|
||||||
|
hi link scalaTypeAnnotationParameter Function
|
||||||
|
|
||||||
|
syn region scalaMultilineComment start="/\*" end="\*/" contains=scalaMultilineComment,scalaDocLinks,scalaParameterAnnotation,scalaCommentAnnotation,scalaCommentCodeBlock,@scalaHtml keepend
|
||||||
|
syn match scalaCommentAnnotation "@[_A-Za-z0-9$]\+" contained
|
||||||
|
syn match scalaParameterAnnotation "@param" nextgroup=scalaParamAnnotationValue skipwhite contained
|
||||||
|
syn match scalaParamAnnotationValue /[`_A-Za-z0-9$]\+/ contained
|
||||||
|
syn region scalaDocLinks start="\[\[" end="\]\]" contained
|
||||||
|
syn region scalaCommentCodeBlock matchgroup=Keyword start="{{{" end="}}}" contained
|
||||||
|
hi link scalaMultilineComment Comment
|
||||||
|
hi link scalaDocLinks Function
|
||||||
|
hi link scalaParameterAnnotation Function
|
||||||
|
hi link scalaParamAnnotationValue Keyword
|
||||||
|
hi link scalaCommentAnnotation Function
|
||||||
|
hi link scalaCommentCodeBlock String
|
||||||
|
|
||||||
|
syn match scalaAnnotation /@\<[`_A-Za-z0-9$]\+\>/
|
||||||
|
hi link scalaAnnotation PreProc
|
||||||
|
|
||||||
|
syn match scalaTrailingComment "//.*$"
|
||||||
|
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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user