aboutsummaryrefslogtreecommitdiff
path: root/runtime/ftplugin/zig.vim
diff options
context:
space:
mode:
authorChristian Clason <c.clason@uni-graz.at>2022-12-08 16:33:38 +0100
committerGitHub <noreply@github.com>2022-12-08 16:33:38 +0100
commit35767769036671d5ce562f53cae574f9c66e4bb2 (patch)
tree5c2b943ea25ece5b25fd862f1daed4e125197ee3 /runtime/ftplugin/zig.vim
parent7b9ad45178fc2f53c4824ad42213c340bdd66ebf (diff)
downloadrneovim-35767769036671d5ce562f53cae574f9c66e4bb2.tar.gz
rneovim-35767769036671d5ce562f53cae574f9c66e4bb2.tar.bz2
rneovim-35767769036671d5ce562f53cae574f9c66e4bb2.zip
vim-patch:86b4816766d9 (#21314)
Update runtime files https://github.com/vim/vim/commit/86b4816766d976a7ecd4403eca1f8bf6b4105800 vim-patch:9.0.1029: autoload directory missing from distribution Problem: Autoload directory missing from distribution. Solution: Add the autoload/zig directory to the list of distributed files. https://github.com/vim/vim/commit/84dbf855fb2d883481f74ad0ccf3df3f8837e6bf Co-authored-by: Bram Moolenaar <Bram@vim.org>
Diffstat (limited to 'runtime/ftplugin/zig.vim')
-rw-r--r--runtime/ftplugin/zig.vim66
1 files changed, 66 insertions, 0 deletions
diff --git a/runtime/ftplugin/zig.vim b/runtime/ftplugin/zig.vim
new file mode 100644
index 0000000000..e740a52849
--- /dev/null
+++ b/runtime/ftplugin/zig.vim
@@ -0,0 +1,66 @@
+" Vim filetype plugin file
+" Language: Zig
+" Upstream: https://github.com/ziglang/zig.vim
+
+" Only do this when not done yet for this buffer
+if exists("b:did_ftplugin")
+ finish
+endif
+
+let b:did_ftplugin = 1
+
+let s:cpo_orig = &cpo
+set cpo&vim
+
+compiler zig_build
+
+" Match Zig builtin fns
+setlocal iskeyword+=@-@
+
+" Recomended code style, no tabs and 4-space indentation
+setlocal expandtab
+setlocal tabstop=8
+setlocal softtabstop=4
+setlocal shiftwidth=4
+
+setlocal formatoptions-=t formatoptions+=croql
+
+setlocal suffixesadd=.zig,.zir
+
+if has('comments')
+ setlocal comments=:///,://!,://,:\\\\
+ setlocal commentstring=//\ %s
+endif
+
+if has('find_in_path')
+ let &l:includeexpr='substitute(v:fname, "^([^.])$", "\1.zig", "")'
+ let &l:include='\v(\@import>|\@cInclude>|^\s*\#\s*include)'
+endif
+
+let &l:define='\v(<fn>|<const>|<var>|^\s*\#\s*define)'
+
+if !exists('g:zig_std_dir') && exists('*json_decode') && executable('zig')
+ silent let s:env = system('zig env')
+ if v:shell_error == 0
+ let g:zig_std_dir = json_decode(s:env)['std_dir']
+ endif
+ unlet! s:env
+endif
+
+if exists('g:zig_std_dir')
+ let &l:path = &l:path . ',' . g:zig_std_dir
+endif
+
+let b:undo_ftplugin =
+ \ 'setl isk< et< ts< sts< sw< fo< sua< mp< com< cms< inex< inc< pa<'
+
+augroup vim-zig
+ autocmd! * <buffer>
+ autocmd BufWritePre <buffer> if get(g:, 'zig_fmt_autosave', 1) | call zig#fmt#Format() | endif
+augroup END
+
+let b:undo_ftplugin .= '|au! vim-zig * <buffer>'
+
+let &cpo = s:cpo_orig
+unlet s:cpo_orig
+" vim: tabstop=8 shiftwidth=4 softtabstop=4 expandtab