Update to Org 9.6-49-g47d129

This commit is contained in:
Kyle Meyer 2022-12-17 17:18:40 -05:00
parent 4a8ff671b0
commit 3e02029642
8 changed files with 173 additions and 144 deletions

View file

@ -20021,11 +20021,16 @@ changes.
| =nofnadjust= | Do not renumber and sort automatically. | | =nofnadjust= | Do not renumber and sort automatically. |
#+vindex: org-hide-block-startup #+vindex: org-hide-block-startup
To hide blocks on startup, use these keywords. The #+vindex: org-hide-drawer-startup
corresponding variable is ~org-hide-block-startup~. To hide blocks or drawers on startup, use these keywords. The
corresponding variables are ~org-hide-block-startup~ and
~org-hide-drawer-startup~.
| =hideblocks= | Hide all begin/end blocks on startup. | | =hideblocks= | Hide all begin/end blocks on startup. |
| =nohideblocks= | Do not hide blocks on startup. | | =nohideblocks= | Do not hide blocks on startup. |
| =hidedrawers= | Hide all begin/end blocks on startup. |
| =nohidedrawers= | Do not hide blocks on startup. |
#+vindex: org-pretty-entities #+vindex: org-pretty-entities
The display of entities as UTF-8 characters is governed by the The display of entities as UTF-8 characters is governed by the

View file

@ -241,11 +241,11 @@ This function is called by `org-babel-execute-src-block'."
(defun org-babel-R-assign-elisp (name value colnames-p rownames-p) (defun org-babel-R-assign-elisp (name value colnames-p rownames-p)
"Construct R code assigning the elisp VALUE to a variable named NAME." "Construct R code assigning the elisp VALUE to a variable named NAME."
(if (listp value) (if (listp value)
(let* ((lengths (mapcar 'length (cl-remove-if-not 'sequencep value))) (let* ((lengths (mapcar 'length (cl-remove-if-not 'listp value)))
(max (if lengths (apply 'max lengths) 0)) (max (if lengths (apply 'max lengths) 0))
(min (if lengths (apply 'min lengths) 0))) (min (if lengths (apply 'min lengths) 0)))
;; Ensure VALUE has an orgtbl structure (depth of at least 2). ;; Ensure VALUE has an orgtbl structure (depth of at least 2).
(unless (listp (car value)) (setq value (list value))) (unless (listp (car value)) (setq value (mapcar 'list value)))
(let ((file (orgtbl-to-tsv value '(:fmt org-babel-R-quote-tsv-field))) (let ((file (orgtbl-to-tsv value '(:fmt org-babel-R-quote-tsv-field)))
(header (if (or (eq (nth 1 value) 'hline) colnames-p) (header (if (or (eq (nth 1 value) 'hline) colnames-p)
"TRUE" "FALSE")) "TRUE" "FALSE"))

View file

@ -91,7 +91,7 @@ end")
(list (list
"set (0, \"defaultfigurevisible\", \"off\");" "set (0, \"defaultfigurevisible\", \"off\");"
full-body full-body
(format "print -dpng %s" gfx-file)) (format "print -dpng %S\nans=%S" gfx-file gfx-file))
"\n") "\n")
full-body) full-body)
result-type matlabp))) result-type matlabp)))

View file

@ -5295,6 +5295,7 @@ indentation removed from its contents."
;; `org-element--cache-diagnostics-ring-size', `org-element--cache-map-statistics', ;; `org-element--cache-diagnostics-ring-size', `org-element--cache-map-statistics',
;; `org-element--cache-map-statistics-threshold'. ;; `org-element--cache-map-statistics-threshold'.
;;;###autoload
(defvar org-element-use-cache t (defvar org-element-use-cache t
"Non-nil when Org parser should cache its results.") "Non-nil when Org parser should cache its results.")

View file

@ -222,8 +222,11 @@ function will be called with a single argument - collection."
(defconst org-persist-index-file "index" (defconst org-persist-index-file "index"
"File name used to store the data index.") "File name used to store the data index.")
(defvar org-persist-disable-when-emacs-Q t (defvar org-persist--disable-when-emacs-Q t
"Disable persistence when Emacs is called with -Q command line arg.") "Disable persistence when Emacs is called with -Q command line arg.
When non-nil, this sets `org-persist-directory' to temporary directory.
This variable must be set before loading org-persist library.")
(defvar org-persist-before-write-hook nil (defvar org-persist-before-write-hook nil
"Abnormal hook ran before saving data. "Abnormal hook ran before saving data.
@ -662,12 +665,13 @@ COLLECTION is the plist holding data collection."
(file-copy (org-file-name-concat (file-copy (org-file-name-concat
org-persist-directory org-persist-directory
(format "%s-%s.%s" persist-file (md5 path) ext)))) (format "%s-%s.%s" persist-file (md5 path) ext))))
(unless (file-exists-p file-copy)
(unless (file-exists-p (file-name-directory file-copy)) (unless (file-exists-p (file-name-directory file-copy))
(make-directory (file-name-directory file-copy) t)) (make-directory (file-name-directory file-copy) t))
(if (org--should-fetch-remote-resource-p path) (if (org--should-fetch-remote-resource-p path)
(url-copy-file path file-copy 'overwrite) (url-copy-file path file-copy 'overwrite)
(error "The remote resource %S is considered unsafe, and will not be downloaded." (error "The remote resource %S is considered unsafe, and will not be downloaded."
path)) path)))
(format "%s-%s.%s" persist-file (md5 path) ext))))) (format "%s-%s.%s" persist-file (md5 path) ext)))))
(defun org-persist-write:index (container _) (defun org-persist-write:index (container _)
@ -771,13 +775,9 @@ ASSOCIATED can be a plist, a buffer, or a string.
A buffer is treated as (:buffer ASSOCIATED). A buffer is treated as (:buffer ASSOCIATED).
A string is treated as (:file ASSOCIATED). A string is treated as (:file ASSOCIATED).
When LOAD? is non-nil, load the data instead of reading." When LOAD? is non-nil, load the data instead of reading."
(unless org-persist--index (org-persist--load-index))
(setq associated (org-persist--normalize-associated associated)) (setq associated (org-persist--normalize-associated associated))
(setq container (org-persist--normalize-container container)) (setq container (org-persist--normalize-container container))
(unless (and org-persist-disable-when-emacs-Q
;; FIXME: This is relying on undocumented fact that
;; Emacs sets `user-init-file' to nil when loaded with
;; "-Q" argument.
(not user-init-file))
(let* ((collection (org-persist--find-index `(:container ,container :associated ,associated))) (let* ((collection (org-persist--find-index `(:container ,container :associated ,associated)))
(persist-file (persist-file
(when collection (when collection
@ -807,7 +807,7 @@ When LOAD? is non-nil, load the data instead of reading."
(push (org-persist-load:generic container (alist-get container data nil nil #'equal) collection) result) (push (org-persist-load:generic container (alist-get container data nil nil #'equal) collection) result)
(push (org-persist-read:generic container (alist-get container data nil nil #'equal) collection) result)) (push (org-persist-read:generic container (alist-get container data nil nil #'equal) collection) result))
(run-hook-with-args 'org-persist-after-read-hook container associated) (run-hook-with-args 'org-persist-after-read-hook container associated)
finally return (if (= 1 (length result)) (car result) result)))))))) finally return (if (= 1 (length result)) (car result) result)))))))
(defun org-persist-load (container &optional associated hash-must-match) (defun org-persist-load (container &optional associated hash-must-match)
"Load CONTAINER data for ASSOCIATED. "Load CONTAINER data for ASSOCIATED.
@ -843,11 +843,6 @@ The return value is nil when writing fails and the written value (as
returned by `org-persist-read') on success. returned by `org-persist-read') on success.
When IGNORE-RETURN is non-nil, just return t on success without calling When IGNORE-RETURN is non-nil, just return t on success without calling
`org-persist-read'." `org-persist-read'."
(unless (and org-persist-disable-when-emacs-Q
;; FIXME: This is relying on undocumented fact that
;; Emacs sets `user-init-file' to nil when loaded with
;; "-Q" argument.
(not user-init-file))
(setq associated (org-persist--normalize-associated associated)) (setq associated (org-persist--normalize-associated associated))
;; Update hash ;; Update hash
(when (and (plist-get associated :file) (when (and (plist-get associated :file)
@ -872,13 +867,22 @@ When IGNORE-RETURN is non-nil, just return t on success without calling
(plist-get collection :container)))) (plist-get collection :container))))
(puthash file data org-persist--write-cache) (puthash file data org-persist--write-cache)
(org-persist--write-elisp-file file data) (org-persist--write-elisp-file file data)
(or ignore-return (org-persist-read container associated)))))))) (or ignore-return (org-persist-read container associated)))))))
(defun org-persist-write-all (&optional associated) (defun org-persist-write-all (&optional associated)
"Save all the persistent data. "Save all the persistent data.
When ASSOCIATED is non-nil, only save the matching data." When ASSOCIATED is non-nil, only save the matching data."
(unless org-persist--index (org-persist--load-index)) (unless org-persist--index (org-persist--load-index))
(setq associated (org-persist--normalize-associated associated)) (setq associated (org-persist--normalize-associated associated))
(unless
(and (equal 1 (length org-persist--index))
;; The single collection only contains a single container
;; in the container list.
(equal 1 (length (plist-get (car org-persist--index) :container)))
;; The container is an `index' container.
(eq 'index (caar (plist-get (car org-persist--index) :container)))
;; No `org-persist-directory' exists yet.
(not (file-exists-p org-persist-directory)))
(let (all-containers) (let (all-containers)
(dolist (collection org-persist--index) (dolist (collection org-persist--index)
(if associated (if associated
@ -898,7 +902,7 @@ When ASSOCIATED is non-nil, only save the matching data."
(error (error
(message "%s. Deleting bad index entry." err) (message "%s. Deleting bad index entry." err)
(org-persist--remove-from-index collection) (org-persist--remove-from-index collection)
nil))))))) nil))))))))
(defun org-persist-write-all-buffer () (defun org-persist-write-all-buffer ()
"Call `org-persist-write-all' in current buffer. "Call `org-persist-write-all' in current buffer.
@ -931,11 +935,6 @@ Do nothing in an indirect buffer."
(defun org-persist-gc () (defun org-persist-gc ()
"Remove expired or unregistered containers. "Remove expired or unregistered containers.
Also, remove containers associated with non-existing files." Also, remove containers associated with non-existing files."
(unless (and org-persist-disable-when-emacs-Q
;; FIXME: This is relying on undocumented fact that
;; Emacs sets `user-init-file' to nil when loaded with
;; "-Q" argument.
(not user-init-file))
(let (new-index (remote-files-num 0)) (let (new-index (remote-files-num 0))
(dolist (collection org-persist--index) (dolist (collection org-persist--index)
(let* ((file (plist-get (plist-get collection :associated) :file)) (let* ((file (plist-get (plist-get collection :associated) :file))
@ -962,7 +961,7 @@ Also, remove containers associated with non-existing files."
(if expired? (if expired?
(org-persist--gc-persist-file persist-file) (org-persist--gc-persist-file persist-file)
(push collection new-index))))) (push collection new-index)))))
(setq org-persist--index (nreverse new-index))))) (setq org-persist--index (nreverse new-index))))
;; Automatically write the data, but only when we have write access. ;; Automatically write the data, but only when we have write access.
(let ((dir (directory-file-name (let ((dir (directory-file-name
@ -978,6 +977,15 @@ Also, remove containers associated with non-existing files."
;; So we are adding the hook after `org-persist-write-all'. ;; So we are adding the hook after `org-persist-write-all'.
(add-hook 'kill-emacs-hook #'org-persist-gc))) (add-hook 'kill-emacs-hook #'org-persist-gc)))
;; Point to temp directory when `org-persist--disable-when-emacs-Q' is set.
(if (and org-persist--disable-when-emacs-Q
;; FIXME: This is relying on undocumented fact that
;; Emacs sets `user-init-file' to nil when loaded with
;; "-Q" argument.
(not user-init-file))
(setq org-persist-directory
(make-temp-file "org-persist-" 'dir)))
(add-hook 'after-init-hook #'org-persist-load-all) (add-hook 'after-init-hook #'org-persist-load-all)
(provide 'org-persist) (provide 'org-persist)

View file

@ -11,7 +11,7 @@ Inserted by installing Org mode or when a release is made."
(defun org-git-version () (defun org-git-version ()
"The Git version of Org mode. "The Git version of Org mode.
Inserted by installing Org or when a release is made." Inserted by installing Org or when a release is made."
(let ((org-git-version "release_9.6-31-g954a95")) (let ((org-git-version "release_9.6-49-g47d129"))
org-git-version)) org-git-version))
(provide 'org-version) (provide 'org-version)

View file

@ -102,6 +102,7 @@
(require 'org-cycle) (require 'org-cycle)
(defvaralias 'org-hide-block-startup 'org-cycle-hide-block-startup) (defvaralias 'org-hide-block-startup 'org-cycle-hide-block-startup)
(defvaralias 'org-hide-drawer-startup 'org-cycle-hide-drawer-startup)
(defvaralias 'org-pre-cycle-hook 'org-cycle-pre-hook) (defvaralias 'org-pre-cycle-hook 'org-cycle-pre-hook)
(defvaralias 'org-tab-first-hook 'org-cycle-tab-first-hook) (defvaralias 'org-tab-first-hook 'org-cycle-tab-first-hook)
(defalias 'org-global-cycle #'org-cycle-global) (defalias 'org-global-cycle #'org-cycle-global)
@ -4596,8 +4597,8 @@ is available. This option applies only if FILE is a URL."
This checks every pattern in `org-safe-remote-resources', and This checks every pattern in `org-safe-remote-resources', and
returns non-nil if any of them match." returns non-nil if any of them match."
(let ((uri-patterns org-safe-remote-resources) (let ((uri-patterns org-safe-remote-resources)
(file-uri (and buffer-file-name (file-uri (and (buffer-file-name (buffer-base-buffer))
(concat "file://" (file-truename buffer-file-name)))) (concat "file://" (file-truename (buffer-file-name (buffer-base-buffer))))))
match-p) match-p)
(while (and (not match-p) uri-patterns) (while (and (not match-p) uri-patterns)
(setq match-p (or (string-match-p (car uri-patterns) uri) (setq match-p (or (string-match-p (car uri-patterns) uri)
@ -4608,7 +4609,8 @@ returns non-nil if any of them match."
(defun org--confirm-resource-safe (uri) (defun org--confirm-resource-safe (uri)
"Ask the user if URI should be considered safe, returning non-nil if so." "Ask the user if URI should be considered safe, returning non-nil if so."
(unless noninteractive (unless noninteractive
(let ((current-file (and buffer-file-name (file-truename buffer-file-name))) (let ((current-file (and (buffer-file-name (buffer-base-buffer))
(file-truename (buffer-file-name (buffer-base-buffer)))))
(domain (and (string-match (domain (and (string-match
(rx (seq "http" (? "s") "://") (rx (seq "http" (? "s") "://")
(optional (+ (not (any "@/\n"))) "@") (optional (+ (not (any "@/\n"))) "@")
@ -16399,6 +16401,10 @@ buffer boundaries with possible narrowing."
"Remove inline-display overlay if a corresponding region is modified." "Remove inline-display overlay if a corresponding region is modified."
(when (and ov after) (when (and ov after)
(delete ov org-inline-image-overlays) (delete ov org-inline-image-overlays)
;; Clear image from cache to avoid image not updating upon
;; changing on disk. See Emacs bug#59902.
(when (overlay-get ov 'org-image-overlay)
(image-flush (overlay-get ov 'display)))
(delete-overlay ov))) (delete-overlay ov)))
(defun org-remove-inline-images (&optional beg end) (defun org-remove-inline-images (&optional beg end)

View file

@ -4612,12 +4612,17 @@ If LINK refers to a remote resource, modify it to point to a local
downloaded copy. Otherwise, return unchanged LINK." downloaded copy. Otherwise, return unchanged LINK."
(when (org-export-link-remote-p link) (when (org-export-link-remote-p link)
(let* ((local-path (org-export-link--remote-local-copy link))) (let* ((local-path (org-export-link--remote-local-copy link)))
(if local-path
(setcdr link (setcdr link
(thread-first (cadr link) (thread-first (cadr link)
(plist-put :type "file") (plist-put :type "file")
(plist-put :path local-path) (plist-put :path local-path)
(plist-put :raw-link (concat "file:" local-path)) (plist-put :raw-link (concat "file:" local-path))
list)))) list))
(display-warning
'(org export)
(format "unable to obtain local copy of %s"
(org-element-property :raw-link link))))))
link) link)
;;;; For References ;;;; For References
@ -4753,23 +4758,27 @@ objects of the same type."
(let ((counter 0)) (let ((counter 0))
;; Increment counter until ELEMENT is found again. ;; Increment counter until ELEMENT is found again.
(org-element-map (plist-get info :parse-tree) (org-element-map (plist-get info :parse-tree)
(or types (org-element-type element)) (or (and types (cons (org-element-type element) types))
(org-element-type element))
(lambda (el) (lambda (el)
(let ((cached (org-element-property :org-export--counter el))) (let ((cached (org-element-property :org-export--counter el)))
(cond (cond
((eq element el) (1+ counter)) ((eq element el) (1+ counter))
;; Use cached result. ;; Use cached result.
((and cached (equal predicate (car cached))) ((and cached
(cdr cached)) (equal predicate (car cached))
(equal types (cadr cached)))
(setq counter (nth 2 cached))
nil)
((not predicate) ((not predicate)
(cl-incf counter) (cl-incf counter)
(org-element-put-property (org-element-put-property
el :org-export--counter (cons predicate counter)) el :org-export--counter (list predicate types counter))
nil) nil)
((funcall predicate el info) ((funcall predicate el info)
(cl-incf counter) (cl-incf counter)
(org-element-put-property (org-element-put-property
el :org-export--counter (cons predicate counter)) el :org-export--counter (list predicate types counter))
nil)))) nil))))
info 'first-match))))) info 'first-match)))))