2012-10-29 9 views
14

Quando si scrive codice C, utilizzo una combinazione di stile GNU e K&R. Ciò significa che il valore restituito, ciascun parametro e la parentesi graffa del corpo di apertura di una funzione si trova sulla propria riga. Vorrei anche utilizzare la funzione di ripiegamento di Vim, ma con foldmethod=syntax, la piegatura è simile al seguente:Come posso piegare correttamente le funzioni GNU C in Vim?

bad-folding

E 'possibile vedere il nome della funzione nel sommario piega senza marcatori piega speciali o foldexpr s?

+0

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

+0

@matthias trovate qualche soluzione per il corretto ripiegamento in C? – JuanPablo

+0

No purtroppo no. E per questo motivo non piego il codice C se non manualmente :-( – matthias

risposta

1

Prova questo come punto di partenza (ce l'ho nel mio vimrc ma ho trovato on-line):

" 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

Qualcosa che potrebbe essere un buon compromesso - se si utilizza il indent piega - è quello di impostare la foldminlines parametro su un numero più alto.

:set foldmethod=indent 
:set foldminlines=5 

Se la maggior parte delle vostre funzioni sono lunghi, interesserà solo la vostra lista di parametri. Ovviamente il lato negativo è che dispiegherà automaticamente anche piccole funzioni che sono più piccole di 5 righe.

Problemi correlati