blob: 91ae1ce7b01a027e4e8edc328fa9ff5aabdfe3db (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
(require 'cl-lib) (require 'org) (require 'org-element) (require 'org-persist)
(setq org-element-use-cache t org-element-cache-persistent t)
(when (getenv "SV") (setq org-element--cache-self-verify t org-element--cache-self-verify-frequency 1.0))
(defun nilbuf (buf) (with-current-buffer buf
(let ((k 0)) (avl-tree-mapc (lambda (el) (unless (org-element-property :buffer el) (cl-incf k))) org-element--cache) k)))
(let* ((file (make-temp-file "np-" nil ".org")))
(copy-file (expand-file-name "todo.org" default-directory) file t)
(let ((real (find-file-noselect file)))
(with-current-buffer real (org-element-cache-map (lambda (_) nil) :granularity 'element))
(message ">> before: nil-buffer=%d" (nilbuf real))
(message ">> MODE=%s" (getenv "MODE"))
(pcase (getenv "MODE")
("writeall" (org-persist-write-all))
("writebuf" (with-current-buffer real (org-persist-write-all-buffer)))
(_ nil))
(message ">> after trigger: nil-buffer=%d" (nilbuf real))
(with-current-buffer real
(goto-char (point-max))
(condition-case err (let ((inhibit-read-only t)) (insert "\n* Edit\n"))
(error (message ">> RESULT: insert SIGNALLED %S" err)))
(message ">> insert survived (nil-buffer=%d)" (nilbuf real))
(set-buffer-modified-p nil)))
(delete-file file))
|