2012-10-29 11 views
14

Podczas pisania kodu C używam mieszanki stylu GNU i K&R. Oznacza to, że wartość zwracana, każdy parametr i nawias klamrowy otwierającej ciało funkcji znajduje się w osobnej linii. Chciałbym również, aby skorzystać z mechanizmu składanego vim, ale z foldmethod=syntax, składanie wygląda następująco:Jak poprawnie złożyć funkcje stylu GNU C w Vim?

bad-folding

Czy to możliwe, aby zobaczyć nazwę funkcji w zakładce podsumowania bez żadnych specjalnych markerów krotnie lub foldexpr s?

+0

http://stackoverflow.com/questions/762310/how-can-i-automatically-fold-a-long-c-code-in-vim –

+0

@matthias znajdzie dla ciebie rozwiązanie dla poprawnego złożenia w C? – JuanPablo

+0

Nie, niestety, nie. Z tego powodu nie składam kodu C z wyjątkiem ręcznego :-( – matthias

Odpowiedz

1

Spróbuj to jako punkt wyjścia (mam go w moim vimrc ale znalazłem go w Internecie):

" Folding { 
function! CssFoldText() 
    let line = getline(v:foldstart) 
    let nnum = nextnonblank(v:foldstart + 1) 
    while nnum < v:foldend+1 
     let line = line . " " . substitute(getline(nnum), "^ *", "", "g") 
     let nnum = nnum + 1 
    endwhile 
    return line 
endfunction 

setlocal foldtext=CssFoldText() 
setlocal foldmethod=marker 
setlocal foldmarker={,} 
setlocal fillchars=fold:/ 
setlocal foldlevel=-1 
" highlight Folded term=underline cterm=bold gui=bold guifg=Blue guibg=Black 
" highlight FoldColumn term=underline cterm=bold gui=bold guifg=Blue guibg=Black 
"} 
2

coś, co może być dobrym kompromisem - jeśli używasz klapki indent - jest ustawienie foldminlines parametr do wyższego numeru.

Jeśli większość funkcji będzie długich, wpłynie to tylko na listę parametrów. Minusem jest oczywiście to, że automatycznie rozwinie także małe funkcje, które są mniejsze niż 5 linii.