[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/el-search d2b8f84 184/332: New command `el-search-count
From: |
Stefan Monnier |
Subject: |
[elpa] externals/el-search d2b8f84 184/332: New command `el-search-count-matches' |
Date: |
Tue, 1 Dec 2020 15:48:40 -0500 (EST) |
branch: externals/el-search
commit d2b8f8429356c0f5a89c80810e461f7bd4936edc
Author: Michael Heerdegen <michael_heerdegen@web.de>
Commit: Michael Heerdegen <michael_heerdegen@web.de>
New command `el-search-count-matches'
---
el-search.el | 34 +++++++++++++++++++++++++++++++++-
1 file changed, 33 insertions(+), 1 deletion(-)
diff --git a/el-search.el b/el-search.el
index 824996c..63276c0 100644
--- a/el-search.el
+++ b/el-search.el
@@ -7,7 +7,7 @@
;; Created: 29 Jul 2015
;; Keywords: lisp
;; Compatibility: GNU Emacs 25
-;; Version: 1.4.0.1
+;; Version: 1.4.0.2
;; Package-Requires: ((emacs "25") (stream "2.2.4"))
@@ -1234,6 +1234,38 @@ PATTERN and combining the heuristic matchers of the
subpatterns."
(el-search--next-buffer el-search--current-search predicate)
(el-search-continue-search))
+;;;###autoload
+(defun el-search-count-matches (pattern &optional rstart rend interactive)
+ "Like `count-matches' but accepting an el-search PATTERN instead of a regexp.
+
+Unlike `count-matches' matches \"inside\" other matches also count."
+ (interactive (list (el-search--read-pattern-for-interactive "How many
matches for pattern: ")
+ nil nil t))
+ ;; Code is mainly adopted from `count-matches'
+ (save-excursion
+ (if rstart
+ (if rend
+ (progn
+ (goto-char (min rstart rend))
+ (setq rend (max rstart rend)))
+ (goto-char rstart)
+ (setq rend (point-max)))
+ (if (and interactive (use-region-p))
+ (setq rstart (region-beginning)
+ rend (region-end))
+ (setq rstart (point)
+ rend (point-max)))
+ (goto-char rstart))
+ (let ((count 0)
+ (matcher (el-search--matcher pattern))
+ (hmatcher (el-search-heuristic-matcher pattern)))
+ (while (and (< (point) rend)
+ (el-search--search-pattern-1 matcher t rend hmatcher))
+ (cl-incf count)
+ (el-search--skip-expression nil t))
+ (when interactive (message "%d occurrence%s" count (if (= count 1) ""
"s")))
+ count)))
+
(defun el-search--all-matches (search)
"Return a stream of all matches of SEARCH.
The returned stream will always start searching from the
- [elpa] externals/el-search b500266 151/332: Tweak el-search--pp-to-string, (continued)
- [elpa] externals/el-search b500266 151/332: Tweak el-search--pp-to-string, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search 79095f6 143/332: Improve summary message of `el-search-overview', Stefan Monnier, 2020/12/01
- [elpa] externals/el-search 3772a97 133/332: Add a helpful comment; bump version to 1.2.1, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search 0808109 161/332: Fix el-search--change-p for atoms, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search f028826 163/332: Narrow down the semantics of symbol LPATs, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search c70b003 164/332: Use stream-x.el, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search a4004b3 167/332: Make `el-search-reset-search' modify its argument, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search 2871f22 178/332: Recover from search head pointing to a killed buffer, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search cf5b5a9 177/332: Display an x/y-style match count in the echo area, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search ca6b9f2 183/332: Add a PROMPT arg to `el-search--read-pattern-for-interactive', Stefan Monnier, 2020/12/01
- [elpa] externals/el-search d2b8f84 184/332: New command `el-search-count-matches',
Stefan Monnier <=
- [elpa] externals/el-search 468745a 185/332: Show match count for `el-search-query-replace', Stefan Monnier, 2020/12/01
- [elpa] externals/el-search c80df81 186/332: Fix resuming search in a modified buffer, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search 0b93a25 188/332: * el-search/el-search.el: Minor tweak., Stefan Monnier, 2020/12/01
- [elpa] externals/el-search 145ce47 102/332: Update copyright, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search 24d0638 099/332: Rewrite the `change' and `changed' patterns, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search da31900 146/332: Update some copyrights, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search 94b79e5 149/332: Add new pattern type `de-morgan', Stefan Monnier, 2020/12/01
- [elpa] externals/el-search 3b73e0e 154/332: Extend heuristic matching to top-level sexps, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search 0cff5d2 153/332: Recompile search pattern when resuming searches, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search 51a539a 158/332: Implement multi-buffer query-replace, Stefan Monnier, 2020/12/01