[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] master 4af3354 02/42: Make less garbage in overlay heavy buffers
From: |
Noam Postavsky |
Subject: |
[elpa] master 4af3354 02/42: Make less garbage in overlay heavy buffers |
Date: |
Sun, 22 Dec 2019 17:37:55 -0500 (EST) |
branch: master
commit 4af33546d83ab45ec14165e2a9a7a2147a7963c9
Author: Noam Postavsky <address@hidden>
Commit: Noam Postavsky <address@hidden>
Make less garbage in overlay heavy buffers
* yasnippet.el (yas-active-snippets): Use dolist+when-push instead of
mapcar+delq.
---
yasnippet.el | 19 +++++++++++++------
1 file changed, 13 insertions(+), 6 deletions(-)
diff --git a/yasnippet.el b/yasnippet.el
index eeeb33f..b6e3d0e 100644
--- a/yasnippet.el
+++ b/yasnippet.el
@@ -3273,12 +3273,19 @@ equivalent to a range covering the whole buffer."
(setq beg (point-min) end (point-max)))
((not end)
(setq end (1+ beg))))
- (cl-sort
- (delete-dups ;; Snippets have multiple overlays.
- (delq nil
- (mapcar (lambda (ov) (overlay-get ov 'yas--snippet))
- (overlays-in beg end))))
- #'>= :key #'yas--snippet-id))
+
+ ;; Note: don't use `mapcar' here, since it would allocate in
+ ;; proportion to the amount of overlays, even though the list of
+ ;; active snippets should be very small. That is important because
+ ;; this function is called in the post-command hook (via
+ ;; `yas--check-commit-snippet').
+ (let ((snippets nil))
+ (dolist (ov (overlays-in beg end))
+ (let ((snippet (overlay-get ov 'yas--snippet)))
+ ;; Snippets have multiple overlays, so check for dups.
+ (when (and snippet (not (memq snippet snippets)))
+ (push snippet snippets))))
+ (cl-sort snippets #'>= :key #'yas--snippet-id)))
(define-obsolete-function-alias 'yas--snippets-at-point
'yas-active-snippets "0.12")
- [elpa] master updated (2604824 -> 32f3512), Noam Postavsky, 2019/12/22
- [elpa] master 4af3354 02/42: Make less garbage in overlay heavy buffers,
Noam Postavsky <=
- [elpa] master e67592c 03/42: Don't use overlays to find active snippets, Noam Postavsky, 2019/12/22
- [elpa] master 79b90c9 04/42: Remove compatibility code for Emacs 22 and earlier, Noam Postavsky, 2019/12/22
- [elpa] master d3bb879 05/42: Remove last-buffer-undo-list compat definition, Noam Postavsky, 2019/12/22
- [elpa] master 4f78d03 01/42: Close #937: Officially support automatically moving to next field, Noam Postavsky, 2019/12/22
- [elpa] master 1e71360 06/42: Per #947: fix typo in README.md, Noam Postavsky, 2019/12/22
- [elpa] master 7a178a2 07/42: Remove spurious change of before-change-functions, Noam Postavsky, 2019/12/22
- [elpa] master 8328c38 08/42: Fix another failure of cc-mode indentation, Noam Postavsky, 2019/12/22
- [elpa] master eeb05f0 10/42: Handle field adjust of pending active fields, Noam Postavsky, 2019/12/22
- [elpa] master 8452227 13/42: Consider fundamental-mode as ultimate ancestor, Noam Postavsky, 2019/12/22
- [elpa] master fb253ac 15/42: New public function yas-maybe-expand-abbrev-key-filter, Noam Postavsky, 2019/12/22