git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH] git grep -O -i: if the pager is 'less', pass the '-i' option

From
Jonathan Nieder <jrnieder@gmail.com>
Date
May 14, 2014, 18:26 UTC
Message-ID
<20140514182654.GA9218@google.com>
In-Reply-To
<xmqq7g5okztp.fsf@gitster.dls.corp.google.com>
Hi,
Junio C Hamano wrote:
> Stepan Kasal <kasal@ucw.cz> writes:
Show 13 quoted lines
>> --- a/builtin/grep.c
>> +++ b/builtin/grep.c
>> @@ -897,6 +897,9 @@ int cmd_grep(int argc, const char **argv, const char *prefix)
>>  		if (len > 4 && is_dir_sep(pager[len - 5]))
>>  			pager += len - 4;
>>  
>> +		if (opt.ignore_case && !strcmp("less", pager))
>> +			string_list_append(&path_list, "-i");
>
> I have a feeling that this goes against the recent trend of not
> mucking with the expectation of the users on their pagers, if I
> recall correctly the arguments for dropping S from the default given
> to an unconfigured LESS environment variable.
It's just missing an explanation.
When <command> happens to be the magic string "less", today
	git grep -O<command> -e<pattern>

helpfully passes +/<pattern> to less so you can navigate through the results within a file using the n and shift+n keystrokes.

Alas, that doesn't do the right thing for a case-insensitive match. For that case we should pass --IGNORE-CASE to "less" so that n and shift+n can move between results ignoring case in the pattern. (That's -I, not -i, because it ought to work even when the pattern contains capital letters.)

"git grep" has other options that affect interpretation of the pattern which this patch does not help with:

 * -v / --ignore-match: probably should disable this feature of -O.
 * -E / --extended-regexp
 * -P / --perl-regexp
 * -F / --fixed-strings: ideally would auto-escape regex specials.
 * -e<pattern1> --or -e<pattern2>

And git grep -Ovi has a similar bug, for which the fix is to add \c to the pattern instead of passing an -I option.

But as is, it's an improvement, so (except that "-i" should be replaced by "-I") it seems like a good change.

Hope that helps, Jonathan

-- 
-- 
*** Please reply-to-all at all times ***
*** (do not pretend to know who is subscribed and who is not) ***
*** Please avoid top-posting. ***
The msysGit Wiki is here: https://github.com/msysgit/msysgit/wiki - Github accounts are free.

You received this message because you are subscribed to the Google
Groups "msysGit" group.
To post to this group, send email to msysgit@googlegroups.com
To unsubscribe from this group, send email to
msysgit+unsubscribe@googlegroups.com
For more options, and view previous threads, visit this group at
http://groups.google.com/group/msysgit?hl=en_US?hl=en

--- 
You received this message because you are subscribed to the Google Groups "msysGit" group.
To unsubscribe from this group and stop receiving emails from it, send an email to msysgit+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Previous: Matthieu MoyNext: Junio C Hamano
Message 4 of 14 in “git grep -O -i: if the pager is 'less', pass the '-i' option”
  1. git grep -O -i: if the pager is 'less', pass the '-i' optionStepan Kasal, May 14, 2014
  2. Junio C HamanoMay 14, 2014
  3. Matthieu MoyMay 14, 2014
  4. Jonathan NiederMay 14, 2014
  5. Junio C HamanoMay 14, 2014
  6. Johannes SchindelinMay 15, 2014
  7. Jonathan NiederMay 15, 2014
  8. Johannes SchindelinMay 15, 2014
  9. Junio C HamanoMay 15, 2014
  10. Stepan KasalMay 14, 2014
  11. Jeff KingMay 14, 2014
  12. Johannes SchindelinMay 15, 2014
  13. Jonathan NiederMay 15, 2014
  14. Jeff KingMay 15, 2014

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.