git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Phillip Wood <phillip.wood@talktalk.net>
To: Taylor Blau <me@ttaylorr.com>, git@vger.kernel.org
Cc: avarab@gmail.com, gitster@pobox.com, l.s.r@web.de,
	martin.agren@gmail.com, pclouds@gmail.com, peff@peff.net,
	sunshine@sunshineco.com
Subject: Re: [PATCH v5 5/7] builtin/grep.c: add '--column' option to 'git-grep(1)'
Date: Wed, 9 May 2018 11:41:02 +0100	[thread overview]
Message-ID: <882bdfe8-6caa-dd9c-7752-ee4884f135f9@talktalk.net> (raw)
In-Reply-To: <9222f0ee470884a984c1174cf218dece43f77f87.1525831201.git.me@ttaylorr.com>

Hi Taylor

On 09/05/18 03:13, Taylor Blau wrote:
> Teach 'git-grep(1)' a new option, '--column', to show the column
> number of the first match on a non-context line. This makes it possible
> to teach 'contrib/git-jump/git-jump' how to seek to the first matching
> position of a grep match in your editor, and allows similar additional
> scripting capabilities.
> 
> For example:
> 
>    $ git grep -n --column foo | head -n3
>    .clang-format:51:14:# myFunction(foo, bar, baz);
>    .clang-format:64:7:# int foo();
>    .clang-format:75:8:# void foo()
> 
> Signed-off-by: Taylor Blau <me@ttaylorr.com>
> ---
>   Documentation/git-grep.txt |  6 +++++-
>   builtin/grep.c             |  4 ++++
>   grep.c                     |  3 +++
>   t/t7810-grep.sh            | 32 ++++++++++++++++++++++++++++++++
>   4 files changed, 44 insertions(+), 1 deletion(-)
> 
> diff --git a/Documentation/git-grep.txt b/Documentation/git-grep.txt
> index 18b494731f..75f1561112 100644
> --- a/Documentation/git-grep.txt
> +++ b/Documentation/git-grep.txt
> @@ -13,7 +13,7 @@ SYNOPSIS
>   	   [-v | --invert-match] [-h|-H] [--full-name]
>   	   [-E | --extended-regexp] [-G | --basic-regexp]
>   	   [-P | --perl-regexp]
> -	   [-F | --fixed-strings] [-n | --line-number]
> +	   [-F | --fixed-strings] [-n | --line-number] [--column]
>   	   [-l | --files-with-matches] [-L | --files-without-match]
>   	   [(-O | --open-files-in-pager) [<pager>]]
>   	   [-z | --null]
> @@ -169,6 +169,10 @@ providing this option will cause it to die.
>   --line-number::
>   	Prefix the line number to matching lines.
>   
> +--column::
> +	Prefix the 1-indexed byte-offset of the first match on non-context lines. This
> +	option is incompatible with '--invert-match', and extended expressions.
> +

Sorry to be fussy, but while this is clearer I think to could be 
improved to make it clear that it is the offset from the start of the 
matching line. Also the mention of 'extended expressions' made me think 
of 'grep -E' but I think (correct me if I'm wrong) you mean the boolean 
options '--and', '--not' and '--or'. The man page only uses the word 
extended when talking about extended regexes. I think something like

Print the 1-indexed byte-offset of the first match from the start of the 
matching line. This option is incompatible with '--invert-match', 
'--and', '--not' and '--or'.

would be clearer

Best Wishes

Phillip


>   -l::
>   --files-with-matches::
>   --name-only::
> diff --git a/builtin/grep.c b/builtin/grep.c
> index 5f32d2ce84..f9f516dfc4 100644
> --- a/builtin/grep.c
> +++ b/builtin/grep.c
> @@ -829,6 +829,7 @@ int cmd_grep(int argc, const char **argv, const char *prefix)
>   			    GREP_PATTERN_TYPE_PCRE),
>   		OPT_GROUP(""),
>   		OPT_BOOL('n', "line-number", &opt.linenum, N_("show line numbers")),
> +		OPT_BOOL(0, "column", &opt.columnnum, N_("show column number of first match")),
>   		OPT_NEGBIT('h', NULL, &opt.pathname, N_("don't show filenames"), 1),
>   		OPT_BIT('H', NULL, &opt.pathname, N_("show filenames"), 1),
>   		OPT_NEGBIT(0, "full-name", &opt.relative,
> @@ -1111,6 +1112,9 @@ int cmd_grep(int argc, const char **argv, const char *prefix)
>   		hit = grep_objects(&opt, &pathspec, the_repository, &list);
>   	}
>   
> +	if (opt.columnnum && opt.invert)
> +		die(_("--column and --invert-match cannot be combined"));
> +
>   	if (num_threads)
>   		hit |= wait_all();
>   	if (hit && show_in_pager)
> diff --git a/grep.c b/grep.c
> index f3fe416791..f4228c23ac 100644
> --- a/grep.c
> +++ b/grep.c
> @@ -995,6 +995,9 @@ static void compile_grep_patterns_real(struct grep_opt *opt)
>   	else if (!opt->extended && !opt->debug)
>   		return;
>   
> +	if (opt->columnnum && opt->extended)
> +		die(_("--column and extended expressions cannot be combined"));
> +
>   	p = opt->pattern_list;
>   	if (p)
>   		opt->pattern_expression = compile_pattern_expr(&p);
> diff --git a/t/t7810-grep.sh b/t/t7810-grep.sh
> index 1797f632a3..aa56b21ed9 100755
> --- a/t/t7810-grep.sh
> +++ b/t/t7810-grep.sh
> @@ -99,6 +99,28 @@ do
>   		test_cmp expected actual
>   	'
>   
> +	test_expect_success "grep -w $L (with --column)" '
> +		{
> +			echo ${HC}file:5:foo mmap bar
> +			echo ${HC}file:14:foo_mmap bar mmap
> +			echo ${HC}file:5:foo mmap bar_mmap
> +			echo ${HC}file:14:foo_mmap bar mmap baz
> +		} >expected &&
> +		git grep --column -w -e mmap $H >actual &&
> +		test_cmp expected actual
> +	'
> +
> +	test_expect_success "grep -w $L (with --line-number, --column)" '
> +		{
> +			echo ${HC}file:1:5:foo mmap bar
> +			echo ${HC}file:3:14:foo_mmap bar mmap
> +			echo ${HC}file:4:5:foo mmap bar_mmap
> +			echo ${HC}file:5:14:foo_mmap bar mmap baz
> +		} >expected &&
> +		git grep -n --column -w -e mmap $H >actual &&
> +		test_cmp expected actual
> +	'
> +
>   	test_expect_success "grep -w $L" '
>   		{
>   			echo ${HC}file:1:foo mmap bar
> @@ -1590,4 +1612,14 @@ test_expect_success 'grep does not report i-t-a and assume unchanged with -L' '
>   	test_cmp expected actual
>   '
>   
> +test_expect_success 'grep does not allow --column, --invert-match' '
> +	test_must_fail git grep --column --invert-match pat 2>err &&
> +	test_i18ngrep "\-\-column and \-\-invert-match cannot be combined" err
> +'
> +
> +test_expect_success 'grep does not allow --column, extended' '
> +	test_must_fail git grep --column --not -e pat 2>err &&
> +	test_i18ngrep "\-\-column and extended expressions cannot be combined" err
> +'
> +
>   test_done
> 


  reply	other threads:[~2018-05-09 10:41 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 [this message]
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
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

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

  git send-email \
    --in-reply-to=882bdfe8-6caa-dd9c-7752-ee4884f135f9@talktalk.net \
    --to=phillip.wood@talktalk.net \
    --cc=avarab@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --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.
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).