-
Star
(113)
You must be signed in to star a gist -
Fork
(6)
You must be signed in to fork a gist
-
-
Save tekin/12500956bd56784728e490d8cef9cb81 to your computer and use it in GitHub Desktop.
| # Stick this in your home directory and point your Global Git config at it by running: | |
| # | |
| # $ git config --global core.attributesfile ~/.gitattributes | |
| # | |
| # See https://tekin.co.uk/2020/10/better-git-diff-output-for-ruby-python-elixir-and-more for more details | |
| *.c diff=cpp | |
| *.h diff=cpp | |
| *.c++ diff=cpp | |
| *.h++ diff=cpp | |
| *.cpp diff=cpp | |
| *.hpp diff=cpp | |
| *.cc diff=cpp | |
| *.hh diff=cpp | |
| *.m diff=objc | |
| *.mm diff=objc | |
| *.cs diff=csharp | |
| *.css diff=css | |
| *.html diff=html | |
| *.xhtml diff=html | |
| *.ex diff=elixir | |
| *.exs diff=elixir | |
| *.go diff=golang | |
| *.php diff=php | |
| *.pl diff=perl | |
| *.py diff=python | |
| *.md diff=markdown | |
| *.rb diff=ruby | |
| *.rake diff=ruby | |
| *.rs diff=rust | |
| *.lisp diff=lisp | |
| *.el diff=lisp |
| # Additional manually-configured matchers you may want to add to your .gitconfig | |
| [diff "rspec"] | |
| xfuncname = "^[ \t]*((RSpec|describe|context|it|before|after|around|feature|scenario|background)[ \t].*)$" | |
| [diff "swift"] | |
| xfuncname = ^[ \t]*((class|func)[ \t].*)$ |
Cheers @rickclare, updated now.
@dlinch yeah, as @DiegoSalazar points out, there is no pre-defined pattern for JavaScript built into Git. It is possible to define your own custom regular expression pattern though. See the docs on defining a custom hunk-header.
*.m diff=objc
*.mm diff=objc
This is awesome. Any thoughts on how you do this for an erb file ? should it be
*.erb diff=html
or
*.erb diff=erb
@Rafi993 There aren't any defined regex for ERb in the git source, so it's either HTML or nothing.
Thank you @citizen428
Edit:
I think you mentioned some other user by accident :)
This is great, thanks a lot! Super useful if you're using a less rich editor such as Vim and working mainly out of a terminal.
Thank you so much for this! I work with rspec and capybara a lot and found using the built-in ruby diff for spec files broke the hunk header entirely for them, so I wrote my own regex for specs based on the native ruby regex:
# .gitconfig
[diff "rspec"]
xfuncname = "^[ \t]*((RSpec|describe|context|it|before|after|around|feature|scenario|background)[ \t].*)$"You can then use "rspec" as a diff driver:
# .gitattributes
*.rb diff=ruby
*_spec.rb diff=rspec@jimryan that’s super cool, thanks for sharing!
@jimryan Might want to add around too. Thanks!
@zubin Good point! I've updated the snippet above. Thanks!
Thank you for a great tip.
I found this gist as well and comment here for additional info.
@dlinch there doesn't appear to be javascript support builtin. I only see java here: https://github.com/git/git/blob/master/userdiff.c#L78