[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] master 99539e8 340/433: Rewrite mmm-regions-alist for performance
From: |
Dmitry Gutov |
Subject: |
[elpa] master 99539e8 340/433: Rewrite mmm-regions-alist for performance |
Date: |
Thu, 15 Mar 2018 19:44:32 -0400 (EDT) |
branch: master
commit 99539e8450a6aef29e32de39df85a69104d49e37
Author: Dmitry Gutov <address@hidden>
Commit: Dmitry Gutov <address@hidden>
Rewrite mmm-regions-alist for performance
Not much improvement here, but at least we don't iterate multiple times
over the
same list now.
---
mmm-region.el | 23 +++++++++++++----------
1 file changed, 13 insertions(+), 10 deletions(-)
diff --git a/mmm-region.el b/mmm-region.el
index 5a14839..04ba779 100644
--- a/mmm-region.el
+++ b/mmm-region.el
@@ -716,20 +716,23 @@ union covers the region from START to STOP, including
delimiters."
(setcdr (last regions 2) nil)
regions))
-
(defun mmm-regions-alist (start stop)
"Return a list of lists of the form \(MODE . REGIONS) where REGIONS
is a list of elements of the form \(BEG END). The disjoint union all
of the REGIONS covers START to STOP."
- (let ((regions (mmm-regions-in start stop)))
- (mapcar #'(lambda (mode)
- (cons mode
- (mapcan #'(lambda (region)
- (if (eq mode (car region))
- (list (cdr region))))
- regions)))
- ;; All the modes
- (remove-duplicates (mapcar #'car regions)))))
+ (let ((regions (mmm-regions-in start stop))
+ alist)
+ (mapc (lambda (region)
+ (let* ((mode (car region))
+ (elem (cdr region))
+ (kv (assoc mode alist)))
+ (if kv
+ (push elem (cdr kv))
+ (push (cons mode (list elem)) alist))))
+ regions)
+ (mapcar (lambda (kv)
+ (cons (car kv) (nreverse (cdr kv))))
+ alist)))
;;}}}
;;{{{ Fontify Regions
- [elpa] master 3710268 350/433: Some compatibiliy tweaks, (continued)
- [elpa] master 3710268 350/433: Some compatibiliy tweaks, Dmitry Gutov, 2018/03/15
- [elpa] master dddd397 245/433: * .cvsignore: Add semantic.cache., Dmitry Gutov, 2018/03/15
- [elpa] master eb8c964 359/433: Add "Maintainer" and some copyright headers, Dmitry Gutov, 2018/03/15
- [elpa] master cc0e3d9 382/433: Merge pull request #35 from knu/fix-html-php, Dmitry Gutov, 2018/03/15
- [elpa] master 389fc1b 246/433: Updated revision date., Dmitry Gutov, 2018/03/15
- [elpa] master 1742b06 362/433: Add mmm-erb.el to lisp_LISP, Dmitry Gutov, 2018/03/15
- [elpa] master 4eeeef0 371/433: Add first test ever, Dmitry Gutov, 2018/03/15
- [elpa] master 0d4108b 345/433: Make README more up-to-date, Dmitry Gutov, 2018/03/15
- [elpa] master f261642 398/433: Merge pull request #50 from syohex/fix-invalid-function-call, Dmitry Gutov, 2018/03/15
- [elpa] master 4085494 402/433: Release 0.5.4, Dmitry Gutov, 2018/03/15
- [elpa] master 99539e8 340/433: Rewrite mmm-regions-alist for performance,
Dmitry Gutov <=
- [elpa] master 4f79b74 373/433: Add two failing tests, Dmitry Gutov, 2018/03/15
- [elpa] master bdc7d47 273/433: (html-js): Support JS version in language attribute., Dmitry Gutov, 2018/03/15
- [elpa] master f926613 206/433: # Applied patch from Alan Shutko <address@hidden>., Dmitry Gutov, 2018/03/15
- [elpa] master c68cee0 411/433: Merge pull request #73 from AdamNiederer/master, Dmitry Gutov, 2018/03/15
- [elpa] master 15c766d 216/433: * mmm-vars.el (mmm-classes-alist): Document new keywords., Dmitry Gutov, 2018/03/15
- [elpa] master 6e50485 268/433: Added html-php submode class., Dmitry Gutov, 2018/03/15
- [elpa] master c6a30e3 251/433: Trimmed ancient docstring., Dmitry Gutov, 2018/03/15
- [elpa] master 30811bc 249/433: Added new files to be byte-compiled (Joe Kelsey), Dmitry Gutov, 2018/03/15
- [elpa] master 7b783ee 308/433: Don't confuse script tags with EJS tags, Dmitry Gutov, 2018/03/15
- [elpa] master 00c99c7 278/433: (lisp_LISP): Added mmm-myghty.el., Dmitry Gutov, 2018/03/15