emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] master e1903f4 01/12: avoid looking-back in el-search--goto-next-


From: Michael Heerdegen
Subject: [elpa] master e1903f4 01/12: avoid looking-back in el-search--goto-next-sexp
Date: Sun, 11 Oct 2015 10:33:26 +0000

branch: master
commit e1903f4123da956f7f56021c3b1ff912c3eb29fe
Author: Michael Heerdegen <address@hidden>
Commit: Michael Heerdegen <address@hidden>

    avoid looking-back in el-search--goto-next-sexp
    
    because it extremely slows it down
---
 packages/el-search/el-search.el |   12 ++++++++----
 1 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/packages/el-search/el-search.el b/packages/el-search/el-search.el
index 3c7af29..cf9a23e 100644
--- a/packages/el-search/el-search.el
+++ b/packages/el-search/el-search.el
@@ -244,7 +244,11 @@ expression."
 Don't move if already at beginning of a sexp."
   (let ((not-done t) res)
     (while not-done
-      (let ((stop-here nil) syntax-here)
+      (let ((stop-here nil) syntax-here
+            (looking-at-from-back (lambda (regexp n)
+                                    (save-excursion
+                                      (backward-char n)
+                                      (looking-at regexp)))))
         (while (not stop-here)
           (cond
            ((eobp) (signal 'end-of-buffer nil))
@@ -257,10 +261,10 @@ Don't move if already at beginning of a sexp."
            ;; FIXME: can the rest be done more generically?
            ((and (looking-at (rx (or (syntax symbol) (syntax word))))
                  (not (looking-at "\\_<"))
-                 (not (looking-back ",@" 2)))
+                 (not (funcall looking-at-from-back ",@" 2)))
             (forward-symbol 1))
-           ((or (and (looking-at "'") (looking-back "#" 1))
-                (and (looking-at "@") (looking-back "," 1)))
+           ((or (and (looking-at "'") (funcall looking-at-from-back "#" 1))
+                (and (looking-at "@") (funcall looking-at-from-back "," 1)))
             (forward-char))
            (t (setq stop-here t)))))
       (condition-case nil



reply via email to

[Prev in Thread] Current Thread [Next in Thread]