Fix bad org-src interaction with org-persist
* lisp/org-macs.el (org-unique-local-variables): Do not copy over `buffer-file-name'. This may interact badly with `org-persist' and `org-element' - `org-persist' assumes that all the buffers with a given `buffer-file-name' are the same, which may not be true when copying over variables into a temporary edit buffer (org-src). * lisp/org-persist.el (org-persist-write:elisp): Add FIXME. Reported-by: Akash Pal <akashpaul21@gmail.com> Link: https://list.orgmode.org/orgmode/CA+6WspJ8J+iBzL+CQr5JTZUE5hhhHBrUunLw2naKpxwpv1DNqA@mail.gmail.com/
This commit is contained in:
parent
b6dbf88810
commit
90945e16aa
|
@ -672,7 +672,14 @@ ones and overrule settings in the other lists."
|
|||
org-element--cache-diagnostics-ring-size
|
||||
org-element--cache-sync-keys
|
||||
org-element--cache-sync-requests
|
||||
org-element--cache-sync-timer)
|
||||
org-element--cache-sync-timer
|
||||
;; FIXME: Avoid copying `buffer-file-name' - when closing a
|
||||
;; temporary buffer, org-persist badly interacts with multiple
|
||||
;; _different_ buffers with the same `buffer-file-name' and may
|
||||
;; modify (via `org-element--cache-persist-before-write' by side
|
||||
;; effect the cache in a _different_ buffer (whatever comes first
|
||||
;; in `get-file-buffer').
|
||||
buffer-file-name)
|
||||
"List of local variables that cannot be transferred to another buffer.")
|
||||
|
||||
(defun org-get-local-variables ()
|
||||
|
|
|
@ -840,6 +840,12 @@ COLLECTION is the plist holding data collection."
|
|||
(when (boundp (cadr container))
|
||||
(symbol-value (cadr container))))
|
||||
(`nil
|
||||
;; FIXME: Here and in other places, we use `get-file-buffer'
|
||||
;; assuming that all the buffers with the same
|
||||
;; `buffer-file-name' are same. However, this may not
|
||||
;; necessarily be the case in general and we may initiate
|
||||
;; writing cache in one buffer, but `get-file-buffer' may then
|
||||
;; return _another_ buffer (with the same `buffer-file-name').
|
||||
(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.
|
||||
|
|
Loading…
Reference in New Issue