GNU bug report logs -
#62426
[PATCH] eshell: Add 'rgrep' builtin.
Previous Next
Reported by: Antero Mejr <antero <at> mailbox.org>
Date: Fri, 24 Mar 2023 21:03:01 UTC
Severity: normal
Tags: patch
Done: Antero Mejr <antero <at> mailbox.org>
Bug is archived. No further changes may be made.
Full log
View this message in rfc822 format
On 3/30/2023 2:19 PM, Sean Whitton wrote:
>> Even without Pcomplete support, there's still a benefit to a command
>> like this though: you could use Eshell to pipe the results of 'M-x
>> rgrep' to some other command. Looking at the code for 'eshell-grep', I
>> don't think it'd be terribly difficult to support this case.
>
> Can you give a concrete use case? If you're piping won't you typically
> want to reuse your knowledge of traditional grep(1)? If I'm piping then
> I'm probably thinking in non-Emacs terms.
I'm somewhat biased (or maybe I've just thought about this too much?)
because I wrote urgrep[1], which is essentially an extension of the
basic recursive-grep concept: it provides a layer of abstraction over
*any* recursive-grep-like command (rgrep, ag, ack, etc) so that you have
a single API and can use whatever the flavor of the week is (possibly
even using different programs on remote hosts).
In that package, I wrote an Eshell command, also called "urgrep", that
replaces the user-entered command with whatever the *real* command is;
then you can use that in Eshell like it's a regular command and pipe it
around and do all the usual shell things with it. The Eshell urgrep
command is designed to feel like grep so that you can (mostly) use your
existing knowledge to search for things.
For Eshell's "rgrep" support, I think you could do the same thing
without too much work, even if it delegated to "M-x rgrep" instead of
"/usr/bin/rgrep". Since I almost never want to search the files in my
.git dir, "M-x rgrep" is more convenient for me.
That said, ...
>> Maybe there should be a defcustom for this ("use M-x rgrep" vs "use
>> /usr/bin/rgrep")? Or maybe it should be easier to configure various
>> Eshell commands so they open in a compilation buffer when appropriate?
>> You can do this now with an alias, but the syntax is a bit tricky:
[snip]
> A command-specific defcustom doesn't seem ideal because we could end up
> with very many such things. Something like your compilation buffer idea
> sounds good.
My thinking here was that some users might simply prefer "M-x rgrep",
and others might prefer /usr/bin/rgrep. Having an easy way to make
Eshell conform to users' preferences would be nice. But maybe we could
do this by defaulting to use "M-x rgrep", and making it very easy to
write an alias to prefer /usr/bin/rgrep (e.g. with the
compilation-buffer wrapper I suggested). We could even document this
explicitly in the manual.
I'll try to get at least a prototype of this into a patch in a week or
so. Then people can try it out and have something a little less nebulous
to comment on.
[1] https://github.com/jimporter/urgrep
This bug report was last modified 1 year and 356 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.