2025-07-01-10-55

27 阅读1分钟
#+name: org-id-remap.el
#+headers: :tangle ~/org/org-id-remap.el
#+begin_src emacs-lisp :lexical t :results silent :noweb yes
;;; org-id-remap.el --- Org ID Remap -*- lexical-binding: t; -*-

;;; Commentary:

;; <<@([[id:2dbd9f3a-f668-46cd-9330-bc2d931eb3dd:::2025-06-21-23-11:]])>>

(defvar org-id-remap-cache-file
  (expand-file-name "id-cache.org" org-directory)
  "Org ID Remap cache file.")

(defalias 'org-id-remap
  ((lambda (open cache log id->ids id->urls)
     (when (fboundp 'org-id-remap)
       (org-id-remap nil))

;;; Logging
     (defalias log
       (lambda (fmt &rest args)
         (when debug-on-error
           (princ
            (apply
             #'format
             (concat
              (format-time-string
               "[%Y-%m-%d %H:%M:%S.%3N]"
               (current-time))
              fmt "\n")
             args)
            (get-buffer-create
             " *log:org-id-remap*")))))

;;; Cache URL Resource
     (defalias cache
       ((lambda (browse-url cache-url)
          <<@([[id:org-id-remap.el::org-id-remap-cache]])>>)

;;;; browse url
        <<@([[id:org-id-remap.el::browse-url]])>>

;;;; cache url
        <<@([[id:org-id-remap.el::cache-url]])>>))

;;; Adivce `org-id-open'
     (defalias open
       <<@([[id:org-id-remap.el::org-id-remap-org-id-open-advice]])>>)

;;; Entry: org-id-remap
     <<@([[id:org-id-remap.el::org-id-remap]])>>)

;;; Private
   (make-symbol "org-id-remap-open")
   (make-symbol "org-id-remap-cache")
   (make-symbol "org-id-remap-log")
   (make-hash-table :test #'equal)
   (make-hash-table :test #'equal)))

(provide 'org-id-remap)

;; Local variables:
;; fill-column: 54
;; End:

;;; org-id-remap.el ends here
#+end_src