52 lines
1.4 KiB
Text
52 lines
1.4 KiB
Text
|
;;;;;
|
||
|
title: Some quick git diff tips
|
||
|
tags: org-mode, lisp, config, git
|
||
|
date: 2013-08-11 00:54
|
||
|
format: md
|
||
|
;;;;;
|
||
|
|
||
|
A couple of quick tips. As you possibly know you can specify some
|
||
|
options to be used for diffs (and other things) per file type. The one
|
||
|
I'm interested in is the function name.
|
||
|
|
||
|
## For org-mode
|
||
|
|
||
|
The primary way of identifying which part of an org-mode document a
|
||
|
change occurs in seems to me to be the heading. So, in your
|
||
|
`$HOME/.gitconfig` put:
|
||
|
|
||
|
[diff "org"]
|
||
|
xfuncname = "^\\*+.*"
|
||
|
|
||
|
Which should show any lines starting with one or more `*` characters.
|
||
|
And then in `$XDG_CONFIG_HOME/git/attributes` or
|
||
|
`$HOME/.config/git/attributes` put:
|
||
|
|
||
|
,*.org diff=org
|
||
|
|
||
|
## For lisp and lisp-like langauges
|
||
|
|
||
|
For anything that resembles lisp (so Common Lisp, Emacs Lisp, Hy,
|
||
|
scheme, etc.) I would think that the easiest thing to do is just see
|
||
|
the closes top-level form. So, in your `$HOME/.gitconfig` put:
|
||
|
|
||
|
[diff "lisp"]
|
||
|
xfuncname = "^\\([^ ]+ [^ ]+"
|
||
|
|
||
|
Which should show the opening parenthesis and the first two words. For
|
||
|
example:
|
||
|
|
||
|
(defun some-function-name
|
||
|
(defclass my-awesome-class
|
||
|
(define-route this-strange-route
|
||
|
|
||
|
And then put in your `$XDG_CONFIG_HOME/git/attributes` or
|
||
|
`$HOME/.config/git/attributes`:
|
||
|
|
||
|
,*.lisp diff=lisp
|
||
|
,*.el diff=lisp
|
||
|
,*.hy diff=lisp
|
||
|
,*.scm diff=lisp
|
||
|
|
||
|
And possibly any other lisp-like language files you can think of.
|