faire plier vim masquer également la nouvelle ligne après la fonction

8

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).

Łukasz Gruner
la source

Réponses:

4

Voici comment procéder pour C:

  • Prenez le fichier de syntaxe d'origine (sous Unix, généralement trouvé dans /usr/share/vim) et copiez-le dans (encore une fois, sous Unix) ~/.vim/syntax.
  • Modifiez le modèle «fin» dans la définition de la région cBlock:
syntax region cBlock    start="{" end="}" transparent fold

devient

syntax region cBlock    start="{" end="}\(\n\n\)\?" transparent fold

Ici, le premier \ncorrespond 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/syntaxet 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.

Ansgar Esztermann
la source
0

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.vimplis nouvelle ligne (pour structs aussi)

Jorengarenar
la source