mirror of
https://git.savannah.gnu.org/git/emacs/org-mode.git
synced 2024-09-29 20:37:51 +00:00
org-element: Small optimization
* lisp/org-element.el (org-element--cache-for-removal): Do not remove a robust element whenever only its contents are modified. Remove inlinetasks as robust elements since modifying a node property inside implies to parse the task again.
This commit is contained in:
parent
3c14db8685
commit
8feb8b93d5
|
@ -5463,24 +5463,31 @@ changes."
|
|||
(before (car elements))
|
||||
(after (cdr elements)))
|
||||
(if (not before) after
|
||||
(let ((up before))
|
||||
(while (setq up (org-element-property :parent up))
|
||||
(let ((up before)
|
||||
(robust-flag t))
|
||||
(while up
|
||||
(if (and (memq (org-element-type up)
|
||||
'(center-block
|
||||
drawer dynamic-block inlinetask
|
||||
property-drawer quote-block special-block))
|
||||
'(center-block drawer dynamic-block
|
||||
property-drawer quote-block
|
||||
special-block))
|
||||
(<= (org-element-property :contents-begin up) beg)
|
||||
(> (org-element-property :contents-end up) end))
|
||||
;; UP is a robust greater element containing changes.
|
||||
;; We only need to extend its ending boundaries.
|
||||
(org-element--cache-shift-positions
|
||||
up offset '(:contents-end :end))
|
||||
(setq before up)))
|
||||
(setq before up)
|
||||
(when robust-flag (setq robust-flag nil)))
|
||||
(setq up (org-element-property :parent up)))
|
||||
;; We're at top level element containing ELEMENT: if it's
|
||||
;; altered by buffer modifications, it is first element in
|
||||
;; cache to be removed. Otherwise, that first element is the
|
||||
;; following one.
|
||||
(if (< (org-element-property :end before) beg) after before)))))
|
||||
;;
|
||||
;; As a special case, do not remove BEFORE if it is a robust
|
||||
;; container for current changes.
|
||||
(if (or (< (org-element-property :end before) beg) robust-flag) after
|
||||
before)))))
|
||||
|
||||
(defun org-element--cache-submit-request (beg end offset)
|
||||
"Submit a new cache synchronization request for current buffer.
|
||||
|
|
Loading…
Reference in a new issue