[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#26338: 26.0.50; Collect all matches for REGEXP in current buffer
From: |
Tino Calancha |
Subject: |
bug#26338: 26.0.50; Collect all matches for REGEXP in current buffer |
Date: |
Mon, 3 Apr 2017 12:58:44 +0900 (JST) |
User-agent: |
Alpine 2.20 (DEB 67 2015-01-07) |
On Sun, 2 Apr 2017, Dmitry Gutov wrote:
On 02.04.2017 15:41, Tino Calancha wrote:
we have `count-matches' in replace.el, which returns the
number of matches of a regexp. Why not to have an standard
function `collect-matches' as well?
I know `xref-collect-matches' but it uses grep program: some users might
not have grep installed, or they may prefer to use Emacs regexps.
I've being using for a while something similar than the patch below.
Probably it doesn't need to be a command, just a normal function.
What do you think?
When used interactively, isn't M-x occur doing something like this?
And for Elisp programs, (while (re-search-forward ...)) is usually
sufficient. That's a three-liner at worst.
It might be argue the same for occur. You can just increase a counter
inside (while (re-search-forward ...))
And I've never had a need to limit the number of matches, personally.
I did often while implementing Bug#25493. Let's say i am interested in
the last 200 commits modifying a file foo.el.
M-x: find-library foo RET
C-x v l
M-: (setq hashes (collect-matches "^commit \\([[:xdigit:]]+\\)" nil 1 200))
In this case, there is no need to go beyond 200 that's why the limit
argument might be useful.
Another example,
let's say i want to know the two first defun's in subr.el
M-x: find-library subr RET
M-: (collect-matches "^(defun \\([^[:blank:]]+\\)" nil 1 2) RET
Of course you could do:
M-: (seq-take (collect-matches "^(defun \\([^[:blank:]]+\\)" nil 1) 2) RET
;; But if you just want the 2 leading defun's this is a waste.
- bug#26338: 26.0.50; Collect all matches for REGEXP in current buffer, Tino Calancha, 2017/04/02
- bug#26338: 26.0.50; Collect all matches for REGEXP in current buffer, Dmitry Gutov, 2017/04/02
- bug#26338: 26.0.50; Collect all matches for REGEXP in current buffer,
Tino Calancha <=
- bug#26338: 26.0.50; Collect all matches for REGEXP in current buffer, Juri Linkov, 2017/04/02
- bug#26338: 26.0.50; Collect all matches for REGEXP in current buffer, Tino Calancha, 2017/04/03
- bug#26338: 26.0.50; Collect all matches for REGEXP in current buffer, Tino Calancha, 2017/04/03
- bug#26338: 26.0.50; Collect all matches for REGEXP in current buffer, Juri Linkov, 2017/04/03
- bug#26338: 26.0.50; Collect all matches for REGEXP in current buffer, Tino Calancha, 2017/04/03
- bug#26338: 26.0.50; Collect all matches for REGEXP in current buffer, Tino Calancha, 2017/04/03
- bug#26338: 26.0.50; Collect all matches for REGEXP in current buffer, Marcin Borkowski, 2017/04/04
- bug#26338: 26.0.50; Collect all matches for REGEXP in current buffer, Tino Calancha, 2017/04/05
- bug#26338: 26.0.50; Collect all matches for REGEXP in current buffer, npostavs, 2017/04/05
- bug#26338: 26.0.50; Collect all matches for REGEXP in current buffer, Tino Calancha, 2017/04/07