Como posso desabilitar a largura de texto do vim para linhas específicas?

4

Eu tenho textwidth definido para 80 caracteres e configuro 75 caracteres para gitcommit arquivos.

O problema é 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 é desativar a largura de texto desta última linha. Esta última linha sempre começará com "(patch)", "(menor)" ou "(major)" (para autopublishing semver).

Eu tenho atualmente para que essa linha de metadados seja destacada, usando o seguinte no 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ém desconfigurar a largura de texto dessa linha, para que ela não envolva palavras para essa linha.

Alguma idéia de como eu poderia fazer isso?

    
por jwir3 11.10.2017 / 20:26

1 resposta

3

Como um hack rápido, você pode adaptar o valor 'textwidth' sempre que o cursor se mover:

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

Você pode colocar esse comando em ~/.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, meu plug-in OnSyntaxChange permite que você configure :autocmd s que reagem a mudanças 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
    
por 12.10.2017 / 13:41