diff --git a/lisp/org-element.el b/lisp/org-element.el index 874b25e19..112e335b0 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 83a96e1a2..3d320b83b 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*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*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 # 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