Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

vim syntax highlighting for git commit messages - custom commentchar

As mentioned in this answer, since Git 1.8.2 you can use core.commentchar config value to change commit message comments to something else than the default # (hashmark or hashsign).

That is a life-saver e.g. if your commit message policy wants you to start commit message with ticket number:

#123 Fixed array indices

Sad part is that this breaks Vim syntax highlighting.

How can you bring the beauty back?

like image 257
Alois Mahdal Avatar asked Apr 23 '13 08:04

Alois Mahdal


People also ask

Can I use Markdown in commit messages?

Use Markdown to format your text. Some tools like GitHub will render Markdown when showing commit messages. Use asterisks bullets when you need to explain a long list of changes. The commit message should be clear on its own.

How do I edit all commit messages?

On the command line, navigate to the repository that contains the commit you want to amend. Type git commit --amend and press Enter. In your text editor, edit the commit message, and save the commit.


1 Answers

You should try to run :verbose syntax. The active syntax file is probably $VIMRUNTIME\syntax\gitcommit.vim (github version which is likely in your .vim).

It will tell you which syntax line will trigger the formatting as comment.

You'll probably see something like :

 gitcommitComment xxx match /^#.*/
     links to Comment

or

 syn match   gitcommitComment   "^#.*"

meaning it matches every line starting by #.

You might be able to modify it so that a # on the first line is not considered as a comment. I don't know syntax format enough to give you a full solution.

 \%^   match the beginning of file
 \%1l  match line 1
 \%>1l match below line 1

So you might try to modify the gitComment pattern so that it does not work on line 1 of your git commit.

(I tried some things but did not manage to only exclude first line of comment ! It seems there is also a diffComment messing things up because gitcommit includes diff format with syn include @gitcommitDiff syntax/diff.vim) )

For more details, see :help syntax and :help pattern.

Another good resource on syntax highligthing : Learn Vim the Hard Way, chapter 46.

like image 102
Xavier T. Avatar answered Oct 05 '22 01:10

Xavier T.