From: Michael Heerdegen Date: Tue, 22 Sep 2015 23:35:54 +0000 (+0200) Subject: avoid looking-back in el-search--goto-next-sexp X-Git-Url: https://code.delx.au/gnu-emacs-elpa/commitdiff_plain/e1903f4123da956f7f56021c3b1ff912c3eb29fe avoid looking-back in el-search--goto-next-sexp because it extremely slows it down --- diff --git a/packages/el-search/el-search.el b/packages/el-search/el-search.el index 3c7af293a..cf9a23eb3 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