Как можно правильно скрыть функции стиля GNU C в Vim?
При написании кода C я использую смесь GNU и K & R. Это означает, что возвращаемое значение, каждый параметр и открывающая фигура фигурные скобки функции находятся на собственной линии. Я также хотел бы использовать функцию Vim folding, но с foldmethod=syntax
, складывание выглядит следующим образом:
![bad-folding]()
Можно ли увидеть имя функции в сводке без каких-либо специальных меток разметки или foldexpr
s?
Ответы
Ответ 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
"}