¿Cómo se puede hacer que la función de plegado de vim, cuando se utiliza foldmethod = sintaxis, también se oculte una nueva línea después de cada función, if-else y struct (usando Go).
¿Cómo se puede hacer que la función de plegado de vim, cuando se utiliza foldmethod = sintaxis, también se oculte una nueva línea después de cada función, if-else y struct (usando Go).
Respuestas:
Aquí se explica cómo hacerlo para C:
/usr/share/vim
) y cópielo en (nuevamente, en Unix) ~/.vim/syntax
.syntax region cBlock start="{" end="}" transparent fold
se convierte
syntax region cBlock start="{" end="}\(\n\n\)\?" transparent fold
Aquí, el primero \n
coincide con el carácter de nueva línea inmediatamente después de la llave de cierre, el segundo la línea vacía. Esto no funcionará si }
es seguido, por ejemplo, por un comentario: el bloque aún se doblará, pero la siguiente nueva línea no lo hará.
No tengo un archivo de sintaxis para Ir aquí (por lo que puedo decir), pero debería funcionar de manera similar.
Nota: la forma más flexible sería crear un nuevo archivo en ~/.vim/after/syntax
y simplemente cambiar la definición de la región, pero aquí no he tenido éxito. Simplemente copiar la definición de región no funciona.
Sé que es viejo, pero además de la solución @ 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
pliegues nueva línea (para struct
s también)