git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Junio C Hamano <gitster@pobox.com>
To: Taylor Blau <me@ttaylorr.com>
Cc: "Martin Ågren" <martin.agren@gmail.com>,
	"Phillip Wood" <phillip.wood@dunelm.org.uk>,
	"Git Mailing List" <git@vger.kernel.org>,
	"Ævar Arnfjörð Bjarmason" <avarab@gmail.com>,
	"René Scharfe" <l.s.r@web.de>,
	"Nguyễn Thái Ngọc Duy" <pclouds@gmail.com>,
	"Jeff King" <peff@peff.net>,
	"Eric Sunshine" <sunshine@sunshineco.com>
Subject: Re: [PATCH v5 5/7] builtin/grep.c: add '--column' option to 'git-grep(1)'
Date: Fri, 18 May 2018 15:27:44 +0900	[thread overview]
Message-ID: <xmqqh8n54gwv.fsf@gitster-ct.c.googlers.com> (raw)
In-Reply-To: <20180518033817.GA61335@syl.local> (Taylor Blau's message of "Thu, 17 May 2018 20:38:17 -0700")

Taylor Blau <me@ttaylorr.com> writes:

>   * `git grep --and -e foo -e bar`. This binary operation should recur
>     on its sub-expressions and take the minimum of the starting offset
>     and the maximum of the ending offset.

We use infix notation, so the above is "git grep -e foo --and -e
bar" actually ;-).

But you raise an interesting point.  A line with "hello foo bar baz"
on it would match, so does a line with "goodbye bar baz foo", as
both of them hits pattern "foo" *and* pattern "bar".  It is not
quite clear what it means to "show the first hit on the line".  One
interpretation would be to take the minimum span that makes both
sides of "--and" happy (your "minimum of start, maximum of end").
Another might be to pick "foo" in the first and "bar" in the second
line, as that is the "first hit" on the line, which is consistent
with how "git grep -e foo" would say about "a foo b foo c foo" (I
expect that the leftmost "foo" would be the first hit).  So there
may be multiple, equally plausible answer to the question.

>     For inputs of the form "foobar" and "foo bar", it will do the right
>     thing (give the starting and ending offset for "foobar" and give no
>     match, respectively).

I think I agree with "foobar", but I do not understand why there is
no match for "foo bar".

>   * `git grep --or -e foo -e bar`. This is the most complicated case, in
>     my opinion. In going with the min/max idea in the and case above, I
>     think that `--or` should also min/max its sub-expressions, but in
>     fact we short-circuit evaluating the second sub-expression when we
>     find a match for the first.

I am not sure I follow.  "git grep -e foo --or -e bar" is just a
longhand for "git grep -e foo -e bar".  Shouldn't it highlight
whichever between foo and bar that appears leftmost on the line?

>     So, in cases like matching `--or -e foo -e bar` with "foo baz bar",
>     we'll do the right thing, since `foo` is the first sub-expression
>     and happens to be the left-most match. In other words, we __adhere
>     to our answer with the left-most match first__ semantics, but only
>     because __the first sub-expression is the left-most match__.
>
>     In the other case where we try and match the same expression against
>     "bar baz foo", we'll return the starting offset of "foo", even
>     though it isn't the left-most match, violating our semantics.

I am not sure why you think your min-starting/max-ending would lead
to such a conclusion.  'foo baz bar' would be covered in its
entirety, 'bar baz foo' would also, as starting of hits with pattern
'foo' and pattern 'bar' would be 'b' in 'bar' on that three-word
line, and ending of hits with these two patterns would be the last
'o' in 'foo' on the line.  

I'd expect that a line 'foo baz bar' matched against "-e foo --or -e
bar" would say "among three words on me, 'f' in foo is the first
location of the match", though.

  reply	other threads:[~2018-05-18  6:27 UTC|newest]

Thread overview: 108+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <cover.1524281843.git.me@ttaylorr.com>
2018-04-21  3:45 ` [PATCH 1/6] grep.c: take regmatch_t as argument in match_line() Taylor Blau
2018-04-22 20:47   ` [PATCH v2 0/6] Teach '--column-number' to 'git-grep(1)' Taylor Blau
2018-04-22 20:47     ` [PATCH v2 1/6] grep.c: take regmatch_t as argument in match_line() Taylor Blau
2018-04-22 23:14       ` Eric Sunshine
2018-04-22 23:30         ` Taylor Blau
2018-04-22 20:47     ` [PATCH v2 2/6] grep.c: take column number as argument to show_line() Taylor Blau
2018-04-23  0:16       ` Eric Sunshine
2018-04-23  1:17         ` Taylor Blau
2018-04-23  3:30           ` Eric Sunshine
2018-04-23  7:27             ` Ævar Arnfjörð Bjarmason
2018-04-23  7:34               ` Eric Sunshine
2018-04-24  4:27                 ` Taylor Blau
2018-04-23  8:01           ` Ævar Arnfjörð Bjarmason
2018-04-24  4:31             ` Taylor Blau
2018-04-24  6:13             ` Junio C Hamano
2018-04-24 18:34               ` Taylor Blau
2018-04-22 20:47     ` [PATCH v2 3/6] grep.[ch]: teach columnnum, color_columnno to grep_opt Taylor Blau
2018-04-22 21:42       ` Ævar Arnfjörð Bjarmason
2018-04-22 23:24         ` Taylor Blau
2018-04-23  0:21           ` Eric Sunshine
2018-04-23  1:11             ` Taylor Blau
2018-04-22 20:47     ` [PATCH v2 4/6] grep.c: display column number of first match Taylor Blau
2018-04-23  0:24       ` Eric Sunshine
2018-04-23  1:12         ` Taylor Blau
2018-04-22 20:47     ` [PATCH v2 5/6] builtin/grep.c: show column numbers via --column-number Taylor Blau
2018-04-22 21:48       ` Ævar Arnfjörð Bjarmason
2018-04-22 23:26         ` Taylor Blau
2018-04-23  0:32       ` Eric Sunshine
2018-04-23  1:14         ` Taylor Blau
2018-04-22 20:47     ` [PATCH v2 6/6] contrib/git-jump/git-jump: use column number when grep-ing Taylor Blau
2018-04-22 21:49       ` Ævar Arnfjörð Bjarmason
2018-04-22 23:27         ` Taylor Blau
2018-04-22 23:28     ` [PATCH v2 0/6] Teach '--column-number' to 'git-grep(1)' Junio C Hamano
2018-04-22 23:34       ` Taylor Blau
2018-04-23 13:46         ` Junio C Hamano
2018-04-24  5:07   ` [PATCH v3 0/7] " Taylor Blau
2018-04-24  5:07     ` [PATCH v3 1/7] Documentation/config.txt: camel-case lineNumber for consistency Taylor Blau
2018-04-24  5:07     ` [PATCH v3 2/7] grep.c: expose matched column in match_line() Taylor Blau
2018-04-24  5:07     ` [PATCH v3 3/7] grep.[ch]: extend grep_opt to allow showing matched column Taylor Blau
2018-04-24  5:07     ` [PATCH v3 4/7] grep.c: display column number of first match Taylor Blau
2018-04-24  5:42       ` Eric Sunshine
2018-04-24  5:07     ` [PATCH v3 5/7] builtin/grep.c: add '--column-number' option to 'git-grep(1)' Taylor Blau
2018-04-24  5:07     ` [PATCH v3 6/7] grep.c: add configuration variables to show matched option Taylor Blau
2018-04-24  5:07     ` [PATCH v3 7/7] contrib/git-jump/git-jump: jump to match column in addition to line Taylor Blau
2018-04-24  5:37       ` Eric Sunshine
2018-04-24 18:39         ` Taylor Blau
2018-05-05  2:42   ` [PATCH v4 0/7] Teach '--column' to 'git-grep(1)' Taylor Blau
2018-05-05  2:42     ` [PATCH v4 1/7] Documentation/config.txt: camel-case lineNumber for consistency Taylor Blau
2018-05-05  2:42     ` [PATCH v4 2/7] grep.c: expose matched column in match_line() Taylor Blau
2018-05-08  6:08       ` René Scharfe
2018-05-05  2:42     ` [PATCH v4 3/7] grep.[ch]: extend grep_opt to allow showing matched column Taylor Blau
2018-05-05  2:43     ` [PATCH v4 4/7] grep.c: display column number of first match Taylor Blau
2018-05-05  2:43     ` [PATCH v4 5/7] builtin/grep.c: add '--column' option to 'git-grep(1)' Taylor Blau
2018-05-05  6:15       ` Duy Nguyen
2018-05-07 23:38         ` Taylor Blau
2018-05-06 17:43       ` Phillip Wood
2018-05-06 17:56       ` Ævar Arnfjörð Bjarmason
2018-05-07 23:40         ` Taylor Blau
2018-05-07 14:13       ` Junio C Hamano
2018-05-08  0:08         ` Taylor Blau
2018-05-05  2:43     ` [PATCH v4 6/7] grep.c: add configuration variables to show matched option Taylor Blau
2018-05-05  2:43     ` [PATCH v4 7/7] contrib/git-jump/git-jump: jump to match column in addition to line Taylor Blau
2018-05-06 14:43       ` Martin Ågren
2018-05-06 18:03         ` Ævar Arnfjörð Bjarmason
2018-05-07 23:35           ` Taylor Blau
2018-05-09  2:13   ` [PATCH v5 0/7] Teach '--column' to 'git-grep(1)' Taylor Blau
2018-05-09  2:13     ` [PATCH v5 1/7] Documentation/config.txt: camel-case lineNumber for consistency Taylor Blau
2018-05-09  2:13     ` [PATCH v5 2/7] grep.c: expose matched column in match_line() Taylor Blau
2018-05-09  2:13     ` [PATCH v5 3/7] grep.[ch]: extend grep_opt to allow showing matched column Taylor Blau
2018-05-09  2:13     ` [PATCH v5 4/7] grep.c: display column number of first match Taylor Blau
2018-05-09  2:13     ` [PATCH v5 5/7] builtin/grep.c: add '--column' option to 'git-grep(1)' Taylor Blau
2018-05-09 10:41       ` Phillip Wood
2018-05-09 17:26         ` Martin Ågren
2018-05-09 23:52           ` Taylor Blau
2018-05-10  0:04             ` Junio C Hamano
2018-05-10  5:58               ` René Scharfe
2018-05-10  6:43                 ` Junio C Hamano
2018-05-12  3:27               ` Taylor Blau
2018-05-12  5:08                 ` Junio C Hamano
2018-05-12  5:19                   ` Taylor Blau
2018-05-12  6:07                     ` Junio C Hamano
2018-05-18  3:38                       ` Taylor Blau
2018-05-18  6:27                         ` Junio C Hamano [this message]
2018-05-18 21:50                           ` Taylor Blau
2018-05-19  4:44                             ` Taylor Blau
2018-05-09 23:49         ` Taylor Blau
2018-05-09 16:17       ` Duy Nguyen
2018-05-09 23:48         ` Taylor Blau
2018-05-09  2:13     ` [PATCH v5 6/7] grep.c: add configuration variables to show matched option Taylor Blau
2018-05-09  2:13     ` [PATCH v5 7/7] contrib/git-jump/git-jump: jump to match column in addition to line Taylor Blau
2018-05-12  3:10   ` [PATCH v6 0/7] Teach '--column' to 'git-grep(1)' Taylor Blau
2018-05-12  3:11     ` [PATCH v6 1/7] Documentation/config.txt: camel-case lineNumber for consistency Taylor Blau
2018-05-12  3:11     ` [PATCH v6 2/7] grep.c: expose matched column in match_line() Taylor Blau
2018-05-12  3:11     ` [PATCH v6 3/7] grep.[ch]: extend grep_opt to allow showing matched column Taylor Blau
2018-05-12  3:11     ` [PATCH v6 4/7] grep.c: display column number of first match Taylor Blau
2018-05-12  3:11     ` [PATCH v6 5/7] builtin/grep.c: add '--column' option to 'git-grep(1)' Taylor Blau
2018-05-12  3:11     ` [PATCH v6 6/7] grep.c: add configuration variables to show matched option Taylor Blau
2018-05-12  3:11     ` [PATCH v6 7/7] contrib/git-jump/git-jump: jump to match column in addition to line Taylor Blau
2018-04-21  3:45 ` [PATCH 2/6] grep.c: take column number as argument to show_line() Taylor Blau
2018-04-21  3:45 ` [PATCH 3/6] grep.[ch]: teach columnnum, color_columnno to grep_opt Taylor Blau
2018-04-21  8:32   ` Martin Ågren
2018-04-21  3:45 ` [PATCH 4/6] grep.c: display column number of first match Taylor Blau
2018-04-21  3:45 ` [PATCH 5/6] builtin/grep.c: show column numbers via --column-number Taylor Blau
2018-04-21  4:07   ` Junio C Hamano
2018-04-21  4:14     ` Junio C Hamano
2018-04-21  5:36       ` René Scharfe
2018-04-21  8:39   ` Martin Ågren
2018-04-21  3:45 ` [PATCH 6/6] contrib/git-jump/git-jump: use column number when grep-ing Taylor Blau

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

  List information: http://vger.kernel.org/majordomo-info.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=xmqqh8n54gwv.fsf@gitster-ct.c.googlers.com \
    --to=gitster@pobox.com \
    --cc=avarab@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=l.s.r@web.de \
    --cc=martin.agren@gmail.com \
    --cc=me@ttaylorr.com \
    --cc=pclouds@gmail.com \
    --cc=peff@peff.net \
    --cc=phillip.wood@dunelm.org.uk \
    --cc=sunshine@sunshineco.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.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

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 read-only IMAP folder(s) and NNTP newsgroup(s).