This commit is contained in:
Adam Stankiewicz
2021-07-08 11:54:15 +02:00
parent 4f5388350b
commit c794f186c0
25 changed files with 341 additions and 327 deletions

View File

@@ -7,7 +7,7 @@ A collection of language packs for Vim.
> One to rule them all, one to find them, one to bring them all and in the darkness bind them. > One to rule them all, one to find them, one to bring them all and in the darkness bind them.
- It **won't affect your startup time**, as scripts are loaded only on demand\*. - It **won't affect your startup time**, as scripts are loaded only on demand\*.
- It **installs and updates 120+ times faster** than the <!--Package Count-->607<!--/Package Count--> packages it consists of. - It **installs and updates 120+ times faster** than the <!--Package Count-->606<!--/Package Count--> packages it consists of.
- It is also more secure (scripts loaded for every filetype are generated by vim-polyglot) - It is also more secure (scripts loaded for every filetype are generated by vim-polyglot)
- Best syntax and indentation support (no other features). Hand-selected language packs. - Best syntax and indentation support (no other features). Hand-selected language packs.
- Automatically detects indentation (includes performance-optimized version of [vim-sleuth](https://github.com/tpope/vim-sleuth), can be disabled) - Automatically detects indentation (includes performance-optimized version of [vim-sleuth](https://github.com/tpope/vim-sleuth), can be disabled)
@@ -96,7 +96,6 @@ On top of all language packs from [vim repository](https://github.com/vim/vim/tr
- [haproxy](https://github.com/CH-DanReif/haproxy.vim) (HAProxy syntax highlighting) - [haproxy](https://github.com/CH-DanReif/haproxy.vim) (HAProxy syntax highlighting)
- [haskell](https://github.com/neovimhaskell/haskell-vim) (Haskell syntax highlighting for hs, hs-boot, hsc, bpk and hsig files) - [haskell](https://github.com/neovimhaskell/haskell-vim) (Haskell syntax highlighting for hs, hs-boot, hsc, bpk and hsig files)
- [haxe](https://github.com/jdonaldson/vaxe) (Haxe and HXML syntax highlighting for hx, hxsl, hxml and hss files) - [haxe](https://github.com/jdonaldson/vaxe) (Haxe and HXML syntax highlighting for hx, hxsl, hxml and hss files)
- [hcl](https://github.com/b4b4r07/vim-hcl) (HCL syntax highlighting for hcl, nomad and workflow files)
- [helm](https://github.com/towolf/vim-helm) - [helm](https://github.com/towolf/vim-helm)
- [help](https://github.com/neovim/neovim/tree/master/runtime) - [help](https://github.com/neovim/neovim/tree/master/runtime)
- [hive](https://github.com/zebradil/hive.vim) (HiveQL syntax highlighting for q, hql and ql files) - [hive](https://github.com/zebradil/hive.vim) (HiveQL syntax highlighting for q, hql and ql files)
@@ -187,7 +186,7 @@ On top of all language packs from [vim repository](https://github.com/vim/vim/tr
- [swift](https://github.com/keith/swift.vim) (Swift syntax highlighting for swift files) - [swift](https://github.com/keith/swift.vim) (Swift syntax highlighting for swift files)
- [sxhkd](https://github.com/baskerville/vim-sxhkdrc) (Syntax highlighting for sxhkdrc files) - [sxhkd](https://github.com/baskerville/vim-sxhkdrc) (Syntax highlighting for sxhkdrc files)
- [systemd](https://github.com/wgwoods/vim-systemd-syntax) (Syntax highlighting for automount, dnssd, link, mount, netdev and 9 more files) - [systemd](https://github.com/wgwoods/vim-systemd-syntax) (Syntax highlighting for automount, dnssd, link, mount, netdev and 9 more files)
- [terraform](https://github.com/hashivim/vim-terraform) (Syntax highlighting for tf and tfvars files) - [terraform](https://github.com/hashivim/vim-terraform) (HCL syntax highlighting for tf, tfvars, hcl, nomad and workflow files)
- [textile](https://github.com/timcharper/textile.vim) (Textile syntax highlighting for textile files) - [textile](https://github.com/timcharper/textile.vim) (Textile syntax highlighting for textile files)
- [thrift](https://github.com/solarnz/thrift.vim) (Thrift syntax highlighting for thrift files) - [thrift](https://github.com/solarnz/thrift.vim) (Thrift syntax highlighting for thrift files)
- [tmux](https://github.com/ericpruitt/tmux.vim/tree/master/vim) - [tmux](https://github.com/ericpruitt/tmux.vim/tree/master/vim)

View File

@@ -14,7 +14,7 @@ endif
" Some ideas are taken from the wiki http://vim.wikia.com/wiki/VimTip667 " Some ideas are taken from the wiki http://vim.wikia.com/wiki/VimTip667
" though, implementation differs. " though, implementation differs.
let s:csv_numeric_sort = v:version > 704 || v:version == 704 && has("patch341") let s:csv_numeric_sort = v:version > 704 || v:version == 704 && has("patch951")
if !s:csv_numeric_sort "{{{2 if !s:csv_numeric_sort "{{{2
fu! csv#CSVSortValues(i1, i2) "{{{3 fu! csv#CSVSortValues(i1, i2) "{{{3
return (a:i1+0) == (a:i2+0) ? 0 : (a:i1+0) > (a:i2+0) ? 1 : -1 return (a:i1+0) == (a:i2+0) ? 0 : (a:i1+0) > (a:i2+0) ? 1 : -1
@@ -222,6 +222,15 @@ fu! csv#LocalSettings(type) "{{{3
endif endif
endfu endfu
fu! csv#RemoveAutoHighlight() "{{{3
exe "aug CSV_HI".bufnr('')
exe "au! CursorMoved <buffer=".bufnr('').">"
aug end
exe "aug! CSV_HI".bufnr('')
" Remove any existing highlighting
HiColumn!
endfu
fu! csv#DoAutoCommands() "{{{3 fu! csv#DoAutoCommands() "{{{3
" Highlight column, on which the cursor is " Highlight column, on which the cursor is
if exists("g:csv_highlight_column") && g:csv_highlight_column =~? 'y' if exists("g:csv_highlight_column") && g:csv_highlight_column =~? 'y'
@@ -233,12 +242,7 @@ fu! csv#DoAutoCommands() "{{{3
" Set highlighting for column, on which the cursor is currently " Set highlighting for column, on which the cursor is currently
HiColumn HiColumn
else else
exe "aug CSV_HI".bufnr('') call csv#RemoveAutoHighlight()
exe "au! CursorMoved <buffer=".bufnr('').">"
aug end
exe "aug! CSV_HI".bufnr('')
" Remove any existing highlighting
HiColumn!
endif endif
" undo autocommand: " undo autocommand:
let b:undo_ftplugin .= '| exe "sil! au! CSV_HI'.bufnr('').' CursorMoved <buffer> "' let b:undo_ftplugin .= '| exe "sil! au! CSV_HI'.bufnr('').' CursorMoved <buffer> "'
@@ -539,7 +543,7 @@ fu! csv#WColumn(...) "{{{3
let temp=getpos('.')[2] let temp=getpos('.')[2]
let j=1 let j=1
let ret = 1 let ret = 1
for i in sort(b:csv_fixed_width_cols, s:csv_numeric_sort ? 'n' : 'csv#CSVSortValues') for i in sort(b:csv_fixed_width_cols, s:csv_numeric_sort ? 'N' : 'csv#CSVSortValues')
if temp >= i if temp >= i
let ret = j let ret = j
endif endif
@@ -549,6 +553,9 @@ fu! csv#WColumn(...) "{{{3
call setpos('.',_cur) call setpos('.',_cur)
return ret return ret
endfu endfu
fu! csv#ValidComment() "{{{3
return b:csv_cmt != ['', ''] && !empty(b:csv_cmt[0])
endfu
fu! csv#MaxColumns(...) "{{{3 fu! csv#MaxColumns(...) "{{{3
let this_col = exists("a:1") let this_col = exists("a:1")
"return maximum number of columns in first 10 lines "return maximum number of columns in first 10 lines
@@ -561,8 +568,10 @@ fu! csv#MaxColumns(...) "{{{3
endif endif
" Filter comments out " Filter comments out
if csv#ValidComment()
let pat = '^\s*\V'. escape(b:csv_cmt[0], '\\') let pat = '^\s*\V'. escape(b:csv_cmt[0], '\\')
call filter(l, 'v:val !~ pat') call filter(l, 'v:val !~ pat')
endif
if !empty(l) || this_col if !empty(l) || this_col
break break
else else
@@ -606,8 +615,10 @@ fu! csv#ColWidth(colnr, row, silent) "{{{3
endif endif
endif endif
let b:csv_list=getline(skipfirst+1,last) let b:csv_list=getline(skipfirst+1,last)
if csv#ValidComment()
let pat = '^\s*\V'. escape(b:csv_cmt[0], '\\') let pat = '^\s*\V'. escape(b:csv_cmt[0], '\\')
call filter(b:csv_list, 'v:val !~ pat') call filter(b:csv_list, 'v:val !~ pat')
endif
call filter(b:csv_list, '!empty(v:val)') call filter(b:csv_list, '!empty(v:val)')
call map(b:csv_list, 'split(v:val, b:col.''\zs'')') call map(b:csv_list, 'split(v:val, b:col.''\zs'')')
endif endif
@@ -898,7 +909,7 @@ fu! csv#Columnize(field) "{{{3
return result return result
else else
" right align " right align
return printf("%*S", width+1 , a:field) return printf("%*S", width , a:field)
endif endif
endfun endfun
fu! csv#GetColPat(colnr, zs_flag) "{{{3 fu! csv#GetColPat(colnr, zs_flag) "{{{3
@@ -912,15 +923,15 @@ fu! csv#GetColPat(colnr, zs_flag) "{{{3
let pat='\%' . b:csv_fixed_width_cols[-1] . 'v.*' let pat='\%' . b:csv_fixed_width_cols[-1] . 'v.*'
else else
let pat='\%' . b:csv_fixed_width_cols[(a:colnr - 1)] . let pat='\%' . b:csv_fixed_width_cols[(a:colnr - 1)] .
\ 'c.\{-}\%' . b:csv_fixed_width_cols[a:colnr] . 'v' \ 'c.*\%<' . (b:csv_fixed_width_cols[a:colnr] + 1) . 'v'
endif endif
endif endif
elseif !exists("b:csv_fixed_width_cols") elseif !exists("b:csv_fixed_width_cols")
let pat=b:col let pat=b:col
else else
let pat='\%' . b:csv_fixed_width_cols[0] . 'v.\{-}' . let pat='\%' . b:csv_fixed_width_cols[0] . 'v.*' .
\ (len(b:csv_fixed_width_cols) > 1 ? \ (len(b:csv_fixed_width_cols) > 1 ?
\ '\%' . b:csv_fixed_width_cols[1] . 'v' : \ '\%<' . (b:csv_fixed_width_cols[1] + 1) . 'v' :
\ '') \ '')
endif endif
return pat . (a:zs_flag ? '\zs' : '') return pat . (a:zs_flag ? '\zs' : '')
@@ -1115,7 +1126,12 @@ fu! csv#MoveCol(forward, line, ...) "{{{3
let pat=csv#GetColPat(1, 0) let pat=csv#GetColPat(1, 0)
else else
" Move backwards " Move backwards
if cpos == 1 && (exists("a:1") && a:1)
" H move to previous line
let pat=csv#GetColPat(maxcol, 0) let pat=csv#GetColPat(maxcol, 0)
else
let pat='\%1v'
endif
endif endif
endif endif
else else
@@ -1149,10 +1165,14 @@ fu! csv#MoveCol(forward, line, ...) "{{{3
" of a field. " of a field.
let epos = getpos('.') let epos = getpos('.')
if getline('.')[col('.')-1] == ' ' if getline('.')[col('.')-1] == ' '
if !exists("b:csv_fixed_width_cols")
call search('\S', 'W', line('.')) call search('\S', 'W', line('.'))
if getpos('.')[2] > spos if getpos('.')[2] > spos
call setpos('.', epos) call setpos('.', epos)
endif endif
elseif cpos > b:csv_fixed_width_cols[colnr]
call search('\%'. b:csv_fixed_width_cols[colnr]. 'v', 'W', line('.'))
endif
endif endif
endif endif
else else
@@ -1246,8 +1266,10 @@ fu! csv#CopyCol(reg, col, cnt) "{{{3
endfor endfor
endif endif
" Filter comments out " Filter comments out
if csv#ValidComment()
let pat = '^\s*\V'. escape(b:csv_cmt[0], '\\') let pat = '^\s*\V'. escape(b:csv_cmt[0], '\\')
call filter(a, 'v:val !~ pat') call filter(a, 'v:val !~ pat')
endif
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:cnt_cols]') call map(a, 'split(v:val, ''^'' . b:col . ''\zs'')[col-1:cnt_cols]')
@@ -1288,10 +1310,9 @@ fu! csv#MoveColumn(start, stop, ...) range "{{{3
endif endif
" Swap line by line, instead of reading the whole range into memory " Swap line by line, instead of reading the whole range into memory
for i in range(a:start, a:stop) for i in range(a:start, a:stop)
let content = getline(i) let content = getline(i)
if content =~ '^\s*\V'. escape(b:csv_cmt[0], '\\') if b:csv_cmt != ['',''] && content =~ '^\s*\V'. escape(b:csv_cmt[0], '\\')
" skip comments " skip comments
continue continue
endif endif
@@ -1359,13 +1380,9 @@ fu! csv#DupColumn(start, stop, ...) range "{{{3
" skipping comment lines (we could do it with a single :s statement, " skipping comment lines (we could do it with a single :s statement,
" but that would fail for the first and last column. " but that would fail for the first and last column.
let commentpat = '\%(\%>'.(a:start-1).'l\V'.
\ escape(b:csv_cmt[0], '\\').'\m\)'. '\&\%(\%<'.
\ (a:stop+1). 'l\V'. escape(b:csv_cmt[0], '\\'). '\m\)'
for i in range(a:start, a:stop) for i in range(a:start, a:stop)
let content = getline(i) let content = getline(i)
if content =~ '^\s*\V'. escape(b:csv_cmt[0], '\\') if csv#ValidComment() && content =~ '^\s*\V'. escape(b:csv_cmt[0], '\\')
" skip comments " skip comments
continue continue
endif endif
@@ -1429,10 +1446,12 @@ fu! csv#AddColumn(start, stop, ...) range "{{{3
" skipping comment lines (we could do it with a single :s statement, " skipping comment lines (we could do it with a single :s statement,
" but that would fail for the first and last column. " but that would fail for the first and last column.
if b:csv_cmt != ['','']
let commentpat = '\%(\%>'.(a:start-1).'l\V'. let commentpat = '\%(\%>'.(a:start-1).'l\V'.
\ escape(b:csv_cmt[0], '\\').'\m\)'. '\&\%(\%<'. \ escape(b:csv_cmt[0], '\\').'\m\)'. '\&\%(\%<'.
\ (a:stop+1). 'l\V'. escape(b:csv_cmt[0], '\\'). '\m\)' \ (a:stop+1). 'l\V'. escape(b:csv_cmt[0], '\\'). '\m\)'
if search(commentpat) endif
if !empty(commentpat) && search(commentpat)
for i in range(a:start, a:stop) for i in range(a:start, a:stop)
let content = getline(i) let content = getline(i)
if content =~ '^\s*\V'. escape(b:csv_cmt[0], '\\') if content =~ '^\s*\V'. escape(b:csv_cmt[0], '\\')
@@ -1611,7 +1630,7 @@ fu! csv#MaxColumn(list) "{{{3
endtry endtry
call add(result, str2float(nr)) call add(result, str2float(nr))
endfor endfor
let result = sort(result, s:csv_numeric_sort ? 'n' : 'csv#CSVSortValues') let result = sort(result, s:csv_numeric_sort ? 'N' : 'csv#CSVSortValues')
let ind = len(result) > 9 ? 9 : len(result) let ind = len(result) > 9 ? 9 : len(result)
if has_key(get(s:, 'additional', {}), 'distinct') && s:additional['distinct'] if has_key(get(s:, 'additional', {}), 'distinct') && s:additional['distinct']
if exists("*uniq") if exists("*uniq")
@@ -1672,7 +1691,7 @@ fu! csv#DoForEachColumn(start, stop, bang) range "{{{3
endif endif
let t = g:csv_convert let t = g:csv_convert
let line = getline(item) let line = getline(item)
if line =~ '^\s*\V'. escape(b:csv_cmt[0], '\\') if b:csv_cmt!=['',''] && line =~ '^\s*\V'. escape(b:csv_cmt[0], '\\')
" Filter comments out " Filter comments out
call add(result, line) call add(result, line)
continue continue
@@ -1736,7 +1755,7 @@ fu! csv#FoldValue(lnum, filter) "{{{3
for item in values(a:filter) for item in values(a:filter)
" always fold comments away " always fold comments away
let content = getline(a:lnum) let content = getline(a:lnum)
if content =~ '^\s*\V'. escape(b:csv_cmt[0], '\\') if b:csv_cmt != ['',''] && content =~ '^\s*\V'. escape(b:csv_cmt[0], '\\')
return 1 return 1
elseif eval('content' . (item.match ? '!~' : '=~') . 'item.pat') elseif eval('content' . (item.match ? '!~' : '=~') . 'item.pat')
let result += 1 let result += 1
@@ -1898,7 +1917,7 @@ fu! csv#GetColumn(line, col, strip) "{{{3
" Return Column content at a:line, a:col " Return Column content at a:line, a:col
let a=getline(a:line) let a=getline(a:line)
" Filter comments out " Filter comments out
if a =~ '^\s*\V'. escape(b:csv_cmt[0], '\\') if csv#ValidComment() && a =~ '^\s*\V'. escape(b:csv_cmt[0], '\\')
return '' return ''
endif endif
@@ -1979,7 +1998,7 @@ fu! csv#AnalyzeColumn(...) "{{{3
let res[item]+=1 let res[item]+=1
endfor endfor
let max_items = reverse(sort(values(res), s:csv_numeric_sort ? 'n' : 'csv#CSVSortValues')) let max_items = reverse(sort(values(res), s:csv_numeric_sort ? 'N' : 'csv#CSVSortValues'))
" What about the minimum 5 items? " What about the minimum 5 items?
let count_items = keys(res) let count_items = keys(res)
if len(max_items) > topn if len(max_items) > topn
@@ -2057,6 +2076,7 @@ fu! csv#InitCSVFixedWidth() "{{{3
endif endif
" Turn off syntax highlighting " Turn off syntax highlighting
syn clear syn clear
call csv#RemoveAutoHighlight()
let max_line = line('$') > 10 ? 10 : line('$') let max_line = line('$') > 10 ? 10 : line('$')
let t = getline(1, max_line) let t = getline(1, max_line)
let max_len = max(map(t, 'len(split(v:val, ''\zs''))')) let max_len = max(map(t, 'len(split(v:val, ''\zs''))'))
@@ -2118,8 +2138,8 @@ fu! csv#InitCSVFixedWidth() "{{{3
endw endw
let b:csv_fixed_width_cols=[] let b:csv_fixed_width_cols=[]
let tcc=0 let tcc=0
let b:csv_fixed_width_cols = sort(keys(Dict), s:csv_numeric_sort ? 'n' : 'csv#CSVSortValues') let b:csv_fixed_width_cols = sort(keys(Dict), s:csv_numeric_sort ? 'N' : 'csv#CSVSortValues')
let b:csv_fixed_width = join(sort(keys(Dict), s:csv_numeric_sort ? 'n' : 'csv#CSVSortValues'), ',') let b:csv_fixed_width = join(sort(keys(Dict), s:csv_numeric_sort ? 'N' : 'csv#CSVSortValues'), ',')
call csv#Init(1, line('$')) call csv#Init(1, line('$'))
let &l:cc=_cc let &l:cc=_cc
@@ -2200,7 +2220,7 @@ fu! csv#CSVMappings() "{{{3
call csv#Map('nnoremap', '<C-Right>', ':<C-U>call csv#MoveCol(1, line("."))<CR>') call csv#Map('nnoremap', '<C-Right>', ':<C-U>call csv#MoveCol(1, line("."))<CR>')
call csv#Map('nnoremap', 'L', ':<C-U>call csv#MoveCol(1, line("."))<CR>') call csv#Map('nnoremap', 'L', ':<C-U>call csv#MoveCol(1, line("."))<CR>')
try try
if g:csv_bind_B == 1 if get(g:, 'csv_bind_B', 0) == 1
call csv#Map('nnoremap', 'B', ':<C-U>call csv#MoveCol(-1, line("."))<CR>') call csv#Map('nnoremap', 'B', ':<C-U>call csv#MoveCol(-1, line("."))<CR>')
else else
call csv#Map('nnoremap', 'E', ':<C-U>call csv#MoveCol(-1, line("."))<CR>') call csv#Map('nnoremap', 'E', ':<C-U>call csv#MoveCol(-1, line("."))<CR>')
@@ -2431,7 +2451,7 @@ fu! csv#NewDelimiter(newdelimiter, firstl, lastl) "{{{3
let line=a:firstl let line=a:firstl
while line <= a:lastl while line <= a:lastl
" Don't change delimiter for comments " Don't change delimiter for comments
if getline(line) =~ '^\s*\V'. escape(b:csv_cmt[0], '\\') if csv#ValidComment() && getline(line) =~ '^\s*\V'. escape(b:csv_cmt[0], '\\')
let line+=1 let line+=1
continue continue
endif endif
@@ -2476,7 +2496,7 @@ fu! csv#DuplicateRows(columnlist) "{{{3
let i = 1 let i = 1
let content = getline(line) let content = getline(line)
" Skip comments " Skip comments
if content =~ '^\s*\V'. escape(b:csv_cmt[0], '\\') if csv#ValidComment() && content =~ '^\s*\V'. escape(b:csv_cmt[0], '\\')
continue continue
endif endif
let cols = split(content, b:col. '\zs') let cols = split(content, b:col. '\zs')
@@ -2532,7 +2552,11 @@ fu! csv#Transpose(line1, line2) "{{{3
let TrailingDelim = getline(1) =~ b:delimiter.'$' let TrailingDelim = getline(1) =~ b:delimiter.'$'
endif endif
if b:csv_cmt != ['','']
let pat = '^\s*\V'. escape(b:csv_cmt[0], '\\') let pat = '^\s*\V'. escape(b:csv_cmt[0], '\\')
else
let pat = ''
endif
try try
let columns = csv#MaxColumns(a:line1) let columns = csv#MaxColumns(a:line1)
@@ -2544,7 +2568,7 @@ fu! csv#Transpose(line1, line2) "{{{3
let matrix = [] let matrix = []
for line in range(a:line1, a:line2) for line in range(a:line1, a:line2)
" Filter comments out " Filter comments out
if getline(line) =~ pat if !empty(pat) && getline(line) =~ pat
continue continue
endif endif
let r = [] let r = []
@@ -3033,11 +3057,13 @@ fu! csv#SumCSVRow(line, nr) "{{{3
endif endif
let line=getline(ln) let line=getline(ln)
" Filter comments out " Filter comments out
if csv#ValidComment()
let pat = '^\s*\V'. escape(b:csv_cmt[0], '\\') let pat = '^\s*\V'. escape(b:csv_cmt[0], '\\')
if line =~ pat if line =~ pat
call csv#Warn("Invalid count specified") call csv#Warn("Invalid count specified")
return return
endif endif
endif
let func='csv#SumColumn' let func='csv#SumColumn'
let cells=split(line, b:col.'\zs') let cells=split(line, b:col.'\zs')
let cells=csv#GetCells(cells) let cells=csv#GetCells(cells)

View File

@@ -153,7 +153,7 @@ let s:config_keys_camel =
\ {'key': 'EnableAnalyzers', 'default': 0}, \ {'key': 'EnableAnalyzers', 'default': 0},
\ {'key': 'AnalyzersPath'}, \ {'key': 'AnalyzersPath'},
\ {'key': 'DisableInMemoryProjectReferences', 'default': 0}, \ {'key': 'DisableInMemoryProjectReferences', 'default': 0},
\ {'key': 'LineLens', 'default': {'enabled': 'replaceCodeLens', 'prefix': '//'}}, \ {'key': 'LineLens', 'default': {'enabled': 'never', 'prefix': ''}},
\ {'key': 'UseSdkScripts', 'default': 1}, \ {'key': 'UseSdkScripts', 'default': 1},
\ {'key': 'dotNetRoot'}, \ {'key': 'dotNetRoot'},
\ {'key': 'fsiExtraParameters', 'default': []}, \ {'key': 'fsiExtraParameters', 'default': []},
@@ -327,7 +327,13 @@ let g:fsharp#languageserver_command =
\ '--background-service-enabled' \ '--background-service-enabled'
\ ] \ ]
function! s:download(branch) function! s:update_win()
echom "[FSAC] Downloading FSAC. This may take a while..."
let script = s:script_root_dir . "install.ps1"
call system('powershell -ExecutionPolicy Unrestricted ' . script . " update")
endfunction
function! s:update_unix()
echom "[FSAC] Downloading FSAC. This may take a while..." echom "[FSAC] Downloading FSAC. This may take a while..."
let zip = s:script_root_dir . "fsac.zip" let zip = s:script_root_dir . "fsac.zip"
call system( call system(
@@ -337,19 +343,18 @@ function! s:download(branch)
if v:shell_error == 0 if v:shell_error == 0
call system('unzip -o -d ' . s:script_root_dir . "/fsac " . zip) call system('unzip -o -d ' . s:script_root_dir . "/fsac " . zip)
call system('find ' . s:script_root_dir . '/fsac' . ' -type f -exec chmod 777 \{\} \;') call system('find ' . s:script_root_dir . '/fsac' . ' -type f -exec chmod 777 \{\} \;')
echom "[FSAC] Updated FsAutoComplete to version " . a:branch . "" echom "[FSAC] Updated FsAutoComplete"
else else
echom "[FSAC] Failed to update FsAutoComplete" echom "[FSAC] Failed to update FsAutoComplete"
endif endif
endfunction endfunction
function! fsharp#updateFSAC(...) function! fsharp#updateFSAC(...)
if len(a:000) == 0 if has('win32') && !has('win32unix')
let branch = "master" call s:update_win()
else else
let branch = a:000[0] call s:update_unix()
endif endif
call s:download(branch)
endfunction endfunction
let s:fsi_buffer = -1 let s:fsi_buffer = -1

20
autoload/hcl.vim Normal file
View File

@@ -0,0 +1,20 @@
if polyglot#init#is_disabled(expand('<sfile>:p'), 'terraform', 'autoload/hcl.vim')
finish
endif
let s:cpo_save = &cpoptions
set cpoptions&vim
function! hcl#align() abort
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
let &cpoptions = s:cpo_save
unlet s:cpo_save

View File

@@ -1944,6 +1944,7 @@ endif
if !has_key(g:polyglot_is_disabled, 'terraform') if !has_key(g:polyglot_is_disabled, 'terraform')
au BufNewFile,BufRead *.tf,*.tfvars setf terraform au BufNewFile,BufRead *.tf,*.tfvars setf terraform
au BufNewFile,BufRead *.hcl,*.nomad,*.workflow,{.,}terraformrc,Appfile,terraform.rc setf hcl
endif endif
if !has_key(g:polyglot_is_disabled, 'tf') if !has_key(g:polyglot_is_disabled, 'tf')
@@ -2309,10 +2310,6 @@ if !has_key(g:polyglot_is_disabled, 'hive')
au BufNewFile,BufRead *.hql,*.q,*.ql setf hive au BufNewFile,BufRead *.hql,*.q,*.ql setf hive
endif endif
if !has_key(g:polyglot_is_disabled, 'hcl')
au BufNewFile,BufRead *.hcl,*.nomad,*.workflow,Appfile setf hcl
endif
if !has_key(g:polyglot_is_disabled, 'haxe') if !has_key(g:polyglot_is_disabled, 'haxe')
au BufNewFile,BufRead *.hx,*.hxsl setf haxe au BufNewFile,BufRead *.hx,*.hxsl setf haxe
au BufNewFile,BufRead *.hxml setf hxml au BufNewFile,BufRead *.hxml setf hxml

View File

@@ -217,7 +217,7 @@ let s:globs = {
\ 'hastepreproc': '*.htpp', \ 'hastepreproc': '*.htpp',
\ 'haxe': '*.hx,*.hxsl', \ 'haxe': '*.hx,*.hxsl',
\ 'hb': '*.hb', \ 'hb': '*.hb',
\ 'hcl': '*.hcl,*.nomad,*.workflow,Appfile', \ 'hcl': '*.hcl,*.nomad,*.workflow,Appfile,.terraformrc,terraform.rc',
\ 'helm': '', \ 'helm': '',
\ 'help': '', \ 'help': '',
\ 'hercules': '*.vc,*.ev,*.sum,*.errsum', \ 'hercules': '*.vc,*.ev,*.sum,*.errsum',

View File

@@ -35,17 +35,6 @@ function! terraform#fmt() abort
call winrestview(curw) call winrestview(curw)
endfunction endfunction
function! terraform#align() abort
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(ArgLead, CmdLine, CursorPos) abort function! terraform#commands(ArgLead, CmdLine, CursorPos) abort
let commands = [ let commands = [
\ 'init', \ 'init',

View File

@@ -1,7 +1,7 @@
" Vim support file to detect file types " Vim support file to detect file types
" "
" Maintainer: Bram Moolenaar <Bram@vim.org> " Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2021 Jun 13 " Last Change: 2021 Jul 03
" Listen very carefully, I will say this only once " Listen very carefully, I will say this only once
if exists("did_load_filetypes") if exists("did_load_filetypes")
@@ -650,6 +650,9 @@ au BufNewFile,BufRead *.mo,*.gdmo setf gdmo
" Gedcom " Gedcom
au BufNewFile,BufRead *.ged,lltxxxxx.txt setf gedcom au BufNewFile,BufRead *.ged,lltxxxxx.txt setf gedcom
" Gemtext
au BufNewFile,BufRead *.gmi,*.gemini setf gemtext
" Gift (Moodle) " Gift (Moodle)
autocmd BufRead,BufNewFile *.gift setf gift autocmd BufRead,BufNewFile *.gift setf gift
@@ -868,6 +871,9 @@ au BufNewFile,BufRead *.json-patch setf json
" Jupyter Notebook is also json " Jupyter Notebook is also json
au BufNewFile,BufRead *.ipynb setf json au BufNewFile,BufRead *.ipynb setf json
" JSONC
au BufNewFile,BufRead *.jsonc setf jsonc
" Kixtart " Kixtart
au BufNewFile,BufRead *.kix setf kix au BufNewFile,BufRead *.kix setf kix

View File

@@ -1,41 +1,43 @@
if polyglot#init#is_disabled(expand('<sfile>:p'), 'hcl', 'ftplugin/hcl.vim') if polyglot#init#is_disabled(expand('<sfile>:p'), 'terraform', 'ftplugin/hcl.vim')
finish finish
endif endif
" File: ftplugin/hcl.vim " hcl.vim - basic vim/hcl integration
" Author: BABAROT <b4b4r07@gmail.com> " Maintainer: HashiVim <https://github.com/hashivim>
" Description: FileType Plugin for HCL
" Last Change: Nob 05, 2015
if exists('b:did_ftplugin') if exists('b:did_ftplugin') || v:version < 700 || &compatible
finish finish
endif endif
let b:did_ftplugin = 1 let b:did_ftplugin = 1
let s:save_cpo = &cpo let s:cpo_save = &cpoptions
set cpo&vim set cpoptions&vim
setlocal commentstring=#\ %s " 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<'
" Add NERDCommenter delimiters if !has('patch-7.4.1142')
" Include hyphens as keyword characters so that a keyword appearing as
let s:delims = { 'left': '#' } " part of a longer name doesn't get partially highlighted.
if exists('g:NERDDelimiterMap') setlocal iskeyword+=-
if !has_key(g:NERDDelimiterMap, 'hcl') let b:undo_ftplugin .= ' iskeyword<'
let g:NERDDelimiterMap.hcl = s:delims
endif
elseif exists('g:NERDCustomDelimiters')
if !has_key(g:NERDCustomDelimiters, 'hcl')
let g:NERDCustomDelimiters.hcl = s:delims
endif
else
let g:NERDCustomDelimiters = { 'hcl': s:delims }
endif endif
unlet s:delims
let b:undo_ftplugin = "" if get(g:, 'hcl_fold_sections', 0)
setlocal foldmethod=syntax
let b:undo_ftplugin .= ' foldmethod<'
endif
let &cpo = s:save_cpo " Set the commentstring
unlet s:save_cpo setlocal commentstring=#%s
let b:undo_ftplugin .= ' commentstring<'
" vim: set et sw=4 ts=4: if get(g:, 'hcl_align', 0) && exists(':Tabularize')
inoremap <buffer> <silent> = =<Esc>:call hcl#align()<CR>a
let b:undo_ftplugin .= '|iunmap <buffer> ='
endif
let &cpoptions = s:cpo_save
unlet s:cpo_save

View File

@@ -8,40 +8,31 @@ endif
if exists('b:did_ftplugin') || v:version < 700 || &compatible if exists('b:did_ftplugin') || v:version < 700 || &compatible
finish finish
endif endif
let b:did_ftplugin = 1
" Have only kept the terraform versions of these options for backwards
" compatibility.
if get(g:, 'terraform_fold_sections', 0)
let s:hcl_fold_sections_save = get(g:, 'hcl_fold_sections', 0)
let g:hcl_fold_sections=1
end
if get(g:, 'terraform_align', 0)
let s:hcl_align_save = get(g:, 'hcl_align', 0)
let g:hcl_align=1
end
runtime! ftplugin/hcl.vim
if exists('s:hcl_align_save')
let g:hcl_align = s:hcl_align_save
end
if exists('s:hcl_fold_sections_save')
let g:hcl_fold_sections = s:hcl_fold_sections_save
end
let s:cpo_save = &cpoptions let s:cpo_save = &cpoptions
set cpoptions&vim set cpoptions&vim
" 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 !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 get(g:, 'terraform_fold_sections', 0)
setlocal foldmethod=syntax
let b:undo_ftplugin .= ' foldmethod<'
endif
" Set the commentstring
setlocal commentstring=#%s
let b:undo_ftplugin .= ' commentstring<'
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
if !exists('g:terraform_binary_path') if !exists('g:terraform_binary_path')
let g:terraform_binary_path='terraform' let g:terraform_binary_path='terraform'
endif endif

View File

@@ -1,15 +1,68 @@
if polyglot#init#is_disabled(expand('<sfile>:p'), 'hcl', 'indent/hcl.vim') if polyglot#init#is_disabled(expand('<sfile>:p'), 'terraform', 'indent/hcl.vim')
finish finish
endif endif
" Only load this file if no other indent file was loaded
if exists('b:did_indent') if exists('b:did_indent')
finish finish
endif endif
let b:did_indent = 1 let b:did_indent = 1
" cindent seems to work adequately with HCL's brace-y syntax let s:cpo_save = &cpoptions
setlocal cindent set cpoptions&vim
" don't de-indent comments (cindent treats them like preprocessor directives) setlocal nolisp
setlocal cinkeys-=0# setlocal autoindent shiftwidth=2 tabstop=2 softtabstop=2 expandtab
setlocal indentexpr=HclIndent(v:lnum)
setlocal indentkeys+=<:>,0=},0=)
let b:undo_indent = 'setlocal lisp< autoindent< shiftwidth< tabstop< softtabstop<'
\ . ' expandtab< indentexpr< indentkeys<'
let &cpoptions = s:cpo_save
unlet s:cpo_save
if exists('*HclIndent')
finish
endif
let s:cpo_save = &cpoptions
set cpoptions&vim
function! HclIndent(lnum)
" Beginning of the file should have no indent
if a:lnum == 0
return 0
endif
" 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)
" 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
" If the current line ends a block, decrease the indent level.
let thisline = getline(a:lnum)
if thisline =~# '^\s*[\)}\]]'
let thisindent -= &shiftwidth
endif
" If the previous line starts a block comment /*, increase by one
if prevline =~# '/\*'
let thisindent += 1
endif
" If the previous line ends a block comment */, decrease by one
if prevline =~# '\*/'
let thisindent -= 1
endif
return thisindent
endfunction
let &cpoptions = s:cpo_save
unlet s:cpo_save

View File

@@ -6,7 +6,7 @@ endif
" Language: Pascal " Language: Pascal
" Maintainer: Neil Carter <n.carter@swansea.ac.uk> " Maintainer: Neil Carter <n.carter@swansea.ac.uk>
" Created: 2004 Jul 13 " Created: 2004 Jul 13
" Last Change: 2017 Jun 13 " Last Change: 2021 Jul 01
" "
" This is version 2.0, a complete rewrite. " This is version 2.0, a complete rewrite.
" "
@@ -24,6 +24,8 @@ setlocal indentkeys+==end;,==const,==type,==var,==begin,==repeat,==until,==for
setlocal indentkeys+==program,==function,==procedure,==object,==private setlocal indentkeys+==program,==function,==procedure,==object,==private
setlocal indentkeys+==record,==if,==else,==case setlocal indentkeys+==record,==if,==else,==case
let b:undo_indent = "setl indentkeys< indentexpr<"
if exists("*GetPascalIndent") if exists("*GetPascalIndent")
finish finish
endif endif

View File

@@ -6,63 +6,4 @@ endif
if exists('b:did_indent') if exists('b:did_indent')
finish finish
endif endif
let b:did_indent = 1 runtime! indent/hcl.vim
let s:cpo_save = &cpoptions
set cpoptions&vim
setlocal nolisp
setlocal autoindent shiftwidth=2 tabstop=2 softtabstop=2 expandtab
setlocal indentexpr=TerraformIndent(v:lnum)
setlocal indentkeys+=<:>,0=},0=)
let b:undo_indent = 'setlocal lisp< autoindent< shiftwidth< tabstop< softtabstop<'
\ . ' expandtab< indentexpr< indentkeys<'
let &cpoptions = s:cpo_save
unlet s:cpo_save
if exists('*TerraformIndent')
finish
endif
let s:cpo_save = &cpoptions
set cpoptions&vim
function! TerraformIndent(lnum)
" Beginning of the file should have no indent
if a:lnum == 0
return 0
endif
" 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)
" 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
" If the current line ends a block, decrease the indent level.
let thisline = getline(a:lnum)
if thisline =~# '^\s*[\)}\]]'
let thisindent -= &shiftwidth
endif
" If the previous line starts a block comment /*, increase by one
if prevline =~# '/\*'
let thisindent += 1
endif
" If the previous line ends a block comment */, decrease by one
if prevline =~# '\*/'
let thisindent -= 1
endif
return thisindent
endfunction
let &cpoptions = s:cpo_save
unlet s:cpo_save

View File

@@ -787,18 +787,6 @@ ignored_dirs:
- autoload - autoload
- compiler - compiler
--- ---
name: hcl
remote: b4b4r07/vim-hcl
filetypes:
- name: hcl
linguist: HCL
extra_filenames:
- Appfile
ignored_extensions:
# handled by vim-terraform
- tf
- tfvars
---
name: hive name: hive
remote: zebradil/hive.vim remote: zebradil/hive.vim
filetypes: filetypes:
@@ -1632,6 +1620,16 @@ filetypes:
extensions: extensions:
- tf - tf
- tfvars - tfvars
- name: hcl
linguist: HCL
extra_filenames:
- Appfile
- .terraformrc
- terraform.rc
ignored_extensions:
# handled by vim-terraform
- tf
- tfvars
--- ---
name: textile name: textile
remote: timcharper/textile.vim remote: timcharper/textile.vim

View File

@@ -297,7 +297,7 @@ syn region eighthComment start="\zs\\" end="$" contains=eighthTodo
" Define the default highlighting. " Define the default highlighting.
if !exists("did_eighth_syntax_inits") if !exists("did_eighth_syntax_inits")
let did_eighth_syntax_inits=1 let did_eighth_syntax_inits=1
" The default methods for highlighting. Can be overriden later. " The default methods for highlighting. Can be overridden later.
hi def link eighthTodo Todo hi def link eighthTodo Todo
hi def link eighthOperators Operator hi def link eighthOperators Operator
hi def link eighthMath Number hi def link eighthMath Number

View File

@@ -55,6 +55,12 @@ fu! <sid>CheckSaneSearchPattern() "{{{3
let b:csv_cmt = [g:csv_comment] let b:csv_cmt = [g:csv_comment]
endif endif
" Make sure, b:csv_cmt always has 2 items
" can happen with e.g. :set cms="#%s
if b:csv_cmt == []
let b:csv_cmt = ['', '']
endif
" Second: Check for sane defaults for the column pattern " Second: Check for sane defaults for the column pattern
" Not necessary to check for fixed width columns " Not necessary to check for fixed width columns
@@ -131,9 +137,11 @@ fu! <sid>DoHighlight() "{{{3
endfor endfor
endif endif
" Comment regions " Comment regions
if !empty(s:cmts)
exe 'syn match CSVComment /'. s:cmts. '.*'. exe 'syn match CSVComment /'. s:cmts. '.*'.
\ (!empty(s:cmte) ? '\%('. s:cmte. '\)\?' \ (!empty(s:cmte) ? '\%('. s:cmte. '\)\?'
\: ''). '/' \: ''). '/'
endif
hi def link CSVComment Comment hi def link CSVComment Comment
endfun endfun

View File

@@ -33,7 +33,7 @@ syn match gitDiffAdded "{+[^}]*+}" contained containedin=gitDiff
syn match gitDiffRemoved "^ \+-.*" contained containedin=gitDiffMerge syn match gitDiffRemoved "^ \+-.*" contained containedin=gitDiffMerge
syn match gitDiffRemoved "\[-[^]]*-\]" contained containedin=gitDiff syn match gitDiffRemoved "\[-[^]]*-\]" contained containedin=gitDiff
syn match gitKeyword /^\%(object\|type\|tag\|commit\|tree\|parent\|encoding\|summary\|boundary\|filename\|previous\)\>/ contained containedin=gitHead nextgroup=gitHash,gitType skipwhite contains=@NoSpell syn match gitKeyword /^\%(object\|type\|tag\|commit\|tree\|parent\|encoding\|gpgsig\|summary\|boundary\|filename\|previous\)\>/ contained containedin=gitHead nextgroup=gitHash,gitType skipwhite contains=@NoSpell
syn match gitKeyword /^\%(tag\>\|ref:\)/ contained containedin=gitHead nextgroup=gitReference skipwhite contains=@NoSpell syn match gitKeyword /^\%(tag\>\|ref:\)/ contained containedin=gitHead nextgroup=gitReference skipwhite contains=@NoSpell
syn match gitKeyword /^Merge:/ contained containedin=gitHead nextgroup=gitHashAbbrev skipwhite contains=@NoSpell syn match gitKeyword /^Merge:/ contained containedin=gitHead nextgroup=gitHashAbbrev skipwhite contains=@NoSpell
syn match gitMode /^\d\{6\}\>/ contained containedin=gitHead nextgroup=gitType,gitHash skipwhite syn match gitMode /^\d\{6\}\>/ contained containedin=gitHead nextgroup=gitType,gitHash skipwhite

View File

@@ -14,6 +14,7 @@ endif
syn case match syn case match
syn sync minlines=50 syn sync minlines=50
syn sync linebreaks=1
if has("spell") if has("spell")
syn spell toplevel syn spell toplevel

View File

@@ -171,7 +171,7 @@ syn match goDecimalError "\<-\=\(_\(\d\+_*\)\+\|\([1-9]\d*_*\)\+__\(\
syn match goHexadecimalInt "\<-\=0[xX]_\?\(\x\+_\?\)\+\>" syn match goHexadecimalInt "\<-\=0[xX]_\?\(\x\+_\?\)\+\>"
syn match goHexadecimalError "\<-\=0[xX]_\?\(\x\+_\?\)*\(\([^ \t0-9A-Fa-f_)]\|__\)\S*\|_\)\>" syn match goHexadecimalError "\<-\=0[xX]_\?\(\x\+_\?\)*\(\([^ \t0-9A-Fa-f_)]\|__\)\S*\|_\)\>"
syn match goOctalInt "\<-\=0[oO]\?_\?\(\o\+_\?\)\+\>" syn match goOctalInt "\<-\=0[oO]\?_\?\(\o\+_\?\)\+\>"
syn match goOctalError "\<-\=0[0-7oO_]*\(\([^ \t0-7oOxX_/)\]\}\:]\|[oO]\{2,\}\|__\)\S*\|_\|[oOxX]\)\>" syn match goOctalError "\<-\=0[0-7oO_]*\(\([^ \t0-7oOxX_/)\]\}\:;]\|[oO]\{2,\}\|__\)\S*\|_\|[oOxX]\)\>"
syn match goBinaryInt "\<-\=0[bB]_\?\([01]\+_\?\)\+\>" syn match goBinaryInt "\<-\=0[bB]_\?\([01]\+_\?\)\+\>"
syn match goBinaryError "\<-\=0[bB]_\?[01_]*\([^ \t01_)]\S*\|__\S*\|_\)\>" syn match goBinaryError "\<-\=0[bB]_\?[01_]*\([^ \t01_)]\S*\|__\S*\|_\)\>"

View File

@@ -1,48 +1,76 @@
if polyglot#init#is_disabled(expand('<sfile>:p'), 'hcl', 'syntax/hcl.vim') if polyglot#init#is_disabled(expand('<sfile>:p'), 'terraform', 'syntax/hcl.vim')
finish finish
endif endif
" Forked from Larry Gilbert's syntax file
if exists("b:current_syntax") " github.com/L2G/vim-syntax-terraform
if exists('b:current_syntax')
finish finish
endif endif
syn match hclEqual '=' let s:cpo_save = &cpoptions
syn match hclSimpleString '"[^\"]*"' set cpoptions&vim
syn region hclComment display oneline start='\%\(^\|\s\)#' end='$'
syn region hclComment display oneline start='\%\(^\|\s\)//' end='$'
syn region hclInterpolation display oneline start='(' end=')' contains=hclInterpolation,hclSimpleString
syn region hclSmartString display oneline start='"' end='"\s*$' contains=hclInterpolation
syn keyword hclRootKeywords variable provider resource nextgroup=hclString,hclString skipwhite " Identifiers are made up of alphanumeric characters, underscores, and
syn keyword hclRootKeywords default nextgroup=hclEquals skipwhite " hyphens.
if has('patch-7.4.1142')
syn iskeyword a-z,A-Z,48-57,_,-
endif
syn case match
syn keyword hclAwsResourcesKeywords availability_zones desired_capacity force_delete health_check_grace_period health_check_type launch_configuration load_balancers max_size min_size name vpc_zone_identifier nextgroup=hclEquals,hclString skipwhite " A block is introduced by a type, some number of labels - which are either
syn keyword hclAwsResourcesKeywords allocated_storage availability_zone backup_retention_period backup_window db_subnet_group_name engine engine_version final_snapshot_identifier identifier instance_class iops maintenance_window multi_az name password port publicly_accessible security_group_names skip_final_snapshot username vpc_security_group_ids nextgroup=hclEquals,hclString skipwhite " strings or identifiers - and an opening curly brace. Match the type.
syn keyword hclAwsResourcesKeywords cidr description ingress name security_group_id security_group_name security_group_owner_id source_security_group_id nextgroup=hclEquals,hclString skipwhite syn match hclBlockType /^\s*\zs\K\k*\ze\s\+\(\("\K\k*"\|\K\k*\)\s\+\)*{/
syn keyword hclAwsResourcesKeywords description name subnet_ids nextgroup=hclEquals,hclString skipwhite
syn keyword hclAwsResourcesKeywords instance vpc nextgroup=hclEquals,hclString skipwhite
syn keyword hclAwsResourcesKeywords availability_zones health_check healthy_threshold instance_port instance_protocol instances internal interval lb_port lb_protocol listener name security_groups ssl_certificate_id subnets target timeout unhealthy_threshold nextgroup=hclEquals,hclString skipwhite
syn keyword hclAwsResourcesKeywords ami associate_public_ip_address availability_zone ebs_optimized iam_instance_profile instance_type key_name private_ip security_groups source_dest_check subnet_id tags user_data nextgroup=hclEquals,hclString skipwhite
syn keyword hclAwsResourcesKeywords vpc_id nextgroup=hclEquals,hclString skipwhite
syn keyword hclAwsResourcesKeywords iam_instance_profile image_id instance_type key_name name name_prefix security_groups user_data nextgroup=hclEquals,hclString skipwhite
syn keyword hclAwsResourcesKeywords name records ttl type zone_id nextgroup=hclEquals,hclString skipwhite
syn keyword hclAwsResourcesKeywords name nextgroup=hclEquals,hclString skipwhite
syn keyword hclAwsResourcesKeywords route_table_id subnet_id nextgroup=hclEquals,hclString skipwhite
syn keyword hclAwsResourcesKeywords cidr_block gateway_id instance_id route vpc_id nextgroup=hclEquals,hclString skipwhite
syn keyword hclAwsResourcesKeywords acl bucket nextgroup=hclEquals,hclString skipwhite
syn keyword hclAwsResourcesKeywords cidr_blocks description from_port ingress name owner_id protocol security_groups self tags to_port vpc_id nextgroup=hclEquals,hclString skipwhite
syn keyword hclAwsResourcesKeywords availability_zone- cidr_block map_public_ip_on_launch vpc_id nextgroup=hclEquals,hclString skipwhite
syn keyword hclAwsResourcesKeywords cidr_block enable_dns_hostnames enable_dns_support tags nextgroup=hclEquals,hclString skipwhite
" An attribute name is an identifier followed by an equals sign.
syn match hclAttributeAssignment /\(\K\k*\.\)*\K\k*\s\+=\s/ contains=hclAttributeName
syn match hclAttributeName /\<\K\k*\>/ contained
syn keyword hclValueBool true false
syn keyword hclTodo contained TODO FIXME XXX BUG
syn region hclComment start="/\*" end="\*/" contains=hclTodo,@Spell
syn region hclComment start="#" end="$" contains=hclTodo,@Spell
syn region hclComment start="//" end="$" contains=hclTodo,@Spell
""" misc.
syn match hclValueDec "\<[0-9]\+\([kKmMgG]b\?\)\?\>"
syn match hclValueHexaDec "\<0x[0-9a-f]\+\([kKmMgG]b\?\)\?\>"
syn match hclBraces "[\[\]]"
""" skip \" and \\ in strings.
syn region hclValueString start=/"/ skip=/\\\\\|\\"/ end=/"/ contains=hclStringInterp
syn region hclStringInterp matchgroup=hclBraces start=/\(^\|[^$]\)\$\zs{/ end=/}/ contained contains=ALLBUT,hclAttributeName
syn region hclHereDocText start=/<<-\?\z([a-z0-9A-Z]\+\)/ end=/^\s*\z1/ contains=hclStringInterp
"" Functions.
syn match hclFunction "[a-z0-9]\+(\@="
""" HCL2
syn keyword hclRepeat for in
syn keyword hclConditional if
syn keyword hclValueNull null
" enable block folding
syn region hclBlockBody matchgroup=hclBraces start="{" end="}" fold transparent
hi def link hclComment Comment hi def link hclComment Comment
hi def link hclEqual Operator hi def link hclTodo Todo
hi def link hclRootKeywords Statement hi def link hclBraces Delimiter
hi def link hclAwsResourcesKeywords Type hi def link hclAttributeName Identifier
hi def link hclSmartString String hi def link hclBlockType Type
hi def link hclInterpolation String hi def link hclValueBool Boolean
hi def link hclSimpleString PreProc hi def link hclValueDec Number
hi def link hclValueHexaDec Number
hi def link hclValueString String
hi def link hclHereDocText String
hi def link hclFunction Function
hi def link hclRepeat Repeat
hi def link hclConditional Conditional
hi def link hclValueNull Constant
let b:current_syntax = "hcl" let b:current_syntax = 'hcl'
let &cpoptions = s:cpo_save
unlet s:cpo_save

View File

@@ -327,15 +327,15 @@ exec 'syntax match juliaStringVarsPla contained "\$' . s:idregex . '"'
" TODO improve RegEx " TODO improve RegEx
syntax region juliaRegEx matchgroup=juliaStringDelim start=+\<r\z("\(""\)\?\)+ skip=+\%(\\\\\)*\\"+ end=+\z1[imsx]*+ syntax region juliaRegEx matchgroup=juliaStringDelim start=+\<r\z("\(""\)\?\)+ skip=+\%(\\\\\)*\\"+ end=+\z1[imsx]*+
syntax cluster juliaSpecialChars contains=juliaSpecialChar,juliaOctalEscapeChar,juliaHexEscapeChar,juliaUniCharSmall,juliaUniCharLarge syntax cluster juliaSpecialChars contains=juliaSpecialChar,juliaDoubleBackslash,juliaEscapedQuote,juliaOctalEscapeChar,juliaHexEscapeChar,juliaUniCharSmall,juliaUniCharLarge
syntax match juliaSpecialChar display contained "\\." syntax match juliaSpecialChar display contained "\\."
syntax match juliaOctalEscapeChar display contained "\\\o\{3\}" syntax match juliaOctalEscapeChar display contained "\\\o\{3\}"
syntax match juliaHexEscapeChar display contained "\\x\x\{2\}" syntax match juliaHexEscapeChar display contained "\\x\x\{2\}"
syntax match juliaUniCharSmall display contained "\\u\x\{1,4\}" syntax match juliaUniCharSmall display contained "\\u\x\{1,4\}"
syntax match juliaUniCharLarge display contained "\\U\x\{1,8\}" syntax match juliaUniCharLarge display contained "\\U\x\{1,8\}"
syntax cluster juliaSpecialCharsRaw contains=juliaDoubleBackslash,juliaEscapedQuote syntax cluster juliaSpecialCharsRaw contains=juliaDoubleBackslash,juliaEscapedQuote
syntax match juliaDoubleBackslash display contained "\\\\" syntax match juliaDoubleBackslash contained "\\\\"
syntax match juliaEscapedQuote display contained "\\\"" syntax match juliaEscapedQuote contained "\\\""
syntax cluster juliaPrintfChars contains=juliaErrorPrintfFmt,juliaPrintfFmt syntax cluster juliaPrintfChars contains=juliaErrorPrintfFmt,juliaPrintfFmt
syntax match juliaErrorPrintfFmt display contained "\\\?%." syntax match juliaErrorPrintfFmt display contained "\\\?%."

View File

@@ -5,7 +5,7 @@ endif
" Vim syntax file " Vim syntax file
" Language: Kotlin " Language: Kotlin
" Maintainer: Alexander Udalov " Maintainer: Alexander Udalov
" Latest Revision: 20 April 2021 " Latest Revision: 3 July 2021
if exists('b:current_syntax') if exists('b:current_syntax')
finish finish
@@ -101,6 +101,8 @@ syn match ktEscapedName "\v`.*`"
syn match ktExclExcl "!!" syn match ktExclExcl "!!"
syn match ktArrow "->" syn match ktArrow "->"
exec "syntax sync ccomment ktComment minlines=10"
hi def link ktStatement Statement hi def link ktStatement Statement
hi def link ktConditional Conditional hi def link ktConditional Conditional
hi def link ktRepeat Repeat hi def link ktRepeat Repeat

View File

@@ -69,7 +69,7 @@ endfunction
com! -nargs=* SynFold call s:run_syntax_fold(<q-args>) com! -nargs=* SynFold call s:run_syntax_fold(<q-args>)
" Not-Top Cluster {{{1 " Not-Top Cluster {{{1
syn cluster rubyNotTop contains=@rubyCommentNotTop,@rubyStringNotTop,@rubyRegexpSpecial,@rubyDeclaration,@rubyExceptionHandler,@rubyClassOperator,rubyConditional,rubyModuleName,rubyClassName,rubySymbolDelimiter,rubyParentheses,@Spell syn cluster rubyNotTop contains=@rubyCommentNotTop,@rubyStringNotTop,@rubyRegexpSpecial,@rubyDeclaration,@rubyExceptionHandler,@rubyClassOperator,rubyConditional,rubyModuleName,rubyClassName,rubySymbolDelimiter,rubyDoubleQuoteSymbolDelimiter,rubySingleQuoteSymbolDelimiter,rubyParentheses,@Spell
" Whitespace Errors {{{1 " Whitespace Errors {{{1
if exists("ruby_space_errors") if exists("ruby_space_errors")
@@ -468,6 +468,10 @@ syn match rubyDefinedOperator "\%#=1\<defined?" display
syn match rubySymbol "\%(\w\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*[?!]\=::\@!"he=e-1 contained containedin=rubyBlockParameterList,rubyCurlyBlock syn match rubySymbol "\%(\w\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*[?!]\=::\@!"he=e-1 contained containedin=rubyBlockParameterList,rubyCurlyBlock
syn match rubySymbol "[]})\"':]\@1<!\<\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*[!?]\=:[[:space:],;]\@="he=e-1 syn match rubySymbol "[]})\"':]\@1<!\<\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*[!?]\=:[[:space:],;]\@="he=e-1
syn match rubySymbol "[[:space:],{(]\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*[!?]\=:[[:space:],;]\@="hs=s+1,he=e-1 syn match rubySymbol "[[:space:],{(]\%(\h\|[^\x00-\x7F]\)\%(\w\|[^\x00-\x7F]\)*[!?]\=:[[:space:],;]\@="hs=s+1,he=e-1
syn match rubySingleQuoteSymbolDelimiter "'" contained
syn match rubySymbol "'\%(\\.\|[^']\)*'::\@!"he=e-1 contains=rubyQuoteEscape,rubyBackslashEscape,rubySingleQuoteSymbolDelimiter
syn match rubyDoubleQuoteSymbolDelimiter "\"" contained
syn match rubySymbol "\"\%(\\.\|[^\"]\)*\"::\@!"he=e-1 contains=@rubyStringSpecial,rubyDoubleQuoteSymbolDelimiter
" __END__ Directive {{{1 " __END__ Directive {{{1
SynFold '__END__' syn region rubyData matchgroup=rubyDataDirective start="^__END__$" end="\%$" SynFold '__END__' syn region rubyData matchgroup=rubyDataDirective start="^__END__$" end="\%$"
@@ -568,6 +572,8 @@ hi def link rubyHeredocDelimiter rubyStringDelimiter
hi def link rubyPercentRegexpDelimiter rubyRegexpDelimiter hi def link rubyPercentRegexpDelimiter rubyRegexpDelimiter
hi def link rubyPercentStringDelimiter rubyStringDelimiter hi def link rubyPercentStringDelimiter rubyStringDelimiter
hi def link rubyPercentSymbolDelimiter rubySymbolDelimiter hi def link rubyPercentSymbolDelimiter rubySymbolDelimiter
hi def link rubyDoubleQuoteSymbolDelimiter rubySymbolDelimiter
hi def link rubySingleQuoteSymbolDelimiter rubySymbolDelimiter
hi def link rubyRegexpDelimiter rubyStringDelimiter hi def link rubyRegexpDelimiter rubyStringDelimiter
hi def link rubySymbolDelimiter rubySymbol hi def link rubySymbolDelimiter rubySymbol
hi def link rubyString String hi def link rubyString String

View File

@@ -2,74 +2,14 @@ if polyglot#init#is_disabled(expand('<sfile>:p'), 'terraform', 'syntax/terraform
finish finish
endif endif
" Forked from Larry Gilbert's syntax file
" github.com/L2G/vim-syntax-terraform
if exists('b:current_syntax') if exists('b:current_syntax')
finish finish
endif endif
runtime! syntax/hcl.vim
unlet b:current_syntax
let s:cpo_save = &cpoptions
set cpoptions&vim
" 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
" A block is introduced by a type, some number of labels - which are either
" strings or identifiers - and an opening curly brace. Match the type.
syn match terraBlockIntroduction /^\s*\zs\K\k*\ze\s\+\(\("\K\k*"\|\K\k*\)\s\+\)*{/ contains=terraBlockType
syn keyword terraBlockType contained data locals module output provider resource terraform variable
syn keyword terraValueBool true false on off yes no
syn keyword terraTodo contained TODO FIXME XXX BUG TF-UPGRADE-TODO
syn region terraComment start="/\*" end="\*/" contains=terraTodo,@Spell
syn region terraComment start="#" end="$" contains=terraTodo,@Spell
syn region terraComment start="//" end="$" contains=terraTodo,@Spell
""" misc.
syn match terraValueDec "\<[0-9]\+\([kKmMgG]b\?\)\?\>"
syn match terraValueHexaDec "\<0x[0-9a-f]\+\([kKmMgG]b\?\)\?\>"
syn match terraBraces "[\[\]]"
""" skip \" and \\ in strings.
syn region terraValueString start=/"/ skip=/\\\\\|\\"/ end=/"/ contains=terraStringInterp
syn region terraStringInterp matchgroup=terraBraces start=/\(^\|[^$]\)\$\zs{/ end=/}/ contained contains=ALL
syn region terraHereDocText start=/<<-\?\z([a-z0-9A-Z]\+\)/ end=/^\s*\z1/ contains=terraStringInterp
"" Functions.
syn match terraFunction "[a-z0-9]\+(\@="
""" HCL2
syn keyword terraRepeat for in
syn keyword terraConditional if
syn keyword terraType string bool number object tuple list map set any syn keyword terraType string bool number object tuple list map set any
syn keyword terraValueNull null
" enable block folding
syn region terraBlockBody matchgroup=terraBraces start="{" end="}" fold transparent
hi def link terraComment Comment
hi def link terraTodo Todo
hi def link terraBraces Delimiter
hi def link terraBlockType Structure
hi def link terraValueBool Boolean
hi def link terraValueDec Number
hi def link terraValueHexaDec Number
hi def link terraValueString String
hi def link terraHereDocText String
hi def link terraFunction Function
hi def link terraRepeat Repeat
hi def link terraConditional Conditional
hi def link terraType Type hi def link terraType Type
hi def link terraValueNull Constant
let b:current_syntax = 'terraform' let b:current_syntax = 'terraform'
let &cpoptions = s:cpo_save
unlet s:cpo_save

View File

@@ -119,7 +119,6 @@ call TestFiletype('haskell')
call TestFiletype('haxe') call TestFiletype('haxe')
call TestFiletype('hxml') call TestFiletype('hxml')
call TestFiletype('hss') call TestFiletype('hss')
call TestFiletype('hcl')
call TestFiletype('hive') call TestFiletype('hive')
call TestFiletype('icalendar') call TestFiletype('icalendar')
call TestFiletype('idris') call TestFiletype('idris')
@@ -221,6 +220,7 @@ call TestFiletype('sxhkdrc')
call TestFiletype('systemd') call TestFiletype('systemd')
call TestFiletype('tf') call TestFiletype('tf')
call TestFiletype('terraform') call TestFiletype('terraform')
call TestFiletype('hcl')
call TestFiletype('textile') call TestFiletype('textile')
call TestFiletype('thrift') call TestFiletype('thrift')
call TestFiletype('tmux') call TestFiletype('tmux')