[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/org e2a8e95 2/3: org-element-cache: Fix when edit exten
From: |
ELPA Syncer |
Subject: |
[elpa] externals/org e2a8e95 2/3: org-element-cache: Fix when edit extends previous element |
Date: |
Fri, 17 Dec 2021 23:57:30 -0500 (EST) |
branch: externals/org
commit e2a8e95576598443bbb5ae425615d8b429a8b28b
Author: Ihor Radchenko <yantar92@gmail.com>
Commit: Ihor Radchenko <yantar92@gmail.com>
org-element-cache: Fix when edit extends previous element
* lisp/org-element.el (org-element--cache-after-change): Always extend
changed region to bol.
* testing/lisp/test-org-element.el (test-org-element/cache): Add test
checking the new fix. Amend some tests around making sure that cache
is active during testing.
---
lisp/org-element.el | 6 ++----
testing/lisp/test-org-element.el | 29 ++++++++++++++++++++---------
2 files changed, 22 insertions(+), 13 deletions(-)
diff --git a/lisp/org-element.el b/lisp/org-element.el
index 874b25e..112e335 100644
--- a/lisp/org-element.el
+++ b/lisp/org-element.el
@@ -6602,10 +6602,8 @@ that range. See `after-change-functions' for more
information."
;; sure that we capture preceding element.
(setq beg (save-excursion
(goto-char beg)
- (skip-chars-backward " \t")
- (if (not (bolp)) beg
- (cl-incf pre (- beg (point)))
- (point))))
+ (cl-incf pre (- beg (line-beginning-position)))
+ (line-beginning-position)))
;; Store synchronization request.
(let ((offset (- end beg pre)))
(save-match-data
diff --git a/testing/lisp/test-org-element.el b/testing/lisp/test-org-element.el
index 83a96e1..3d320b8 100644
--- a/testing/lisp/test-org-element.el
+++ b/testing/lisp/test-org-element.el
@@ -4080,19 +4080,30 @@ Text
;; Test edits near :end of element
(should-not (eq 'headline
(org-test-with-temp-text "* H1\nP1\n<point>*H2\n"
- (org-element-cache-map #'ignore :granularity 'element)
- (insert "Blah")
- (org-element-type (org-element-at-point)))))
+ (let ((org-element-use-cache t))
+ (org-element-cache-map #'ignore :granularity 'element)
+ (insert "Blah")
+ (org-element-type (org-element-at-point))))))
(should-not (eq 'headline
(org-test-with-temp-text "* H1\nP1\n<point>*H2\n"
- (org-element-cache-map #'ignore :granularity 'element)
- (backward-delete-char 1)
- (org-element-type (org-element-at-point)))))
+ (let ((org-element-use-cache t))
+ (org-element-cache-map #'ignore :granularity 'element)
+ (backward-delete-char 1)
+ (org-element-type (org-element-at-point))))))
+ (org-test-with-temp-text "Paragraph.\n #<point> comment"
+ (let ((org-element-use-cache t))
+ (org-element-cache-map #'ignore :granularity 'element)
+ (should (eq 'comment (org-element-type (org-element-at-point))))
+ (insert "not comment anymore")
+ (org-element-cache-map #'ignore :granularity 'element)
+ (should-not (eq 'comment (org-element-type (org-element-at-point))))
+ (should (eq (org-element-at-point) (org-element-at-point 1)))))
(should (eq 'headline
(org-test-with-temp-text "* H1\nP1\n<point*H2\n"
- (org-element-cache-map #'ignore :granularity 'element)
- (insert "Blah\n")
- (org-element-type (org-element-at-point)))))
+ (let ((org-element-use-cache t))
+ (org-element-cache-map #'ignore :granularity 'element)
+ (insert "Blah\n")
+ (org-element-type (org-element-at-point))))))
;; Corner case: watch out drawers named "PROPERTIES" as they are
;; fragile, unlike to other drawers.
(should