【存档】Org所指属性


缓存持久化

为跨 Emacs session 使用, org-referent-get 借助 org-persist 实现内部缓存(二级哈希结构)的持久化:

延迟加载及缓存持久化 (delay-load):

#+name: 2025-08-23-16-38
#+begin_src emacs-lisp :eval no
;; depends: org-referent-get, cache.
(lambda (&rest a)
  "No load. load by

M-x org-referent-get or M-: (org-referent-get)."
  (interactive)
  (!def 'org-referent-get org-referent-get)
  (require 'org-persist)
  (!def cache
   (or (cadr
        (org-persist-read
         "org-referent--cache"
         nil nil nil :read-related t))
       (make-hash-table :test #'equal)))
  (org-persist-register
   `("org-referent--cache" (elisp-data ,cache))
   nil :write-immediately t :expiry 'never)
  (if (called-interactively-p 'interactive)
      (call-interactively #'org-referent-get)
    (apply org-referent-get a)))
#+end_src

需要注意的是,在 elisp 中,并非所有数据结构都能被持久化,但属性值的具体结构非 org-referent-get 所能定义,使用 org-referent-get 的上层软件需自行约束其属性值的结构,否则将导致 org-referent-get 的持久化特性失效。