Como alguém pode criar a função fold do vim - ao usar foldmethod = sintaxe - também oculta uma nova linha após cada função, if-else e struct (usando Go).
Como alguém pode criar a função fold do vim - ao usar foldmethod = sintaxe - também oculta uma nova linha após cada função, if-else e struct (usando Go).
Respostas:
Veja como fazer isso para C:
/usr/share/vim) e copie-o para (novamente, no Unix) ~/.vim/syntax.syntax region cBlock start="{" end="}" transparent fold
torna-se
syntax region cBlock start="{" end="}\(\n\n\)\?" transparent fold
Aqui, o primeiro \ncorresponde ao caractere de nova linha imediatamente após a chave de fechamento, o segundo a linha vazia. Isso não funcionará se }for seguido por, por exemplo, um comentário: o bloco ainda será dobrado, mas a nova linha a seguir não.
Eu não tenho um arquivo de sintaxe para o Go aqui (tanto quanto eu posso dizer), mas deve funcionar de maneira semelhante.
Nota: a maneira mais flexível seria criar um novo arquivo ~/.vim/after/syntaxe apenas alterar a definição da região, mas não obtive êxito aqui. Apenas copiar a definição de região não funciona.
Eu sei que é antigo, mas além da solução @ 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
em ~/.vim/syntax/c.vimdobras nova linha (para structs também)