Merge branch 'bugfix'

This commit is contained in:
Ihor Radchenko 2024-03-24 19:18:11 +03:00
commit 6652ee7be9
No known key found for this signature in database
GPG Key ID: 6470762A7DA11D8B
2 changed files with 33 additions and 3 deletions

View File

@ -112,6 +112,13 @@ previous one, unless VALUE is nil. Return the updated list."
(let ((new-templates nil))
(pcase-dolist (`(,name . ,value) templates)
(let ((old-definition (assoc name new-templates)))
;; This code can be evaluated unconditionally, as a part of
;; loading Org mode. We *must not* evaluate any code present
;; inside the Org buffer while loading. Org buffers may come
;; from various sources, like received email messages from
;; potentially malicious senders. Org mode might be used to
;; preview such messages and no code evaluation from inside the
;; received Org text should ever happen without user consent.
(when (and (stringp value) (string-match-p "\\`(eval\\>" value))
;; Pre-process the evaluation form for faster macro expansion.
(let* ((args (org-macro--makeargs value))
@ -124,7 +131,7 @@ previous one, unless VALUE is nil. Return the updated list."
(cadr (read value))
(error
(user-error "Invalid definition for macro %S" name)))))
(setq value (eval (macroexpand-all `(lambda ,args ,body)) t))))
(setq value `(lambda ,args ,body))))
(cond ((and value old-definition) (setcdr old-definition value))
(old-definition)
(t (push (cons name (or value "")) new-templates)))))

View File

@ -1174,6 +1174,24 @@ the following lines anywhere in the buffer:
:package-version '(Org . "8.0")
:type 'boolean)
(defvar untrusted-content) ; defined in files.el
(defvar org--latex-preview-when-risky nil
"If non-nil, enable LaTeX preview in Org buffers from unsafe source.
Some specially designed LaTeX code may generate huge pdf or log files
that may exhaust disk space.
This variable controls how to handle LaTeX preview when rendering LaTeX
fragments that originate from incoming email messages. It has no effect
when Org mode is unable to determine the origin of the Org buffer.
An Org buffer is considered to be from unsafe source when the
variable `untrusted-content' has a non-nil value in the buffer.
If this variable is non-nil, LaTeX previews are rendered unconditionally.
This variable may be renamed or changed in the future.")
(defcustom org-insert-mode-line-in-empty-file nil
"Non-nil means insert the first line setting Org mode in empty files.
When the function `org-mode' is called interactively in an empty file, this
@ -4630,12 +4648,16 @@ from file or URL, and return nil.
If NOCACHE is non-nil, do a fresh fetch of FILE even if cached version
is available. This option applies only if FILE is a URL."
(let* ((is-url (org-url-p file))
(is-remote (condition-case nil
(file-remote-p file)
;; In case of error, be safe.
(t t)))
(cache (and is-url
(not nocache)
(gethash file org--file-cache))))
(cond
(cache)
(is-url
((or is-url is-remote)
(if (org--should-fetch-remote-resource-p file)
(condition-case error
(with-current-buffer (url-retrieve-synchronously file)
@ -4721,9 +4743,9 @@ returns non-nil if any of them match."
(propertize domain 'face '(:inherit org-link :weight normal))
") as safe.\n ")
"")
(propertize "f" 'face 'success)
(if current-file
(concat
(propertize "f" 'face 'success)
" to download this resource, and permanently mark all resources in "
(propertize current-file 'face 'underline)
" as safe.\n ")
@ -16004,6 +16026,7 @@ fragments in the buffer."
(interactive "P")
(cond
((not (display-graphic-p)) nil)
((and untrusted-content (not org--latex-preview-when-risky)) nil)
;; Clear whole buffer.
((equal arg '(64))
(org-clear-latex-preview (point-min) (point-max))