From: Basil L. Contovounesios Date: Mon, 20 May 2019 14:53:49 +0000 (+0100) Subject: Improve C and Elisp Git diff hunk headers X-Git-Tag: emacs-27.0.90~2805^2~24 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=d3a0ddedba53b9e2c99274c8ec125d53f991da5d;p=emacs.git 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. --- 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 .*)'