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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/org ffec2db731 3/9: org-persist-write:elisp: Allow buff


From: ELPA Syncer
Subject: [elpa] externals/org ffec2db731 3/9: org-persist-write:elisp: Allow buffer-local/global elisp container scope
Date: Thu, 29 Dec 2022 04:58:01 -0500 (EST)

branch: externals/org
commit ffec2db731ff71a9a2b84ad3eaa06b62c66d70e3
Author: Ihor Radchenko <yantar92@posteo.net>
Commit: Ihor Radchenko <yantar92@posteo.net>

    org-persist-write:elisp: Allow buffer-local/global elisp container scope
    
    * lisp/org-persist.el (org-persist-read:index): Allow setting where
    the elisp container value is taken from: locally, from buffer, or from
    a global variable.
---
 lisp/org-persist.el | 33 +++++++++++++++++++++++----------
 1 file changed, 23 insertions(+), 10 deletions(-)

diff --git a/lisp/org-persist.el b/lisp/org-persist.el
index 961a2b1ca2..60088af9ee 100644
--- a/lisp/org-persist.el
+++ b/lisp/org-persist.el
@@ -632,16 +632,29 @@ COLLECTION is the plist holding data collection."
 
 (defun org-persist-write:elisp (container collection)
   "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)))
-      (let ((buf (get-file-buffer (plist-get (plist-get collection 
:associated) :file))))
-        ;; FIXME: There is `buffer-local-boundp' introduced in Emacs 28.
-        ;; Not using it yet to keep backward compatibility.
-        (condition-case nil
-            (buffer-local-value (cadr container) buf)
-          (void-variable nil)))
-    (when (boundp (cadr container))
-      (symbol-value (cadr container)))))
+  (let ((scope (nth 2 container)))
+    (pcase scope
+      ((pred stringp)
+       (when-let ((buf (or (get-buffer scope)
+                           (get-file-buffer scope))))
+         ;; FIXME: There is `buffer-local-boundp' introduced in Emacs 28.
+         ;; Not using it yet to keep backward compatibility.
+         (condition-case nil
+             (buffer-local-value (cadr container) buf)
+           (void-variable nil))))
+      (`local
+       (when (boundp (cadr container))
+         (symbol-value (cadr container))))
+      (`nil
+       (if-let ((buf (and (plist-get (plist-get collection :associated) :file)
+                          (get-file-buffer (plist-get (plist-get collection 
:associated) :file)))))
+           ;; FIXME: There is `buffer-local-boundp' introduced in Emacs 28.
+           ;; Not using it yet to keep backward compatibility.
+           (condition-case nil
+               (buffer-local-value (cadr container) buf)
+             (void-variable nil))
+         (when (boundp (cadr container))
+           (symbol-value (cadr container))))))))
 
 (defalias 'org-persist-write:version #'ignore)
 



reply via email to

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