4

У меня есть textwidth 80 символов и 75 файлов для файлов gitcommit .

Дело в том, что у git коммитов в моей компании всегда есть последняя строка, которая указывает некоторые метаданные о коммите (будь то изменение номера версии, связанного билета и т.д.). Что я хотел бы сделать, это отключить текстовую полосу для этой последней строки. Эта последняя строка всегда будет начинаться с "(patch)", "(minor)" или "(major)" (для автоматической публикации).

В настоящее время у меня есть это, чтобы эта строка метаданных была выделена, используя следующее в моем файле синтаксиса:

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

Это работает так, как я ожидаю, но то, что я действительно хотел бы сделать, это также отключить текстовую ширину для этой строки, чтобы не переносить слова для этой одной строки.

Есть идеи, как мне это сделать?

1 ответ1

3

Для быстрого взлома вы можете адаптировать значение 'textwidth' всякий раз, когда курсор перемещается:

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

Вы можете поместить эту команду в ~/.vim/ftplugin/gitcommit_textwidth.vim чтобы она автоматически применялась к сообщениям фиксации Git.

альтернатива

Чтобы избежать дублирования шаблона, мой плагин OnSyntaxChange позволяет вам настроить :autocmd которые реагируют на изменения в основной группе синтаксиса. Это в основном работает как вышеупомянутое решение, но на гораздо более сложном уровне.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .