mirror of
https://github.com/sheerun/vim-polyglot.git
synced 2025-11-11 13:03:50 -05:00
Update
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -1,8 +1,5 @@
|
||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'crystal') == -1
|
||||
|
||||
let s:save_cpo = &cpo
|
||||
set cpo&vim
|
||||
|
||||
let s:V = vital#crystal#new()
|
||||
let s:P = s:V.import('Process')
|
||||
let s:C = s:V.import('ColorEcho')
|
||||
@@ -365,9 +362,6 @@ function! crystal_lang#expand(file, pos, ...) abort
|
||||
return crystal_lang#tool('expand', a:file, a:pos, get(a:, 1, ''))
|
||||
endfunction
|
||||
|
||||
let &cpo = s:save_cpo
|
||||
unlet s:save_cpo
|
||||
|
||||
" vim: sw=2 sts=2 et:
|
||||
|
||||
endif
|
||||
|
||||
@@ -27,12 +27,16 @@ function! s:clearQfList(reason) abort
|
||||
endif
|
||||
endfunction
|
||||
|
||||
function! dart#fmt(q_args) abort
|
||||
let cmd = s:FindDartFmt()
|
||||
if type(cmd) != type('') | return | endif
|
||||
function! dart#fmt(...) abort
|
||||
let l:dartfmt = s:FindDartFmt()
|
||||
if type(l:dartfmt) != type('') | return | endif
|
||||
let buffer_content = getline(1, '$')
|
||||
let args = '--stdin-name '.expand('%').' '.a:q_args
|
||||
let lines = systemlist(printf('%s %s', cmd, args), join(buffer_content, "\n"))
|
||||
let l:cmd = [l:dartfmt, '--stdin-name', shellescape(expand('%'))]
|
||||
if exists('g:dartfmt_options')
|
||||
call extend(l:cmd, g:dartfmt_options)
|
||||
endif
|
||||
call extend(l:cmd, a:000)
|
||||
let lines = systemlist(join(l:cmd), join(buffer_content, "\n"))
|
||||
" TODO(https://github.com/dart-lang/sdk/issues/38507) - Remove once the
|
||||
" tool no longer emits this line on SDK upgrades.
|
||||
if lines[-1] ==# 'Isolate creation failed'
|
||||
|
||||
@@ -10,8 +10,6 @@ execute join(['function! vital#_crystal#ColorEcho#import() abort', printf("retur
|
||||
delfunction s:_SID
|
||||
" ___vital___
|
||||
scriptencoding utf-8
|
||||
let s:save_cpo = &cpo
|
||||
set cpo&vim
|
||||
|
||||
function! s:_is_available() abort
|
||||
if has('gui_running')
|
||||
@@ -185,7 +183,4 @@ function! s:echo(str) abort
|
||||
call echorizer.echo()
|
||||
endfunction
|
||||
|
||||
let &cpo = s:save_cpo
|
||||
unlet s:save_cpo
|
||||
|
||||
endif
|
||||
|
||||
@@ -11,9 +11,6 @@ delfunction s:_SID
|
||||
" ___vital___
|
||||
" Utilities for list.
|
||||
|
||||
let s:save_cpo = &cpo
|
||||
set cpo&vim
|
||||
|
||||
function! s:pop(list) abort
|
||||
return remove(a:list, -1)
|
||||
endfunction
|
||||
@@ -460,9 +457,6 @@ function! s:combinations(list, r) abort
|
||||
return result
|
||||
endfunction
|
||||
|
||||
let &cpo = s:save_cpo
|
||||
unlet s:save_cpo
|
||||
|
||||
" vim:set et ts=2 sts=2 sw=2 tw=0:
|
||||
|
||||
endif
|
||||
|
||||
@@ -11,9 +11,6 @@ delfunction s:_SID
|
||||
" ___vital___
|
||||
" Utilities for string.
|
||||
|
||||
let s:save_cpo = &cpo
|
||||
set cpo&vim
|
||||
|
||||
function! s:_vital_loaded(V) abort
|
||||
let s:V = a:V
|
||||
let s:L = s:V.import('Data.List')
|
||||
@@ -624,8 +621,6 @@ function! s:split_posix_text(text, ...) abort
|
||||
return split(text, newline, 1)
|
||||
endfunction
|
||||
|
||||
let &cpo = s:save_cpo
|
||||
unlet s:save_cpo
|
||||
" vim:set et ts=2 sts=2 sw=2 tw=0:
|
||||
|
||||
endif
|
||||
|
||||
@@ -15,9 +15,6 @@ delfunction s:_SID
|
||||
" FIXME: This module name should be Vital.System ?
|
||||
" But the name has been already taken.
|
||||
|
||||
let s:save_cpo = &cpo
|
||||
set cpo&vim
|
||||
|
||||
|
||||
" FIXME: Unfortunately, can't use s:_vital_loaded() for this purpose.
|
||||
" Because these variables are used when this script file is loaded.
|
||||
@@ -169,9 +166,6 @@ else
|
||||
endif
|
||||
|
||||
|
||||
let &cpo = s:save_cpo
|
||||
unlet s:save_cpo
|
||||
|
||||
" vim:set et ts=2 sts=2 sw=2 tw=0:
|
||||
|
||||
endif
|
||||
|
||||
@@ -9,8 +9,6 @@ endfunction
|
||||
execute join(['function! vital#_crystal#Web#JSON#import() abort', printf("return map({'decode': '', '_vital_depends': '', '_vital_created': '', 'encode': '', '_vital_loaded': ''}, \"vital#_crystal#function('<SNR>%s_' . v:key)\")", s:_SID()), 'endfunction'], "\n")
|
||||
delfunction s:_SID
|
||||
" ___vital___
|
||||
let s:save_cpo = &cpo
|
||||
set cpo&vim
|
||||
|
||||
function! s:_true() abort
|
||||
return 1
|
||||
@@ -174,9 +172,6 @@ function! s:_encode_dict(val, settings) abort
|
||||
endfunction
|
||||
" @vimlint(EVL102, 0, l:ns)
|
||||
|
||||
let &cpo = s:save_cpo
|
||||
unlet s:save_cpo
|
||||
|
||||
" vim:set et ts=2 sts=2 sw=2 tw=0:
|
||||
|
||||
endif
|
||||
|
||||
@@ -5,34 +5,6 @@ if exists('b:did_ftplugin')
|
||||
endif
|
||||
let b:did_ftplugin = 1
|
||||
|
||||
" This file is loaded on 'ecrystal' filetype
|
||||
if &filetype !=# 'crystal'
|
||||
finish
|
||||
endif
|
||||
|
||||
let s:save_cpo = &cpo
|
||||
set cpo&vim
|
||||
|
||||
if exists('loaded_matchit') && !exists('b:match_words')
|
||||
let b:match_ignorecase = 0
|
||||
|
||||
let b:match_words =
|
||||
\ '\<\%(if\|unless\|case\|while\|until\|for\|do\|class\|module\|struct\|lib\|macro\|ifdef\|def\|fun\|begin\|enum\)\>=\@!' .
|
||||
\ ':' .
|
||||
\ '\<\%(else\|elsif\|ensure\|when\|rescue\|break\|redo\|next\|retry\)\>' .
|
||||
\ ':' .
|
||||
\ '\<end\>' .
|
||||
\ ',{:},\[:\],(:)'
|
||||
|
||||
let b:match_skip =
|
||||
\ "synIDattr(synID(line('.'),col('.'),0),'name') =~ '" .
|
||||
\ "\\<crystal\\%(String\\|StringDelimiter\\|ASCIICode\\|Escape\\|" .
|
||||
\ "Interpolation\\|NoInterpolation\\|Comment\\|Documentation\\|" .
|
||||
\ "ConditionalModifier\\|RepeatModifier\\|OptionalDo\\|" .
|
||||
\ "Function\\|BlockArgument\\|KeywordAsMethod\\|ClassVariable\\|" .
|
||||
\ "InstanceVariable\\|GlobalVariable\\|Symbol\\)\\>'"
|
||||
endif
|
||||
|
||||
setlocal comments=:#
|
||||
setlocal commentstring=#\ %s
|
||||
setlocal suffixesadd=.cr
|
||||
@@ -81,14 +53,33 @@ if &l:ofu ==# ''
|
||||
setlocal omnifunc=crystal_lang#complete
|
||||
endif
|
||||
|
||||
if exists('AutoPairsLoaded')
|
||||
" Options for vim-matchit
|
||||
if exists('g:loaded_matchit') && !exists('b:match_words')
|
||||
let b:match_ignorecase = 0
|
||||
|
||||
let b:match_words =
|
||||
\ '\<\%(if\|unless\|case\|while\|until\|for\|do\|class\|module\|struct\|lib\|macro\|ifdef\|def\|begin\|enum\|annotation\)\>=\@!' .
|
||||
\ ':' .
|
||||
\ '\<\%(else\|elsif\|ensure\|when\|rescue\|break\|next\)\>' .
|
||||
\ ':' .
|
||||
\ '\<end\>' .
|
||||
\ ',{:},\[:\],(:)'
|
||||
|
||||
let b:match_skip =
|
||||
\ 'synIDattr(synID(line("."), col("."), 0), "name") =~# ''' .
|
||||
\ '\<crystal\%(String\|StringDelimiter\|ASCIICode\|Escape\|' .
|
||||
\ 'Interpolation\|NoInterpolation\|Comment\|Documentation\|' .
|
||||
\ 'ConditionalModifier\|' .
|
||||
\ 'Function\|BlockArgument\|KeywordAsMethod\|ClassVariable\|' .
|
||||
\ 'InstanceVariable\|GlobalVariable\|Symbol\)\>'''
|
||||
endif
|
||||
|
||||
" Options for jiangmiao/auto-pairs
|
||||
if exists('g:AutoPairsLoaded')
|
||||
let b:AutoPairs = { '{%': '%}' }
|
||||
call extend(b:AutoPairs, g:AutoPairs, 'force')
|
||||
endif
|
||||
|
||||
let &cpo = s:save_cpo
|
||||
unlet s:save_cpo
|
||||
|
||||
" vim: sw=2 sts=2 et:
|
||||
|
||||
endif
|
||||
|
||||
@@ -119,7 +119,7 @@ endif
|
||||
" TODO: comments=
|
||||
setlocal commentstring=<%#%s%>
|
||||
|
||||
let b:undo_ftplugin = "setl cms< "
|
||||
let b:undo_ftplugin = "setl cms< " .
|
||||
\ " | unlet! b:browsefilter b:match_words | " . s:undo_ftplugin
|
||||
|
||||
let &cpo = s:save_cpo
|
||||
|
||||
@@ -1,21 +1,21 @@
|
||||
if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'crystal') == -1
|
||||
|
||||
" Initialization {{{1
|
||||
" ==============
|
||||
|
||||
" Only load this indent file when no other was loaded.
|
||||
if exists('b:did_indent')
|
||||
finish
|
||||
endif
|
||||
|
||||
let b:did_indent = 1
|
||||
|
||||
setlocal nosmartindent
|
||||
|
||||
" Now, set up our indentation expression and keys that trigger it.
|
||||
setlocal indentexpr=GetCrystalIndent(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
|
||||
setlocal indentkeys+==private,=protected
|
||||
|
||||
let s:cpo_save = &cpo
|
||||
set cpo&vim
|
||||
|
||||
" Only define the function once.
|
||||
if exists('*GetCrystalIndent')
|
||||
@@ -26,7 +26,7 @@ endif
|
||||
if exists('*shiftwidth')
|
||||
let s:sw = function('shiftwidth')
|
||||
else
|
||||
function s:sw()
|
||||
function! s:sw()
|
||||
return &shiftwidth
|
||||
endfunction
|
||||
endif
|
||||
@@ -34,262 +34,81 @@ endif
|
||||
" GetCrystalIndent Function {{{1
|
||||
" =========================
|
||||
|
||||
function GetCrystalIndent(...)
|
||||
function! GetCrystalIndent(...) abort
|
||||
" Setup {{{2
|
||||
" -----
|
||||
|
||||
" For the current line, use the first argument if given, else v:lnum
|
||||
let clnum = a:0 ? a:1 : v:lnum
|
||||
let indent_info = {}
|
||||
|
||||
" Set up variables for restoring position in file
|
||||
let vcol = col('.')
|
||||
" The value of a single shift-width
|
||||
let indent_info.sw = s:sw()
|
||||
|
||||
" For the current line, use the first argument if given, else v:lnum
|
||||
let indent_info.clnum = a:0 ? a:1 : v:lnum
|
||||
let indent_info.cline = getline(indent_info.clnum)
|
||||
|
||||
" Set up variables for restoring position in file.
|
||||
let indent_info.col = col('.')
|
||||
|
||||
" Work on the current line {{{2
|
||||
" ------------------------
|
||||
|
||||
" Get the current line.
|
||||
let line = getline(clnum)
|
||||
let ind = -1
|
||||
for callback_name in g:crystal#indent#curr_line_callbacks
|
||||
let indent = call(function(callback_name), [indent_info])
|
||||
|
||||
" 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
|
||||
" others we indent to the containing line's MSL's level. Return -1 if fail.
|
||||
let col = matchend(line, '^\s*[]})]')
|
||||
if col > 0 && !crystal#indent#IsInStringOrComment(clnum, col)
|
||||
call cursor(clnum, col)
|
||||
let bs = strpart('(){}[]', stridx(')}]', line[col - 1]) * 2, 2)
|
||||
if searchpair(escape(bs[0], '\['), '', bs[1], 'bW', g:crystal#indent#skip_expr)
|
||||
if line[col-1] ==# ')' && col('.') != col('$') - 1
|
||||
let ind = virtcol('.') - 1
|
||||
else
|
||||
let ind = indent(crystal#indent#GetMSL(line('.')))
|
||||
endif
|
||||
if indent >= 0
|
||||
return indent
|
||||
endif
|
||||
return ind
|
||||
endif
|
||||
|
||||
" If we have a deindenting keyword, find its match and indent to its level.
|
||||
" TODO: this is messy
|
||||
if crystal#indent#Match(clnum, g:crystal#indent#crystal_deindent_keywords)
|
||||
call cursor(clnum, 1)
|
||||
if searchpair(
|
||||
\ g:crystal#indent#end_start_regex,
|
||||
\ g:crystal#indent#end_middle_regex,
|
||||
\ g:crystal#indent#end_end_regex,
|
||||
\ 'bW', g:crystal#indent#skip_expr)
|
||||
let msl = crystal#indent#GetMSL(line('.'))
|
||||
let line = getline(line('.'))
|
||||
|
||||
if strpart(line, 0, col('.') - 1) =~# '=\s*$' &&
|
||||
\ strpart(line, col('.') - 1, 2) !~# 'do'
|
||||
" assignment to case/begin/etc, on the same line, hanging indent
|
||||
let ind = virtcol('.') - 1
|
||||
elseif getline(msl) =~# '=\s*\(#.*\)\=$'
|
||||
" in the case of assignment to the msl, align to the starting line,
|
||||
" not to the msl
|
||||
let ind = indent(line('.'))
|
||||
else
|
||||
" align to the msl
|
||||
let ind = indent(msl)
|
||||
endif
|
||||
endif
|
||||
return ind
|
||||
endif
|
||||
|
||||
" If we are in a multi-line string, don't do anything to it.
|
||||
if crystal#indent#IsInString(clnum, matchend(line, '^\s*') + 1)
|
||||
return indent('.')
|
||||
endif
|
||||
|
||||
" If we are at the closing delimiter of a "<<" heredoc-style string, set the
|
||||
" indent to 0.
|
||||
if line =~# '^\k\+\s*$'
|
||||
\ && crystal#indent#IsInStringDelimiter(clnum, 1)
|
||||
\ && search('\V<<'.line, 'nbW')
|
||||
return 0
|
||||
endif
|
||||
|
||||
" If the current line starts with a leading operator, add a level of indent.
|
||||
if crystal#indent#Match(clnum, g:crystal#indent#leading_operator_regex)
|
||||
return indent(crystal#indent#GetMSL(clnum)) + s:sw()
|
||||
endif
|
||||
endfor
|
||||
|
||||
" Work on the previous line. {{{2
|
||||
" --------------------------
|
||||
|
||||
" Find a non-blank, non-multi-line string line above the current line.
|
||||
let lnum = crystal#indent#PrevNonBlankNonString(clnum - 1)
|
||||
" Special case: we don't need the real PrevNonBlank for an empty line
|
||||
" inside a string. And that call can be quite expensive in that
|
||||
" particular situation.
|
||||
let indent = crystal#indent#EmptyInsideString(indent_info)
|
||||
|
||||
" If the line is empty and inside a string, use the previous line.
|
||||
if line =~# '^\s*$' && lnum != prevnonblank(clnum - 1)
|
||||
return indent(prevnonblank(clnum))
|
||||
if indent >= 0
|
||||
return indent
|
||||
endif
|
||||
|
||||
" At the start of the file use zero indent.
|
||||
if lnum == 0
|
||||
return 0
|
||||
endif
|
||||
" Previous line number
|
||||
let indent_info.plnum = crystal#indent#PrevNonBlank(indent_info.clnum - 1)
|
||||
let indent_info.pline = getline(indent_info.plnum)
|
||||
|
||||
" Set up variables for the previous line.
|
||||
let line = getline(lnum)
|
||||
let ind = indent(lnum)
|
||||
for callback_name in g:crystal#indent#prev_line_callbacks
|
||||
let indent = call(function(callback_name), [indent_info])
|
||||
|
||||
if crystal#indent#Match(lnum, g:crystal#indent#continuable_regex) &&
|
||||
\ crystal#indent#Match(lnum, g:crystal#indent#continuation_regex)
|
||||
return indent(crystal#indent#GetMSL(lnum)) + s:sw() * 2
|
||||
endif
|
||||
|
||||
" If the previous line ended with a block opening, add a level of indent.
|
||||
if crystal#indent#Match(lnum, g:crystal#indent#block_regex)
|
||||
let msl = crystal#indent#GetMSL(lnum)
|
||||
|
||||
if getline(msl) =~# '=\s*\(#.*\)\=$'
|
||||
" in the case of assignment to the msl, align to the starting line,
|
||||
" not to the msl
|
||||
let ind = indent(lnum) + s:sw()
|
||||
else
|
||||
let ind = indent(msl) + s:sw()
|
||||
if indent >= 0
|
||||
return indent
|
||||
endif
|
||||
return ind
|
||||
endif
|
||||
endfor
|
||||
|
||||
" If the previous line started with a leading operator, use its MSL's level
|
||||
" of indent
|
||||
if crystal#indent#Match(lnum, g:crystal#indent#leading_operator_regex)
|
||||
return indent(crystal#indent#GetMSL(lnum))
|
||||
endif
|
||||
" Work on the MSL. {{{2
|
||||
" ----------------
|
||||
|
||||
" If the previous line ended with the "*" of a splat, add a level of indent
|
||||
if line =~ g:crystal#indent#splat_regex
|
||||
return indent(lnum) + s:sw()
|
||||
endif
|
||||
" Most Significant line based on the previous one -- in case it's a
|
||||
" contination of something above
|
||||
let indent_info.plnum_msl = crystal#indent#GetMSL(indent_info.plnum)
|
||||
let indent_info.pline_msl = getline(indent_info.plnum_msl)
|
||||
|
||||
" If the previous line contained unclosed opening brackets and we are still
|
||||
" in them, find the rightmost one and add indent depending on the bracket
|
||||
" type.
|
||||
"
|
||||
" If it contained hanging closing brackets, find the rightmost one, find its
|
||||
" match and indent according to that.
|
||||
if line =~# '[[({]' || line =~# '[])]\s*\%(#.*\)\=$'
|
||||
let [opening, closing] = crystal#indent#ExtraBrackets(lnum)
|
||||
for callback_name in g:crystal#indent#msl_callbacks
|
||||
let indent = call(function(callback_name), [indent_info])
|
||||
|
||||
if opening.pos != -1
|
||||
if opening.type ==# '(' && searchpair('(', '', ')', 'bW', g:crystal#indent#skip_expr)
|
||||
if col('.') + 1 == col('$')
|
||||
return ind + s:sw()
|
||||
else
|
||||
return virtcol('.')
|
||||
endif
|
||||
else
|
||||
let nonspace = matchend(line, '\S', opening.pos + 1) - 1
|
||||
return nonspace > 0 ? nonspace : ind + s:sw()
|
||||
endif
|
||||
elseif closing.pos != -1
|
||||
call cursor(lnum, closing.pos + 1)
|
||||
keepjumps normal! %
|
||||
|
||||
if crystal#indent#Match(line('.'), g:crystal#indent#crystal_indent_keywords)
|
||||
return indent('.') + s:sw()
|
||||
else
|
||||
return indent('.')
|
||||
endif
|
||||
else
|
||||
call cursor(clnum, vcol)
|
||||
end
|
||||
endif
|
||||
|
||||
" If the previous line ended with an "end", match that "end"s beginning's
|
||||
" indent.
|
||||
let col = crystal#indent#Match(lnum, g:crystal#indent#end_end_regex)
|
||||
if col
|
||||
call cursor(lnum, col)
|
||||
if searchpair(
|
||||
\ g:crystal#indent#end_start_regex,
|
||||
\ g:crystal#indent#end_middle_regex,
|
||||
\ g:crystal#indent#end_end_regex,
|
||||
\ 'bW',
|
||||
\ g:crystal#indent#skip_expr)
|
||||
let n = line('.')
|
||||
let ind = indent('.')
|
||||
let msl = crystal#indent#GetMSL(n)
|
||||
if msl != n
|
||||
let ind = indent(msl)
|
||||
end
|
||||
return ind
|
||||
if indent >= 0
|
||||
return indent
|
||||
endif
|
||||
end
|
||||
|
||||
let col = crystal#indent#Match(lnum, g:crystal#indent#crystal_indent_keywords)
|
||||
if col
|
||||
call cursor(lnum, col)
|
||||
let ind = virtcol('.') - 1 + s:sw()
|
||||
" TODO: make this better (we need to count them) (or, if a searchpair
|
||||
" fails, we know that something is lacking an end and thus we indent a
|
||||
" level
|
||||
if crystal#indent#Match(lnum, g:crystal#indent#end_end_regex)
|
||||
let ind = indent('.')
|
||||
endif
|
||||
return ind
|
||||
endif
|
||||
|
||||
" Work on the MSL line. {{{2
|
||||
" ---------------------
|
||||
|
||||
" Set up variables to use and search for MSL to the previous line.
|
||||
let p_lnum = lnum
|
||||
let lnum = crystal#indent#GetMSL(lnum)
|
||||
|
||||
" If the previous line wasn't a MSL.
|
||||
if p_lnum != lnum
|
||||
" If previous line ends bracket and begins non-bracket continuation decrease indent by 1.
|
||||
if crystal#indent#Match(p_lnum, g:crystal#indent#bracket_switch_continuation_regex)
|
||||
return ind - 1
|
||||
" If previous line is a continuation return its indent.
|
||||
" TODO: the || crystal#indent#IsInString() thing worries me a bit.
|
||||
elseif crystal#indent#Match(p_lnum, g:crystal#indent#non_bracket_continuation_regex) ||
|
||||
\ crystal#indent#IsInString(p_lnum,strlen(line))
|
||||
return ind
|
||||
endif
|
||||
endif
|
||||
|
||||
" Set up more variables, now that we know we wasn't continuation bound.
|
||||
let line = getline(lnum)
|
||||
let msl_ind = indent(lnum)
|
||||
|
||||
" If the MSL line had an indenting keyword in it, add a level of indent.
|
||||
" TODO: this does not take into account contrived things such as
|
||||
" module Foo; class Bar; end
|
||||
if crystal#indent#Match(lnum, g:crystal#indent#crystal_indent_keywords)
|
||||
let ind = msl_ind + s:sw()
|
||||
if crystal#indent#Match(lnum, g:crystal#indent#end_end_regex)
|
||||
let ind = ind - s:sw()
|
||||
endif
|
||||
return ind
|
||||
endif
|
||||
|
||||
" If the previous line ended with an operator -- but wasn't a block
|
||||
" ending, closing bracket, or type declaration -- indent one extra
|
||||
" level.
|
||||
if crystal#indent#Match(lnum, g:crystal#indent#non_bracket_continuation_regex) &&
|
||||
\ !crystal#indent#Match(lnum, '^\s*\([\])}]\|end\)')
|
||||
if lnum == p_lnum
|
||||
let ind = msl_ind + s:sw()
|
||||
else
|
||||
let ind = msl_ind
|
||||
endif
|
||||
return ind
|
||||
endif
|
||||
endfor
|
||||
|
||||
" }}}2
|
||||
|
||||
return ind
|
||||
" By default, just return the previous line's indent
|
||||
return indent(indent_info.plnum)
|
||||
endfunction
|
||||
|
||||
" }}}1
|
||||
|
||||
let &cpo = s:cpo_save
|
||||
unlet s:cpo_save
|
||||
|
||||
" vim:set sw=2 sts=2 ts=8 et:
|
||||
" vim:sw=2 sts=2 ts=8 fdm=marker et:
|
||||
|
||||
endif
|
||||
|
||||
@@ -71,8 +71,7 @@ let s:ecr_control_open = '<%%\@!-\=[=#]\@!'
|
||||
let s:ecr_comment_open = '<%%\@!-\=#'
|
||||
|
||||
let s:ecr_indent_regex =
|
||||
\ '\<\%(if\|unless\|else\|elsif\|case\|for\|when\|while\|until\|begin\|do\|rescue\|ensure\|' .
|
||||
\ 'class\|module\|struct\|lib\|enum\|union\)\>'
|
||||
\ '\<\%(if\|unless\|else\|elsif\|case\|when\|while\|until\|begin\|do\|rescue\|ensure\|\)\>'
|
||||
|
||||
let s:ecr_dedent_regex =
|
||||
\ '\<\%(end\|else\|elsif\|when\|rescue\|ensure\)\>'
|
||||
|
||||
@@ -77,7 +77,7 @@ endfunction
|
||||
function! s:getIncIndent() abort
|
||||
" Function to determine the s:incIndent pattern
|
||||
return
|
||||
\ '^\s*\%(class\|entity\|object\|interface\|partition\|rectangle\|enum\|namespace\|package\)\>.*{\s*$\|' .
|
||||
\ '^\s*\%(artifact\|class\|cloud\|database\|entity\|enum\|file\|folder\|frame\|interface\|namespace\|node\|object\|package\|partition\|rectangle\|skinparam\|state\|storage\|together\)\>.*{\s*$\|' .
|
||||
\ '^\s*\%(loop\|alt\|opt\|group\|critical\|else\|legend\|box\|if\|while\|fork\|split\)\>\|' .
|
||||
\ '^\s*ref\>[^:]*$\|' .
|
||||
\ '^\s*[hr]\?note\>\%(\%("[^"]*" \<as\>\)\@![^:]\)*$\|' .
|
||||
|
||||
@@ -16,10 +16,12 @@ syntax match typescriptBinaryOp contained /===\?/ nextgroup=@typescriptValue s
|
||||
syntax match typescriptBinaryOp contained />\(>>=\|>>\|>=\|>\|=\)\?/ nextgroup=@typescriptValue skipwhite skipempty
|
||||
" 4: <<=, <<, <=, <
|
||||
syntax match typescriptBinaryOp contained /<\(<=\|<\|=\)\?/ nextgroup=@typescriptValue skipwhite skipempty
|
||||
" 3: ||, |=, |
|
||||
syntax match typescriptBinaryOp contained /|\(|\|=\)\?/ nextgroup=@typescriptValue skipwhite skipempty
|
||||
" 3: &&, &=, &
|
||||
syntax match typescriptBinaryOp contained /&\(&\|=\)\?/ nextgroup=@typescriptValue skipwhite skipempty
|
||||
" 3: ||, |=, |, ||=
|
||||
syntax match typescriptBinaryOp contained /||\?=\?/ nextgroup=@typescriptValue skipwhite skipempty
|
||||
" 4: &&, &=, &, &&=
|
||||
syntax match typescriptBinaryOp contained /&&\?=\?/ nextgroup=@typescriptValue skipwhite skipempty
|
||||
" 2: ??, ??=
|
||||
syntax match typescriptBinaryOp contained /??=\?/ nextgroup=@typescriptValue skipwhite skipempty
|
||||
" 2: *=, *
|
||||
syntax match typescriptBinaryOp contained /\*=\?/ nextgroup=@typescriptValue skipwhite skipempty
|
||||
" 2: %=, %
|
||||
|
||||
@@ -94,9 +94,12 @@ syntax cluster typescriptTypeMember contains=
|
||||
\ typescriptIndexSignature,
|
||||
\ @typescriptMembers
|
||||
|
||||
syntax match typescriptTupleLable /\K\k*?\?:/
|
||||
\ contained
|
||||
|
||||
syntax region typescriptTupleType matchgroup=typescriptBraces
|
||||
\ start=/\[/ end=/\]/
|
||||
\ contains=@typescriptType,@typescriptComments
|
||||
\ contains=@typescriptType,@typescriptComments,typescriptRestOrSpread,typescriptTupleLable
|
||||
\ contained skipwhite
|
||||
|
||||
syntax cluster typescriptTypeOperator
|
||||
|
||||
@@ -101,6 +101,7 @@ if exists("did_typescript_hilink")
|
||||
HiLink typescriptBoolean Boolean
|
||||
HiLink typescriptObjectLabel typescriptLabel
|
||||
HiLink typescriptLabel Label
|
||||
HiLink typescriptTupleLable Label
|
||||
HiLink typescriptStringProperty String
|
||||
HiLink typescriptImport Special
|
||||
HiLink typescriptImportType Special
|
||||
|
||||
@@ -150,6 +150,7 @@ syn match crystalModuleName "\%(\%([.@$]\@1<!\.\)\@1<!\<\|::\)\_s*\zs\u\w
|
||||
syn match crystalStructName "\%(\%([.@$]\@1<!\.\)\@1<!\<\|::\)\_s*\zs\u\w*\%(\>\|::\)\@=" contained
|
||||
syn match crystalLibName "\%(\%([.@$]\@1<!\.\)\@1<!\<\|::\)\_s*\zs\u\w*\%(\>\|::\)\@=" contained
|
||||
syn match crystalEnumName "\%(\%([.@$]\@1<!\.\)\@1<!\<\|::\)\_s*\zs\u\w*\%(\>\|::\)\@=" contained
|
||||
syn match crystalAnnotationName "\%(\%([.@$]\@1<!\.\)\@1<!\<\|::\)\_s*\zs\u\w*\%(\>\|::\)\@=" contained
|
||||
syn match crystalConstant "\%(\%([.@$]\@1<!\.\)\@1<!\<\|::\)\_s*\zs\u\w*\%(\>\|::\)\@="
|
||||
syn match crystalClassVariable "@@\%(\h\|%\|[^\x00-\x7F]\)\%(\w\|%\|[^\x00-\x7F]\)*" display
|
||||
syn match crystalInstanceVariable "@\%(\h\|%\|[^\x00-\x7F]\)\%(\w\|%\|[^\x00-\x7F]\)*" display
|
||||
@@ -247,53 +248,56 @@ SynFold '<<' syn region crystalString start=+\%(\%(class\|::\)\_s*\|\%([]}).]\)\
|
||||
SynFold '<<' syn region crystalString start=+\%(\%(class\|::\)\_s*\|\%([]}).]\)\s\|\w\)\@<!<<-`\z([^`]*\)`\ze\%(.*<<-\=['`"]\=\h\)\@!+hs=s+3 matchgroup=crystalStringDelimiter end=+^\s*\zs\z1$+ contains=crystalHeredocStart,@crystalStringSpecial keepend
|
||||
|
||||
" Module, Class, Method, and Alias Declarations
|
||||
syn match crystalAliasDeclaration "[^[:space:];#.()]\+" contained contains=crystalSymbol,crystalGlobalVariable,crystalPredefinedVariable nextgroup=crystalAliasDeclaration2 skipwhite
|
||||
syn match crystalAliasDeclaration2 "[^[:space:];#.()]\+" contained contains=crystalSymbol,crystalGlobalVariable,crystalPredefinedVariable
|
||||
syn match crystalMethodDeclaration "[^[:space:];#(]\+" contained contains=crystalConstant,crystalFunction,crystalBoolean,crystalPseudoVariable,crystalInstanceVariable,crystalClassVariable,crystalGlobalVariable
|
||||
syn match crystalFunctionDeclaration "[^[:space:];#(=]\+" contained contains=crystalFunction
|
||||
syn match crystalTypeDeclaration "[^[:space:];#=]\+" contained contains=crystalTypeName
|
||||
syn match crystalClassDeclaration "[^[:space:];#<]\+" contained contains=crystalClassName,crystalOperator
|
||||
syn match crystalModuleDeclaration "[^[:space:];#]\+" contained contains=crystalModuleName,crystalOperator
|
||||
syn match crystalStructDeclaration "[^[:space:];#<]\+" contained contains=crystalStructName,crystalOperator
|
||||
syn match crystalLibDeclaration "[^[:space:];#]\+" contained contains=crystalLibName,crystalOperator
|
||||
syn match crystalMacroDeclaration "[^[:space:];#(]\+" contained contains=crystalFunction
|
||||
syn match crystalEnumDeclaration "[^[:space:];#<\"]\+" contained contains=crystalEnumName
|
||||
syn match crystalAliasDeclaration "[^[:space:];#.()]\+" contained contains=crystalSymbol,crystalGlobalVariable,crystalPredefinedVariable nextgroup=crystalAliasDeclaration2 skipwhite
|
||||
syn match crystalAliasDeclaration2 "[^[:space:];#.()]\+" contained contains=crystalSymbol,crystalGlobalVariable,crystalPredefinedVariable
|
||||
syn match crystalMethodDeclaration "[^[:space:];#(]\+" contained contains=crystalConstant,crystalFunction,crystalBoolean,crystalPseudoVariable,crystalInstanceVariable,crystalClassVariable,crystalGlobalVariable
|
||||
syn match crystalFunctionDeclaration "[^[:space:];#(=]\+" contained contains=crystalFunction
|
||||
syn match crystalTypeDeclaration "[^[:space:];#=]\+" contained contains=crystalTypeName
|
||||
syn match crystalClassDeclaration "[^[:space:];#<]\+" contained contains=crystalClassName,crystalOperator
|
||||
syn match crystalModuleDeclaration "[^[:space:];#]\+" contained contains=crystalModuleName,crystalOperator
|
||||
syn match crystalStructDeclaration "[^[:space:];#<]\+" contained contains=crystalStructName,crystalOperator
|
||||
syn match crystalLibDeclaration "[^[:space:];#]\+" contained contains=crystalLibName,crystalOperator
|
||||
syn match crystalMacroDeclaration "[^[:space:];#(]\+" contained contains=crystalFunction
|
||||
syn match crystalEnumDeclaration "[^[:space:];#<\"]\+" contained contains=crystalEnumName
|
||||
syn match crystalAnnotationDeclaration "[^[:space:];#]\+" contained contains=crystalAnnotationName
|
||||
syn match crystalFunction "\<[_[:alpha:]][_[:alnum:]]*[?!=]\=[[:alnum:]_.:?!=]\@!" contained containedin=crystalMethodDeclaration,crystalFunctionDeclaration
|
||||
syn match crystalFunction "\%(\s\|^\)\@1<=[_[:alpha:]][_[:alnum:]]*[?!=]\=\%(\s\|$\)\@=" contained containedin=crystalAliasDeclaration,crystalAliasDeclaration2
|
||||
syn match crystalFunction "\%([[:space:].]\|^\)\@1<=\%(\[\][=?]\=\|\*\*\|[+-]@\=\|[*/%|&^~]\|<<\|>>\|[<>]=\=\|<=>\|===\|[=!]=\|[=!]\~\|!\|`\)\%([[:space:];#(]\|$\)\@=" contained containedin=crystalAliasDeclaration,crystalAliasDeclaration2,crystalMethodDeclaration,crystalFunctionDeclaration
|
||||
|
||||
syn cluster crystalDeclaration contains=crystalAliasDeclaration,crystalAliasDeclaration2,crystalMethodDeclaration,crystalFunctionDeclaration,crystalModuleDeclaration,crystalClassDeclaration,crystalStructDeclaration,crystalLibDeclaration,crystalMacroDeclaration,crystalFunction,crystalBlockParameter,crystalTypeDeclaration,crystalEnumDeclaration
|
||||
syn cluster crystalDeclaration contains=crystalAliasDeclaration,crystalAliasDeclaration2,crystalMethodDeclaration,crystalFunctionDeclaration,crystalModuleDeclaration,crystalClassDeclaration,crystalStructDeclaration,crystalLibDeclaration,crystalMacroDeclaration,crystalFunction,crystalBlockParameter,crystalTypeDeclaration,crystalEnumDeclaration,crystalAnnotationDeclaration
|
||||
|
||||
" Keywords
|
||||
" Note: the following keywords have already been defined:
|
||||
" begin case class def do end for if module unless until while
|
||||
syn match crystalControl "\<\%(break\|next\|rescue\|return\)\>[?!]\@!"
|
||||
syn match crystalOperator "\<defined?" display
|
||||
syn match crystalKeyword "\<\%(super\|previous_def\|yield\|of\|with\|uninitialized\|union\)\>[?!]\@!"
|
||||
syn match crystalBoolean "\<\%(true\|false\)\>[?!]\@!"
|
||||
syn match crystalPseudoVariable "\<\%(nil\|self\|__DIR__\|__FILE__\|__LINE__\|__END_LINE__\)\>[?!]\@!" " TODO: reorganise
|
||||
syn match crystalPseudoVariable "\<\%(nil\|__DIR__\|__FILE__\|__LINE__\|__END_LINE__\)\>[?!]\@!" " TODO: reorganise
|
||||
syn match crystalPseudoVariable "\<self\>"
|
||||
|
||||
" Expensive Mode - match 'end' with the appropriate opening keyword for syntax
|
||||
" based folding and special highlighting of module/class/method definitions
|
||||
if !exists('b:crystal_no_expensive') && !exists('g:crystal_no_expensive')
|
||||
syn match crystalDefine "\<alias\>" nextgroup=crystalAliasDeclaration skipwhite skipnl
|
||||
syn match crystalDefine "\<def\>" nextgroup=crystalMethodDeclaration skipwhite skipnl
|
||||
syn match crystalDefine "\<fun\>" nextgroup=crystalFunctionDeclaration skipwhite skipnl
|
||||
syn match crystalDefine "\<undef\>" nextgroup=crystalFunction skipwhite skipnl
|
||||
syn match crystalDefine "\<\%(type\|alias\)\>\%(\s*\h\w*\s*=\)\@=" nextgroup=crystalTypeDeclaration skipwhite skipnl
|
||||
syn match crystalClass "\<class\>" nextgroup=crystalClassDeclaration skipwhite skipnl
|
||||
syn match crystalModule "\<module\>" nextgroup=crystalModuleDeclaration skipwhite skipnl
|
||||
syn match crystalStruct "\<struct\>" nextgroup=crystalStructDeclaration skipwhite skipnl
|
||||
syn match crystalLib "\<lib\>" nextgroup=crystalLibDeclaration skipwhite skipnl
|
||||
syn match crystalMacro "\<macro\>" nextgroup=crystalMacroDeclaration skipwhite skipnl
|
||||
syn match crystalEnum "\<enum\>" nextgroup=crystalEnumDeclaration skipwhite skipnl
|
||||
syn match crystalDefine "\<alias\>" nextgroup=crystalAliasDeclaration skipwhite skipnl
|
||||
syn match crystalDefine "\<def\>" nextgroup=crystalMethodDeclaration skipwhite skipnl
|
||||
syn match crystalDefine "\<fun\>" nextgroup=crystalFunctionDeclaration skipwhite skipnl
|
||||
syn match crystalDefine "\<undef\>" nextgroup=crystalFunction skipwhite skipnl
|
||||
syn match crystalDefine "\<\%(type\|alias\)\>\%(\s*\h\w*\s*=\)\@=" nextgroup=crystalTypeDeclaration skipwhite skipnl
|
||||
syn match crystalClass "\<class\>" nextgroup=crystalClassDeclaration skipwhite skipnl
|
||||
syn match crystalModule "\<module\>" nextgroup=crystalModuleDeclaration skipwhite skipnl
|
||||
syn match crystalStruct "\<struct\>" nextgroup=crystalStructDeclaration skipwhite skipnl
|
||||
syn match crystalLib "\<lib\>" nextgroup=crystalLibDeclaration skipwhite skipnl
|
||||
syn match crystalMacro "\<macro\>" nextgroup=crystalMacroDeclaration skipwhite skipnl
|
||||
syn match crystalEnum "\<enum\>" nextgroup=crystalEnumDeclaration skipwhite skipnl
|
||||
syn match crystalAnnotation "\<annotation\>" nextgroup=crystalAnnotationDeclaration skipwhite skipnl
|
||||
|
||||
SynFold 'def' syn region crystalMethodBlock start="\<\%(def\|macro\)\>" matchgroup=crystalDefine end="\%(\<\%(def\|macro\)\_s\+\)\@<!\<end\>" contains=TOP
|
||||
SynFold 'class' syn region crystalBlock start="\<class\>" matchgroup=crystalClass end="\<end\>" contains=TOP
|
||||
SynFold 'module' syn region crystalBlock start="\<module\>" matchgroup=crystalModule end="\<end\>" contains=TOP
|
||||
SynFold 'struct' syn region crystalBlock start="\<struct\>" matchgroup=crystalStruct end="\<end\>" contains=TOP
|
||||
SynFold 'lib' syn region crystalBlock start="\<lib\>" matchgroup=crystalLib end="\<end\>" contains=TOP
|
||||
SynFold 'enum' syn region crystalBlock start="\<enum\>" matchgroup=crystalEnum end="\<end\>" contains=TOP
|
||||
SynFold 'def' syn region crystalMethodBlock start="\<\%(def\|macro\)\>" matchgroup=crystalDefine end="\%(\<\%(def\|macro\)\_s\+\)\@<!\<end\>" contains=TOP
|
||||
SynFold 'class' syn region crystalBlock start="\<class\>" matchgroup=crystalClass end="\<end\>" contains=TOP
|
||||
SynFold 'module' syn region crystalBlock start="\<module\>" matchgroup=crystalModule end="\<end\>" contains=TOP
|
||||
SynFold 'struct' syn region crystalBlock start="\<struct\>" matchgroup=crystalStruct end="\<end\>" contains=TOP
|
||||
SynFold 'lib' syn region crystalBlock start="\<lib\>" matchgroup=crystalLib end="\<end\>" contains=TOP
|
||||
SynFold 'enum' syn region crystalBlock start="\<enum\>" matchgroup=crystalEnum end="\<end\>" contains=TOP
|
||||
SynFold 'annotation' syn region crystalBlock start="\<annotation\>" matchgroup=crystalAnnotation end="\<end\>" contains=TOP
|
||||
|
||||
" modifiers
|
||||
syn match crystalConditionalModifier "\<\%(if\|unless\|ifdef\)\>" display
|
||||
@@ -326,14 +330,15 @@ if !exists('b:crystal_no_expensive') && !exists('g:crystal_no_expensive')
|
||||
exec 'syn sync minlines=' . g:crystal_minlines
|
||||
else
|
||||
" Non-expensive mode
|
||||
syn match crystalControl "\<def\>[?!]\@!" nextgroup=crystalMethodDeclaration skipwhite skipnl
|
||||
syn match crystalControl "\<fun\>[?!]\@!" nextgroup=crystalFunctionDeclaration skipwhite skipnl
|
||||
syn match crystalControl "\<class\>[?!]\@!" nextgroup=crystalClassDeclaration skipwhite skipnl
|
||||
syn match crystalControl "\<module\>[?!]\@!" nextgroup=crystalModuleDeclaration skipwhite skipnl
|
||||
syn match crystalControl "\<struct\>[?!]\@!" nextgroup=crystalStructDeclaration skipwhite skipnl
|
||||
syn match crystalControl "\<lib\>[?!]\@!" nextgroup=crystalLibDeclaration skipwhite skipnl
|
||||
syn match crystalControl "\<macro\>[?!]\@!" nextgroup=crystalMacroDeclaration skipwhite skipnl
|
||||
syn match crystalControl "\<enum\>[?!]\@!" nextgroup=crystalEnumDeclaration skipwhite skipnl
|
||||
syn match crystalControl "\<def\>[?!]\@!" nextgroup=crystalMethodDeclaration skipwhite skipnl
|
||||
syn match crystalControl "\<fun\>[?!]\@!" nextgroup=crystalFunctionDeclaration skipwhite skipnl
|
||||
syn match crystalControl "\<class\>[?!]\@!" nextgroup=crystalClassDeclaration skipwhite skipnl
|
||||
syn match crystalControl "\<module\>[?!]\@!" nextgroup=crystalModuleDeclaration skipwhite skipnl
|
||||
syn match crystalControl "\<struct\>[?!]\@!" nextgroup=crystalStructDeclaration skipwhite skipnl
|
||||
syn match crystalControl "\<lib\>[?!]\@!" nextgroup=crystalLibDeclaration skipwhite skipnl
|
||||
syn match crystalControl "\<macro\>[?!]\@!" nextgroup=crystalMacroDeclaration skipwhite skipnl
|
||||
syn match crystalControl "\<enum\>[?!]\@!" nextgroup=crystalEnumDeclaration skipwhite skipnl
|
||||
syn match crystalControl "\<annotation\>[?!]\@!" nextgroup=crystalAnnotationDeclaration skipwhite skipnl
|
||||
syn match crystalControl "\<\%(case\|begin\|do\|if\|ifdef\|unless\|while\|until\|else\|elsif\|ensure\|then\|when\|end\)\>[?!]\@!"
|
||||
syn match crystalKeyword "\<\%(alias\|undef\)\>[?!]\@!"
|
||||
endif
|
||||
@@ -358,8 +363,8 @@ endif
|
||||
|
||||
" Macro
|
||||
" Note: This definition must be put after crystalNestedCurlyBraces to give higher priority
|
||||
syn region crystalMacroRegion matchgroup=crystalMacroDelim start="\\\={%" end="%}" oneline display contains=@crystalMacroGroup containedin=ALL
|
||||
syn region crystalMacroRegion matchgroup=crystalMacroDelim start="\\\={{" end="}}" oneline display contains=@crystalMacroGroup containedin=ALL
|
||||
syn region crystalMacroRegion matchgroup=crystalMacroDelim start="\\\={%" end="%}" display oneline contains=@crystalMacroGroup containedin=ALL
|
||||
syn region crystalMacroRegion matchgroup=crystalMacroDelim start="\\\={{" end="}}" display contains=TOP containedin=ALL
|
||||
|
||||
" Cluster for groups that can appear inside macro expressions
|
||||
syn cluster crystalMacroGroup contains=@crystalTop
|
||||
@@ -375,8 +380,7 @@ syn cluster crystalMacroGroup remove=@crystalExpensive
|
||||
" Some keywords will have to be redefined for them to be highlighted
|
||||
" properly
|
||||
syn keyword crystalMacroKeyword contained
|
||||
\ if else elsif end for in begin do case when while until loop
|
||||
\ rescue ensure
|
||||
\ if unless else elsif end for in do while until loop begin
|
||||
|
||||
syn cluster crystalMacroGroup add=crystalMacroKeyword
|
||||
|
||||
@@ -414,6 +418,7 @@ hi def link crystalModule crystalDefine
|
||||
hi def link crystalStruct crystalDefine
|
||||
hi def link crystalLib crystalDefine
|
||||
hi def link crystalEnum crystalDefine
|
||||
hi def link crystalAnnotation crystalDefine
|
||||
hi def link crystalMethodExceptional crystalDefine
|
||||
hi def link crystalDefine Define
|
||||
hi def link crystalFunction Function
|
||||
@@ -442,6 +447,7 @@ hi def link crystalModuleName crystalConstant
|
||||
hi def link crystalStructName crystalConstant
|
||||
hi def link crystalLibName crystalConstant
|
||||
hi def link crystalEnumName crystalConstant
|
||||
hi def link crystalAnnotationName crystalConstant
|
||||
hi def link crystalGlobalVariable crystalIdentifier
|
||||
hi def link crystalBlockParameter crystalIdentifier
|
||||
hi def link crystalInstanceVariable crystalIdentifier
|
||||
@@ -478,7 +484,7 @@ hi def link crystalRegexp crystalString
|
||||
hi def link crystalMacro PreProc
|
||||
hi def link crystalMacroDelim crystalMacro
|
||||
hi def link crystalMacroKeyword crystalKeyword
|
||||
hi def link crystalLinkAttrDelim crystalMacro
|
||||
hi def link crystalLinkAttrDelim crystalMacroDelim
|
||||
hi def link crystalError Error
|
||||
hi def link crystalInvalidVariable crystalError
|
||||
hi def link crystalSpaceError crystalError
|
||||
|
||||
@@ -24,7 +24,7 @@ syntax match dhallLabel "\v[a-z_][A-Za-z0-9\-]*"
|
||||
syntax match dhallType "\v[a-zA-Z]+\.[A-Z][a-z0-9A-Z_]*"
|
||||
syntax match dhallParens "(\|)\|\[\|\]\|,"
|
||||
syntax match dhallRecord "{\|}\|:"
|
||||
syntax keyword dhallKeyword let in forall constructors if then else merge env as
|
||||
syntax keyword dhallKeyword let in forall constructors if then else merge env as with
|
||||
syntax match dhallEsc +\\["\\abfnrtv$/]+
|
||||
syntax match dhallSingleSpecial +'''+
|
||||
syntax match dhallSingleSpecial +''${+
|
||||
|
||||
@@ -91,7 +91,7 @@ syntax region plantumlText oneline start=/\[/ms=s+1 end=/\]/me=s-1 contained
|
||||
syntax match plantumlArrowDirectedLine /\([-.]\)\%(l\%[eft]\|r\%[ight]\|up\?\|d\%[own]\)\1/ contained
|
||||
|
||||
" Note and legend
|
||||
syntax region plantumlNoteMultiLine start=/\%(^\s*[rh]\?\%(note\|legend\)\)\@<=\s\%([^:"]\+$\)\@=/ end=/^\%(\s*end\s*[rh]\?\%(note\|legend\)$\)\|endlegend\@=/ contains=plantumlSpecialString,plantumlNoteMultiLineStart,plantumlTag
|
||||
syntax region plantumlNoteMultiLine start=/\%(^\s*[rh]\?\%(note\|legend\)\)\@<=\s\%([^:"]\+$\)\@=/ end=/^\%(\s*\zeend\s*[rh]\?\%(note\|legend\)$\)\|endlegend\@=/ contains=plantumlSpecialString,plantumlNoteMultiLineStart,plantumlTag
|
||||
syntax match plantumlNoteMultiLineStart /\%(^\s*[rh]\?\%(note\|legend\)\)\@<=\s\%([^:]\+$\)/ contained contains=plantumlKeyword,plantumlColor,plantumlString,plantumlTag
|
||||
|
||||
" Class
|
||||
@@ -140,11 +140,11 @@ syntax match plantumlActivityLabel /\%(^\%(#\S\+\)\?\)\@<=:\_[^;|<>/\]}]\+[;|<>/
|
||||
syntax match plantumlSequenceDivider /^\s*==[^=]\+==\s*$/
|
||||
syntax match plantumlSequenceSpace /^\s*|||\+\s*$/
|
||||
syntax match plantumlSequenceSpace /^\s*||\d\+||\+\s*$/
|
||||
syntax match plantumlSequenceDelay /^\.\{3}$/
|
||||
syntax region plantumlText oneline matchgroup=plantumlSequenceDelay start=/^\.\{3}/ end=/\.\{3}$/
|
||||
syntax match plantumlSequenceDelay /^\s*\.\{3}$/
|
||||
syntax region plantumlText oneline matchgroup=plantumlSequenceDelay start=/^\s*\.\{3}/ end=/\.\{3}$/
|
||||
|
||||
" Usecase diagram
|
||||
syntax match plantumlUsecaseActor /:.\{-1,}:/ contains=plantumlSpecialString
|
||||
syntax match plantumlUsecaseActor /^\s*:.\{-1,}:/ contains=plantumlSpecialString
|
||||
|
||||
|
||||
" Mindmap diagram
|
||||
|
||||
@@ -2,7 +2,7 @@ if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vifm') == -1
|
||||
|
||||
" vifm syntax file
|
||||
" Maintainer: xaizek <xaizek@posteo.net>
|
||||
" Last Change: May 26, 2020
|
||||
" Last Change: June 22, 2020
|
||||
" Inspired By: Vim syntax file by Dr. Charles E. Campbell, Jr.
|
||||
|
||||
if exists('b:current_syntax')
|
||||
@@ -17,27 +17,27 @@ set cpo-=C
|
||||
" General commands
|
||||
syntax keyword vifmCommand contained
|
||||
\ alink apropos bmark bmarks bmgo cds change chmod chown clone compare
|
||||
\ cope[n] co[py] cq[uit] d[elete] delbmarks delm[arks] di[splay] dirs e[dit]
|
||||
\ el[se] empty en[dif] exi[t] file fin[d] fini[sh] go[to] gr[ep] h[elp]
|
||||
\ hideui histnext his[tory] histprev jobs locate ls lstrash marks media
|
||||
\ mes[sages] mkdir m[ove] noh[lsearch] on[ly] popd pushd pu[t] pw[d] qa[ll]
|
||||
\ q[uit] redr[aw] reg[isters] regular rename restart restore rlink screen
|
||||
\ sh[ell] siblnext siblprev sor[t] sp[lit] s[ubstitute] tabc[lose] tabm[ove]
|
||||
\ tabname tabnew tabn[ext] tabo[nly] tabp[revious] touch tr trashes tree
|
||||
\ sync undol[ist] ve[rsion] vie[w] vifm vs[plit] winc[md] w[rite] wq wqa[ll]
|
||||
\ xa[ll] x[it] y[ank]
|
||||
\ cope[n] co[py] cq[uit] d[elete] delbmarks delm[arks] delsession di[splay]
|
||||
\ dirs e[dit] el[se] empty en[dif] exi[t] file fin[d] fini[sh] go[to] gr[ep]
|
||||
\ h[elp] hideui histnext his[tory] histprev jobs locate ls lstrash marks
|
||||
\ media mes[sages] mkdir m[ove] noh[lsearch] on[ly] popd pushd pu[t] pw[d]
|
||||
\ qa[ll] q[uit] redr[aw] reg[isters] regular rename restart restore rlink
|
||||
\ screen sh[ell] siblnext siblprev sor[t] sp[lit] s[ubstitute] tabc[lose]
|
||||
\ tabm[ove] tabname tabnew tabn[ext] tabo[nly] tabp[revious] touch tr
|
||||
\ trashes tree session sync undol[ist] ve[rsion] vie[w] vifm vs[plit]
|
||||
\ winc[md] w[rite] wq wqa[ll] xa[ll] x[it] y[ank]
|
||||
\ nextgroup=vifmArgs
|
||||
syntax keyword vifmCommandCN contained
|
||||
\ alink apropos bmark bmarks bmgo cds change chmod chown clone compare
|
||||
\ cope[n] co[py] cq[uit] d[elete] delbmarks delm[arks] di[splay] dirs e[dit]
|
||||
\ el[se] empty en[dif] exi[t] file fin[d] fini[sh] go[to] gr[ep] h[elp]
|
||||
\ hideui histnext his[tory] histprev jobs locate ls lstrash marks media
|
||||
\ mes[sages] mkdir m[ove] noh[lsearch] on[ly] popd pushd pu[t] pw[d] qa[ll]
|
||||
\ q[uit] redr[aw] reg[isters] regular rename restart restore rlink screen
|
||||
\ sh[ell] siblnext siblprev sor[t] sp[lit] s[ubstitute] tabc[lose] tabm[ove]
|
||||
\ tabname tabnew tabn[ext] tabp[revious] touch tr trashes tree sync
|
||||
\ undol[ist] ve[rsion] vie[w] vifm vs[plit] winc[md] w[rite] wq wqa[ll]
|
||||
\ xa[ll] x[it] y[ank]
|
||||
\ cope[n] co[py] cq[uit] d[elete] delbmarks delm[arks] delsession di[splay]
|
||||
\ dirs e[dit] el[se] empty en[dif] exi[t] file fin[d] fini[sh] go[to] gr[ep]
|
||||
\ h[elp] hideui histnext his[tory] histprev jobs locate ls lstrash marks
|
||||
\ media mes[sages] mkdir m[ove] noh[lsearch] on[ly] popd pushd pu[t] pw[d]
|
||||
\ qa[ll] q[uit] redr[aw] reg[isters] regular rename restart restore rlink
|
||||
\ screen sh[ell] siblnext siblprev sor[t] sp[lit] s[ubstitute] tabc[lose]
|
||||
\ tabm[ove] tabname tabnew tabn[ext] tabo[nly] tabp[revious] touch tr
|
||||
\ trashes tree session sync undol[ist] ve[rsion] vie[w] vifm vs[plit]
|
||||
\ winc[md] w[rite] wq wqa[ll] xa[ll] x[it] y[ank]
|
||||
\ nextgroup=vifmArgsCN
|
||||
|
||||
" commands that might be prepended to a command without changing everything else
|
||||
@@ -144,12 +144,12 @@ syntax keyword vifmOption contained aproposprg autochpos caseoptions cdpath cd
|
||||
\ iec ignorecase ic iooptions incsearch is laststatus lines locateprg ls
|
||||
\ lsoptions lsview mediaprg milleroptions millerview mintimeoutlen number nu
|
||||
\ numberwidth nuw previewprg quickview relativenumber rnu rulerformat ruf
|
||||
\ runexec scrollbind scb scrolloff so sort sortgroups sortorder sortnumbers
|
||||
\ shell sh shellflagcmd shcf shortmess shm showtabline stal sizefmt slowfs
|
||||
\ smartcase scs statusline stl suggestoptions syncregs syscalls tablabel
|
||||
\ tabscope tabstop timefmt timeoutlen title tm trash trashdir ts tuioptions
|
||||
\ to undolevels ul vicmd viewcolumns vifminfo vimhelp vixcmd wildmenu wmnu
|
||||
\ wildstyle wordchars wrap wrapscan ws
|
||||
\ runexec scrollbind scb scrolloff sessionoptions ssop so sort sortgroups
|
||||
\ sortorder sortnumbers shell sh shellflagcmd shcf shortmess shm showtabline
|
||||
\ stal sizefmt slowfs smartcase scs statusline stl suggestoptions syncregs
|
||||
\ syscalls tablabel tabscope tabstop timefmt timeoutlen title tm trash
|
||||
\ trashdir ts tuioptions to undolevels ul vicmd viewcolumns vifminfo vimhelp
|
||||
\ vixcmd wildmenu wmnu wildstyle wordchars wrap wrapscan ws
|
||||
|
||||
" Disabled boolean options
|
||||
syntax keyword vifmOption contained noautochpos nocf nochaselinks nodotfiles
|
||||
|
||||
Reference in New Issue
Block a user