[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals-release/org 27a41d418d: org-element--cache-before-chang
From: |
ELPA Syncer |
Subject: |
[elpa] externals-release/org 27a41d418d: org-element--cache-before-change: Fix edge case creating heading |
Date: |
Wed, 16 Aug 2023 06:58:34 -0400 (EDT) |
branch: externals-release/org
commit 27a41d418d4558b511f4ab74bf26dde0b72d2526
Author: Ihor Radchenko <yantar92@posteo.net>
Commit: Ihor Radchenko <yantar92@posteo.net>
org-element--cache-before-change: Fix edge case creating heading
* lisp/org-element.el (org-element--cache-before-change): Fix edge
case when a heading is created because we insert a newline right
before ****.
* testing/lisp/test-org-element.el (test-org-element/cache-headline):
Add tests.
Reported-by: Rodrigo Morales <moralesrodrigo1100@gmail.com>
Link:
https://orgmode.org/list/CAGxMbPbbqc33iaqJ=EceyKrLaf4maJAxaUmJGaPOvG_Rpw+xcQ@mail.gmail.com
---
lisp/org-element.el | 16 ++--------------
testing/lisp/test-org-element.el | 27 ++++++++++++++++++++++++++-
2 files changed, 28 insertions(+), 15 deletions(-)
diff --git a/lisp/org-element.el b/lisp/org-element.el
index ffd492d723..0debd1a681 100644
--- a/lisp/org-element.el
+++ b/lisp/org-element.el
@@ -6705,20 +6705,8 @@ The function returns the new value of
`org-element--cache-change-warning'."
(setq org-element--cache-change-tic (buffer-chars-modified-tick))
(setq org-element--cache-last-buffer-size (buffer-size))
(goto-char beg)
- (beginning-of-line)
- (let ((bottom (save-excursion
- (goto-char end)
- (if (and (bolp)
- ;; When beg == end, still extent to eol.
- (> (point) beg))
- ;; FIXME: Potential pitfall.
- ;; We are appending to an element end.
- ;; Unless the last inserted char is not
- ;; newline, the next element is not broken
- ;; and does not need to be purged from the
- ;; cache.
- end
- (line-end-position)))))
+ (forward-line 0)
+ (let ((bottom (save-excursion (goto-char end) (line-end-position))))
(prog1
;; Use the worst change warning to not miss important edits.
;; This function is called before edit and after edit by
diff --git a/testing/lisp/test-org-element.el b/testing/lisp/test-org-element.el
index 8c97371bba..6e7658759e 100644
--- a/testing/lisp/test-org-element.el
+++ b/testing/lisp/test-org-element.el
@@ -4372,7 +4372,32 @@ paragraph
(let ((org-element-use-cache t))
(org-element-at-point (point-max))
(delete-region (point) (point-max))
- (should (eq 'paragraph (org-element-type (org-element-at-point)))))))
+ (should (eq 'paragraph (org-element-type (org-element-at-point))))))
+ ;; Remove/re-introduce heading.
+ (org-test-with-temp-text
+ "
+* 1
+** 1-1
+a
+<point>** 1-2
+a
+"
+ (let ((org-element-use-cache t))
+ (org-element-at-point (point-max))
+ (insert "FOO")
+ (should
+ (equal
+ "1-1"
+ (org-element-property
+ :title
+ (org-element-lineage (org-element-at-point) '(headline)))))
+ (insert "\n")
+ (should
+ (equal
+ "1"
+ (org-element-property
+ :title
+ (org-element-lineage (org-element-at-point) '(headline))))))))
(provide 'test-org-element)
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [elpa] externals-release/org 27a41d418d: org-element--cache-before-change: Fix edge case creating heading,
ELPA Syncer <=