diff options
| -rw-r--r-- | autoload/elixir/indent.vim | 24 | ||||
| -rw-r--r-- | ftdetect/polyglot.vim | 5 | ||||
| -rw-r--r-- | ftplugin/ruby.vim | 2 | ||||
| -rw-r--r-- | syntax/elixir.vim | 18 | ||||
| -rw-r--r-- | syntax/zig.vim | 6 | 
5 files changed, 39 insertions, 16 deletions
| diff --git a/autoload/elixir/indent.vim b/autoload/elixir/indent.vim index 38f4e8d6..74d7344c 100644 --- a/autoload/elixir/indent.vim +++ b/autoload/elixir/indent.vim @@ -25,6 +25,7 @@ function! elixir#indent#indent(lnum)    let handlers = [          \'top_of_file', +        \'starts_with_string_continuation',          \'following_trailing_binary_operator',          \'starts_with_pipe',          \'starts_with_binary_operator', @@ -35,9 +36,14 @@ function! elixir#indent#indent(lnum)          \]    for handler in handlers      call s:debug('testing handler elixir#indent#handle_'.handler) -    let context = {'lnum': lnum, 'text': text, 'prev_nb_lnum': prev_nb_lnum, 'prev_nb_text': prev_nb_text} +    let context = {'lnum': lnum, 'text': text, 'first_nb_char_idx': match(text, '\w'), 'prev_nb_lnum': prev_nb_lnum, 'prev_nb_text': prev_nb_text}      let indent = function('elixir#indent#handle_'.handler)(context) -    if indent != -1 +    if indent == -2 +      " Keep indent the same +      call s:debug('line '.lnum.': elixir#indent#handle_'.handler.' returned -2; returning indent of -1') +      call cursor(curs_lnum, curs_col) +      return -1 +    elseif indent != -1        call s:debug('line '.lnum.': elixir#indent#handle_'.handler.' returned '.indent)        call cursor(curs_lnum, curs_col)        return indent @@ -102,7 +108,11 @@ endfunction  " Returns 0 or 1 based on whether or not the given line number and column  " number pair is a string or comment  function! s:is_string_or_comment(line, col) -  return synIDattr(synID(a:line, a:col, 1), "name") =~ '\%(String\|Comment\)' +  return s:syntax_name(a:line, a:col) =~ '\%(String\|Comment\)' +endfunction + +function! s:syntax_name(line, col) +  return synIDattr(synID(a:line, a:col, 1), "name")  endfunction  " Skip expression for searchpair. Returns 0 or 1 based on whether the value @@ -158,6 +168,14 @@ function! elixir#indent#handle_top_of_file(context)    end  endfunction +function! elixir#indent#handle_starts_with_string_continuation(context) +  if s:syntax_name(a:context.lnum, a:context.first_nb_char_idx) =~ '\(String\|Comment\)$' +    return -2 +  else +    return -1 +  end +endfunction +  function! elixir#indent#handle_follow_prev_nb(context)    return s:get_base_indent(a:context.prev_nb_lnum, a:context.prev_nb_text)  endfunction diff --git a/ftdetect/polyglot.vim b/ftdetect/polyglot.vim index 8352996f..7e3dc45f 100644 --- a/ftdetect/polyglot.vim +++ b/ftdetect/polyglot.vim @@ -1,3 +1,8 @@ +" Enable jsx syntax by default +if !exists('g:jsx_ext_required') +  let g:jsx_ext_required = 0 +endif +  " Make csv loading faster  if !exists('g:csv_start')    let g:csv_start = 1 diff --git a/ftplugin/ruby.vim b/ftplugin/ruby.vim index cc97760a..4edbbad6 100644 --- a/ftplugin/ruby.vim +++ b/ftplugin/ruby.vim @@ -90,7 +90,7 @@ endfunction  function! s:build_path(path) abort    let path = join(map(copy(a:path), 'v:val ==# "." ? "" : v:val'), ',') -  if &g:path !~# '\v^\.%(,/%(usr|emx)/include)=,,$' +  if &g:path !~# '\v^%(\.,)=%(/%(usr|emx)/include,)=,$'      let path = substitute(&g:path,',,$',',','') . ',' . path    endif    return path diff --git a/syntax/elixir.vim b/syntax/elixir.vim index 778850cf..ad245ca6 100644 --- a/syntax/elixir.vim +++ b/syntax/elixir.vim @@ -129,15 +129,15 @@ else    syn region elixirDocTest start="^\s*\%(iex\|\.\.\.\)\%((\d*)\)\?>\s" end="^\s*$" contained  endif -syn region elixirDocString matchgroup=elixirDocSigilDelimiter  start="\%(@\w*doc\s\+\)\@<=\~[Ss]\z(/\|\"\|'\||\)" end="\z1" skip="\\\\\|\\\z1" contains=@elixirDocStringContained fold keepend -syn region elixirDocString matchgroup=elixirDocSigilDelimiter  start="\%(@\w*doc\s\+\)\@<=\~[Ss]{"                end="}"   skip="\\\\\|\\}"   contains=@elixirDocStringContained fold keepend -syn region elixirDocString matchgroup=elixirDocSigilDelimiter  start="\%(@\w*doc\s\+\)\@<=\~[Ss]<"                end=">"   skip="\\\\\|\\>"   contains=@elixirDocStringContained fold keepend -syn region elixirDocString matchgroup=elixirDocSigilDelimiter  start="\%(@\w*doc\s\+\)\@<=\~[Ss]\["               end="\]"  skip="\\\\\|\\\]"  contains=@elixirDocStringContained fold keepend -syn region elixirDocString matchgroup=elixirDocSigilDelimiter  start="\%(@\w*doc\s\+\)\@<=\~[Ss]("                end=")"   skip="\\\\\|\\)"   contains=@elixirDocStringContained fold keepend -syn region elixirDocString matchgroup=elixirDocStringDelimiter start=+\%(@\w*doc\s\+\)\@<=\z("\)+                 end=+\z1+ skip=+\\\\\|\\\z1+ contains=@elixirDocStringContained      keepend -syn region elixirDocString matchgroup=elixirDocStringDelimiter start=+\%(@\w*doc\s\+\)\@<=\z("""\)+               end=+^\s*\z1+                contains=@elixirDocStringContained fold keepend -syn region elixirDocString matchgroup=elixirDocSigilDelimiter  start=+\%(@\w*doc\s\+\)\@<=\~[Ss]\z('''\)+         end=+^\s*\z1+                contains=@elixirDocStringContained fold keepend -syn region elixirDocString matchgroup=elixirDocSigilDelimiter  start=+\%(@\w*doc\s\+\)\@<=\~[Ss]\z("""\)+         end=+^\s*\z1+                contains=@elixirDocStringContained fold keepend +syn region elixirDocString matchgroup=elixirDocSigilDelimiter  start="\%(@\w*doc\(\s\|(\)\+\)\@<=\~[Ss]\z(/\|\"\|'\||\)" end="\z1" skip="\\\\\|\\\z1" contains=@elixirDocStringContained fold keepend +syn region elixirDocString matchgroup=elixirDocSigilDelimiter  start="\%(@\w*doc\(\s\|(\)\+\)\@<=\~[Ss]{"                end="}"   skip="\\\\\|\\}"   contains=@elixirDocStringContained fold keepend +syn region elixirDocString matchgroup=elixirDocSigilDelimiter  start="\%(@\w*doc\(\s\|(\)\+\)\@<=\~[Ss]<"                end=">"   skip="\\\\\|\\>"   contains=@elixirDocStringContained fold keepend +syn region elixirDocString matchgroup=elixirDocSigilDelimiter  start="\%(@\w*doc\(\s\|(\)\+\)\@<=\~[Ss]\["               end="\]"  skip="\\\\\|\\\]"  contains=@elixirDocStringContained fold keepend +syn region elixirDocString matchgroup=elixirDocSigilDelimiter  start="\%(@\w*doc\(\s\|(\)\+\)\@<=\~[Ss]("                end=")"   skip="\\\\\|\\)"   contains=@elixirDocStringContained fold keepend +syn region elixirDocString matchgroup=elixirDocStringDelimiter start=+\%(@\w*doc\(\s\|(\)\+\)\@<=\z("\)+                 end=+\z1+ skip=+\\\\\|\\\z1+ contains=@elixirDocStringContained      keepend +syn region elixirDocString matchgroup=elixirDocStringDelimiter start=+\%(@\w*doc\(\s\|(\)\+\)\@<=\z("""\)+               end=+^\s*\z1+                contains=@elixirDocStringContained fold keepend +syn region elixirDocString matchgroup=elixirDocSigilDelimiter  start=+\%(@\w*doc\(\s\|(\)\+\)\@<=\~[Ss]\z('''\)+         end=+^\s*\z1+                contains=@elixirDocStringContained fold keepend +syn region elixirDocString matchgroup=elixirDocSigilDelimiter  start=+\%(@\w*doc\(\s\|(\)\+\)\@<=\~[Ss]\z("""\)+         end=+^\s*\z1+                contains=@elixirDocStringContained fold keepend  " Defines  syn match elixirDefine              '\<def\>\(:\)\@!'             nextgroup=elixirFunctionDeclaration        skipwhite skipnl diff --git a/syntax/zig.vim b/syntax/zig.vim index 47742d7f..825d5e7f 100644 --- a/syntax/zig.vim +++ b/syntax/zig.vim @@ -12,9 +12,9 @@ if exists("b:current_syntax")  endif  let b:current_syntax = "zig" -syn keyword zigStorage const var extern packed export pub noalias inline comptime nakedcc stdcallcc volatile allowzero align linksection threadlocal +syn keyword zigStorage const var extern packed export pub noalias inline noinline comptime nakedcc stdcallcc volatile allowzero align linksection threadlocal  syn keyword zigStructure struct enum union error -syn keyword zigStatement break return continue asm defer errdefer unreachable try catch async await suspend resume +syn keyword zigStatement break return continue asm defer errdefer unreachable try catch async noasync await suspend resume  syn keyword zigConditional if else switch and or orelse  syn keyword zigRepeat while for @@ -41,7 +41,7 @@ syn match zigBuiltinFn "\v\@(frameAddress|import|inlineCall|newStackCall|asyncCa  syn match zigBuiltinFn "\v\@(maxValue|memberCount|memberName|memberType)>"  syn match zigBuiltinFn "\v\@(memcpy|memset|minValue|mod|mulWithOverflow)>"  syn match zigBuiltinFn "\v\@(noInlineCall|bitOffsetOf|byteOffsetOf|OpaqueType|panic|ptrCast)>" -syn match zigBuiltinFn "\v\@(ptrToInt|rem|returnAddress|setCold)>" +syn match zigBuiltinFn "\v\@(ptrToInt|rem|returnAddress|setCold|Type)>"  syn match zigBuiltinFn "\v\@(setRuntimeSafety|setEvalBranchQuota|setFloatMode)>"  syn match zigBuiltinFn "\v\@(setGlobalLinkage|setGlobalSection|shlExact|This|hasDecl|hasField)>"  syn match zigBuiltinFn "\v\@(shlWithOverflow|shrExact|sizeOf|sqrt|byteSwap|subWithOverflow|intCast|floatCast|intToFloat|floatToInt|boolToInt|errSetCast)>" | 
