[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/org 5ca866d 2/4: org-persist.el: Detect buffer-locals v
From: |
ELPA Syncer |
Subject: |
[elpa] externals/org 5ca866d 2/4: org-persist.el: Detect buffer-locals vars for moved files |
Date: |
Wed, 27 Oct 2021 11:57:34 -0400 (EDT) |
branch: externals/org
commit 5ca866d08aaadfa43be9c836492b488f36ec600f
Author: Ihor Radchenko <yantar92@gmail.com>
Commit: Ihor Radchenko <yantar92@gmail.com>
org-persist.el: Detect buffer-locals vars for moved files
* lisp/org-persist.el (org-persist--get-index): Match buffer inode and
hash if path does not match.
(org-persist-read-all): Do not require file path match before trying
to read local variables.
(org-persist-read): Do not try to read non-existing data.
---
lisp/org-persist.el | 18 +++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)
diff --git a/lisp/org-persist.el b/lisp/org-persist.el
index 33da4c8..858f175 100644
--- a/lisp/org-persist.el
+++ b/lisp/org-persist.el
@@ -81,12 +81,14 @@ When BUFFER is nil, return plist for global VAR."
(org-persist--read-index)
(let* ((buffer-file (when buffer (buffer-file-name (or (buffer-base-buffer
buffer)
buffer))))
- (inode (when buffer-file (file-attribute-inode-number
(file-attributes buffer-file)))))
+ (inode (when buffer-file (file-attribute-inode-number
(file-attributes buffer-file))))
+ (buffer-hash (when buffer (secure-hash 'md5 buffer))))
(let ((result (seq-find (lambda (plist)
(and (or (memq var (plist-get plist :variable))
(eq var (plist-get plist :variable)))
- (or (equal inode (plist-get plist :inode))
- (equal buffer-file (plist-get plist
:path)))))
+ (or (and inode (equal inode (plist-get
plist :inode)))
+ (and buffer-file (equal buffer-file
(plist-get plist :path)))
+ (and buffer-hash (equal buffer-hash
(plist-get plist :hash))))))
org-persist--index)))
(when result
(unless (equal buffer-file (plist-get result :path))
@@ -96,7 +98,7 @@ When BUFFER is nil, return plist for global VAR."
:persist-file (replace-regexp-in-string "^.." "\\&/"
(org-id-uuid))
:path buffer-file
:inode inode
- :hash (when buffer (secure-hash 'md5 buffer)))
+ :hash buffer-hash)
org-persist--index)
(setf result (car org-persist--index)))
result)))
@@ -225,7 +227,8 @@ When BUFFER is `all', unregister VAR in all buffers."
(let* ((index (org-persist--get-index var buffer))
(persist-file (org-file-name-concat org-persist-directory (plist-get
index :persist-file)))
(data nil))
- (when (and (file-exists-p persist-file)
+ (when (and index
+ (file-exists-p persist-file)
(or (not buffer)
(equal (secure-hash 'md5 buffer) (plist-get index :hash))))
(unless (seq-find (lambda (v)
@@ -258,10 +261,7 @@ When BUFFER is `all', unregister VAR in all buffers."
"Restore all the persistent data in BUFFER."
(unless org-persist--index (org-persist--read-index))
(dolist (index org-persist--index)
- (when (equal (buffer-file-name (or (buffer-base-buffer buffer)
- buffer))
- (plist-get index :path))
- (org-persist-read (plist-get index :variable) buffer))))
+ (org-persist-read (plist-get index :variable) buffer)))
(defun org-persist-read-all-buffer ()
"Call `org-persist-read-all' in current buffer."