[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/htmlize 148ac7d 061/134: Consistently eliminate unnecessar
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/htmlize 148ac7d 061/134: Consistently eliminate unnecessary string creation in (apply #'concat ...). |
Date: |
Sat, 7 Aug 2021 09:17:07 -0400 (EDT) |
branch: elpa/htmlize
commit 148ac7db3225cced013ccb0b31d50c7c9458c334
Author: Hrvoje Niksic <hniksic@gmail.com>
Commit: Hrvoje Niksic <hniksic@gmail.com>
Consistently eliminate unnecessary string creation in (apply #'concat ...).
---
htmlize.el | 23 +++++++++++++----------
1 file changed, 13 insertions(+), 10 deletions(-)
diff --git a/htmlize.el b/htmlize.el
index efd7a21..3fc80a4 100644
--- a/htmlize.el
+++ b/htmlize.el
@@ -425,20 +425,27 @@ next-single-char-property-change")))
(htmlize-protect-string display)
(htmlize-generate-image (cdr display))))
+(defsubst htmlize-concat (list)
+ (if (and (consp list) (null (cdr list)))
+ ;; Don't create a new string in the common case where the list only
+ ;; consists of one element.
+ (car list)
+ (apply #'concat list)))
+
(defun htmlize-string-to-html (string)
;; Convert the string to HTML, including images attached as
;; `display' property.
(let ((pos 0) (end (length string))
- display output next-change)
+ display outlist next-change)
(while (< pos end)
(setq display (get-char-property pos 'display string)
next-change (next-single-property-change pos 'display string end))
(if (htmlize-usable-display-prop display)
- (push (htmlize-decode-display-prop display) output)
+ (push (htmlize-decode-display-prop display) outlist)
(push (htmlize-protect-string (substring string pos next-change))
- output))
+ outlist))
(setq pos next-change))
- (apply #'concat (nreverse output))))
+ (htmlize-concat (nreverse outlist))))
(defun htmlize-generate-image (imgprops)
(cond ((plist-get imgprops :file)
@@ -520,11 +527,7 @@ next-single-char-property-change")))
;; Conflate successive ellipses.
(push htmlize-ellipsis visible-list))))
(setq pos next-change last-show show))
- (if (= (length visible-list) 1)
- ;; If VISIBLE-LIST consists of only one element, return it and
- ;; avoid creating a new string.
- (car visible-list)
- (apply #'concat (nreverse visible-list)))))
+ (htmlize-concat (nreverse visible-list))))
(defun htmlize-trim-ellipsis (text)
;; Remove htmlize-ellipses ("...") from the beginning of TEXT if it
@@ -582,7 +585,7 @@ next-single-char-property-change")))
;; Push the remaining chunk.
(push (substring text chunk-start) chunks))
;; Generate the output from the available chunks.
- (apply #'concat (nreverse chunks)))))
+ (htmlize-concat (nreverse chunks)))))
(defun htmlize-extract-text (beg end trailing-ellipsis)
;; Extract buffer text, sans the invisible parts. Then
- [nongnu] elpa/htmlize 4570d0a 103/134: Add README., (continued)
- [nongnu] elpa/htmlize 4570d0a 103/134: Add README., ELPA Syncer, 2021/08/07
- [nongnu] elpa/htmlize 8f46e10 105/134: Use htmlpreview., ELPA Syncer, 2021/08/07
- [nongnu] elpa/htmlize 78318a2 114/134: Support face-remapping-alist. (#13), ELPA Syncer, 2021/08/07
- [nongnu] elpa/htmlize 9b49540 133/134: Replace cl with cl-lib, ELPA Syncer, 2021/08/07
- [nongnu] elpa/htmlize a040bdd 127/134: Don't try to call color-instance-rgb-components., ELPA Syncer, 2021/08/07
- [nongnu] elpa/htmlize 0a73b2b 043/134: Change `insert-text' method to `text-markup', so that the text can be, ELPA Syncer, 2021/08/07
- [nongnu] elpa/htmlize ec862a1 049/134: Get rid of byte-compiler warnings., ELPA Syncer, 2021/08/07
- [nongnu] elpa/htmlize 3308bf9 052/134: Preserve the `display' property during untabification., ELPA Syncer, 2021/08/07
- [nongnu] elpa/htmlize 62020d5 054/134: Fix erroneous comment., ELPA Syncer, 2021/08/07
- [nongnu] elpa/htmlize ef8b865 055/134: Add some docs., ELPA Syncer, 2021/08/07
- [nongnu] elpa/htmlize 148ac7d 061/134: Consistently eliminate unnecessary string creation in (apply #'concat ...).,
ELPA Syncer <=
- [nongnu] elpa/htmlize 3faeac8 069/134: Explicitly mark sort as stable., ELPA Syncer, 2021/08/07
- [nongnu] elpa/htmlize af69752 062/134: Consistently handle the multitude of ways to specify the `face' property., ELPA Syncer, 2021/08/07
- [nongnu] elpa/htmlize 0ba773b 067/134: Specify some `rgb.txt' locations that actually exist!, ELPA Syncer, 2021/08/07
- [nongnu] elpa/htmlize 6baf891 070/134: Implement customizable image transformation, htmlize-force-inline-images, and image alt text., ELPA Syncer, 2021/08/07
- [nongnu] elpa/htmlize ba5ddf3 073/134: Enable edebug stepping into htmlize-lexlet., ELPA Syncer, 2021/08/07
- [nongnu] elpa/htmlize 6b3b3b6 077/134: Purge asterisks from variable docstrings., ELPA Syncer, 2021/08/07
- [nongnu] elpa/htmlize 7947b8b 074/134: Don't generate ALT text larger than 100 chars or containing control chars., ELPA Syncer, 2021/08/07
- [nongnu] elpa/htmlize 93294ff 091/134: Bumped version., ELPA Syncer, 2021/08/07
- [nongnu] elpa/htmlize a4569e3 092/134: Correctly handle :inherit specifying a list of faces., ELPA Syncer, 2021/08/07
- [nongnu] elpa/htmlize 31bc1a8 094/134: Remove stray debugging print., ELPA Syncer, 2021/08/07