[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/xr 376fd03 2/3: Reduce consing in hot paths
From: |
Mattias Engdegård |
Subject: |
[elpa] externals/xr 376fd03 2/3: Reduce consing in hot paths |
Date: |
Thu, 5 Mar 2020 10:21:14 -0500 (EST) |
branch: externals/xr
commit 376fd031242b8f43274e0fe7a650b4ba61b36115
Author: Mattias Engdegård <address@hidden>
Commit: Mattias Engdegård <address@hidden>
Reduce consing in hot paths
Use more destructive operations and avoiding match-string where
unnecessary.
---
xr.el | 24 ++++++++++++------------
1 file changed, 12 insertions(+), 12 deletions(-)
diff --git a/xr.el b/xr.el
index af73c71..d5be9d8 100644
--- a/xr.el
+++ b/xr.el
@@ -109,7 +109,7 @@
(while (not (looking-at "]"))
(cond
;; character class
- ((looking-at (rx "[:" (group (*? anything)) ":]"))
+ ((looking-at (rx "[:" (group (* (not (any ":")))) ":]"))
(let ((sym (intern (match-string 1))))
(unless (memq sym
'(ascii alnum alpha blank cntrl digit graph
@@ -123,9 +123,9 @@
(push sym classes))
(goto-char (match-end 0))))
;; character range
- ((looking-at (rx (group (not (any "]"))) "-" (group (not (any "]")))))
- (let ((start (string-to-char (match-string 1)))
- (end (string-to-char (match-string 2))))
+ ((looking-at (rx (not (any "]")) "-" (not (any "]"))))
+ (let ((start (char-after))
+ (end (char-after (+ (point) 2))))
(cond
((<= start end)
(push (vector start end (point)) intervals))
@@ -272,7 +272,7 @@
(when (memq ?- chars)
(setq chars (cons ?- (delq ?- chars))))
(let* ((set (cons 'any
- (append
+ (nconc
(and ranges
(list (apply #'concat (nreverse ranges))))
(and chars
@@ -283,14 +283,14 @@
set))))))))
(defun xr--rev-join-seq (sequence)
- "Reverse a sequence, flatten any (seq ...) inside, and concatenate
-adjacent strings."
+ "Reverse SEQUENCE, flatten any (seq ...) inside, and concatenate
+adjacent strings. SEQUENCE is used destructively."
(let ((result nil))
(while sequence
(let ((elem (car sequence))
(rest (cdr sequence)))
(cond ((and (consp elem) (eq (car elem) 'seq))
- (setq sequence (append (reverse (cdr elem)) rest)))
+ (setq sequence (nconc (nreverse (cdr elem)) rest)))
((and (stringp elem) (stringp (car result)))
(setq result (cons (concat elem (car result)) (cdr result)))
(setq sequence rest))
@@ -572,7 +572,7 @@ UPPER may be nil, meaning infinity."
;; character alternative
((looking-at (rx "[" (opt (group "^"))))
(goto-char (match-end 0))
- (let ((negated (match-string 1)))
+ (let ((negated (match-beginning 1)))
(push (xr--parse-char-alt negated warnings) sequence)))
;; group
@@ -580,9 +580,9 @@ UPPER may be nil, meaning infinity."
(opt (opt (group (any "1-9")
(zero-or-more digit)))
(group ":")))))
- (let ((question (match-string 1))
+ (let ((question (match-beginning 1))
(number (match-string 2))
- (colon (match-string 3)))
+ (colon (match-beginning 3)))
(when (and question (not colon))
(error "Invalid \\(? syntax"))
(goto-char (match-end 0))
@@ -1152,7 +1152,7 @@ A-SETS and B-SETS are arguments to `any'."
(if (or (equal alternatives '(nonl "\n"))
(equal alternatives '("\n" nonl)))
'anything
- (cons 'or (reverse alternatives)))
+ (cons 'or (nreverse alternatives)))
(car alternatives))))
(defun xr--parse (re-string warnings)