branch: master commit f06794d7f3496071375e7273307e476d7faac85b Author: Michael Heerdegen <michael_heerde...@web.de> Commit: Michael Heerdegen <michael_heerde...@web.de>
[el-search] Some optimization tweaks Make sure heuristic matchers aren't unnecessarily recomputed. This is important for pattern types whose heuristic matchers need to do some kind of caching like 'el-search-change--heuristic-matcher'. Bump version to 1.9.2. * packages/el-search/el-search.el (el-search-heuristic-buffer-matcher): Allow to pass an existing heuristic matcher. (el-search--set-head-pattern): Compute heuristic matcher only once. (el-search-continue-search): Call 'el-search-compile-pattern-in-search' only when necessary. --- packages/el-search/el-search.el | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/packages/el-search/el-search.el b/packages/el-search/el-search.el index 27eceb0..a1d5634 100644 --- a/packages/el-search/el-search.el +++ b/packages/el-search/el-search.el @@ -7,7 +7,7 @@ ;; Created: 29 Jul 2015 ;; Keywords: lisp ;; Compatibility: GNU Emacs 25 -;; Version: 1.9.1 +;; Version: 1.9.2 ;; Package-Requires: ((emacs "25") (stream "2.2.4") (cl-print "1.0")) @@ -1512,8 +1512,8 @@ PATTERN and combining the heuristic matchers of the subpatterns." (walker tree) elements))) -(defun el-search-heuristic-buffer-matcher (pattern) - (let ((heuristic-matcher (el-search-heuristic-matcher pattern))) +(defun el-search-heuristic-buffer-matcher (pattern &optional hm) + (let ((heuristic-matcher (or hm (el-search-heuristic-matcher pattern)))) (lambda (file-name-or-buffer) (el-search--message-no-log "%s" (if (stringp file-name-or-buffer) @@ -1709,10 +1709,10 @@ position of the beginning of the match." (defun el-search--set-head-pattern (head pattern) (setf (el-search-head-matcher head) (el-search-make-matcher pattern)) - (setf (el-search-head-heuristic-matcher head) - (el-search-heuristic-matcher pattern)) - (setf (el-search-head-heuristic-buffer-matcher head) - (el-search-heuristic-buffer-matcher pattern)) + (let ((hm (el-search-heuristic-matcher pattern))) + (setf (el-search-head-heuristic-matcher head) hm) + (setf (el-search-head-heuristic-buffer-matcher head) + (el-search-heuristic-buffer-matcher pattern hm))) head) (defun el-search-compile-pattern-in-search (search) @@ -2733,8 +2733,8 @@ continued." (interactive "P") (setq this-command 'el-search-pattern) (unless (eq last-command this-command) - (el-search--set-search-origin-maybe)) - (el-search-compile-pattern-in-search el-search--current-search) + (el-search--set-search-origin-maybe) + (el-search-compile-pattern-in-search el-search--current-search)) (el-search-protect-search-head (unwind-protect (let* ((old-current-buffer (current-buffer))