[vim] add nice folding

This commit is contained in:
Fernando Schauenburg 2018-04-15 13:53:47 +02:00
parent b4a6205b4d
commit b376025223

View file

@ -28,13 +28,6 @@ set nocompatible
set laststatus=2 set laststatus=2
set lazyredraw set lazyredraw
set list set list
if has('multi_byte') && &encoding ==# 'utf-8'
let &listchars = 'tab:▷ ,extends:»,precedes:«,trail:·'
let &showbreak = ' ⤷ '
else
let &listchars = 'tab:>~,extends:>,precedes:<,trail:-'
let &showbreak = '-> '
endif
set modelines=0 set modelines=0
set number set number
set scrolloff=5 set scrolloff=5
@ -69,6 +62,16 @@ set nocompatible
set wildmenu set wildmenu
set wrap set wrap
set writebackup set writebackup
if has('multi_byte') && &encoding ==# 'utf-8'
set foldtext=VimrcFoldText()
set fillchars=fold
let &listchars = 'tab:▷ ,extends:»,precedes:«,trail:·'
let &showbreak = ' ⤷ '
else
let &listchars = 'tab:>~,extends:>,precedes:<,trail:-'
let &showbreak = '-> '
endif
" }}} " }}}
" Plugins {{{ " Plugins {{{
@ -140,6 +143,19 @@ set nocompatible
endif endif
endfunction endfunction
" Turn fold text from this:
"
" +--- 2 lines: text of first line in fold --------------------------
"
" into this:
"
" ··· 2: text of first line in fold ······························
function! VimrcFoldText() abort
let l:level=substitute(v:folddashes, '-', '·', 'g')
let l:count=(v:foldend - v:foldstart + 1)
let l:title=substitute(getline(v:foldstart), '\v *', '', '')
return l:level . ' ' . l:count . ': ' . l:title . ' '
endfunction
" }}}" " }}}"
" Mappings {{{ " Mappings {{{