Ответ на сообщение «Folding depth», присланное в 22:57:10 21 сентября 2010, Вторник, отправитель Pablo Giménez:
You said `no matter the folding methods I use', so you have probably discovered `foldnestmax' option. I think that for any method it is possible only with the custom script. The attached script partially does the thing (it opens all folds with foldlevel>3), but it has at least one bug: sometimes it opens fold under cursor. You will also have to remap some of `z?' normal commands, foldlevel() function will be helpful. Текст сообщения: > Hi vimers. > Is there any way to limit the depth for folding. > I mean if I don't want folders to be created for more than 3 levels of > folding is it possible to specify it so no matter the folding methos I > use the depth will be limited to a certain amount? > thanks
function! s:sortlevels(a, b) let [a, b]=[a:a+0, a:b+0] return ((a==b)?(0):((a<b)?(1):(-1))) endfunction function! Unfold(level) let view=winsaveview() let startline=1 let endline=line('$') let closedfolds={} let line=startline let savedfoldopen=&foldopen set foldopen= while line<=endline let foldend=foldclosedend(line) if foldend!=-1 let foldlevel=foldlevel(line) if foldlevel>a:level execute 'normal! '.line.'ggzO' let line=foldend else if !has_key(closedfolds, foldlevel) let closedfolds[foldlevel]=[] endif call add(closedfolds[foldlevel], line) execute 'normal! zo' endif endif let line+=1 endwhile for foldlevel in sort(keys(closedfolds), 's:sortlevels') for line in closedfolds[foldlevel] execute 'normal! '.line.'ggzc' endfor endfor set nofoldenable call winrestview(view) let &foldopen=savedfoldopen set foldenable endfunction autocmd BufEnter * call Unfold(3)
signature.asc
Description: This is a digitally signed message part.