summary refs log tree commit diff
path: root/.vim/autoload/balena_diagnostics_fold.vim
diff options
context:
space:
mode:
Diffstat (limited to '.vim/autoload/balena_diagnostics_fold.vim')
-rw-r--r--.vim/autoload/balena_diagnostics_fold.vim25
1 files changed, 25 insertions, 0 deletions
diff --git a/.vim/autoload/balena_diagnostics_fold.vim b/.vim/autoload/balena_diagnostics_fold.vim
new file mode 100644
index 0000000..4513f6b
--- /dev/null
+++ b/.vim/autoload/balena_diagnostics_fold.vim
@@ -0,0 +1,25 @@
+"
+" manually:
+"   setlocal foldexpr=balena_diagnostics_fold#expr(v:lnum)
+"   setlocal foldmethod=expr
+"   setlocal foldlevel=1
+" or as command:
+"   command! BalenaDiagnosticsFold call balena_diagnostics_fold#apply()
+"
+
+function! s:foldexpr(lnum)
+    return getline(a:lnum)=~'^===\s.*\s===$'?'>1':getline(a:lnum)=~'^---\s.*\s---$'?'>2':'='
+endfunction
+
+function! balena_diagnostics_fold#expr(lnum) abort
+    return s:foldexpr(a:lnum)
+endfunction
+
+function! balena_diagnostics_fold#apply() abort
+    setlocal
+        \ foldmethod=expr
+        \ foldexpr=balena_diagnostics_fold#expr(v:lnum)
+        \ foldcolumn=auto:9
+        \ foldlevel=1
+        \ foldenable
+endfunction