You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
35 lines
938 B
35 lines
938 B
" Copyright (c) 2019 Liu-Cheng Xu |
|
" MIT License |
|
" vim: ts=2 sw=2 sts=2 et |
|
|
|
" Treat the number of heading whitespaces as indent level |
|
function! s:HeadingWhitespaces(line) abort |
|
return strlen(matchstr(a:line,'\v^\s+')) |
|
endfunction |
|
|
|
function! vista#fold#Expr() abort |
|
if getline(v:lnum) =~# '^$' |
|
return 0 |
|
endif |
|
|
|
let cur_indent = s:HeadingWhitespaces(getline(v:lnum)) |
|
let next_indent = s:HeadingWhitespaces(getline(v:lnum+1)) |
|
|
|
if cur_indent < next_indent |
|
return '>'.next_indent |
|
else |
|
return cur_indent |
|
endif |
|
endfunction |
|
|
|
function! vista#fold#Text() abort |
|
let line = getline(v:foldstart) |
|
|
|
" Foldtext ignores tabstop and shows tabs as one space, |
|
" so convert tabs to 'tabstop' spaces, then text lines up. |
|
let spaces = repeat(' ', &tabstop) |
|
let line = substitute(line, '\t', spaces, 'g') |
|
let line = substitute(line, g:vista_fold_toggle_icons[0], g:vista_fold_toggle_icons[1], '') |
|
|
|
return line |
|
endfunction
|
|
|