blob: 898e90fe122e1e547f5f8ba267a6f7b6138b1271 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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))
|