¿Cómo puedo desactivar el ancho de texto de vim para líneas específicas?

¿Cómo puedo desactivar el ancho de texto de vim para líneas específicas?

Lo configuré textwidthen 80 caracteres y lo configuré en 75 caracteres para gitcommitarchivos.

La cuestión es que las confirmaciones de git en mi empresa siempre tienen una última línea que indica algunos metadatos sobre la confirmación (si se debe aumentar el número de versión, el ticket asociado, etc.). Lo que me gustaría hacer es desactivar el ancho del texto para esta última línea. Esta última línea siempre comenzará con "(parche)", "(menor)" o "(principal)" (para la publicación automática semanal).

Actualmente lo tengo para que esta línea de metadatos esté resaltada, usando lo siguiente en mi archivo de sintaxis:

syn match   autoPublishLine     "^\((patch)\|(minor)\|(major)\).*"
hi def link autoPublishLine             Special

Esto funciona como esperaba, pero lo que realmente me gustaría hacer estambiéndesestablezca el ancho de texto para esta línea, por lo que no ajusta las palabras para esta línea.

¿Alguna idea de cómo podría hacer esto?

Respuesta1

Como truco rápido, puedes adaptar el 'textwidth'valor cada vez que se mueve el cursor:

:autocmd CursorMoved,CursorMovedI <buffer> let &l:textwidth = (getline('.') =~# '^\((patch)\|(minor)\|(major)\)' ? 0 : 75)

Puede poner ese comando ~/.vim/ftplugin/gitcommit_textwidth.vimpara que se aplique automáticamente a los mensajes de confirmación de Git.

Alternativa

Para evitar la duplicación del patrón, miComplemento OnSyntaxChangele permite configurar :autocmdmensajes de correo electrónico que reaccionan a los cambios en el grupo de sintaxis subyacente. Básicamente funciona como la solución anterior, pero en un nivel mucho más elaborado.

call OnSyntaxChange#Install('AutoPublish', '^autoPublishLine$', 1, 'a')
autocmd User SyntaxAutoPublishEnterA setlocal textwidth=0
autocmd User SyntaxAutoPublishLeaveA setlocal textwidth=75

información relacionada