From: Atharva Raykar <raykar.ath@gmail.com>
To: Phillip Wood <phillip.wood123@gmail.com>
Cc: git@vger.kernel.org
Subject: Re: [GSoC][PATCH v2 1/1] userdiff: add support for scheme
Date: Tue, 6 Apr 2021 16:02:54 +0530 [thread overview]
Message-ID: <86EBA5B6-2DAE-4D4C-BCCD-46279595FA75@gmail.com> (raw)
In-Reply-To: <4a9bdf0c-dc0f-a0fa-5c13-2b4732d21ca8@gmail.com>
On 05-Apr-2021, at 15:51, Phillip Wood <phillip.wood123@gmail.com> wrote:
>
> Hi Atharva
> On 03/04/2021 14:16, Atharva Raykar wrote:
>> 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 R6RS[1] valid
>> identifiers, symbols and numbers.
>> [1] http://www.r6rs.org/final/html/r6rs/r6rs-Z-H-7.html#node_chap_4
>> Signed-off-by: Atharva Raykar <raykar.ath@gmail.com>
>> [...]
>> diff --git a/userdiff.c b/userdiff.c
>> index 3f81a2261c..ac1999bbc5 100644
>> --- a/userdiff.c
>> +++ b/userdiff.c
>> @@ -191,6 +191,10 @@ PATTERNS("rust",
>> "[a-zA-Z_][a-zA-Z0-9_]*"
>> "|[0-9][0-9_a-fA-Fiosuxz]*(\\.([0-9]*[eE][+-]?)?[0-9_fF]*)?"
>> "|[-+*\\/<>%&^|=!:]=|<<=?|>>=?|&&|\\|\\||->|=>|\\.{2}=|\\.{3}|::"),
>> +PATTERNS("scheme",
>> + "^[\t ]*(\\(((define|def(struct|syntax|class|method|rules|record|proto|alias)?)[-*/ \t]|(library|module|struct|class)[*+ \t]).*)$",
>> + /* All words should be delimited by spaces or parentheses */
>> + "([^][)(}{[ \t])+"),
>
> I think it would be nice to match single '(' and '[' to highlight when they have been added or deleted - I find this useful when I get a syntax error. Also it would be nice to handle r7rs identifiers like | this is a symbol |. Maybe something like
> "(\\|([^\\\\|]*(\\\\|)*)*\\||[^][}{)( \t]|[][(){}])"
My patch seems to detect additions and removals of singular parentheses
already -- I am not sure why it works, but my suspicion is that the
userdiff code seems to fall back to some default rules for additions and
removals that do not match the current word regex? Either way that seems
to work.
As for the R7RS identifiers, I can definitely add that, thanks for
pointing that out!
> Best Wishes
>
> Phillip
>
>> PATTERNS("bibtex", "(@[a-zA-Z]{1,}[ \t]*\\{{0,1}[ \t]*[^ \t\"@',\\#}{~%]*).*$",
>> "[={}\"]|[^={}\" \t]+"),
>> PATTERNS("tex", "^(\\\\((sub)*section|chapter|part)\\*{0,1}\\{.*)$",
next prev parent reply other threads:[~2021-04-06 10:33 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-03-27 17:39 [GSOC][PATCH] userdiff: add support for Scheme Atharva Raykar
2021-03-27 22:50 ` Junio C Hamano
2021-03-27 23:09 ` Junio C Hamano
2021-03-28 3:16 ` Ævar Arnfjörð Bjarmason
2021-03-28 5:37 ` Junio C Hamano
2021-03-28 12:40 ` Atharva Raykar
2021-03-29 10:08 ` Phillip Wood
2021-03-30 6:41 ` Atharva Raykar
2021-03-30 12:56 ` Ævar Arnfjörð Bjarmason
2021-03-30 13:48 ` Atharva Raykar
2021-03-28 12:45 ` Atharva Raykar
2021-03-28 11:51 ` Atharva Raykar
2021-03-28 18:06 ` Junio C Hamano
2021-03-29 8:12 ` Atharva Raykar
2021-03-29 20:47 ` Junio C Hamano
2021-03-29 10:12 ` Phillip Wood
2021-03-27 23:46 ` Johannes Sixt
2021-03-28 12:23 ` Atharva Raykar
2021-03-29 10:18 ` Phillip Wood
2021-03-29 10:48 ` Johannes Sixt
2021-03-29 13:12 ` Ævar Arnfjörð Bjarmason
2021-03-29 14:06 ` Phillip Wood
2021-03-30 7:04 ` Atharva Raykar
2021-03-30 10:22 ` Atharva Raykar
2021-04-05 10:04 ` Phillip Wood
2021-04-05 17:58 ` Johannes Sixt
2021-04-06 12:29 ` Atharva Raykar
2021-04-06 19:10 ` Phillip Wood
2021-04-03 13:16 ` [GSoC][PATCH v2 0/1] userdiff: add support for scheme Atharva Raykar
2021-04-03 13:16 ` [GSoC][PATCH v2 1/1] " Atharva Raykar
2021-04-05 10:21 ` Phillip Wood
2021-04-06 10:32 ` Atharva Raykar [this message]
2021-04-08 9:14 ` [GSoC][PATCH v3 0/1] " Atharva Raykar
2021-04-08 9:14 ` [GSoC][PATCH v3 1/1] userdiff: add support for Scheme Atharva Raykar
2021-04-12 23:04 ` Junio C Hamano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=86EBA5B6-2DAE-4D4C-BCCD-46279595FA75@gmail.com \
--to=raykar.ath@gmail.com \
--cc=git@vger.kernel.org \
--cc=phillip.wood123@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).