aboutsummaryrefslogtreecommitdiff
path: root/vim/plugin/foldlevelstart_stdin.vim
blob: f8e4d50e5697c2bc15c1ba30207e1205afb3e8c1 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
"
" foldlevelstart_stdin.vim: Set 'foldlevel' to 'foldlevelstart' after reading
" from standard input, which Vim doesn't do by default.
"
" Author: Tom Ryder <tom@sanctum.geek.nz>
" 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() abort
  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