aboutsummaryrefslogtreecommitdiff
path: root/working/org-element-cache-persist-bug/hostile-d-order.el
diff options
context:
space:
mode:
Diffstat (limited to 'working/org-element-cache-persist-bug/hostile-d-order.el')
-rw-r--r--working/org-element-cache-persist-bug/hostile-d-order.el30
1 files changed, 30 insertions, 0 deletions
diff --git a/working/org-element-cache-persist-bug/hostile-d-order.el b/working/org-element-cache-persist-bug/hostile-d-order.el
new file mode 100644
index 00000000..898e90fe
--- /dev/null
+++ b/working/org-element-cache-persist-bug/hostile-d-order.el
@@ -0,0 +1,30 @@
+(require 'cl-lib) (require 'org) (require 'org-element) (require 'org-persist)
+(setq org-element-use-cache t org-element-cache-persistent t)
+(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 "ord-" 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))
+ (with-current-buffer (get-buffer-create "*preview-temp*")
+ (let (jka-compr-verbose)
+ (with-silent-modifications
+ (setq buffer-read-only t) (insert-file-contents file nil 0 1048576)
+ (setq buffer-file-name file) (goto-char (point-min)) (rename-buffer "PREVIEW"))
+ (let ((enable-dir-local-variables nil) (enable-local-variables :safe) (non-essential t))
+ (set-auto-mode) (font-lock-mode 1)))
+ (org-element-cache-map (lambda (_) nil) :granularity 'element))
+ (when (equal (getenv "BURY") "1")
+ (bury-buffer real)
+ (message ">> buried real"))
+ (message ">> get-file-buffer -> %S (buffer-list head: %S)"
+ (buffer-name (get-file-buffer file))
+ (mapcar #'buffer-name (seq-take (buffer-list) 4)))
+ (let ((kill-buffer-query-functions nil)) (kill-buffer "PREVIEW"))
+ (message ">> after kill nil-buffer=%d" (nilbuf real))
+ (with-current-buffer real
+ (goto-char (point-max))
+ (condition-case err (let ((inhibit-read-only t)) (insert "\n* E\n"))
+ (error (message ">> RESULT: SIGNALLED %S" err)))
+ (message ">> done") (set-buffer-modified-p nil)))
+ (delete-file file))