> From: Robert Pluim <rpl...@gmail.com> > Cc: 23...@debbugs.gnu.org > Date: Fri, 08 Jul 2016 17:40:42 +0200 > > org-element--cache-after-change is: > > (defun org-element--cache-after-change (beg end pre) > "Update buffer modifications for current buffer. > BEG and END are the beginning and end of the range of changed > text, and the length in bytes of the pre-change text replaced by > that range. See `after-change-functions' for more information." > (when (org-element--cache-active-p) > (org-with-wide-buffer > (goto-char beg) > (beginning-of-line) > (save-match-data > (let ((top (point)) > (bottom (save-excursion (goto-char end) (line-end-position)))) > ;; Determine if modified area needs to be extended, according > ;; to both previous and current state. We make a special > ;; case for headline editing: if a headline is modified but > ;; not removed, do not extend. > (when (case org-element--cache-change-warning > ((t) t) > (headline > (not (and (org-with-limited-levels (org-at-heading-p)) > (= (line-end-position) bottom)))) > (otherwise > (let ((case-fold-search t)) > (re-search-forward > org-element--cache-sensitive-re bottom t)))) > ;; Effectively extend modified area. > (org-with-limited-levels > (setq top (progn (goto-char top) > (when (outline-previous-heading) (forward-line)) > (point))) > (setq bottom (progn (goto-char bottom) > (if (outline-next-heading) (1- (point)) > (point)))))) > ;; Store synchronization request. > (let ((offset (- end beg pre))) > (org-element--cache-submit-request top (- bottom offset) offset))))) > ;; Activate a timer to process the request during idle time. > (org-element--cache-set-timer (current-buffer)))) > > which already does save-match-data. If I globally disable the org > element cache by (setq org-element-use-cache nil) the issue > disappears, so now I'm confused as to what's going on.
Load the file where this function lives as a .el file, and when the watchpoint triggers, show the results of "xbacktrace".