|
@@ -41,7 +41,13 @@
|
|
|
;; has been removed.
|
|
|
;; 3. Temporarily cache a file, including TRAMP path to disk:
|
|
|
;; (org-persist-write '("file") "/path/to/file")
|
|
|
-;; 4. Cache value of a Elisp variable to disk. The value will be
|
|
|
+;; 4. Cache file or URL while some other file exists.
|
|
|
+;; (org-persist-register '("url" "https://static.fsf.org/common/img/logo-new.png") '(:file "/path to the other file") :expiry 'never)
|
|
|
+;; (org-persist-write '("url" "https://static.fsf.org/common/img/logo-new.png") '(:file "/path to the other file"))
|
|
|
+;; or, if the other file is current buffer file
|
|
|
+;; (org-persist-register '("url" "https://static.fsf.org/common/img/logo-new.png") (current-buffer) :expiry 'never)
|
|
|
+;; (org-persist-write '("url" "https://static.fsf.org/common/img/logo-new.png") (current-buffer))
|
|
|
+;; 5. Cache value of a Elisp variable to disk. The value will be
|
|
|
;; saved and restored automatically (except buffer-local
|
|
|
;; variables).
|
|
|
;; ;; Until `org-persist-default-expiry'
|
|
@@ -54,11 +60,11 @@
|
|
|
;; ;; Save buffer-local variable preserving circular links:
|
|
|
;; (org-persist-register 'org-element--headline-cache (current-buffer)
|
|
|
;; :inherit 'org-element--cache)
|
|
|
-;; 5. Load variable by side effects assigning variable symbol:
|
|
|
+;; 6. Load variable by side effects assigning variable symbol:
|
|
|
;; (org-persist-load 'variable-symbol (current-buffer))
|
|
|
-;; 6. Version variable value:
|
|
|
+;; 7. Version variable value:
|
|
|
;; (org-persist-register '(("elisp" variable-symbol) (version "2.0")))
|
|
|
-;; 7. Cancel variable persistence:
|
|
|
+;; 8. Cancel variable persistence:
|
|
|
;; (org-persist-unregister 'variable-symbol 'all) ; in all buffers
|
|
|
;; (org-persist-unregister 'variable-symbol) ;; global variable
|
|
|
;; (org-persist-unregister 'variable-symbol (current-buffer)) ;; buffer-local
|
|
@@ -120,6 +126,7 @@
|
|
|
;; elisp variable data.
|
|
|
;; 2. ("file") :: Store a copy of the associated file preserving the
|
|
|
;; extension.
|
|
|
+;; ("file" "/path/to/a/file") :: Store a copy of the file in path.
|
|
|
;; 3. ("version" "version number") :: Version the data collection.
|
|
|
;; If the stored collection has different version than "version
|
|
|
;; number", disregard it.
|
|
@@ -153,7 +160,7 @@
|
|
|
(declare-function org-at-heading-p "org" (&optional invisible-not-ok))
|
|
|
|
|
|
|
|
|
-(defconst org-persist--storage-version "2.2"
|
|
|
+(defconst org-persist--storage-version "2.3"
|
|
|
"Persistent storage layout version.")
|
|
|
|
|
|
(defgroup org-persist nil
|
|
@@ -603,35 +610,39 @@ COLLECTION is the plist holding data collectin."
|
|
|
|
|
|
(defalias 'org-persist-write:version #'ignore)
|
|
|
|
|
|
-(defun org-persist-write:file (_ collection)
|
|
|
- "Write file container according to COLLECTION."
|
|
|
+(defun org-persist-write:file (c collection)
|
|
|
+ "Write file container C according to COLLECTION."
|
|
|
(org-persist-collection-let collection
|
|
|
- (when (and path (file-exists-p path))
|
|
|
+ (when (or (and path (file-exists-p path))
|
|
|
+ (and (stringp (cadr c)) (file-exists-p (cadr c))))
|
|
|
+ (when (and (stringp (cadr c)) (file-exists-p (cadr c)))
|
|
|
+ (setq path (cadr c)))
|
|
|
(let* ((persist-file (plist-get collection :persist-file))
|
|
|
(ext (file-name-extension path))
|
|
|
(file-copy (org-file-name-concat
|
|
|
org-persist-directory
|
|
|
- (format "%s-file.%s" persist-file ext))))
|
|
|
+ (format "%s-%s.%s" persist-file (md5 path) ext))))
|
|
|
(unless (file-exists-p (file-name-directory file-copy))
|
|
|
(make-directory (file-name-directory file-copy) t))
|
|
|
(unless (file-exists-p file-copy)
|
|
|
(copy-file path file-copy 'overwrite))
|
|
|
- (format "%s-file.%s" persist-file ext)))))
|
|
|
+ (format "%s-%s.%s" persist-file (md5 path) ext)))))
|
|
|
|
|
|
-(defun org-persist-write:url (_ collection)
|
|
|
- "Write url container according to COLLECTION."
|
|
|
+(defun org-persist-write:url (c collection)
|
|
|
+ "Write url container C according to COLLECTION."
|
|
|
(org-persist-collection-let collection
|
|
|
- (when path
|
|
|
+ (when (or path (cadr c))
|
|
|
+ (when (cadr c) (setq path (cadr c)))
|
|
|
(let* ((persist-file (plist-get collection :persist-file))
|
|
|
(ext (file-name-extension path))
|
|
|
(file-copy (org-file-name-concat
|
|
|
org-persist-directory
|
|
|
- (format "%s-file.%s" persist-file ext))))
|
|
|
+ (format "%s-%s.%s" persist-file (md5 path) ext))))
|
|
|
(unless (file-exists-p (file-name-directory file-copy))
|
|
|
(make-directory (file-name-directory file-copy) t))
|
|
|
(unless (file-exists-p file-copy)
|
|
|
(url-copy-file path file-copy 'overwrite))
|
|
|
- (format "%s-file.%s" persist-file ext)))))
|
|
|
+ (format "%s-%s.%s" persist-file (md5 path) ext)))))
|
|
|
|
|
|
(defun org-persist-write:index (container _)
|
|
|
"Write index CONTAINER."
|