Как можно правильно скрыть функции стиля GNU C в Vim? - программирование

Как можно правильно скрыть функции стиля GNU C в Vim?

При написании кода C я использую смесь GNU и K & R. Это означает, что возвращаемое значение, каждый параметр и открывающая фигура фигурные скобки функции находятся на собственной линии. Я также хотел бы использовать функцию Vim folding, но с foldmethod=syntax, складывание выглядит следующим образом:

bad-folding

Можно ли увидеть имя функции в сводке без каких-либо специальных меток разметки или foldexpr s?

4b9b3361

Ответ 1

Что-то, что может быть хорошим компромиссом - если вы используете сгиб indent - это установить параметр foldminlines на большее число.

:set foldmethod=indent
:set foldminlines=5

Если большинство ваших функций длинные, это повлияет только на ваш список параметров. Недостатком, очевидно, является то, что он автоматически разворачивает и небольшие функции, длина которых меньше 5 строк.

Ответ 2

Попробуйте это как отправную точку (у меня есть это в моем vimrc, но я нашел его онлайн):

" 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
"}