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

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

[elpa] externals/org e469636a6d 1/2: org-element-plain-list-interpreter:


From: ELPA Syncer
Subject: [elpa] externals/org e469636a6d 1/2: org-element-plain-list-interpreter: Do not run mode hooks
Date: Thu, 21 Dec 2023 06:58:25 -0500 (EST)

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

    org-element-plain-list-interpreter: Do not run mode hooks
    
    * lisp/org-element.el (org-element-plain-list-interpreter): Use
    `org-element-with-buffer-copy' and make sure that we do not run user
    hooks.  User hooks are often not designed to work in temporary
    buffers.  The changed approach also follows similar code elsewhere in
    Org code.
---
 lisp/org-element.el | 20 ++++++++++++++------
 1 file changed, 14 insertions(+), 6 deletions(-)

diff --git a/lisp/org-element.el b/lisp/org-element.el
index b04e0cdba0..0924c56fed 100644
--- a/lisp/org-element.el
+++ b/lisp/org-element.el
@@ -1987,12 +1987,20 @@ Assume point is at the beginning of the list."
 (defun org-element-plain-list-interpreter (_ contents)
   "Interpret plain-list element as Org syntax.
 CONTENTS is the contents of the element."
-  (with-temp-buffer
-    (org-mode)
-    (insert contents)
-    (goto-char (point-min))
-    (org-list-repair)
-    (buffer-string)))
+  (org-element-with-buffer-copy
+   :to-buffer (org-get-buffer-create " *Org parse*" t)
+   :drop-contents t
+   :drop-visibility t
+   :drop-narrowing t
+   :drop-locals nil
+   ;; Transferring local variables may put the temporary buffer
+   ;; into a read-only state.  Make sure we can insert CONTENTS.
+   (let ((inhibit-read-only t)) (erase-buffer) (insert contents))
+   (goto-char (point-min))
+   (org-list-repair)
+   ;; Prevent "Buffer *temp* modified; kill anyway?".
+   (restore-buffer-modified-p nil)
+   (buffer-string)))
 
 
 ;;;; Property Drawer



reply via email to

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