git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Johannes Schindelin <Johannes.Schindelin@gmx.de>
To: Junio C Hamano <gitster@pobox.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>, git@vger.kernel.org
Subject: Re: [PATCH 2/2] diff: add custom regular expressions for function names
Date: Thu, 5 Jul 2007 12:44:28 +0100 (BST)	[thread overview]
Message-ID: <Pine.LNX.4.64.0707051227380.9789@racer.site> (raw)
In-Reply-To: <7vwsxfe96i.fsf@assigned-by-dhcp.cox.net>

Hi,

On Wed, 4 Jul 2007, Junio C Hamano wrote:

> *NOTE IN BIG RED LETTERS*
> 
> I do not particularly like the way multiple regexps are used in
> Johannes's patch, but I left it as-is, as that part of the
> change is orthogonal from the support to use the gitattribute
> mechanism, and the primary reason I got involved in this topic
> is to give help around the latter area.

I do not like it particularly, either. Until two days ago, that POSIX 
regexps suck so much, in that they do not even have a look-ahead, let 
alone a negative look-ahead. _That_ is what I wanted.

Alas, that is the first valid argument I encounter that would speak _for_ 
pcre. It speaks volumes that _nobody_ pointed this out before, but all 
pcre fans put out bogus arguments.

> I think using multiple regexp is cute, but if we do that, it
> should allow people to pick from:
> 
> 	public class Beer
> 	{
> 		int special;
> 		public static void main(String args[])
>                 {
>                 	... modified part is here ...
> 
> with two regexp matches, say:
> 
> 	/^(public|private|protectd) class (.*)/ then
>         /^	+.* (\w*\(.*)$/
> 
> and define the hunk_header format as something like:
> 
> 	"\[1,2]::\[2,1]"
> 
> meaning, "pick the second capture group from the match data of
> the first regexp, followed by double-colon, and pick the first
> capture group from the match data of the second regexp", to
> result in "Beer::main(String args[])".  You should be able
> to pick "/package (\w+);/ then /^sub (\w+)/" in Perl code using
> the same idea.
> 
> I am not married to the syntax I used in the above examples,
> though.

Is that really necessary?

But yeah, it is possible. You'd have to have some state in the struct, and 
introduce yet another escape (probably in place of the first line of the 
regexp), similar to

	*[2,2]::[1,1]
	*keep-searching-after-match 1
	^	+.* (\w*\(.*)$
	^(public|private|protected) class (.*)

Of course, there _has_ to be a way to handle exceptions, such as in Perl, 
where you do not necessarily have a package, and thus do not want that 
silly "::" in front of the rest.

But frankly, I think this is too complicated. Maybe somebody more 
intelligent than me can actually come up with a sane syntax and 
implementation of this, but at some point I think it is Good Enough(tm). 
And IMHO it is already good enough matching just one line.

Ciao,
Dscho

      parent reply	other threads:[~2007-07-05 11:44 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-07-04 18:06 [PATCH 2/2] diff: add custom regular expressions for function names Johannes Schindelin
2007-07-04 18:41 ` Linus Torvalds
2007-07-04 18:45   ` Johannes Schindelin
2007-07-04 20:44   ` Junio C Hamano
2007-07-04 21:20     ` Johannes Schindelin
2007-07-05  5:00     ` Junio C Hamano
2007-07-05  5:02       ` [PATCH 1/2] Future-proof source for changes in xdemitconf_t Junio C Hamano
2007-07-05 11:01         ` Johannes Schindelin
2007-07-05  5:02       ` [PATCH 2/2] WIP per-path attribute based hunk header selection Junio C Hamano
2007-07-05 11:25         ` Johannes Schindelin
2007-07-05 16:43           ` Junio C Hamano
2007-07-06  8:37           ` [PATCH 1/3] Introduce diff_filespec_is_binary() Junio C Hamano
2007-07-06 12:20             ` Johannes Schindelin
2007-07-06  8:39           ` [PATCH] Per-path attribute based hunk header selection Junio C Hamano
2007-07-06 12:38             ` Johannes Schindelin
2007-07-06 17:59             ` Linus Torvalds
2007-07-07  2:00               ` Junio C Hamano
2007-07-07 10:08                 ` しらいしななこ
2007-07-07 10:22                   ` Junio C Hamano
2007-07-07 12:17                     ` Johannes Schindelin
2007-07-07 20:36                       ` Junio C Hamano
2007-07-08  7:23                       ` Junio C Hamano
2007-07-08 11:58                         ` Johannes Schindelin
2007-07-09  3:22                 ` Nicolas Pitre
2007-07-09  5:05                   ` Junio C Hamano
2007-07-09 11:40                     ` Johannes Schindelin
2007-07-07 10:12               ` [PATCH] Fix configuration syntax to specify customized hunk header patterns Junio C Hamano
2007-07-05  8:24       ` [PATCH 2/2] diff: add custom regular expressions for function names Florian Weimer
2007-07-05 11:44       ` Johannes Schindelin [this message]

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=Pine.LNX.4.64.0707051227380.9789@racer.site \
    --to=johannes.schindelin@gmx.de \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=torvalds@linux-foundation.org \
    /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).