From c1057031b7cc9841e1c2ac18798d4e308326b27f Mon Sep 17 00:00:00 2001 From: Tom Ryder Date: Mon, 30 Jul 2018 10:17:14 +1200 Subject: Add foldlevelstart_stdin.vim plugin This makes 'foldlevelstart' work for stdin reads. --- vim/plugin/foldlevelstart_stdin.vim | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 vim/plugin/foldlevelstart_stdin.vim diff --git a/vim/plugin/foldlevelstart_stdin.vim b/vim/plugin/foldlevelstart_stdin.vim new file mode 100644 index 00000000..4edffb16 --- /dev/null +++ b/vim/plugin/foldlevelstart_stdin.vim @@ -0,0 +1,28 @@ +" +" foldlevelstart_stdin.vim: Set 'foldlevel' to 'foldlevelstart' after reading +" from standard input, which Vim doesn't do by default. +" +" Author: Tom Ryder +" License: Same as Vim itself +" +if exists('g:loaded_foldlevelstart_stdin') || &compatible + finish +endif +if !has('autocmd') || !has('folding') || !exists('##StdinReadPre') + finish +endif +let g:loaded_foldlevelstart_stdin = 1 + +" Check if 'foldlevelstart' is non-negative, and set 'foldlevel' to its value +" if it is +function! s:SetFoldlevel() + if &foldlevelstart >= 0 + let &l:foldlevel = &foldlevelstart + endif +endfunction + +" Watch for stdin reads and set fold level accordingly +augroup foldlevelstart_stdin + autocmd! + autocmd StdinReadPre * call s:SetFoldlevel() +augroup END -- cgit v1.2.3