Comment peut-on faire la fonction fold de vim - en utilisant la syntaxe foldmethod = - aussi cacher une nouvelle ligne après chaque fonction, if-else et struct (en utilisant Go).
Voici comment procéder pour C:
/usr/share/vim
) et copiez-le dans (encore une fois, sous Unix) ~/.vim/syntax
.syntax region cBlock start="{" end="}" transparent fold
devient
syntax region cBlock start="{" end="}\(\n\n\)\?" transparent fold
Ici, le premier \n
correspond au caractère de nouvelle ligne immédiatement après l'accolade fermante, le second à la ligne vide. Cela ne fonctionnera pas si }
est suivi par exemple d'un commentaire: le bloc se pliera toujours, mais pas la nouvelle ligne suivante.
Je n'ai pas de fichier de syntaxe pour Go here (pour autant que je sache), mais cela devrait fonctionner de la même manière.
Remarque: la manière la plus flexible serait de créer un nouveau fichier à ~/.vim/after/syntax
et de simplement changer la définition de la région, mais je n'ai pas réussi ici. Le simple fait de copier la définition de région ne fonctionne pas.
Je sais que c'est vieux, mais en plus de la solution @ ansgar-esztermann:
syntax clear cBlock
syntax match cBlock1line /.\s*{.\{-}}/ transparent contains=ALLBUT,cBadBlock,cCurlyError,@cParenGroup,cErrInParen,cErrInBracket,cBlockImp
syntax region cBlockImp start=/{/ end=/};\?\(\n\n\)\?/ transparent fold contains=ALLBUT,cBadBlock,cCurlyError,@cParenGroup,cErrInParen,cErrInBracket
en ~/.vim/syntax/c.vim
plis nouvelle ligne (pour struct
s aussi)