[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/org 64e15ea0b0 6/7: Optimize org-element--cache-compare
|
From: |
ELPA Syncer |
|
Subject: |
[elpa] externals/org 64e15ea0b0 6/7: Optimize org-element--cache-compare |
|
Date: |
Thu, 18 May 2023 09:59:27 -0400 (EDT) |
branch: externals/org
commit 64e15ea0b0445174272a064067708ea4da636593
Author: Ihor Radchenko <yantar92@posteo.net>
Commit: Ihor Radchenko <yantar92@posteo.net>
Optimize org-element--cache-compare
* lisp/org-element.el (org-element--cache-key): Reduce property and
type queries.
(org-element--cache-compare): Convert into `defsubst'.
---
lisp/org-element.el | 27 ++++++++++++++-------------
1 file changed, 14 insertions(+), 13 deletions(-)
diff --git a/lisp/org-element.el b/lisp/org-element.el
index dd06a2a75c..9255123c52 100644
--- a/lisp/org-element.el
+++ b/lisp/org-element.el
@@ -5556,23 +5556,24 @@ cache during the synchronization get a new key
generated with
Such keys are stored inside the element property
`:org-element--cache-sync-key'. The property is a cons containing
current `org-element--cache-sync-keys-value' and the element key."
- (or (when (eq org-element--cache-sync-keys-value (car (org-element-property
:org-element--cache-sync-key element)))
- (cdr (org-element-property :org-element--cache-sync-key element)))
+ (or (when-let ((key-cons (org-element-property :org-element--cache-sync-key
element)))
+ (when (eq org-element--cache-sync-keys-value (car key-cons))
+ (cdr key-cons)))
(let* ((begin (org-element-property :begin element))
+ (type (org-element-type element))
;; Increase beginning position of items (respectively
;; table rows) by one, so the first item can get
;; a different key from its parent list (respectively
;; table).
- (key (if (memq (org-element-type element) '(item table-row))
- (1+ begin)
- ;; Decrease beginning position of sections by one,
- ;; so that the first element of the section get
- ;; different key from the parent section.
- (if (eq (org-element-type element) 'section)
- (1- begin)
- (if (eq (org-element-type element) 'org-data)
- (- begin 2)
- begin)))))
+ (key
+ (cond
+ ((memq type '(item table-row)) (1+ begin))
+ ;; Decrease beginning position of sections by one,
+ ;; so that the first element of the section get
+ ;; different key from the parent section.
+ ((eq type 'section) (1- begin))
+ ((eq type 'org-data) (- begin 2))
+ (t begin))))
(when org-element--cache-sync-requests
(org-element-put-property
element
@@ -5673,7 +5674,7 @@ position."
;; than B (A is longer). Therefore, return nil.
(and (null a) b)))))
-(defun org-element--cache-compare (a b)
+(defsubst org-element--cache-compare (a b)
"Non-nil when element A is located before element B."
(org-element--cache-key-less-p (org-element--cache-key a)
(org-element--cache-key b)))
- [elpa] externals/org updated (fe74a3ed2d -> 6d9f3af774), ELPA Syncer, 2023/05/18
- [elpa] externals/org 9d304d371e 1/7: org-indent-line: Remove unnecessary call to `org-element-at-point', ELPA Syncer, 2023/05/18
- [elpa] externals/org bfa362c47d 2/7: org-element-section-parser: Optimize performance, ELPA Syncer, 2023/05/18
- [elpa] externals/org 3a4f9604f1 3/7: Cache <N>-level headline regexps instead of calculating dynamically, ELPA Syncer, 2023/05/18
- [elpa] externals/org bc4ee1c72a 4/7: org-element--current-element: Micro optimizations, ELPA Syncer, 2023/05/18
- [elpa] externals/org 64e15ea0b0 6/7: Optimize org-element--cache-compare,
ELPA Syncer <=
- [elpa] externals/org 534045979d 5/7: org-element--current-element: Do not try to query cache, ELPA Syncer, 2023/05/18
- [elpa] externals/org 6d9f3af774 7/7: org-element--parse-to: Micro optimizations, ELPA Syncer, 2023/05/18