branch: externals/org commit 9843670d117876e92bd51b8155c269247f8b48bc Author: Ihor Radchenko <yanta...@gmail.com> Commit: Ihor Radchenko <yanta...@gmail.com>
org-element--cache-sync: Another take on false positive warnings * lisp/org-element.el (org-element--cache-sync): Suppress silent edit warnings for Emacs <28. In older Emacs, Emacs internal functions can modify `buffer-chars-modified-tick' and cannot be distinguished from dangerous edits under `inhibit-modification-hooks'. Some of the functions even have the same footprint with the edits we want to avoid. --- lisp/org-element.el | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/lisp/org-element.el b/lisp/org-element.el index e757890..7385733 100644 --- a/lisp/org-element.el +++ b/lisp/org-element.el @@ -5868,19 +5868,15 @@ updated before current modification are actually submitted." (buffer-modified-tick))) (progn (when (or (and org-element--cache-diagnostics-modifications - ;; FIXME: Some more special cases when - ;; non-latin input in Emacs <28 triggers - ;; changes in `buffer-chars-modified-tick' - ;; even though the buffer text remains - ;; unchanged. We still reset the cache as - ;; safety precaution, but do not show the - ;; warning. - (not (memq (- (buffer-modified-tick) - (buffer-chars-modified-tick)) - ;; Note: 4 is a footprint for - ;; (let ((inhibit-modification-hooks t)) - ;; (insert "blah")) - '(1 3 6 7 8 9)))) + ;; A number of Emacs internal operations in + ;; Emacs 26 and 27 alter + ;; `buffer-chars-modified-tick' (see + ;; https://list.orgmode.org/87ee7jdv70.fsf@localhost/T/#t). + ;; We have no way to distinguish them from + ;; dangerious silent edits. So, we can + ;; only reset the cache, but do not show + ;; warning to not irritate the users.) + (not (version< emacs-version "28"))) (and (boundp 'org-batch-test) org-batch-test)) (org-element--cache-warn "Unregistered buffer modifications detected. Resetting. If this warning appears regularly, please report it to Org mode mailing list (M-x org-submit-bug-report).