mirror of
https://github.com/sheerun/vim-polyglot.git
synced 2025-11-08 11:33:52 -05:00
Update
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -56,7 +56,6 @@ 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\>'
|
||||||
|
|||||||
194
ftplugin/csv.vim
194
ftplugin/csv.vim
@@ -136,7 +136,7 @@ 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"
|
||||||
|
|
||||||
" Delete all functions
|
" Delete all functions
|
||||||
" disabled currently, because otherwise when switching ft
|
" disabled currently, because otherwise when switching ft
|
||||||
@@ -168,6 +168,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 +276,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 +661,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
|
||||||
@@ -795,16 +798,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 +839,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 +848,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
|
let b:col = b
|
||||||
0
|
sil! doautocmd FileType csv
|
||||||
exe "vert res" width
|
" remove leading delimiter
|
||||||
let b:col=b
|
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 +891,12 @@ fu! <sid>SplitHeaderLine(lines, bang, hor) "{{{3
|
|||||||
let &sbo = _sbo
|
let &sbo = _sbo
|
||||||
endif
|
endif
|
||||||
setl noscrollbind
|
setl noscrollbind
|
||||||
wincmd c
|
try
|
||||||
|
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 +915,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 +990,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 +1062,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 +1093,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") . '"'
|
||||||
@@ -1574,7 +1602,7 @@ 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
|
||||||
@@ -1665,59 +1693,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
|
call <sid>Init(1, line('$'))
|
||||||
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('$'))
|
|
||||||
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,22 +1782,35 @@ 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
|
||||||
call <sid>MoveCol(-1, line("."))
|
" Move 1 column backwards, unless the cursor is in the first column
|
||||||
|
" 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
|
||||||
|
|
||||||
@@ -1782,7 +1820,7 @@ fu! <sid>CSVMappings() "{{{3
|
|||||||
call <sid>Map('noremap', 'L', ':<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', '<C-Left>', ':<C-U>call <SID>MoveCol(-1, line("."))<CR>')
|
||||||
call <sid>Map('noremap', 'H', ':<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,
|
call <sid>Map('noremap', '<Up>', ':<C-U>call <SID>MoveCol(0,
|
||||||
@@ -1846,8 +1884,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')
|
||||||
@@ -2328,6 +2366,11 @@ 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\+')
|
||||||
@@ -2336,7 +2379,7 @@ fu! csv#EvalColumn(nr, func, first, last) range "{{{3
|
|||||||
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
|
||||||
@@ -2396,7 +2439,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.'\?$')
|
||||||
@@ -2435,6 +2478,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('$')
|
||||||
|
|||||||
@@ -18,15 +18,21 @@
|
|||||||
"
|
"
|
||||||
" Flag to indicate whether to enable the commands listed above.
|
" 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")
|
if !exists("g:go_fmt_commands")
|
||||||
let g:go_fmt_commands = 1
|
let g:go_fmt_commands = 1
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
if !exists("g:gofmt_command")
|
||||||
|
let g:gofmt_command = "gofmt"
|
||||||
|
endif
|
||||||
|
|
||||||
if g:go_fmt_commands
|
if g:go_fmt_commands
|
||||||
command! -buffer Fmt call s:GoFormat()
|
command! -buffer Fmt call s:GoFormat()
|
||||||
@@ -34,7 +40,7 @@ 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('$'))
|
||||||
@@ -51,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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -291,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]
|
||||||
|
|||||||
@@ -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 = '$$'
|
||||||
@@ -188,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
|
||||||
@@ -223,19 +227,39 @@ 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'
|
||||||
call writefile(['setlocal',
|
if g:LatexBox_latexmk_preview_continuously
|
||||||
\ 'set T=%TEMP%\sthUnique.tmp',
|
call writefile(['setlocal',
|
||||||
\ 'wmic process where (Name="WMIC.exe" AND CommandLine LIKE "%%%TIME%%%") '
|
\ 'set T=%TEMP%\sthUnique.tmp',
|
||||||
\ . 'get ParentProcessId /value | find "ParentProcessId" >%T%',
|
\ 'wmic process where (Name="WMIC.exe" AND CommandLine LIKE "%%%TIME%%%") '
|
||||||
\ 'set /P A=<%T%',
|
\ . 'get ParentProcessId /value | find "ParentProcessId" >%T%',
|
||||||
\ 'set CMDPID=%A:~16% & del %T%',
|
\ 'set /P A=<%T%',
|
||||||
\ vimsetpid,
|
\ 'set CMDPID=%A:~16% & del %T%',
|
||||||
\ cmd,
|
\ vimsetpid,
|
||||||
\ 'set LATEXERR=%ERRORLEVEL%',
|
\ 'set SUCCESSCMD='.svimcmd,
|
||||||
\ vimcmd,
|
\ 'set FAILURECMD='.fvimcmd,
|
||||||
\ 'endlocal'], asyncbat)
|
\ cmd,
|
||||||
|
\ 'endlocal'], asyncbat)
|
||||||
|
else
|
||||||
|
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,
|
||||||
|
\ cmd,
|
||||||
|
\ 'set LATEXERR=%ERRORLEVEL%',
|
||||||
|
\ vimcmd,
|
||||||
|
\ 'endlocal'], asyncbat)
|
||||||
|
endif
|
||||||
|
|
||||||
" Define command
|
" Define command
|
||||||
let cmd = '!start /b ' . asyncbat . ' & del ' . asyncbat
|
let cmd = '!start /b ' . asyncbat . ' & del ' . asyncbat
|
||||||
@@ -248,13 +272,26 @@ function! LatexBox_Latexmk(force)
|
|||||||
" Define callback after latexmk is finished
|
" Define callback after latexmk is finished
|
||||||
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'"
|
||||||
let cmd = vimsetpid . ' ; ' . escape(cmd, '%') . ' ; ' . vimcmd
|
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
|
||||||
|
endif
|
||||||
let cmd = '! (' . cmd . ') >/dev/null &'
|
let cmd = '! (' . cmd . ') >/dev/null &'
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|||||||
@@ -117,16 +117,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
|
||||||
|
|
||||||
"
|
"
|
||||||
|
|||||||
@@ -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')
|
||||||
|
|||||||
@@ -6,6 +6,36 @@
|
|||||||
if exists("b:did_indent")
|
if exists("b:did_indent")
|
||||||
finish
|
finish
|
||||||
endif
|
endif
|
||||||
|
let b:did_indent = 1
|
||||||
|
|
||||||
|
setlocal autoindent sw=2 et
|
||||||
|
setlocal indentexpr=GetLessIndent()
|
||||||
|
setlocal indentkeys=o,O,*<Return>,<:>,!^F
|
||||||
|
|
||||||
|
" Only define the function once.
|
||||||
|
if exists("*GetLessIndent")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
let s:property = '^\s*:\|^\s*[[:alnum:]#{}-]\+\%(:\|\s*=\)'
|
||||||
|
|
||||||
|
function! GetLessIndent()
|
||||||
|
let lnum = prevnonblank(v:lnum-1)
|
||||||
|
let line = substitute(getline(lnum),'\s\+$','','')
|
||||||
|
let cline = substitute(substitute(getline(v:lnum),'\s\+$','',''),'^\s\+','','')
|
||||||
|
let lastcol = strlen(line)
|
||||||
|
let line = substitute(line,'^\s\+','','')
|
||||||
|
let indent = indent(lnum)
|
||||||
|
let cindent = indent(v:lnum)
|
||||||
|
if line !~ s:property && cline =~ s:property
|
||||||
|
return indent + &sw
|
||||||
|
"elseif line =~ s:property && cline !~ s:property
|
||||||
|
"return indent - &sw
|
||||||
|
else
|
||||||
|
return -1
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" vim:set sw=2:
|
||||||
|
|
||||||
runtime! indent/css.vim
|
|
||||||
|
|
||||||
|
|||||||
@@ -18,10 +18,10 @@ 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 function
|
||||||
syn keyword elixirKeyword exit raise throw after rescue catch else
|
syn keyword elixirKeyword exit raise throw after rescue catch else
|
||||||
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 '%=\|\*=\|\*\*=\|+=\|-=\|\^=\|||='
|
||||||
|
|||||||
@@ -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,12 @@ 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
|
||||||
|
|
||||||
|
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 +72,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
|
||||||
|
|||||||
@@ -54,12 +54,13 @@ endif
|
|||||||
" them. If you have any suggestions, please let me know.
|
" them. If you have any suggestions, please let me know.
|
||||||
"
|
"
|
||||||
syn region masonPod start="^=[a-z]" end="^=cut" keepend contained contains=@podTop
|
syn region masonPod start="^=[a-z]" end="^=cut" keepend contained contains=@podTop
|
||||||
syn region masonPerlBraces start="{" end="}" contained
|
syn cluster perlTop remove=perlBraces
|
||||||
syn region masonLine matchgroup=Delimiter start="^%" end="$" keepend contains=@perlTop,masonPerlBraces
|
syn region masonLine matchgroup=Delimiter start="^%" end="$" keepend contains=@perlTop
|
||||||
syn region masonExpr matchgroup=Delimiter start="<%" end="%>" 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 masonPerl matchgroup=Delimiter start="<%perl>" end="</%perl>" contains=masonPod,@perlTop
|
||||||
syn region masonComp keepend matchgroup=Delimiter start="<&\s*\%(\a\+:\)\?[._/[:alnum:]]*" end="&>" contains=@perlTop
|
syn region masonComp keepend matchgroup=Delimiter start="<&\s*\%([-._/[:alnum:]]\+:\)\?[-._/[:alnum:]]*" end="&>" contains=@perlTop
|
||||||
syn region masonComp keepend matchgroup=Delimiter skipnl start="<&|\s*\%(\a\+:\)\?[._/[:alnum:]]*" end="&>" contains=@perlTop nextgroup=masonCompContent
|
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 masonCompContent matchgroup=Delimiter start="" end="</&>" contained contains=@masonTop
|
||||||
|
|
||||||
syn region masonArgs matchgroup=Delimiter start="<%args>" end="</%args>" contains=masonPod,@perlTop
|
syn region masonArgs matchgroup=Delimiter start="<%args>" end="</%args>" contains=masonPod,@perlTop
|
||||||
@@ -70,8 +71,8 @@ syn region masonOnce matchgroup=Delimiter start="<%once>" end="</%once>" contain
|
|||||||
syn region masonClass matchgroup=Delimiter start="<%class>" end="</%class>" 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 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 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 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 masonFlags matchgroup=Delimiter start="<%flags>" end="</%flags>" contains=masonPod,@perlTop
|
||||||
syn region masonAttr matchgroup=Delimiter start="<%attr>" end="</%attr>" contains=masonPod,@perlTop
|
syn region masonAttr matchgroup=Delimiter start="<%attr>" end="</%attr>" contains=masonPod,@perlTop
|
||||||
@@ -96,6 +97,7 @@ if version >= 508 || !exists("did_mason_syn_inits")
|
|||||||
|
|
||||||
HiLink masonDoc Comment
|
HiLink masonDoc Comment
|
||||||
HiLink masonPod Comment
|
HiLink masonPod Comment
|
||||||
|
HiLink masonPerlComment perlComment
|
||||||
|
|
||||||
delc HiLink
|
delc HiLink
|
||||||
endif
|
endif
|
||||||
|
|||||||
@@ -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
|
||||||
@@ -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.
|
||||||
|
|||||||
@@ -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 Oct 29
|
" Last Change: 2013 Dec 10
|
||||||
|
|
||||||
if version < 600
|
if version < 600
|
||||||
syntax clear
|
syntax clear
|
||||||
@@ -19,22 +19,23 @@ syn keyword rustOperator as
|
|||||||
syn match rustAssert "\<assert\(\w\)*!" contained
|
syn match rustAssert "\<assert\(\w\)*!" contained
|
||||||
syn match rustFail "\<fail\(\w\)*!" contained
|
syn match rustFail "\<fail\(\w\)*!" contained
|
||||||
syn keyword rustKeyword break continue do extern
|
syn keyword rustKeyword break continue do extern
|
||||||
syn keyword rustKeyword in if impl let log
|
syn keyword rustKeyword for in if impl let
|
||||||
syn keyword rustKeyword for impl let log
|
syn keyword rustKeyword loop once priv pub
|
||||||
syn keyword rustKeyword loop mod 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 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 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
|
||||||
@@ -89,6 +90,7 @@ syn keyword rustTrait Orderable Signed Unsigned Round
|
|||||||
syn keyword rustTrait Primitive Int Float ToStrRadix ToPrimitive FromPrimitive
|
syn keyword rustTrait Primitive Int Float ToStrRadix ToPrimitive FromPrimitive
|
||||||
syn keyword rustTrait GenericPath Path PosixPath WindowsPath
|
syn keyword rustTrait GenericPath Path PosixPath WindowsPath
|
||||||
syn keyword rustTrait RawPtr
|
syn keyword rustTrait RawPtr
|
||||||
|
syn keyword rustTrait Buffer Writer Reader Seek
|
||||||
syn keyword rustTrait SendStr SendStrOwned SendStrStatic IntoSendStr
|
syn keyword rustTrait SendStr SendStrOwned SendStrStatic IntoSendStr
|
||||||
syn keyword rustTrait Str StrVector StrSlice OwnedStr
|
syn keyword rustTrait Str StrVector StrSlice OwnedStr
|
||||||
syn keyword rustTrait IterBytes
|
syn keyword rustTrait IterBytes
|
||||||
@@ -143,38 +145,30 @@ 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 /\\\([nrt0\\'"]\|x\x\{2}\|u\x\{4}\|U\x\{8}\)/
|
||||||
syn match rustStringContinuation display contained /\\\n\s*/
|
syn match rustStringContinuation display contained /\\\n\s*/
|
||||||
syn region rustString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=rustTodo,rustFormat,rustSpecial,rustStringContinuation
|
syn region rustString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=rustSpecial,rustSpecialError,rustStringContinuation
|
||||||
syn region rustString start='r\z(#*\)"' end='"\z1'
|
syn region rustString start='r\z(#*\)"' end='"\z1'
|
||||||
|
|
||||||
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 rustOctNumber display "\<0o[0-7_]\+\>"
|
syn match rustFloat display "\<[0-9][0-9_]*\.\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\@!"
|
||||||
syn match rustOctNumber display "\<0o[0-7_]\+\(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 rustOctNumber display "\<0o[0-7_]\+\(i8\|i16\|i32\|i64\)\>"
|
" a decimal point and more numbers; an exponent; and a type suffix.
|
||||||
syn match rustBinNumber display "\<0b[01_]\+\>"
|
syn match rustFloat display "\<[0-9][0-9_]*\%(\.[0-9][0-9_]*\)\%([eE][+-]\=[0-9_]\+\)\=\(f32\|f64\)\="
|
||||||
syn match rustBinNumber display "\<0b[01_]\+\(u\|u8\|u16\|u32\|u64\)\>"
|
syn match rustFloat display "\<[0-9][0-9_]*\%(\.[0-9][0-9_]*\)\=\%([eE][+-]\=[0-9_]\+\)\(f32\|f64\)\="
|
||||||
syn match rustBinNumber display "\<0b[01_]\+\(i8\|i16\|i32\|i64\)\>"
|
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_]*\([eE][+-]\=[0-9_]\+\)\>"
|
|
||||||
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=/&'\%(\([^'\\]\|\\\(['nrt0\\\"]\|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
|
||||||
@@ -183,12 +177,24 @@ syn region rustGenericLifetimeCandidate display start=/\%(<\|,\s*\)\@<='/ end=/[
|
|||||||
|
|
||||||
"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 /'\([^'\\]\|\\\([nrt0\\'"]\|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 cluster rustComment contains=rustCommentLine,rustCommentLineDoc,rustCommentBlock,rustCommentBlockDoc
|
||||||
syn region rustComment start="//" end="$" contains=rustTodo keepend
|
syn region rustCommentLine start="//" end="$" contains=rustTodo
|
||||||
syn region rustCommentMLDoc start="/\*\%(!\|\*/\@!\)" end="\*/" contains=rustTodo
|
syn region rustCommentLineDoc start="//\%(//\@!\|!\)" end="$" contains=rustTodo
|
||||||
syn region rustCommentDoc start="//[/!]" end="$" contains=rustTodo keepend
|
syn region rustCommentBlock matchgroup=rustCommentBlock start="/\*\%(!\|\*[*/]\@!\)\@!" end="\*/" contains=rustTodo,@rustComment keepend extend
|
||||||
|
syn region rustCommentBlockDoc matchgroup=rustCommentBlockDoc start="/\*\%(!\|\*[*/]\@!\)" end="\*/" contains=rustTodo,@rustComment keepend extend
|
||||||
|
" 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
|
||||||
|
|
||||||
@@ -200,6 +206,7 @@ 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 rustOctNumber rustNumber
|
||||||
hi def link rustBinNumber rustNumber
|
hi def link rustBinNumber rustNumber
|
||||||
@@ -207,8 +214,8 @@ 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
|
||||||
@@ -221,6 +228,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
|
||||||
@@ -229,10 +237,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
|
||||||
@@ -241,6 +249,7 @@ 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
|
||||||
|
|
||||||
" Other Suggestions:
|
" Other Suggestions:
|
||||||
|
|||||||
280
syntax/scala.vim
280
syntax/scala.vim
@@ -1,192 +1,104 @@
|
|||||||
" 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
|
||||||
" hi scalaValName gui=underline
|
syn keyword scalaKeyword class trait object extends with type nextgroup=scalaInstanceDeclaration skipwhite
|
||||||
" hi scalaVarName gui=underline
|
syn keyword scalaKeyword case nextgroup=scalaCaseFollowing skipwhite
|
||||||
|
syn keyword scalaKeyword val nextgroup=scalaNameDefinition,scalaQuasiQuotes skipwhite
|
||||||
|
syn keyword scalaKeyword def var nextgroup=scalaNameDefinition skipwhite
|
||||||
|
hi link scalaKeyword Keyword
|
||||||
|
|
||||||
|
syn match scalaNameDefinition /\<[_A-Za-z0-9$]\+\>/ contained
|
||||||
|
syn match scalaNameDefinition /`[^`]\+`/ contained
|
||||||
|
hi link scalaNameDefinition Function
|
||||||
|
|
||||||
|
syn match scalaInstanceDeclaration /\<[_\.A-Za-z0-9$]\+\>/ contained
|
||||||
|
syn match scalaInstanceDeclaration /`[^`]\+`/ contained
|
||||||
|
hi link scalaInstanceDeclaration Special
|
||||||
|
|
||||||
|
syn match scalaCaseFollowing /\<[_\.A-Za-z0-9$]*\>/ contained
|
||||||
|
syn match scalaCaseFollowing /`[^`]\+`/ contained
|
||||||
|
hi link scalaCaseFollowing Special
|
||||||
|
|
||||||
|
syn keyword scalaKeywordModifier abstract override final implicit lazy private protected sealed null require super
|
||||||
|
hi link scalaKeywordModifier Function
|
||||||
|
|
||||||
|
syn keyword scalaSpecial this true false package import
|
||||||
|
syn keyword scalaSpecial new nextgroup=scalaInstanceDeclaration skipwhite
|
||||||
|
syn match scalaSpecial "\%(=>\|⇒\|<-\|←\|->\|→\)"
|
||||||
|
syn match scalaSpecial /`[^`]*`/ " Backtick literals
|
||||||
|
hi link scalaSpecial PreProc
|
||||||
|
|
||||||
|
syn region scalaString start=/"/ skip=/\\"/ end=/"/
|
||||||
|
hi link scalaString String
|
||||||
|
|
||||||
|
syn region scalaSString matchgroup=Special start=/s"/ skip=/\\"/ end=/"/ contains=scalaInterpolation
|
||||||
|
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
|
||||||
|
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=/"""/
|
||||||
|
syn region scalaTripleSString matchgroup=PreProc start=/s"""/ end=/"""/
|
||||||
|
syn region scalaTripleFString matchgroup=PreProc start=/f"""/ end=/"""/
|
||||||
|
hi link scalaTripleString String
|
||||||
|
hi link scalaTripleSString String
|
||||||
|
hi link scalaTripleFString String
|
||||||
|
|
||||||
|
syn match scalaNumber /\<0[dDfFlL]\?\>/
|
||||||
|
syn match scalaNumber /\<[1-9]\d*[dDfFlL]\?\>/
|
||||||
|
syn match scalaNumber /\<0[xX][0-9a-fA-F]\+[dDfFlL]\?\>/
|
||||||
|
syn match scalaNumber "\%(\<\d\+\.\d*\|\.\d\+\)\%([eE][-+]\=\d\+\)\=[fFdD]\="
|
||||||
|
syn match scalaNumber "\<\d\+[eE][-+]\=\d\+[fFdD]\=\>"
|
||||||
|
syn match scalaNumber "\<\d\+\%([eE][-+]\=\d\+\)\=[fFdD]\>"
|
||||||
|
hi link scalaNumber Number
|
||||||
|
|
||||||
|
syn region scalaSquareBrackets matchgroup=Type start="\[" end="\]" contains=scalaSpecial,scalaTypeParameter,scalaSquareBrackets,scalaTypeOperator
|
||||||
|
syn match scalaTypeAnnotation /\%(:\s*\)\@<=[_\.A-Za-z0-9$]\+/
|
||||||
|
syn match scalaTypeParameter /[_\.A-Za-z0-9$]\+/ contained
|
||||||
|
syn match scalaTypeOperator /[=:<>]\+/ contained
|
||||||
|
hi link scalaTypeAnnotation Type
|
||||||
|
hi link scalaTypeParameter Type
|
||||||
|
hi link scalaTypeOperator Type
|
||||||
|
|
||||||
|
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
|
||||||
|
|||||||
Reference in New Issue
Block a user