summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBasil L. Contovounesios <contovob@tcd.ie>2019-05-20 15:53:49 +0100
committerBasil L. Contovounesios <contovob@tcd.ie>2019-05-20 16:02:11 +0100
commitd3a0ddedba53b9e2c99274c8ec125d53f991da5d (patch)
tree4f4621b66c8c905b71c25dc9dbcdb1fd4025c8cc
parent4498e5a13a3b63a3024ceef102ae3b5c50f58be1 (diff)
downloademacs-d3a0ddedba53b9e2c99274c8ec125d53f991da5d.tar.gz
Improve C and Elisp Git diff hunk headers
For discussion, see the following threads: https://lists.gnu.org/archive/html/emacs-devel/2019-03/msg00457.html https://lists.gnu.org/archive/html/emacs-devel/2019-05/msg00369.html * autogen.sh: Extend the built-in Git xfuncname pattern 'cpp' to match preprocessor and DEFUN macros, and the 'elisp' pattern to match cl-lib and other top-level defuns.
-rwxr-xr-xautogen.sh10
1 files changed, 9 insertions, 1 deletions
diff --git a/autogen.sh b/autogen.sh
index f390b1a777c..d0f60dc68af 100755
--- a/autogen.sh
+++ b/autogen.sh
@@ -315,8 +315,16 @@ git_config transfer.fsckObjects true
# Configure 'git diff' hunk header format.
+# This xfuncname is based on Git's built-in 'cpp' pattern.
+# The first line rejects jump targets and access declarations.
+# The second line matches top-level functions and methods.
+# The third line matches preprocessor and DEFUN macros.
+git_config diff.cpp.xfuncname \
+'!^[ \t]*[A-Za-z_][A-Za-z_0-9]*:[[:space:]]*($|/[/*])
+^((::[[:space:]]*)?[A-Za-z_][A-Za-z_0-9]*[[:space:]]*\(.*)$
+^((#define[[:space:]]|DEFUN).*)$'
git_config diff.elisp.xfuncname \
- '^\(def[^[:space:]]+[[:space:]]+([^()[:space:]]+)'
+ '^\([^[:space:]]*def[^[:space:]]+[[:space:]]+([^()[:space:]]+)'
git_config 'diff.m4.xfuncname' '^((m4_)?define|A._DEFUN(_ONCE)?)\([^),]*'
git_config 'diff.make.xfuncname' \
'^([$.[:alnum:]_].*:|[[:alnum:]_]+[[:space:]]*([*:+]?[:?]?|!?)=|define .*)'