2012-10-29 5 views
14

Beim Schreiben von C-Code verwende ich eine Mischung aus GNU und K&R Stil. Dies bedeutet, dass der Rückgabewert, jeder Parameter und die geschweifte Klammer des öffnenden Körpers einer Funktion in einer eigenen Zeile stehen. Ich würde auch Falten des Vim-Funktion verwenden möchten, aber mit foldmethod=syntax, sieht die Faltung wie folgt aus:Wie kann ich GNU C Stil Funktionen in Vim richtig falten?

bad-folding

Ist es möglich, den Funktionsnamen in der Falte Zusammenfassung ohne besondere Falte Marker oder foldexpr s zu sehen?

+0

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

+0

@matthias finden Sie eine Lösung für die richtige Faltung in C? – JuanPablo

+0

Nein, leider nicht. Aus diesem Grund falte ich den C-Code nicht manuell :-( – matthias

Antwort

1

Versuchen Sie dies als Ausgangspunkt (ich habe es in meinem vimrc aber ich fand es online):

" 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

Etwas, was ein guter Kompromiss sein könnte - wenn Sie die indent Falte verwenden - ist die festlegen foldminlines Parameter zu einer höheren Nummer.

:set foldmethod=indent 
:set foldminlines=5 

Wenn die meisten Ihrer Funktionen lang sind, betrifft dies nur Ihre Parameterliste. Der Nachteil ist natürlich, dass es automatisch auch kleine Funktionen entfalten wird, die kleiner als 5 Zeilen sind.

Verwandte Themen