git-commit-vandalism/t/t4018
Atharva Raykar a437390310 userdiff: add support for Scheme
Add a diff driver for Scheme-like languages which recognizes top level
and local `define` forms, whether it is a function definition, binding,
syntax definition or a user-defined `define-xyzzy` form.

Also supports R6RS `library` forms, `module` forms along with class and
struct declarations used in Racket (PLT Scheme).

Alternate "def" syntax such as those in Gerbil Scheme are also
supported, like defstruct, defsyntax and so on.

The rationale for picking `define` forms for the hunk headers is because
it is usually the only significant form for defining the structure of
the program, and it is a common pattern for schemers to have local
function definitions to hide their visibility, so it is not only the top
level `define`'s that are of interest. Schemers also extend the language
with macros to provide their own define forms (for example, something
like a `define-test-suite`) which is also captured in the hunk header.

Since it is common practice to extend syntax with variants of a form
like `module+`, `class*` etc, those have been supported as well.

The word regex is a best-effort attempt to conform to R7RS[1] valid
identifiers, symbols and numbers.

[1] https://small.r7rs.org/attachment/r7rs.pdf (section 2.1)

Signed-off-by: Atharva Raykar <raykar.ath@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2021-04-08 13:56:09 -07:00
..
bash-arithmetic-function userdiff: support Bash 2020-10-22 10:29:30 -07:00
bash-bashism-style-compact userdiff: support Bash 2020-10-22 10:29:30 -07:00
bash-bashism-style-function userdiff: support Bash 2020-10-22 10:29:30 -07:00
bash-bashism-style-whitespace userdiff: support Bash 2020-10-22 10:29:30 -07:00
bash-conditional-function userdiff: support Bash 2020-10-22 10:29:30 -07:00
bash-missing-parentheses userdiff: support Bash 2020-10-22 10:29:30 -07:00
bash-mixed-style-compact userdiff: support Bash 2020-10-22 10:29:30 -07:00
bash-mixed-style-function userdiff: support Bash 2020-10-22 10:29:30 -07:00
bash-nested-functions userdiff: support Bash 2020-10-22 10:29:30 -07:00
bash-other-characters userdiff: support Bash 2020-10-22 10:29:30 -07:00
bash-posix-style-compact userdiff: support Bash 2020-10-22 10:29:30 -07:00
bash-posix-style-function userdiff: support Bash 2020-10-22 10:29:30 -07:00
bash-posix-style-whitespace userdiff: support Bash 2020-10-22 10:29:30 -07:00
bash-subshell-function userdiff: support Bash 2020-10-22 10:29:30 -07:00
bash-trailing-comment userdiff: support Bash 2020-10-22 10:29:30 -07:00
cpp-c++-function
cpp-class-constructor
cpp-class-constructor-mem-init
cpp-class-definition
cpp-class-definition-derived
cpp-class-destructor
cpp-function-returning-global-type
cpp-function-returning-nested
cpp-function-returning-pointer
cpp-function-returning-reference
cpp-gnu-style-function
cpp-namespace-definition
cpp-operator-definition
cpp-skip-access-specifiers
cpp-skip-comment-block
cpp-skip-labels
cpp-struct-definition
cpp-struct-single-line
cpp-template-function-definition
cpp-union-definition
cpp-void-c-function
css-attribute-value-selector userdiff: expand detected chunk headers for css 2020-10-08 10:21:11 -07:00
css-block-level-@-statements userdiff: expand detected chunk headers for css 2020-10-08 10:21:11 -07:00
css-brace-in-col-1
css-class-selector userdiff: expand detected chunk headers for css 2020-10-08 10:21:11 -07:00
css-colon-eol
css-colon-selector
css-common userdiff: add built-in pattern for CSS 2016-06-03 14:45:56 -07:00
css-id-selector userdiff: expand detected chunk headers for css 2020-10-08 10:21:11 -07:00
css-long-selector-list
css-prop-sans-indent
css-root-selector userdiff: expand detected chunk headers for css 2020-10-08 10:21:11 -07:00
css-short-selector-list
css-trailing-space
custom1-pattern
custom2-match-to-end-of-line
custom3-alternation-in-pattern
dts-labels userdiff: add a builtin pattern for dts files 2019-08-21 15:09:34 -07:00
dts-node-unitless userdiff: add a builtin pattern for dts files 2019-08-21 15:09:34 -07:00
dts-nodes userdiff: add a builtin pattern for dts files 2019-08-21 15:09:34 -07:00
dts-nodes-boolean-prop userdiff: fix some corner cases in dts regex 2019-10-21 17:44:12 +09:00
dts-nodes-comment1 userdiff: add a builtin pattern for dts files 2019-08-21 15:09:34 -07:00
dts-nodes-comment2 userdiff: add a builtin pattern for dts files 2019-08-21 15:09:34 -07:00
dts-nodes-multiline-prop userdiff: fix some corner cases in dts regex 2019-10-21 17:44:12 +09:00
dts-reference userdiff: add a builtin pattern for dts files 2019-08-21 15:09:34 -07:00
dts-root userdiff: fix some corner cases in dts regex 2019-10-21 17:44:12 +09:00
dts-root-comment userdiff: fix some corner cases in dts regex 2019-10-21 17:44:12 +09:00
elixir-do-not-pick-end userdiff: add Elixir to supported userdiff languages 2019-11-10 15:26:26 +09:00
elixir-ex-unit-test userdiff: add Elixir to supported userdiff languages 2019-11-10 15:26:26 +09:00
elixir-function userdiff: add Elixir to supported userdiff languages 2019-11-10 15:26:26 +09:00
elixir-macro userdiff: add Elixir to supported userdiff languages 2019-11-10 15:26:26 +09:00
elixir-module userdiff: add Elixir to supported userdiff languages 2019-11-10 15:26:26 +09:00
elixir-module-func userdiff: add Elixir to supported userdiff languages 2019-11-10 15:26:26 +09:00
elixir-nested-module userdiff: add Elixir to supported userdiff languages 2019-11-10 15:26:26 +09:00
elixir-private-function userdiff: add Elixir to supported userdiff languages 2019-11-10 15:26:26 +09:00
elixir-protocol userdiff: add Elixir to supported userdiff languages 2019-11-10 15:26:26 +09:00
elixir-protocol-implementation userdiff: add Elixir to supported userdiff languages 2019-11-10 15:26:26 +09:00
fortran-block-data userdiff: add tests for Fortran xfuncname regex 2020-08-13 11:21:17 -07:00
fortran-comment userdiff: add tests for Fortran xfuncname regex 2020-08-13 11:21:17 -07:00
fortran-comment-keyword userdiff: improve Fortran xfuncname regex 2020-08-13 11:21:18 -07:00
fortran-comment-legacy userdiff: add tests for Fortran xfuncname regex 2020-08-13 11:21:17 -07:00
fortran-comment-legacy-star userdiff: add tests for Fortran xfuncname regex 2020-08-13 11:21:17 -07:00
fortran-external-function userdiff: add tests for Fortran xfuncname regex 2020-08-13 11:21:17 -07:00
fortran-external-subroutine userdiff: add tests for Fortran xfuncname regex 2020-08-13 11:21:17 -07:00
fortran-module userdiff: add tests for Fortran xfuncname regex 2020-08-13 11:21:17 -07:00
fortran-module-procedure userdiff: add tests for Fortran xfuncname regex 2020-08-13 11:21:17 -07:00
fortran-program userdiff: add tests for Fortran xfuncname regex 2020-08-13 11:21:17 -07:00
fountain-scene
golang-complex-function
golang-func
golang-interface
golang-long-func
golang-struct
java-class-member-function
markdown-heading-indented userdiff: support Markdown 2020-05-02 18:04:12 -07:00
markdown-heading-non-headings userdiff: support Markdown 2020-05-02 18:04:12 -07:00
matlab-class-definition
matlab-function
matlab-octave-section-1
matlab-octave-section-2
matlab-section
perl-skip-end-of-heredoc
perl-skip-forward-decl
perl-skip-sub-in-pod
perl-sub-definition
perl-sub-definition-kr-brace
php-abstract-class
php-abstract-method userdiff: PHP: catch "abstract" and "final" functions 2020-10-07 08:45:43 -07:00
php-class
php-final-class
php-final-method userdiff: PHP: catch "abstract" and "final" functions 2020-10-07 08:45:43 -07:00
php-function
php-interface
php-method
php-trait
python-async-def userdiff: support Python async functions 2019-11-20 16:31:43 +09:00
python-class userdiff: support Python async functions 2019-11-20 16:31:43 +09:00
python-def userdiff: support Python async functions 2019-11-20 16:31:43 +09:00
python-indented-async-def userdiff: support Python async functions 2019-11-20 16:31:43 +09:00
python-indented-class userdiff: support Python async functions 2019-11-20 16:31:43 +09:00
python-indented-def userdiff: support Python async functions 2019-11-20 16:31:43 +09:00
README
rust-fn
rust-impl
rust-macro-rules userdiff: recognize 'macro_rules!' as starting a Rust function block 2020-10-07 08:48:20 -07:00
rust-struct
rust-trait
scheme-class userdiff: add support for Scheme 2021-04-08 13:56:09 -07:00
scheme-def userdiff: add support for Scheme 2021-04-08 13:56:09 -07:00
scheme-def-variant userdiff: add support for Scheme 2021-04-08 13:56:09 -07:00
scheme-define-slash-public userdiff: add support for Scheme 2021-04-08 13:56:09 -07:00
scheme-define-syntax userdiff: add support for Scheme 2021-04-08 13:56:09 -07:00
scheme-define-variant userdiff: add support for Scheme 2021-04-08 13:56:09 -07:00
scheme-library userdiff: add support for Scheme 2021-04-08 13:56:09 -07:00
scheme-local-define userdiff: add support for Scheme 2021-04-08 13:56:09 -07:00
scheme-module userdiff: add support for Scheme 2021-04-08 13:56:09 -07:00
scheme-top-level-define userdiff: add support for Scheme 2021-04-08 13:56:09 -07:00
scheme-user-defined-define userdiff: add support for Scheme 2021-04-08 13:56:09 -07:00

How to write RIGHT test cases
=============================

Insert the word "ChangeMe" (exactly this form) at a distance of
at least two lines from the line that must appear in the hunk header.

The text that must appear in the hunk header must contain the word
"right", but in all upper-case, like in the title above.

To mark a test case that highlights a malfunction, insert the word
BROKEN in all lower-case somewhere in the file.

This text is a bit twisted and out of order, but it is itself a
test case for the default hunk header pattern. Know what you are doing
if you change it.

BTW, this tests that the head line goes to the hunk header, not the line
of equal signs.