![Como posso desativar a largura de texto do vim para linhas específicas?](https://rvso.com/image/1543340/Como%20posso%20desativar%20a%20largura%20de%20texto%20do%20vim%20para%20linhas%20espec%C3%ADficas%3F.png)
Eu textwidth
configurei para 80 caracteres e 75 caracteres para gitcommit
arquivos.
Acontece que os commits do git na minha empresa sempre têm uma última linha que indica alguns metadados sobre o commit (seja para aumentar o número da versão, o ticket associado, etc...). O que eu gostaria de fazer é desligar a largura do texto desta última linha. Esta última linha sempre começará com "(patch)", "(minor)" ou "(major)" (para publicação automática semver).
Atualmente tenho isso para que esta linha de metadados fique destacada, usando o seguinte em meu arquivo de sintaxe:
syn match autoPublishLine "^\((patch)\|(minor)\|(major)\).*"
hi def link autoPublishLine Special
Isso funciona como eu esperava, mas o que eu realmente gostaria de fazer étambémdesmarque a largura do texto para esta linha, para que não envolva palavras nesta linha.
Alguma ideia de como posso fazer isso?
Responder1
Como um truque rápido, você pode adaptar o 'textwidth'
valor sempre que o cursor se mover:
:autocmd CursorMoved,CursorMovedI <buffer> let &l:textwidth = (getline('.') =~# '^\((patch)\|(minor)\|(major)\)' ? 0 : 75)
Você pode colocar esse comando ~/.vim/ftplugin/gitcommit_textwidth.vim
para que ele se aplique automaticamente às mensagens de commit do Git.
Alternativa
Para evitar a duplicação do padrão, meuPlug-in OnSyntaxChangepermite configurar :autocmd
s que reagem a alterações no grupo de sintaxe subjacente. Basicamente funciona como a solução acima, mas em um nível muito mais elaborado.
call OnSyntaxChange#Install('AutoPublish', '^autoPublishLine$', 1, 'a')
autocmd User SyntaxAutoPublishEnterA setlocal textwidth=0
autocmd User SyntaxAutoPublishLeaveA setlocal textwidth=75