emacs-elpa-diffs
[Top][All Lists]
Advanced

[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."



reply via email to

[Prev in Thread] Current Thread [Next in Thread]