|
@@ -613,10 +613,11 @@ COLLECTION is the plist holding data collectin."
|
|
|
"Write elisp CONTAINER according to COLLECTION."
|
|
|
(if (and (plist-get (plist-get collection :associated) :file)
|
|
|
(get-file-buffer (plist-get (plist-get collection :associated) :file)))
|
|
|
- (buffer-local-value
|
|
|
- (cadr container)
|
|
|
- (get-file-buffer (plist-get (plist-get collection :associated) :file)))
|
|
|
- (symbol-value (cadr container))))
|
|
|
+ (let ((buf (get-file-buffer (plist-get (plist-get collection :associated) :file))))
|
|
|
+ (when (buffer-local-boundp (cadr container) buf)
|
|
|
+ (buffer-local-value (cadr container) buf)))
|
|
|
+ (when (boundp (cadr container))
|
|
|
+ (symbol-value (cadr container)))))
|
|
|
|
|
|
(defalias 'org-persist-write:version #'ignore)
|
|
|
|
|
@@ -794,7 +795,12 @@ The arguments have the same meaning as in `org-persist-read'."
|
|
|
(when collection
|
|
|
(cl-pushnew (plist-get collection :container) all-containers :test #'equal)))
|
|
|
(dolist (container all-containers)
|
|
|
- (org-persist-load container associated t))))
|
|
|
+ (condition-case err
|
|
|
+ (org-persist-load container associated t)
|
|
|
+ (error
|
|
|
+ (message "%s. Deleting bad index entry." err)
|
|
|
+ (org-persist--remove-from-index (org-persist--find-index `(:container ,container :associated ,associated)))
|
|
|
+ nil)))))
|
|
|
|
|
|
(defun org-persist-load-all-buffer ()
|
|
|
"Call `org-persist-load-all' in current buffer."
|
|
@@ -837,10 +843,21 @@ When ASSOCIATED is non-nil, only save the matching data."
|
|
|
(if associated
|
|
|
(when collection
|
|
|
(cl-pushnew (plist-get collection :container) all-containers :test #'equal))
|
|
|
- (org-persist-write (plist-get collection :container) (plist-get collection :associated) t)))
|
|
|
+ (condition-case err
|
|
|
+ (org-persist-write (plist-get collection :container) (plist-get collection :associated) t)
|
|
|
+ (error
|
|
|
+ (message "%s. Deleting bad index entry." err)
|
|
|
+ (org-persist--remove-from-index collection)
|
|
|
+ nil))))
|
|
|
(dolist (container all-containers)
|
|
|
- (when (org-persist--find-index `(:container ,container :associated ,associated))
|
|
|
- (org-persist-write container associated t)))))
|
|
|
+ (let ((collection (org-persist--find-index `(:container ,container :associated ,associated))))
|
|
|
+ (when collection
|
|
|
+ (condition-case err
|
|
|
+ (org-persist-write container associated t)
|
|
|
+ (error
|
|
|
+ (message "%s. Deleting bad index entry." err)
|
|
|
+ (org-persist--remove-from-index collection)
|
|
|
+ nil)))))))
|
|
|
|
|
|
(defun org-persist-write-all-buffer ()
|
|
|
"Call `org-persist-write-all' in current buffer.
|