diff options
Diffstat (limited to 'lisp')
-rw-r--r-- | lisp/org/ob-eval.el | 2 | ||||
-rw-r--r-- | lisp/org/ob-sql.el | 2 | ||||
-rw-r--r-- | lisp/org/org-agenda.el | 2 | ||||
-rw-r--r-- | lisp/org/org-compat.el | 12 | ||||
-rw-r--r-- | lisp/org/org-element.el | 45 | ||||
-rw-r--r-- | lisp/org/org-footnote.el | 2 | ||||
-rw-r--r-- | lisp/org/org-version.el | 2 | ||||
-rw-r--r-- | lisp/org/org.el | 12 |
8 files changed, 50 insertions, 29 deletions
diff --git a/lisp/org/ob-eval.el b/lisp/org/ob-eval.el index 6f6edb949cc..07e53077253 100644 --- a/lisp/org/ob-eval.el +++ b/lisp/org/ob-eval.el @@ -59,7 +59,7 @@ Writes QUERY into a temp-buffer that is processed with (let ((error-buffer (get-buffer-create " *Org-Babel Error*")) exit-code) (with-current-buffer error-buffer (erase-buffer)) (with-temp-buffer - (insert query) + (insert query "\n") (setq exit-code (org-babel--shell-command-on-region command error-buffer)) diff --git a/lisp/org/ob-sql.el b/lisp/org/ob-sql.el index 39a4573a54e..f73e7003f6d 100644 --- a/lisp/org/ob-sql.el +++ b/lisp/org/ob-sql.el @@ -234,7 +234,7 @@ database connections." (:database . sql-database))) (mapped-name (cdr (assq name name-mapping)))) (cadr (assq mapped-name - (cdr (assoc dbconnection sql-connection-alist)))))))) + (cdr (assoc-string dbconnection sql-connection-alist t)))))))) (defun org-babel-execute:sql (body params) "Execute a block of Sql code with Babel. diff --git a/lisp/org/org-agenda.el b/lisp/org/org-agenda.el index 63107e8e6a4..3db33c4d63e 100644 --- a/lisp/org/org-agenda.el +++ b/lisp/org/org-agenda.el @@ -8211,7 +8211,7 @@ filter." (if (and org-agenda-filtered-by-category org-agenda-category-filter) (org-agenda-filter-show-all-cat) - (let ((cat (org-no-properties (org-get-at-eol 'org-category 1)))) + (let ((cat (org-no-properties (org-agenda-get-category)))) (cond ((and cat strip) (org-agenda-filter-apply diff --git a/lisp/org/org-compat.el b/lisp/org/org-compat.el index 6c50852553c..d5bf2191ae7 100644 --- a/lisp/org/org-compat.el +++ b/lisp/org/org-compat.el @@ -196,11 +196,13 @@ removed." ;;; Emacs < 27.1 compatibility -(unless (fboundp 'combine-change-calls) - ;; A stub when `combine-change-calls' was not yet there. - (defmacro combine-change-calls (_beg _end &rest body) - (declare (debug (form form def-body)) (indent 2)) - `(progn ,@body))) +(if (version< emacs-version "29") + ;; A stub when `combine-change-calls' was not yet there or had + ;; critical bugs (see Emacs bug#60467). + (defmacro org-combine-change-calls (_beg _end &rest body) + (declare (debug (form form def-body)) (indent 2)) + `(progn ,@body)) + (defalias 'org-combine-change-calls 'combine-change-calls)) (if (version< emacs-version "27.1") (defsubst org-replace-buffer-contents (source &optional _max-secs _max-costs) diff --git a/lisp/org/org-element.el b/lisp/org/org-element.el index 389acf82500..4f4eebfcc2d 100644 --- a/lisp/org/org-element.el +++ b/lisp/org/org-element.el @@ -7406,14 +7406,16 @@ the cache." (org-element-at-point to-pos) (cl-macrolet ((cache-root ;; Use the most optimal version of cache available. - () `(if (memq granularity '(headline headline+inlinetask)) - (org-element--headline-cache-root) - (org-element--cache-root))) + () `(org-with-base-buffer nil + (if (memq granularity '(headline headline+inlinetask)) + (org-element--headline-cache-root) + (org-element--cache-root)))) (cache-size ;; Use the most optimal version of cache available. - () `(if (memq granularity '(headline headline+inlinetask)) - org-element--headline-cache-size - org-element--cache-size)) + () `(org-with-base-buffer nil + (if (memq granularity '(headline headline+inlinetask)) + org-element--headline-cache-size + org-element--cache-size))) (cache-walk-restart ;; Restart tree traversal after AVL tree re-balance. () `(when node @@ -7443,8 +7445,9 @@ the cache." ;; Avoid extra staff like timer cancels et al ;; and only call `org-element--cache-sync-requests' when ;; there are pending requests. - (when org-element--cache-sync-requests - (org-element--cache-sync (current-buffer))) + (org-with-base-buffer nil + (when org-element--cache-sync-requests + (org-element--cache-sync (current-buffer)))) ;; Call `org-element--parse-to' directly avoiding any ;; kind of `org-element-at-point' overheads. (if restrict-elements @@ -7515,8 +7518,9 @@ the cache." tmpnext-start)) ;; Check if cache does not have gaps. (cache-gapless-p - () `(eq org-element--cache-change-tic - (alist-get granularity org-element--cache-gapless)))) + () `(org-with-base-buffer nil + (eq org-element--cache-change-tic + (alist-get granularity org-element--cache-gapless))))) ;; The core algorithm is simple walk along binary tree. However, ;; instead of checking all the tree elements from first to last ;; (like in `avl-tree-mapcar'), we begin from FROM-POS skipping @@ -7644,7 +7648,9 @@ the cache." ;; In the process, we may alter the buffer, ;; so also keep track of the cache state. (progn - (setq modified-tic org-element--cache-change-tic) + (setq modified-tic + (org-with-base-buffer nil + org-element--cache-change-tic)) (setq cache-size (cache-size)) ;; When NEXT-RE/FAIL-RE is provided, skip to ;; next regexp match after :begin of the current @@ -7678,7 +7684,7 @@ the cache." ;; ;; Call FUNC. FUNC may move point. (setq org-element-cache-map-continue-from nil) - (if org-element--cache-map-statistics + (if (org-with-base-buffer nil org-element--cache-map-statistics) (progn (setq before-time (float-time)) (push (funcall func data) result) @@ -7697,7 +7703,15 @@ the cache." (when org-element-cache-map-continue-from (goto-char org-element-cache-map-continue-from)) (when (> (point) start) - (move-start-to-next-match nil)) + (move-start-to-next-match nil) + ;; (point) inside matching element. + ;; Go further. + (when (> (point) start) + (setq data (element-match-at-point)) + (if (not data) + (cache-walk-abort) + (goto-char (next-element-start)) + (move-start-to-next-match next-element-re)))) ;; Drop nil. (unless (car result) (pop result))) ;; If FUNC did not move the point and we @@ -7710,8 +7724,9 @@ the cache." start)) (setq start nil)) ;; Check if the buffer has been modified. - (unless (and (eq modified-tic org-element--cache-change-tic) - (eq cache-size (cache-size))) + (unless (org-with-base-buffer nil + (and (eq modified-tic org-element--cache-change-tic) + (eq cache-size (cache-size)))) ;; START may no longer be valid, update ;; it to beginning of real element. ;; Upon modification, START may lay diff --git a/lisp/org/org-footnote.el b/lisp/org/org-footnote.el index c83026d1d8f..6bdd0b32fed 100644 --- a/lisp/org/org-footnote.el +++ b/lisp/org/org-footnote.el @@ -853,7 +853,7 @@ to `org-footnote-section'. Inline definitions are ignored." ;; Insert un-referenced footnote definitions at the end. ;; Combine all insertions into one to create a single cache ;; update call. - (combine-change-calls (point) (point) + (org-combine-change-calls (point) (point) (pcase-dolist (`(,label . ,definition) definitions) (unless (member label inserted) (insert "\n" definition "\n")))))))))) diff --git a/lisp/org/org-version.el b/lisp/org/org-version.el index 8372a0be4a5..5f587fb3fd8 100644 --- a/lisp/org/org-version.el +++ b/lisp/org/org-version.el @@ -11,7 +11,7 @@ Inserted by installing Org mode or when a release is made." (defun org-git-version () "The Git version of Org mode. Inserted by installing Org or when a release is made." - (let ((org-git-version "release_9.6.1-23-gc45a05")) + (let ((org-git-version "release_9.6.1-31-gaf1bb1")) org-git-version)) (provide 'org-version) diff --git a/lisp/org/org.el b/lisp/org/org.el index 1b829d837c7..9a4f7803cf4 100644 --- a/lisp/org/org.el +++ b/lisp/org/org.el @@ -723,6 +723,10 @@ defined in org-duration.el.") (set-default-toplevel-value var value) (when (featurep 'org) (org-load-modules-maybe 'force) + ;; FIXME: We can't have all the requires at top-level due to + ;; circular dependencies. Yet, this function might sometimes be + ;; called when 'org-element is not loaded. + (require 'org-element) (org-element-cache-reset 'all))) (defcustom org-modules '(ol-doi ol-w3m ol-bbdb ol-bibtex ol-docview ol-gnus ol-info ol-irc ol-mhe ol-rmail ol-eww) @@ -6556,7 +6560,7 @@ See also `org-promote'." (interactive) (save-excursion (org-back-to-heading t) - (combine-change-calls (point) (save-excursion (org-end-of-subtree t)) + (org-combine-change-calls (point) (save-excursion (org-end-of-subtree t)) (org-with-limited-levels (org-map-tree 'org-promote)))) (org-fix-position-after-promote)) @@ -6566,7 +6570,7 @@ See `org-demote' and `org-promote'." (interactive) (save-excursion (org-back-to-heading t) - (combine-change-calls (point) (save-excursion (org-end-of-subtree t)) + (org-combine-change-calls (point) (save-excursion (org-end-of-subtree t)) (org-with-limited-levels (org-map-tree 'org-demote)))) (org-fix-position-after-promote)) @@ -7135,7 +7139,7 @@ When REMOVE is non-nil, remove the subtree from the clipboard." (setq beg (point)) ;; Avoid re-parsing cache elements when i.e. level 1 heading ;; is inserted and then promoted. - (combine-change-calls beg beg + (org-combine-change-calls beg beg (when (fboundp 'org-id-paste-tracker) (org-id-paste-tracker txt)) (insert txt) (unless (string-suffix-p "\n" txt) (insert "\n")) @@ -18844,7 +18848,7 @@ Alignment is done according to `org-property-format', which see." (when (save-excursion (beginning-of-line) (looking-at org-property-re)) - (combine-change-calls (match-beginning 0) (match-end 0) + (org-combine-change-calls (match-beginning 0) (match-end 0) (let ((newtext (concat (match-string 4) (org-trim (format org-property-format (match-string 1) (match-string 3)))))) |