diff options
| author | Adam Stankiewicz <sheerun@sher.pl> | 2019-07-01 16:25:37 +0200 | 
|---|---|---|
| committer | Adam Stankiewicz <sheerun@sher.pl> | 2019-07-01 16:25:37 +0200 | 
| commit | 140430ffb73d5e0851ba2df2abd29106b1677687 (patch) | |
| tree | 686fc28a75cbcdddbfad4a2e93f0433614d182bc | |
| parent | d52700284984ada048ce325404dfa25237271ba1 (diff) | |
| download | vim-polyglot-140430ffb73d5e0851ba2df2abd29106b1677687.tar.gz vim-polyglot-140430ffb73d5e0851ba2df2abd29106b1677687.zip | |
Update
| -rw-r--r-- | after/syntax/cpp.vim | 11 | ||||
| -rw-r--r-- | autoload/go/config.vim | 8 | ||||
| -rw-r--r-- | autoload/jsx_pretty/indent.vim | 31 | ||||
| -rw-r--r-- | autoload/terraform.vim | 68 | ||||
| -rw-r--r-- | ftdetect/polyglot.vim | 14 | ||||
| -rw-r--r-- | ftplugin/scala.vim | 4 | ||||
| -rw-r--r-- | ftplugin/terraform.vim | 138 | ||||
| -rw-r--r-- | indent/dune.vim | 14 | ||||
| -rw-r--r-- | indent/rust.vim | 66 | ||||
| -rw-r--r-- | indent/scala.vim | 9 | ||||
| -rw-r--r-- | indent/terraform.vim | 21 | ||||
| -rw-r--r-- | syntax/erlang.vim | 4 | ||||
| -rw-r--r-- | syntax/gitconfig.vim | 2 | ||||
| -rw-r--r-- | syntax/javascript.vim | 2 | ||||
| -rw-r--r-- | syntax/rst.vim | 11 | ||||
| -rw-r--r-- | syntax/rust.vim | 11 | ||||
| -rw-r--r-- | syntax/scss.vim | 2 | ||||
| -rw-r--r-- | syntax/svelte.vim | 3 | ||||
| -rw-r--r-- | syntax/terraform.vim | 11 | 
19 files changed, 261 insertions, 169 deletions
| diff --git a/after/syntax/cpp.vim b/after/syntax/cpp.vim index 01108d58..ae11705e 100644 --- a/after/syntax/cpp.vim +++ b/after/syntax/cpp.vim @@ -6,7 +6,7 @@ endif  " Language: C++ Additions  " Maintainer: Jon Haggblad <jon@haeggblad.com>  " URL: http://www.haeggblad.com -" Last Change: 1 Feb 2018 +" Last Change: 29 Jun 2019  " Version: 0.6  " Changelog:  "   0.1 - initial version. @@ -964,6 +964,12 @@ if !exists("cpp_no_cpp11")      syntax keyword cppSTLtype atomic_uintmax_t      syntax keyword cppSTLconstant ATOMIC_FLAG_INIT      syntax keyword cppSTLenum memory_order +    syntax keyword cppSTLtype memory_order_relaxed +    syntax keyword cppSTLtype memory_order_consume +    syntax keyword cppSTLtype memory_order_acquire +    syntax keyword cppSTLtype memory_order_release +    syntax keyword cppSTLtype memory_order_acq_rel +    syntax keyword cppSTLtype memory_order_seq_cst      syntax keyword cppSTLfunction is_lock_free      syntax keyword cppSTLfunction compare_exchange_weak      syntax keyword cppSTLfunction compare_exchange_strong @@ -1983,6 +1989,9 @@ endif " C++17  if !exists("cpp_no_cpp20")      " type_traits      syntax keyword cppSTLtype remove_cvref remove_cvref_t +    syntax keyword cppType char8_t +    syntax keyword cppStatement co_yield co_return co_await +    syntax keyword cppStorageClass consteval  endif diff --git a/autoload/go/config.vim b/autoload/go/config.vim index 4eff6f6f..787c4e2a 100644 --- a/autoload/go/config.vim +++ b/autoload/go/config.vim @@ -18,10 +18,6 @@ function! go#config#VersionWarning() abort    return get(g:, 'go_version_warning', 1)  endfunction -function! go#config#NullModuleWarning() abort -  return get(g:, 'go_null_module_warning', 1) -endfunction -  function! go#config#BuildTags() abort    return get(g:, 'go_build_tags', '')  endfunction @@ -279,10 +275,6 @@ function! go#config#MetalinterEnabled() abort    return get(g:, "go_metalinter_enabled", default_enabled)  endfunction -function! go#config#MetalinterDisabled() abort -  return get(g:, "go_metalinter_disabled", []) -endfunction -  function! go#config#GolintBin() abort    return get(g:, "go_golint_bin", "golint")  endfunction diff --git a/autoload/jsx_pretty/indent.vim b/autoload/jsx_pretty/indent.vim index d37d3990..428c366d 100644 --- a/autoload/jsx_pretty/indent.vim +++ b/autoload/jsx_pretty/indent.vim @@ -73,17 +73,27 @@ function! jsx_pretty#indent#get(js_indent)    let line = substitute(getline(lnum), '^\s*\|\s*$', '', 'g')    let current_syn = s:syn_sol(lnum)    let current_syn_eol = s:syn_eol(lnum) -  let prev_syn_sol = s:syn_sol(lnum - 1) -  let prev_syn_eol = s:syn_eol(lnum - 1) +  let prev_line_num = prevnonblank(lnum - 1) +  let prev_syn_sol = s:syn_sol(prev_line_num) +  let prev_syn_eol = s:syn_eol(prev_line_num)    let prev_line = s:prev_line(lnum)    let prev_ind = s:prev_indent(lnum)    if s:syn_xmlish(current_syn) +    if !s:syn_xmlish(prev_syn_sol) +          \ && !s:syn_jsx_escapejs(prev_syn_sol) +          \ && !s:syn_jsx_escapejs(prev_syn_eol) +          \ && !s:syn_js_comment(prev_syn_sol) +      if line =~ '^/\s*>' || line =~ '^<\s*' . s:end_tag +        return prev_ind +      else +        return prev_ind + s:sw() +      endif      " {      "   <div></div>      " ##} <-- -    if s:syn_jsx_element(current_syn) && line =~ '}$' +    elseif s:syn_jsx_element(current_syn) && line =~ '}$'        let pair_line = searchpair('{', '', '}', 'b')        return indent(pair_line)      elseif line =~ '^-->$' @@ -143,16 +153,6 @@ function! jsx_pretty#indent#get(js_indent)        else          return prev_ind        endif -    elseif !s:syn_xmlish(prev_syn_sol) -      if prev_line =~ '^\<\(return\|default\|await\|yield\)' -        if line !~ '^/\s*>' || line !~ '^<\s*' . s:end_tag -          return prev_ind + s:sw() -        else -          return prev_ind -        endif -      else -        return prev_ind -      endif      else        return prev_ind      endif @@ -193,9 +193,10 @@ function! jsx_pretty#indent#get(js_indent)      " Issue #68      " return (<div>      " |<div>) -    if prev_line =~ '^\<return' && line =~ '^<\s*' . s:end_tag +    if (line =~ '^/\s*>' || line =~ '^<\s*' . s:end_tag) +          \ && !s:syn_xmlish(prev_syn_sol)        return prev_ind -    endif  +    endif      " If current syntax is not a jsx syntax group      if s:syn_xmlish(prev_syn_eol) && line !~ '^[)\]}]' diff --git a/autoload/terraform.vim b/autoload/terraform.vim index 210ee59f..db1e3934 100644 --- a/autoload/terraform.vim +++ b/autoload/terraform.vim @@ -23,3 +23,71 @@ function! terraform#fmt()    endif    call winrestview(l:curw)  endfunction + +function! terraform#folds() +  let thisline = getline(v:lnum) +  if match(thisline, '^resource') >= 0 +    return '>1' +  elseif match(thisline, '^provider') >= 0 +    return '>1' +  elseif match(thisline, '^module') >= 0 +    return '>1' +  elseif match(thisline, '^variable') >= 0 +    return '>1' +  elseif match(thisline, '^output') >= 0 +    return '>1' +  elseif match(thisline, '^data') >= 0 +    return '>1' +  elseif match(thisline, '^terraform') >= 0 +    return '>1' +  elseif match(thisline, '^locals') >= 0 +    return '>1' +  else +    return '=' +  endif +endfunction + +function! terraform#foldText() +  let foldsize = (v:foldend-v:foldstart) +  return getline(v:foldstart).' ('.foldsize.' lines)' +endfunction + +function! terraform#align() +  let p = '^.*=[^>]*$' +  if exists(':Tabularize') && getline('.') =~# '^.*=' && (getline(line('.')-1) =~# p || getline(line('.')+1) =~# p) +    let column = strlen(substitute(getline('.')[0:col('.')],'[^=]','','g')) +    let position = strlen(matchstr(getline('.')[0:col('.')],'.*=\s*\zs.*')) +    Tabularize/=/l1 +    normal! 0 +    call search(repeat('[^=]*=',column).'\s\{-\}'.repeat('.',position),'ce',line('.')) +  endif +endfunction + +function! terraform#commands(A, L, P) +  return [ +  \ 'apply', +  \ 'console', +  \ 'destroy', +  \ 'env', +  \ 'fmt', +  \ 'get', +  \ 'graph', +  \ 'import', +  \ 'init', +  \ 'output', +  \ 'plan', +  \ 'providers', +  \ 'push', +  \ 'refresh', +  \ 'show', +  \ 'taint', +  \ 'untaint', +  \ 'validate', +  \ 'version', +  \ 'workspace', +  \ '0.12checklist', +  \ 'debug', +  \ 'force-unlock', +  \ 'state' +  \ ] +endfunction diff --git a/ftdetect/polyglot.vim b/ftdetect/polyglot.vim index b080cfd9..073ef3a5 100644 --- a/ftdetect/polyglot.vim +++ b/ftdetect/polyglot.vim @@ -631,11 +631,11 @@ if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'jenkins') == -1    augroup filetypedetect    " jenkins, from Jenkinsfile.vim in martinda/Jenkinsfile-vim-syntax  " Jenkinsfile -autocmd BufRead,BufNewFile Jenkinsfile set ft=Jenkinsfile -autocmd BufRead,BufNewFile Jenkinsfile* setf Jenkinsfile -autocmd BufRead,BufNewFile *.jenkinsfile set ft=Jenkinsfile -autocmd BufRead,BufNewFile *.jenkinsfile setf Jenkinsfile -autocmd BufRead,BufNewFile *.Jenkinsfile setf Jenkinsfile + +augroup JenkinsAUGroup +  autocmd BufRead,BufNewFile *Jenkins* set ft=Jenkinsfile +  autocmd BufRead,BufNewFile *jenkins* set ft=Jenkinsfile +augroup END    augroup end  endif @@ -1085,7 +1085,7 @@ endif  if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'racket') == -1    augroup filetypedetect    " racket, from racket.vim in wlangstroth/vim-racket -au BufRead,BufNewFile *.rkt,*.rktl setf racket +au BufRead,BufNewFile *.rkt,*.rktl set filetype=racket    augroup end  endif @@ -1348,6 +1348,8 @@ endif  if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'terraform') == -1    augroup filetypedetect    " terraform, from terraform.vim in hashivim/vim-terraform +" By default, Vim associates .tf files with TinyFugue - tell it not to. +autocmd! filetypedetect BufRead,BufNewFile *.tf  autocmd BufRead,BufNewFile *.tf set filetype=terraform  autocmd BufRead,BufNewFile *.tfvars set filetype=terraform  autocmd BufRead,BufNewFile *.tfstate set filetype=json diff --git a/ftplugin/scala.vim b/ftplugin/scala.vim index 817b6f99..d843daa9 100644 --- a/ftplugin/scala.vim +++ b/ftplugin/scala.vim @@ -29,8 +29,8 @@ setlocal commentstring=//\ %s  setlocal shiftwidth=2 softtabstop=2 expandtab -setlocal include='^\s*import' -setlocal includeexpr='substitute(v:fname,"\\.","/","g")' +setlocal include=^\\s*import +setlocal includeexpr=substitute(v:fname,'\\.','/','g')  setlocal path+=src/main/scala,src/test/scala  setlocal suffixesadd=.scala diff --git a/ftplugin/terraform.vim b/ftplugin/terraform.vim index fd4c2be0..e8ed9fb3 100644 --- a/ftplugin/terraform.vim +++ b/ftplugin/terraform.vim @@ -11,127 +11,44 @@ endif  let b:did_ftplugin = 1  let s:cpo_save = &cpoptions - -setlocal formatoptions-=t -let b:undo_ftplugin = 'setlocal formatoptions<' - -" Include hyphens as keyword characters so that a keyword appearing as part of -" a longer name doesn't get partially highlighted. -setlocal iskeyword+=- -let b:undo_ftplugin .= ' iskeyword<' -  set cpoptions&vim -if !exists('g:terraform_align') -  let g:terraform_align = 0 -endif - -if !exists('g:terraform_remap_spacebar') -  let g:terraform_remap_spacebar = 0 -endif - -if !exists('g:terraform_fold_sections') -  let g:terraform_fold_sections = 0 -endif +" j is a relatively recent addition; silence warnings when setting it. +setlocal formatoptions-=t formatoptions+=croql +silent! setlocal formatoptions+=j +let b:undo_ftplugin = 'setlocal formatoptions<' -if g:terraform_align && exists(':Tabularize') -  inoremap <buffer> <silent> = =<Esc>:call <SID>terraformalign()<CR>a -  function! s:terraformalign() -    let p = '^.*=[^>]*$' -    if exists(':Tabularize') && getline('.') =~# '^.*=' && (getline(line('.')-1) =~# p || getline(line('.')+1) =~# p) -      let column = strlen(substitute(getline('.')[0:col('.')],'[^=]','','g')) -      let position = strlen(matchstr(getline('.')[0:col('.')],'.*=\s*\zs.*')) -      Tabularize/=/l1 -      normal! 0 -      call search(repeat('[^=]*=',column).'\s\{-\}'.repeat('.',position),'ce',line('.')) -    endif -  endfunction +if !has('patch-7.4.1142') +    " Include hyphens as keyword characters so that a keyword appearing as +    " part of a longer name doesn't get partially highlighted. +    setlocal iskeyword+=- +    let b:undo_ftplugin .= ' iskeyword<'  endif -if g:terraform_fold_sections -  function! TerraformFolds() -    let thisline = getline(v:lnum) -    if match(thisline, '^resource') >= 0 -      return '>1' -    elseif match(thisline, '^provider') >= 0 -      return '>1' -    elseif match(thisline, '^module') >= 0 -      return '>1' -    elseif match(thisline, '^variable') >= 0 -      return '>1' -    elseif match(thisline, '^output') >= 0 -      return '>1' -    elseif match(thisline, '^data') >= 0 -      return '>1' -    elseif match(thisline, '^terraform') >= 0 -      return '>1' -    elseif match(thisline, '^locals') >= 0 -      return '>1' -    else -      return '=' -    endif -  endfunction +if get(g:, 'terraform_fold_sections', 0)    setlocal foldmethod=expr -  setlocal foldexpr=TerraformFolds() +  setlocal foldexpr=terraform#folds()    setlocal foldlevel=1 -  let b:undo_ftplugin .= ' foldmethod< foldexpr< foldlevel<' - -  function! TerraformFoldText() -    let foldsize = (v:foldend-v:foldstart) -    return getline(v:foldstart).' ('.foldsize.' lines)' -  endfunction -  setlocal foldtext=TerraformFoldText() -  let b:undo_ftplugin .= ' foldtext<' -endif - -" Re-map the space bar to fold and unfold -if get(g:, 'terraform_remap_spacebar', 1) -  "inoremap <space> <C-O>za -  nnoremap <space> za -  onoremap <space> <C-C>za -  vnoremap <space> zf +  setlocal foldtext=terraform#foldText() +  let b:undo_ftplugin .= ' foldmethod< foldexpr< foldlevel< foldtext<'  endif  " Set the commentstring -if exists('g:terraform_commentstring') -    let &l:commentstring=g:terraform_commentstring -else -    setlocal commentstring=#%s -endif +let &l:commentstring = get(g:, 'terraform_commentstring', '#%s')  let b:undo_ftplugin .= ' commentstring<' -if !exists('g:terraform_fmt_on_save') -  let g:terraform_fmt_on_save = 0 +" Re-map the space bar to fold and unfold +if get(g:, 'terraform_remap_spacebar', 0) +  nnoremap <buffer> <space> za +  onoremap <buffer> <space> <C-C>za +  vnoremap <buffer> <space> zf +  let b:undo_ftplugin .= '|unmap <buffer> <space>'  endif -function! s:commands(A, L, P) -  return [ -  \ 'apply', -  \ 'console', -  \ 'destroy', -  \ 'env', -  \ 'fmt', -  \ 'get', -  \ 'graph', -  \ 'import', -  \ 'init', -  \ 'output', -  \ 'plan', -  \ 'providers', -  \ 'push', -  \ 'refresh', -  \ 'show', -  \ 'taint', -  \ 'untaint', -  \ 'validate', -  \ 'version', -  \ 'workspace', -  \ '0.12checklist', -  \ 'debug', -  \ 'force-unlock', -  \ 'state' -  \ ] -endfunction +if get(g:, 'terraform_align', 0) && exists(':Tabularize') +  inoremap <buffer> <silent> = =<Esc>:call terraform#align()<CR>a +  let b:undo_ftplugin .= '|iunmap <buffer> =' +endif  let &cpoptions = s:cpo_save  unlet s:cpo_save @@ -141,13 +58,14 @@ if !executable('terraform')  endif  let s:cpo_save = &cpoptions +set cpoptions&vim -command! -nargs=+ -complete=customlist,s:commands -buffer Terraform execute '!terraform '.<q-args>. ' -no-color' +command! -nargs=+ -complete=customlist,terraform#commands -buffer Terraform execute '!terraform '.<q-args>. ' -no-color'  command! -nargs=0 -buffer TerraformFmt call terraform#fmt()  let b:undo_ftplugin .= '|delcommand Terraform|delcommand TerraformFmt' -if get(g:, 'terraform_fmt_on_save', 1) -  augroup terraform +if get(g:, 'terraform_fmt_on_save', 0) +  augroup vim.terraform.fmt      autocmd!      autocmd BufWritePre *.tf call terraform#fmt()      autocmd BufWritePre *.tfvars call terraform#fmt() diff --git a/indent/dune.vim b/indent/dune.vim new file mode 100644 index 00000000..3f8e7e87 --- /dev/null +++ b/indent/dune.vim @@ -0,0 +1,14 @@ +if exists('g:polyglot_disabled') && index(g:polyglot_disabled, 'ocaml') != -1 +  finish +endif + +" Vim indent file +" Language: dune + +if exists("b:did_indent") + finish +endif +let b:did_indent = 1 + +" dune format-dune-file uses 1 space to indent +set softtabstop=1 shiftwidth=1 expandtab diff --git a/indent/rust.vim b/indent/rust.vim index 5c43d2e2..ee7f6cf6 100644 --- a/indent/rust.vim +++ b/indent/rust.vim @@ -85,8 +85,17 @@ function! s:is_string_comment(lnum, col)      endif  endfunction -function GetRustIndent(lnum) +if exists('*shiftwidth') +    function! s:shiftwidth() +        return shiftwidth() +    endfunc +else +    function! s:shiftwidth() +        return &shiftwidth +    endfunc +endif +function GetRustIndent(lnum)      " Starting assumption: cindent (called at the end) will do it right      " normally. We just want to fix up a few cases. @@ -132,14 +141,65 @@ function GetRustIndent(lnum)          let prevline = s:get_line_trimmed(prevlinenum)      endwhile +    " A standalone '{', '}', or 'where' +    let l:standalone_open = line =~# '\V\^\s\*{\s\*\$' +    let l:standalone_close = line =~# '\V\^\s\*}\s\*\$' +    let l:standalone_where = line =~# '\V\^\s\*where\s\*\$' +    if l:standalone_open || l:standalone_close || l:standalone_where +        " ToDo: we can search for more items than 'fn' and 'if'. +        let [l:found_line, l:col, l:submatch] = +                    \ searchpos('\<\(fn\)\|\(if\)\>', 'bnWp') +        if l:found_line !=# 0 +            " Now we count the number of '{' and '}' in between the match +            " locations and the current line (there is probably a better +            " way to compute this). +            let l:i = l:found_line +            let l:search_line = strpart(getline(l:i), l:col - 1) +            let l:opens = 0 +            let l:closes = 0 +            while l:i < a:lnum +                let l:search_line2 = substitute(l:search_line, '\V{', '', 'g') +                let l:opens += strlen(l:search_line) - strlen(l:search_line2) +                let l:search_line3 = substitute(l:search_line2, '\V}', '', 'g') +                let l:closes += strlen(l:search_line2) - strlen(l:search_line3) +                let l:i += 1 +                let l:search_line = getline(l:i) +            endwhile +            if l:standalone_open || l:standalone_where +                if l:opens ==# l:closes +                    return indent(l:found_line) +                endif +            else +                " Expect to find just one more close than an open +                if l:opens ==# l:closes + 1 +                    return indent(l:found_line) +                endif +            endif +        endif +    endif + +    " A standalone 'where' adds a shift. +    let l:standalone_prevline_where = prevline =~# '\V\^\s\*where\s\*\$' +    if l:standalone_prevline_where +        return indent(prevlinenum) + 4 +    endif +      " Handle where clauses nicely: subsequent values should line up nicely.      if prevline[len(prevline) - 1] ==# ","                  \ && prevline =~# '^\s*where\s'          return indent(prevlinenum) + 6      endif -    if prevline[len(prevline) - 1] ==# "," -                \ && s:get_line_trimmed(a:lnum) !~# '^\s*[\[\]{}]' +    let l:last_prevline_character = prevline[len(prevline) - 1] + +    " A line that ends with '.<expr>;' is probably an end of a long list +    " of method operations. +    if prevline =~# '\V\^\s\*.' && l:last_prevline_character ==# ';' +        return indent(prevlinenum) - s:shiftwidth() +    endif + +    if l:last_prevline_character ==# "," +                \ && s:get_line_trimmed(a:lnum) !~# '^\s*[\[\]{})]'                  \ && prevline !~# '^\s*fn\s'                  \ && prevline !~# '([^()]\+,$'                  \ && s:get_line_trimmed(a:lnum) !~# '^\s*\S\+\s*=>' diff --git a/indent/scala.vim b/indent/scala.vim index db52cf90..2fcb3378 100644 --- a/indent/scala.vim +++ b/indent/scala.vim @@ -21,7 +21,10 @@ if exists("*GetScalaIndent")    finish  endif -let s:defMatcher = '\%(\%(private\|protected\)\%(\[[^\]]*\]\)\?\s\+\|abstract\s\+\|override\s\+\)*\<def\>' +let s:annotationMatcher = '@[A-Za-z._]\+\s\+' +let s:modifierMatcher = s:annotationMatcher . '\|\%(private\|protected\)\%(\[[^\]]*\]\)\?\s\+\|abstract\s\+\|override\s\+\|final\s\+' +let s:defMatcher = '\%(' . s:modifierMatcher . '\)*\<def\>' +let s:valMatcher = '\%(' . s:modifierMatcher . '\|lazy\s\+\)*\<va[lr]\>'  let s:funcNameMatcher = '\w\+'  let s:typeSpecMatcher = '\%(\s*\[\_[^\]]*\]\)'  let s:defArgMatcher = '\%((\_.\{-})\)' @@ -185,7 +188,7 @@ function! scala#NumberOfBraceGroups(line)  endfunction  function! scala#MatchesIncompleteDefValr(line) -  if a:line =~ '^\s*\%(' . s:defMatcher . '\|\<va[lr]\>\).*[=({]\s*$' +  if a:line =~ '^\s*\%(' . s:defMatcher . '\|' . s:valMatcher . '\).*[=({]\s*$'      return 1    else      return 0 @@ -435,7 +438,7 @@ function! GetScalaIndent()    " If 'val', 'var', 'def' end with =, this is a one-line block    if (prevline =~ '^\s*\<\%(\%(}\?\s*else\s\+\)\?if\|for\|while\)\>.*[)=]\s*$' && scala#NumberOfBraceGroups(prevline) <= 1)          \ || prevline =~ '^\s*' . s:defMatcher . '.*=\s*$' -        \ || prevline =~ '^\s*\<va[lr]\>.*[=]\s*$' +        \ || prevline =~ '^\s*' . s:valMatcher . '.*[=]\s*$'          \ || prevline =~ '^\s*\%(}\s*\)\?\<else\>\s*$'          \ || prevline =~ '=\s*$'      call scala#ConditionalConfirm("4") diff --git a/indent/terraform.vim b/indent/terraform.vim index 2a0e5799..74b7808a 100644 --- a/indent/terraform.vim +++ b/indent/terraform.vim @@ -34,24 +34,19 @@ function! TerraformIndent(lnum)      return 0    endif -  " Previous non-blank line should continue the indent level +  " Usual case is to continue at the same indent as the previous non-blank line.    let prevlnum = prevnonblank(a:lnum-1) +  let thisindent = indent(prevlnum) -  " Previous line without comments should continue the indent level -  let prevline = substitute(getline(prevlnum), '//.*$', '', '') -  let previndent = indent(prevlnum) -  let thisindent = previndent - -  " Config block starting with [ { ( should increase the indent level -  if prevline =~# '[\[{\(]\s*$' +  " If that previous line is a non-comment ending in [ { (, increase the +  " indent level. +  let prevline = getline(prevlnum) +  if prevline !~# '^\s*\(#\|//\)' && prevline =~# '[\[{\(]\s*$'      let thisindent += &shiftwidth    endif -  " Current line without comments should continue the indent level -  let thisline = substitute(getline(a:lnum), '//.*$', '', '') - -  " Config block ending with ) } ] should get the indentation -  " level from the initial config block +  " If the current line ends a block, decrease the indent level. +  let thisline = getline(a:lnum)    if thisline =~# '^\s*[\)}\]]'      let thisindent -= &shiftwidth    endif diff --git a/syntax/erlang.vim b/syntax/erlang.vim index 1c549969..391ad1b3 100644 --- a/syntax/erlang.vim +++ b/syntax/erlang.vim @@ -6,7 +6,7 @@ endif  " Language:     Erlang (http://www.erlang.org)  " Maintainer:   Csaba Hoch <csaba.hoch@gmail.com>  " Contributor:  Adam Rutkowski <hq@mtod.org> -" Last Update:  2017-Mar-05 +" Last Update:  2019-Jun-18  " License:      Vim license  " URL:          https://github.com/vim-erlang/vim-erlang-runtime @@ -121,7 +121,7 @@ syn keyword erlangBIF garbage_collect get get_keys group_leader contained  syn keyword erlangBIF halt hd integer_to_binary integer_to_list contained  syn keyword erlangBIF iolist_to_binary iolist_size is_alive contained  syn keyword erlangBIF is_atom is_binary is_bitstring is_boolean contained -syn keyword erlangBIF is_float is_function is_integer is_list is_map contained +syn keyword erlangBIF is_float is_function is_integer is_list is_map is_map_key contained  syn keyword erlangBIF is_number is_pid is_port is_process_alive contained  syn keyword erlangBIF is_record is_reference is_tuple length link contained  syn keyword erlangBIF list_to_atom list_to_binary contained diff --git a/syntax/gitconfig.vim b/syntax/gitconfig.vim index 438cceae..80ee7971 100644 --- a/syntax/gitconfig.vim +++ b/syntax/gitconfig.vim @@ -34,7 +34,7 @@ hi def link gitconfigBoolean		Boolean  hi def link gitconfigNumber		Number  hi def link gitconfigString		String  hi def link gitconfigDelim		Delimiter -hi def link gitconfigEscape		Delimiter +hi def link gitconfigEscape		Special  hi def link gitconfigError		Error  let b:current_syntax = "gitconfig" diff --git a/syntax/javascript.vim b/syntax/javascript.vim index a48c58e2..0c917b68 100644 --- a/syntax/javascript.vim +++ b/syntax/javascript.vim @@ -65,7 +65,7 @@ syntax match   jsFloat            /\c\<\%(\d\+\.\d\+\|\d\+\.\|\.\d\+\)\%(e[+-]\=  " Regular Expressions  syntax match   jsSpecial            contained "\v\\%(x\x\x|u%(\x{4}|\{\x{4,5}})|c\u|.)"  syntax region  jsTemplateExpression contained matchgroup=jsTemplateBraces start=+${+ end=+}+ contains=@jsExpression keepend -syntax region  jsRegexpCharClass    contained start=+\[+ skip=+\\.+ end=+\]+ contains=jsSpecial +syntax region  jsRegexpCharClass    contained start=+\[+ skip=+\\.+ end=+\]+ contains=jsSpecial extend  syntax match   jsRegexpBoundary     contained "\v\c[$^]|\\b"  syntax match   jsRegexpBackRef      contained "\v\\[1-9]\d*"  syntax match   jsRegexpQuantifier   contained "\v[^\\]%([?*+]|\{\d+%(,\d*)?})\??"lc=1 diff --git a/syntax/rst.vim b/syntax/rst.vim index a875a44b..43b17aa8 100644 --- a/syntax/rst.vim +++ b/syntax/rst.vim @@ -94,7 +94,14 @@ execute 'syn match rstSubstitutionDefinition contained' .        \ ' /|.*|\_s\+/ nextgroup=@rstDirectives'  function! s:DefineOneInlineMarkup(name, start, middle, end, char_left, char_right) -  execute 'syn match rstEscape'.a:name.' +\\\\\|\\'.a:start.'+'.' contained' +  " Only escape the first char of a multichar delimiter (e.g. \* inside **) +  if a:start[0] == '\' +    let first = a:start[0:1] +  else +    let first = a:start[0] +  endif + +  execute 'syn match rstEscape'.a:name.' +\\\\\|\\'.first.'+'.' contained'    execute 'syn region rst' . a:name .          \ ' start=+' . a:char_left . '\zs' . a:start . @@ -170,7 +177,7 @@ syn match   rstStandaloneHyperlink  contains=@NoSpell        \ "\<\%(\%(\%(https\=\|file\|ftp\|gopher\)://\|\%(mailto\|news\):\)[^[:space:]'\"<>]\+\|www[[:alnum:]_-]*\.[[:alnum:]_-]\+\.[^[:space:]'\"<>]\+\)[[:alnum:]/]"  syn region rstCodeBlock contained matchgroup=rstDirective -      \ start=+\%(sourcecode\|code\%(-block\)\=\)::\s\+.*\_s*\n\ze\z(\s\+\)+ +      \ start=+\%(sourcecode\|code\%(-block\)\=\)::\s*\n\%(\s*:.*:\s*.*\s*\n\)*\n\ze\z(\s\+\)+        \ skip=+^$+        \ end=+^\z1\@!+        \ contains=@NoSpell diff --git a/syntax/rust.vim b/syntax/rust.vim index 6f653014..a4fff5c2 100644 --- a/syntax/rust.vim +++ b/syntax/rust.vim @@ -153,7 +153,16 @@ syn region    rustString      start=+b"+ skip=+\\\\\|\\"+ end=+"+ contains=rustE  syn region    rustString      start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=rustEscape,rustEscapeUnicode,rustEscapeError,rustStringContinuation,@Spell  syn region    rustString      start='b\?r\z(#*\)"' end='"\z1' contains=@Spell -syn region    rustAttribute   start="#!\?\[" end="\]" contains=rustString,rustDerive,rustCommentLine,rustCommentBlock,rustCommentLineDocError,rustCommentBlockDocError +" Match attributes with either arbitrary syntax or special highlighting for +" derives. We still highlight strings and comments inside of the attribute. +syn region    rustAttribute   start="#!\?\[" end="\]" contains=@rustAttributeContents,rustAttributeParenthesizedParens,rustAttributeParenthesizedCurly,rustAttributeParenthesizedBrackets,rustDerive +syn region    rustAttributeParenthesizedParens matchgroup=rustAttribute start="\w\%(\w\)*("rs=e end=")"re=s transparent contained contains=rustAttributeBalancedParens,@rustAttributeContents +syn region    rustAttributeParenthesizedCurly matchgroup=rustAttribute start="\w\%(\w\)*{"rs=e end="}"re=s transparent contained contains=rustAttributeBalancedCurly,@rustAttributeContents +syn region    rustAttributeParenthesizedBrackets matchgroup=rustAttribute start="\w\%(\w\)*\["rs=e end="\]"re=s transparent contained contains=rustAttributeBalancedBrackets,@rustAttributeContents +syn region    rustAttributeBalancedParens matchgroup=rustAttribute start="("rs=e end=")"re=s transparent contained contains=rustAttributeBalancedParens,@rustAttributeContents +syn region    rustAttributeBalancedCurly matchgroup=rustAttribute start="{"rs=e end="}"re=s transparent contained contains=rustAttributeBalancedCurly,@rustAttributeContents +syn region    rustAttributeBalancedBrackets matchgroup=rustAttribute start="\["rs=e end="\]"re=s transparent contained contains=rustAttributeBalancedBrackets,@rustAttributeContents +syn cluster   rustAttributeContents contains=rustString,rustCommentLine,rustCommentBlock,rustCommentLineDocError,rustCommentBlockDocError  syn region    rustDerive      start="derive(" end=")" contained contains=rustDeriveTrait  " This list comes from src/libsyntax/ext/deriving/mod.rs  " Some are deprecated (Encodable, Decodable) or to be removed after a new snapshot (Show). diff --git a/syntax/scss.vim b/syntax/scss.vim index 84f75fea..69574735 100644 --- a/syntax/scss.vim +++ b/syntax/scss.vim @@ -50,6 +50,7 @@ syn cluster scssSelectors contains=@comment,cssSelectorOp,cssTagName,cssPseudoCl  syn match scssProperty "\([[:alnum:]-]\)\+\s*\(:\)\@=" contained contains=css.*Prop,cssVendor containedin=cssMediaBlock nextgroup=scssAttribute,scssAttributeWithNestedDefinition  syn match scssAttribute ":[^;]*\ze\(;\|}\)" contained contains=css.*Attr,cssValue.*,cssColor,cssFunction,cssString.*,cssURL,scssFunction,scssInterpolation,scssVariable +syn match scssSemicolon ";" containedin=scssDefinition,scssNestedDefinition  syn match scssAttributeWithNestedDefinition ": [^#"]*{\@=" nextgroup=scssNestedDefinition contained contains=css.*Attr,cssValue.*,scssVariable  syn region scssNestedDefinition matchgroup=cssBraces start="{" end="}" contained contains=@comment,scssProperty,scssNestedProperty @@ -218,6 +219,7 @@ hi def link scssImport    Include  hi def link scssTodo      Todo  hi def link scssAtRoot    Keyword  hi def link scssMapParens Delimiter +hi def link scssSemicolon Delimiter  let b:current_syntax = "scss"  if main_syntax == 'scss' diff --git a/syntax/svelte.vim b/syntax/svelte.vim index e119d605..2149e71a 100644 --- a/syntax/svelte.vim +++ b/syntax/svelte.vim @@ -48,7 +48,10 @@ syntax match svelteKeyword "#await" contained containedin=jsBlock,javascriptBloc  syntax match svelteKeyword "/await" contained containedin=jsBlock,javascriptBlock  syntax match svelteKeyword ":catch" contained containedin=jsBlock,javascriptBlock  syntax match svelteKeyword ":then" contained containedin=jsBlock,javascriptBlock + +" Inline keywords.  syntax match svelteKeyword "@html" contained containedin=jsBlock,javascriptBlock +syntax match svelteKeyword "@debug" contained containedin=jsBlock,javascriptBlock  " Repeat functions.  syntax match svelteRepeat "#each" contained containedin=jsBlock,javascriptBlock diff --git a/syntax/terraform.vim b/syntax/terraform.vim index eb7745e7..58c60203 100644 --- a/syntax/terraform.vim +++ b/syntax/terraform.vim @@ -9,6 +9,12 @@ if exists('b:current_syntax')    finish  endif +" Identifiers are made up of alphanumeric characters, underscores, and +" hyphens. +if has('patch-7.4.1142') +    syn iskeyword a-z,A-Z,48-57,_,- +endif +  syn case match  syn keyword terraSection connection output provider variable data terraform locals @@ -3732,7 +3738,7 @@ syn region terraDynamicName start=/"/ end=/"/ nextgroup=terraDynamicBlock skipwh  """ misc.  syn match terraValueDec      "\<[0-9]\+\([kKmMgG]b\?\)\?\>"  syn match terraValueHexaDec  "\<0x[0-9a-f]\+\([kKmMgG]b\?\)\?\>" -syn match terraBraces        "[{}\[\]]" +syn match terraBraces        "[\[\]]"  """ skip \" in strings.  """ we may also want to pass \\" into a function to escape quotes. @@ -3757,6 +3763,9 @@ syn keyword terraValueNull      null  """ Terraform v0.12  syn keyword terraTodo contained TF-UPGRADE-TODO +" enable block folding +syn region terraBlock matchgroup=terraBraces start="{" end="}" fold transparent +  hi def link terraComment           Comment  hi def link terraTodo              Todo  hi def link terraBrackets          Operator | 
