From 647cc9c65e7c2b691267bde7333eff6cc8d9132a Mon Sep 17 00:00:00 2001 From: Kyle Meyer Date: Sun, 22 Jan 2023 21:53:39 -0500 Subject: [PATCH] Update to Org 9.6.1-16-ge37e9b --- doc/misc/org.org | 4 +++- lisp/org/ob-core.el | 2 +- lisp/org/org-agenda.el | 17 ++++++++--------- lisp/org/org-clock.el | 30 +++++++++++++++++++----------- lisp/org/org-element.el | 4 +++- lisp/org/org-fold-core.el | 21 ++++++++++----------- lisp/org/org-persist.el | 5 ++++- lisp/org/org-table.el | 10 +++++++--- lisp/org/org-version.el | 2 +- lisp/org/org.el | 2 +- lisp/org/ox-odt.el | 2 +- lisp/org/ox.el | 4 ++-- 12 files changed, 60 insertions(+), 43 deletions(-) diff --git a/doc/misc/org.org b/doc/misc/org.org index 7ca2cce9e7f..14699e77395 100644 --- a/doc/misc/org.org +++ b/doc/misc/org.org @@ -8788,7 +8788,9 @@ a ~day~, ~week~, ~month~ or ~year~. For weekly agendas, the default is to start on the previous Monday (see ~org-agenda-start-on-weekday~). You can also set the start date using a date shift: =(setq org-agenda-start-day "+10d")= starts the agenda -ten days from today in the future. +ten days from today in the future. ~org-agenda-start-on-weekday~ +takes precedence over ~org-agenda-start-day~ in weekly and bi-weekly +agendas. Remote editing from the agenda buffer means, for example, that you can change the dates of deadlines and appointments from the agenda buffer. diff --git a/lisp/org/ob-core.el b/lisp/org/ob-core.el index 93cdf6ae868..3f6696fce77 100644 --- a/lisp/org/ob-core.el +++ b/lisp/org/ob-core.el @@ -3277,7 +3277,7 @@ Emacs shutdown.") (while (or (not dir) (file-exists-p dir)) (setq dir (expand-file-name (format "babel-stable-%d" (random 1000)) - (temporary-file-directory)))) + temporary-file-directory))) (make-directory dir) dir)) "Directory to hold temporary files created to execute code blocks. diff --git a/lisp/org/org-agenda.el b/lisp/org/org-agenda.el index 66b08adf535..2d194ad3413 100644 --- a/lisp/org/org-agenda.el +++ b/lisp/org/org-agenda.el @@ -54,6 +54,7 @@ (require 'org) (require 'org-macs) (require 'org-refile) +(require 'org-element) (declare-function diary-add-to-list "diary-lib" (date string specifier &optional marker globcolor literal)) @@ -80,11 +81,6 @@ (declare-function org-columns-quit "org-colview" ()) (declare-function diary-date-display-form "diary-lib" (&optional type)) (declare-function org-mobile-write-agenda-for-mobile "org-mobile" (file)) -(declare-function org-element-property "org-element" (property element)) -(declare-function org-element--cache-active-p "org-element" - (&optional called-from-cache-change-func-p)) -(declare-function org-element-lineage "org-element" - (datum &optional types with-self)) (declare-function org-habit-insert-consistency-graphs "org-habit" (&optional line)) (declare-function org-is-habit-p "org-habit" (&optional pom)) @@ -95,8 +91,6 @@ (declare-function org-capture "org-capture" (&optional goto keys)) (declare-function org-clock-modify-effort-estimate "org-clock" (&optional value)) -(declare-function org-element-type "org-element" (&optional element)) - (defvar calendar-mode-map) (defvar org-clock-current-task) (defvar org-current-tag-alist) @@ -1184,7 +1178,9 @@ Custom commands can set this variable in the options section." "Non-nil means start the overview always on the specified weekday. 0 denotes Sunday, 1 denotes Monday, etc. When nil, always start on the current day. -Custom commands can set this variable in the options section." +Custom commands can set this variable in the options section. + +This variable only applies when agenda spans either 7 or 14 days." :group 'org-agenda-daily/weekly :type '(choice (const :tag "Today" nil) (integer :tag "Weekday No."))) @@ -4357,7 +4353,10 @@ This check for agenda markers in all agenda buffers currently active." Custom commands can set this variable in the options section. This is usually a string like \"2007-11-01\", \"+2d\" or any other input allowed when reading a date through the Org calendar. -See the docstring of `org-read-date' for details.") +See the docstring of `org-read-date' for details. + +This variable has no effect when `org-agenda-start-on-weekday' is set +and agenda spans 7 or 14 days.") (defvar org-starting-day nil) ; local variable in the agenda buffer (defvar org-arg-loc nil) ; local variable diff --git a/lisp/org/org-clock.el b/lisp/org/org-clock.el index 4e72141cdc9..55372e5649b 100644 --- a/lisp/org/org-clock.el +++ b/lisp/org/org-clock.el @@ -1800,17 +1800,25 @@ Optional argument N tells to change by that many units." (time-subtract (org-time-string-to-time org-last-changed-timestamp) (org-time-string-to-time ts))) - (save-excursion - (goto-char begts) - (org-timestamp-change - (round (/ (float-time tdiff) - (pcase timestamp? - (`minute 60) - (`hour 3600) - (`day (* 24 3600)) - (`month (* 24 3600 31)) - (`year (* 24 3600 365.2))))) - timestamp? 'updown))))))) + ;; `save-excursion' won't work because + ;; `org-timestamp-change' deletes and re-inserts the + ;; timestamp. + (let ((origin (point))) + (save-excursion + (goto-char begts) + (org-timestamp-change + (round (/ (float-time tdiff) + (pcase timestamp? + (`minute 60) + (`hour 3600) + (`day (* 24 3600)) + (`month (* 24 3600 31)) + (`year (* 24 3600 365.2))))) + timestamp? 'updown)) + ;; Move back to initial position, but never beyond updated + ;; clock. + (unless (< (point) origin) + (goto-char origin)))))))) ;;;###autoload (defun org-clock-cancel () diff --git a/lisp/org/org-element.el b/lisp/org/org-element.el index f787fb1f713..389acf82500 100644 --- a/lisp/org/org-element.el +++ b/lisp/org/org-element.el @@ -2382,7 +2382,9 @@ Assume point is at the beginning of the fixed-width area." (defun org-element-fixed-width-interpreter (fixed-width _) "Interpret FIXED-WIDTH element as Org syntax." (let ((value (org-element-property :value fixed-width))) - (and value (replace-regexp-in-string "^" ": " value)))) + (and value + (if (string-empty-p value) ":\n" + (replace-regexp-in-string "^" ": " value))))) ;;;; Horizontal Rule diff --git a/lisp/org/org-fold-core.el b/lisp/org/org-fold-core.el index 0855e6f39ce..027ff921581 100644 --- a/lisp/org/org-fold-core.el +++ b/lisp/org/org-fold-core.el @@ -1003,7 +1003,13 @@ If SPEC-OR-ALIAS is omitted and FLAG is nil, unfold everything in the region." (overlay-put o (org-fold-core--property-symbol-get-create spec) spec) (overlay-put o 'invisible spec) (overlay-put o 'isearch-open-invisible #'org-fold-core--isearch-show) - (overlay-put o 'isearch-open-invisible-temporary #'org-fold-core--isearch-show-temporary)) + ;; FIXME: Disabling to work around Emacs bug#60399 + ;; and https://orgmode.org/list/87zgb6tk6h.fsf@localhost. + ;; The proper fix will require making sure that + ;; `org-fold-core-isearch-open-function' does not + ;; delete the overlays used by isearch. + ;; (overlay-put o 'isearch-open-invisible-temporary #'org-fold-core--isearch-show-temporary) + ) (put-text-property from to (org-fold-core--property-symbol-get-create spec) spec) (put-text-property from to 'isearch-open-invisible #'org-fold-core--isearch-show) (put-text-property from to 'isearch-open-invisible-temporary #'org-fold-core--isearch-show-temporary) @@ -1131,16 +1137,9 @@ This function is intended to be used as `isearch-filter-predicate'." "Clear `org-fold-core--isearch-local-regions'." (clrhash org-fold-core--isearch-local-regions)) -(defun org-fold-core--isearch-show (region) - "Reveal text in REGION found by isearch. -REGION can also be an overlay in current buffer." - (when (overlayp region) - (setq region (cons (overlay-start region) - (overlay-end region)))) - (org-with-point-at (car region) - (while (< (point) (cdr region)) - (funcall org-fold-core-isearch-open-function (car region)) - (goto-char (org-fold-core-next-visibility-change (point) (cdr region) 'ignore-hidden))))) +(defun org-fold-core--isearch-show (_) + "Reveal text at point found by isearch." + (funcall org-fold-core-isearch-open-function (point))) (defun org-fold-core--isearch-show-temporary (region hide-p) "Temporarily reveal text in REGION. diff --git a/lisp/org/org-persist.el b/lisp/org/org-persist.el index 336496efbfb..a0652b99c56 100644 --- a/lisp/org/org-persist.el +++ b/lisp/org/org-persist.el @@ -160,6 +160,8 @@ (declare-function org-next-visible-heading "org" (arg)) (declare-function org-at-heading-p "org" (&optional invisible-not-ok)) +;; Silence byte-compiler (used in `org-persist--write-elisp-file'). +(defvar pp-use-max-width) (defconst org-persist--storage-version "3.1" "Persistent storage layout version.") @@ -335,7 +337,8 @@ FORMAT and ARGS are passed to `message'." (make-directory (file-name-directory file) t)) (with-temp-file file (if pp - (pp data (current-buffer)) + (let ((pp-use-max-width nil)) ; Emacs bug#58687 + (pp data (current-buffer))) (prin1 data (current-buffer)))) (org-persist--display-time (- (float-time) start-time) diff --git a/lisp/org/org-table.el b/lisp/org/org-table.el index fac9e68c124..5116b1127f7 100644 --- a/lisp/org/org-table.el +++ b/lisp/org/org-table.el @@ -1229,7 +1229,7 @@ Return t when the line exists, nil if it does not exist." (if (looking-at "|[^|\n]+") (let* ((pos (match-beginning 0)) (match (match-string 0)) - (len (org-string-width match))) + (len (save-match-data (org-string-width match)))) (replace-match (concat "|" (make-string (1- len) ?\ ))) (goto-char (+ 2 pos)) (substring match 1))))) @@ -1725,8 +1725,12 @@ In particular, this does handle wide and invisible characters." (setq s (mapconcat (lambda (x) (if (member x '(?| ?+)) "|" " ")) s "")) (while (string-match "|\\([ \t]*?[^ \t\r\n|][^\r\n|]*\\)|" s) (setq s (replace-match - (concat "|" (make-string (org-string-width (match-string 1 s)) - ?\ ) "|") + (concat "|" + (make-string + (save-match-data + (org-string-width (match-string 1 s))) + ?\ ) + "|") t t s))) s)) diff --git a/lisp/org/org-version.el b/lisp/org/org-version.el index 43d50e4387f..22f952d7a30 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")) + (let ((org-git-version "release_9.6.1-16-ge37e9b")) org-git-version)) (provide 'org-version) diff --git a/lisp/org/org.el b/lisp/org/org.el index 869ff16a6da..153e860f9a5 100644 --- a/lisp/org/org.el +++ b/lisp/org/org.el @@ -7,7 +7,7 @@ ;; Maintainer: Bastien Guerry ;; Keywords: outlines, hypermedia, calendar, wp ;; URL: https://orgmode.org -;; Package-Requires: ((emacs "25.1")) +;; Package-Requires: ((emacs "26.1")) ;; Version: 9.6.1 diff --git a/lisp/org/ox-odt.el b/lisp/org/ox-odt.el index 1c233a266a1..949c8f9b5b2 100644 --- a/lisp/org/ox-odt.el +++ b/lisp/org/ox-odt.el @@ -2935,7 +2935,7 @@ contextual information." (trailing (and (string-match (rx (1+ blank) eos) output) (match-string 0 output)))) ;; Unfill, retaining leading/trailing space. - (let ((fill-column (point-max))) + (let ((fill-column most-positive-fixnum)) (fill-region (point-min) (point-max))) (concat leading (buffer-string) trailing)))))) ;; Return value. diff --git a/lisp/org/ox.el b/lisp/org/ox.el index 12767267a71..65f9ff18279 100644 --- a/lisp/org/ox.el +++ b/lisp/org/ox.el @@ -3040,7 +3040,7 @@ Return code as a string." ;; This way, we will be able to retrieve its export ;; options when calling ;; `org-export--get-subtree-options'. - (backward-char) + (when (bolp) (backward-char)) (narrow-to-region (point) (point-max)))) ;; Initialize communication channel with original buffer ;; attributes, unavailable in its copy. @@ -6407,7 +6407,7 @@ them." ("nb" :default "Innhold") ("nn" :default "Innhald") ("pl" :html "Spis treści") - ("pt_BR" :html "Índice" :utf8 "Índice" :ascii "Indice") + ("pt_BR" :html "Índice" :utf-8 "Índice" :ascii "Indice") ("ro" :default "Cuprins") ("ru" :html "Содержание" :utf-8 "Содержание") -- 2.39.2