Comments (6)
I already had a fix for rg-dwim
locally that I have pushed now. See if it solves your use case.
Thanks for the report.
from rg.el.
Thanks for the quick fixing, @dajva. I will check once it''s merged in mepla.
from rg.el.
rg-dwim
works well. Suggest to support in rg
as well. Thanks!
from rg.el.
The rg
defun is a bit of another story since the input is actually supposed to be a regexp that ripgrep's regex engine understands. In your example the (
and )
are for grouping sub expressions and needs to be escaped to be litteral. rgrep
actually has the same behavior but parenthesis seems to have no special meaning so this particular example works.
So if I understand you correctly you want a way to search with a litteral string in general instead of a regexp?
I guess the problem with the current approach is that if you want to change the search term in the results buffer with r
you will then have to edit a regexp, which would be confusing. It could be a short term solution though since it's trivial to implement.
I need to think a bit about this but my first thought is to have a separate entry point, rg-literal
, that sets the --literal
flag and in the results buffer you will have the opportunity to toggle this flag if needed. An alternative is to add this flag to rg-command-line-flags
but then I just broke this for rg-dwim
. :-/
Any thoughs? How does ag.el
handle this?
from rg.el.
I think you are right. I did some tests with ag
and rg
.
For example, I want to search (lambda (
in the project.
ag
will convert the string into this command:
ag --literal --group --line-number --column --color --color-match 30\;43 --color-path 1\;32 --smart-case --stats -- \(lambda\ \( .
rg
will produce this:
rg --color always --colors match:fg:red -n --type elisp --column --heading -i -e \(lambda\ \( .
with this error:
Error parsing regex near 'mbda (' at character offset 8: Unclosed parenthesis.
I tried to add -F
or --fixed-strings
flag which means "Treat the pattern as a literal string instead of a regular expression".
rg --fixed-string --color always --colors match:fg:red -n --type elisp --column --heading -i -e \(lambda\ \( .
It worked well with no errors.
Then I did some research for the source codes of ag.el
. I realized the ag
command uses --literal
flag by default, and ag-regexp
is for the regexp search. It does make sense for the most of people, at least for me.
Of cource rg
does great with the regexp by default, but a little bit inconvenient, because at the most of time the people just want to search with some fixed strings. Thinking of this, how about adding rg-regexp
command to handle regexp searches and making rg
to handle string searches? I think it would be simplify the implementation of rg-dwim
as well.
These are just my thoughts. If I set rg-command-line-flags
and rg
works for me. But the effect side is rg-dwim
is broken :(
(setq rg-command-line-flags '("--fixed-strings"))
Appreciate to your great work and patience!
from rg.el.
Thanks for you input. I'll look into this.
The ag.el
setup definitely makes sense but I probably want to keep rg
for backwards compatibility and add rg-literal
. But we'll see.
from rg.el.
Related Issues (20)
- default-directory is not updated when using rg from an rg-mode buffer HOT 1
- Keep multiple search results' buffers HOT 3
- `M-x rg` never finds matches using Emacs 28.1 on Mac HOT 8
- select the *rg* buffer after running a search HOT 14
- rg.el not works under fish shell HOT 1
- IPv6 addresses often mistaken as line/column numbers HOT 4
- ignore user-specified built-in aliases HOT 2
- Only rg-use-old-defaults seems to work with result buffer HOT 6
- Would be nice if DWIM modes prompt for search string if no word at point HOT 3
- Question on searching and removing the whole line HOT 1
- Wgrep fails with "There are n unapplied changes. (0 changed)" HOT 1
- Result-based navigation fails HOT 3
- Question about using glob pattern with rg HOT 1
- Feature request: search symlinked file, but make the file path in "*rg*" buffer the path of the symlink HOT 6
- Comparison with Deadgrep? HOT 1
- Expose search history more prominently HOT 1
- project.el issue HOT 1
- support project.el external roots HOT 1
- When copying from buffer `*rg*`, some internal text is included HOT 1
- How to make "enter" key open target file at the location of the searched keyword? HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from rg.el.