summaryrefslogtreecommitdiffstats
path: root/runtime/ftplugin/zig.vim
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 08:50:31 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 08:50:31 +0000
commitaed8ce9da277f5ecffe968b324f242c41c3b752a (patch)
treed2e538394cb7a8a7c42a4aac6ccf1a8e3256999b /runtime/ftplugin/zig.vim
parentInitial commit. (diff)
downloadvim-aed8ce9da277f5ecffe968b324f242c41c3b752a.tar.xz
vim-aed8ce9da277f5ecffe968b324f242c41c3b752a.zip
Adding upstream version 2:9.0.1378.upstream/2%9.0.1378upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.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 0000000..e740a52
--- /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