* Bug: org-agenda-sort-notime-is-late is not correctly handled by timestamp comparison [9.4.6 (9.4.6-12-gdcc3a8-elpaplus @ /Users/charlestam/.emacs.d/elpa/org-plus-contrib-20210830/)]
@ 2021-09-02 4:47 Charles Tam
2021-12-30 9:20 ` [PATCH] " Timothy
0 siblings, 1 reply; 3+ messages in thread
From: Charles Tam @ 2021-09-02 4:47 UTC (permalink / raw)
To: emacs-orgmode
[-- Attachment #1: Type: text/plain, Size: 13589 bytes --]
org-agenda-sorting-strategy claims that scheduled-up (-down) causes
items to be sorted in ascending (descending) order by scheduled
timestamp.
org-agenda-sort-notime-is-late claims that if it is non-nil, the absence
of a timestamp is treated as being maximal.
Instead, when using the scheduled-up (-down) sorting strategy, with
non-nil org-agenda-sort-notime-is-late, the absence of a timestamp is
treated as being minimal. Note that the documentation is not strictly
wrong; the correct behavior is exhibited for time-of-day comparisons,
just not timestamp comparisons.
Steps to Reproduce:
(setq org-agenda-sorting-strategy '((agenda scheduled-up)
(todo scheduled-up)
(tags scheduled-up)
(search scheduled-up))
org-agenda-sort-notime-is-late t)
Place the following text in an org agenda file:
* Reproduce ordering bug
** TODO Early item
SCHEDULED: <1990-01-01 Mon>
** TODO Late item
SCHEDULED: <2020-01-01 Wed>
** TODO Unscheduled item
(Replace TODO with any non-DONE todo state if you need to.)
Place the point on the "Reproduce" item and `M-x org-agenda < < t`
(that is, list all TODO items restricted to the "Reproduce" subtree).
Expected:
TODO Early item
TODO Late item
TODO Unscheduled item
Actual:
TODO Unscheduled item
TODO Early item
TODO Late item
Suggested fix:
Find `defsubst org-cmp-ts` in org-agenda.el. The definition of `def`
in the `let*` should be something like
(if org-agenda-sort-notime-is-late 99999999 -1)
(In the state dump below, `org-agenda-sort-notime-is-late` is not mentioned
but has its default value of t.)
Thanks,
Charles
Emacs : GNU Emacs 27.2 (build 1, x86_64-apple-darwin18.7.0, NS
appkit-1671.60 Version 10.14.6 (Build 18G95))
of 2021-03-27
Package: Org mode version 9.4.6 (9.4.6-12-gdcc3a8-elpaplus @
/Users/charlestam/.emacs.d/elpa/org-plus-contrib-20210830/)
current state:
==============
(setq
org-roam-db-location "/Users/charlestam/mise/roam/org-roam.db"
org-src-mode-hook '(org-src-babel-configure-edit-buffer
org-src-mode-configure-edit-buffer)
org-after-todo-state-change-hook '(org-checklist)
org-capture-prepare-finalize-hook '(org-roam-capture--install-finalize-h)
org-link-shell-confirm-function 'yes-or-no-p
org-expiry-wait "+30d"
org-metadown-hook '(org-babel-pop-to-session-maybe)
org-clock-out-hook '(org-clock-remove-empty-clock-drawer)
org-roam-db-node-include-function #[0 "\300\207" [t] 1]
org-refile-targets '((nil :maxlevel . 2) (org-agenda-files :maxlevel . 1))
org-html-format-inlinetask-function
'org-html-format-inlinetask-default-function
org-pretty-entities t
org-special-ctrl-a/e t
org-agenda-files '("~/mise/TODO")
org-ascii-format-inlinetask-function 'org-ascii-format-inlinetask-default
org-reveal-start-hook '(org-decrypt-entry)
org-modules '(org-expiry org-habit ol-w3m ol-bbdb ol-bibtex ol-docview
ol-gnus ol-info ol-irc ol-mhe ol-rmail
ol-eww)
org-startup-folded 'showall
org-archive-location "%s_archive::datetree/"
org-mode-hook '((lambda nil (font-lock-add-keywords nil '(("{{{.+}}}" 0
'org-macro-face))) (set-fill-column 92))
#[0 "\300\301\302\303\304$\207" [add-hook
change-major-mode-hook org-show-all append local] 5]
#[0 "\300\301\302\303\304$\207"
[add-hook change-major-mode-hook
org-babel-show-result-all append local] 5]
org-babel-result-hide-spec org-babel-hide-all-hashes
#[0 "\301\211 \207" [imenu-create-index-function
org-imenu-get-tree] 2] turn-on-font-lock
auto-fill-mode org-eldoc-load)
org-tags-match-list-sublevels nil
org-archive-hook '(org-attach-archive-delete-maybe)
org-confirm-elisp-link-function 'yes-or-no-p
org-agenda-before-write-hook '(org-agenda-add-entry-text)
org-metaup-hook '(org-babel-load-in-session-maybe)
org-bibtex-headline-format-function #[257 "\300 \236A\207" [:title] 3
"\n\n(fn ENTRY)"]
org-latex-format-drawer-function #[514 "\207" [] 3 "\n\n(fn _ CONTENTS)"]
org-expiry-handler-function 'org-toggle-archive-tag
org-agenda-deadline-faces '((1.0 . org-warning) (0.8 .
org-imminent-deadline) (0.5 . org-upcoming-deadline)
(0.0 . org-upcoming-distant-deadline))
org-babel-pre-tangle-hook '(save-buffer)
org-tab-first-hook '(org-babel-hide-result-toggle-maybe
org-babel-header-arg-expand)
org-hide-leading-stars t
org-babel-load-languages '((python . t))
org-log-done 'time
org-roam-capture-preface-hook '(org-roam-dailies--override-capture-time-h)
org-hide-emphasis-markers t
org-export-backends '(ascii html latex md)
org-roam-completion-everywhere t
org-roam-capture-templates '(("d" "default" plain "%?" :target
(file+head "%<%Y%m%d%H%M%S>-${slug}.org"
"#+title: ${title}\n#+filetags: \n")
:unnarrowed t)
("t" "task" entry "* NONE %?" :target
(file+head+olp "%<%Y%m%d%H%M%S>-${slug}.org"
"#+title: ${title}\n#+filetags: \n"
("Action Items"))
)
)
org-checklist-export-function 'org-export-as-ascii
org-ascii-format-drawer-function #[771 " \207" [] 4 "\n\n(fn NAME CONTENTS
WIDTH)"]
org-agenda-span 10
org-agenda-loop-over-headlines-in-active-region nil
org-src-lang-modes '(("redis" . redis) ("php" . php) ("arduino" . arduino)
("C" . c) ("C++" . c++)
("asymptote" . asy) ("bash" . sh) ("beamer" . latex)
("calc" . fundamental) ("cpp" . c++)
("ditaa" . artist) ("dot" . fundamental) ("elisp" .
emacs-lisp) ("ocaml" . tuareg)
("screen" . shell-script) ("shell" . sh) ("sqlite" .
sql))
org-roam-db-autosync-mode-hook '(vulpea-db-autosync-enable)
org-agenda-clock-consistency-checks '(:max-duration "10:00" :min-duration
0 :max-gap "0:05" :gap-ok-around
("4:00") :default-face
org-agenda-clock-gap :overlap-face nil :gap-face
nil :no-end-time-face nil :long-face
nil :short-face nil)
org-roam-find-file-hook '(org-roam-buffer--setup-redisplay-h
org-roam--register-completion-functions-h
org-roam--replace-roam-links-on-save-h
org-roam-open-id-with-org-roam-db-h
org-roam-db-autosync--setup-update-on-save-h)
org-agenda-prefix-format '((agenda . " %i %?-12t% s") (todo . " %i ")
(tags . " %i ") (search . " %i "))
org-occur-hook '(org-first-headline-recenter)
org-agenda-start-with-log-mode t
org-footnote-auto-adjust t
org-odd-levels-only t
org-clock-out-switch-to-state "WAIT"
org-structure-template-alist '(("p" . "src python") ("a" . "export ascii")
("c" . "center") ("C" . "comment")
("e" . "example") ("E" . "export") ("h" .
"export html") ("l" . "export latex")
("q" . "quote") ("s" . "src") ("v" .
"verse"))
org-cycle-hook '(org-cycle-hide-archived-subtrees org-cycle-hide-drawers
org-cycle-show-empty-lines
org-optimize-window-after-visibility-change)
org-todo-keywords '((sequence "NONE" "HELP" "WAIT" "ACTV" "|" "CONT"
"DONE" "DEAD" "PASS"))
org-speed-command-hook '(org-speed-command-activate
org-babel-speed-command-activate)
org-roam-node-annotation-function 'org-roam-node-read--annotation
org-tags-column -100
org-habit-graph-column 70
org-roam-ref-annotation-function 'org-roam-ref-read--annotation
org-roam-dailies-directory "diary/"
org-babel-tangle-lang-exts '(("python" . "py") ("emacs-lisp" . "el")
("elisp" . "el"))
org-refile-use-outline-path t
org-export-before-parsing-hook '(org-attach-expand-links)
org-confirm-shell-link-function 'yes-or-no-p
org-link-parameters '(("attachment" :follow org-attach-follow :complete
org-attach-complete-link)
("message" :follow org-mac-message-open)
("x-devonthink-item" :follow
org-devonthink-item-open)
("mac-evernote" :follow org-mac-evernote-note-open)
("mac-outlook" :follow org-mac-outlook-message-open)
("acrobat" :follow org-mac-acrobat-open) ("skim"
:follow org-mac-skim-open)
("addressbook" :follow org-mac-addressbook-item-open)
("x-together-item" :follow
org-mac-together-item-open)
("mairix" :follow org-mairix-open :store
org-mairix-store-gnus-link)
("roam" :follow org-roam-link-follow-link) ("id"
:follow org-id-open)
("eww" :follow org-eww-open :store
org-eww-store-link)
("rmail" :follow org-rmail-open :store
org-rmail-store-link)
("mhe" :follow org-mhe-open :store
org-mhe-store-link)
("irc" :follow org-irc-visit :store
org-irc-store-link :export org-irc-export)
("info" :follow org-info-open :export
org-info-export :store org-info-store-link)
("gnus" :follow org-gnus-open :store
org-gnus-store-link)
("docview" :follow org-docview-open :export
org-docview-export :store
org-docview-store-link)
("bibtex" :follow org-bibtex-open :store
org-bibtex-store-link)
("bbdb" :follow org-bbdb-open :export
org-bbdb-export :complete org-bbdb-complete-link
:store org-bbdb-store-link)
("w3m" :store org-w3m-store-link) ("file+sys")
("file+emacs")
("shell" :follow org-link--open-shell)
("news" :follow
#[514 "\301\300\302 Q \"\207" ["news" browse-url
":"] 6 "\n\n(fn URL ARG)"])
("mailto" :follow
#[514 "\301\300\302 Q \"\207" ["mailto" browse-url
":"] 6 "\n\n(fn URL ARG)"])
("https" :follow
#[514 "\301\300\302 Q \"\207" ["https" browse-url
":"] 6 "\n\n(fn URL ARG)"])
("http" :follow
#[514 "\301\300\302 Q \"\207" ["http" browse-url
":"] 6 "\n\n(fn URL ARG)"])
("ftp" :follow
#[514 "\301\300\302 Q \"\207" ["ftp" browse-url
":"] 6 "\n\n(fn URL ARG)"])
("help" :follow org-link--open-help) ("file"
:complete org-link-complete-file)
("elisp" :follow org-link--open-elisp) ("doi"
:follow org-link--open-doi))
org-agenda-skip-scheduled-if-done t
org-latex-format-headline-function
'org-latex-format-headline-default-function
org-expiry-inactive-timestamps t
org-capture-templates '(("t" "Task" entry (file+headline "~/mise/TODO"
"Schedule Me")
"*** NONE %^{Summary}\n /Captured %U/\n
%?\n")
("s" "Snippet" plain (file+olp+datetree
"~/mise/TODO" "Snippets") " * %?"
:empty-lines-after 1 :tree-type week)
("j" "Journal" plain (file+olp+datetree
"~/mise/NOTES") " %?" :empty-lines-before 1
:empty-lines-after 1)
("n" "Note" entry (file+headline "~/mise/NOTES"
"Notes")
"*** %^{Topic}\n /Captured %U/\n %?\n"
:empty-lines-before 1 :empty-lines-after 1
:prepend t)
)
org-link-elisp-confirm-function 'yes-or-no-p
org-todo-keyword-faces '(("UNINIT'D" . org-todo-uninited) ("NEEDHELP" .
org-todo-needhelp)
("BUFFERED" . org-todo-buffered) ("PROGRESS" .
org-todo-progress)
("CONTINUE" . org-todo-continue) ("COMPLETE" .
org-todo-complete)
("OBSOLETE" . org-todo-obsolete) ("DELEGATE" .
org-todo-delegate)
("NONE" . org-todo-uninited) ("HELP" .
org-todo-needhelp) ("WAIT" . org-todo-buffered)
("ACTV" . org-todo-progress) ("CONT" .
org-todo-continue) ("DONE" . org-todo-complete)
("DEAD" . org-todo-obsolete) ("PASS" .
org-todo-delegate))
org-roam-db-autosync-mode t
org-roam-dailies-capture-templates '(("d" "default" entry "* %U\n %?"
:target
(file+head "%<%Y-%m-%d-%a>.org"
"#+title: %<%Y-%m-%d>
(%<%a>)\n#+filetags: diary\n\n")
)
)
org-latex-format-inlinetask-function
'org-latex-format-inlinetask-default-function
org-html-format-drawer-function #[514 "\207" [] 3 "\n\n(fn NAME CONTENTS)"]
org-roam-directory "/Users/charlestam/mise/roam"
org-clock-in-switch-to-state "ACTV"
org-html-format-headline-function
'org-html-format-headline-default-function
org-mairix-display-hook 'org-mairix-gnus-display-results
org-pretty-entities-include-sub-superscripts nil
org-habit-show-all-today t
org-confirm-babel-evaluate nil
org-roam-node-display-template "${title:*} ${tags:20}"
org-agenda-sorting-strategy '((agenda habit-down time-up priority-down
effort-up category-keep)
(todo scheduled-up) (tags time-up) (search
alpha-up))
org-tags-exclude-from-inheritance '("todo")
org-agenda-skip-deadline-if-done t
org-mairix-gnus-select-display-group-function
'org-mairix-gnus-select-display-group-function-gg
)
[-- Attachment #2: Type: text/html, Size: 17970 bytes --]
^ permalink raw reply [flat|nested] 3+ messages in thread
* [PATCH] Re: Bug: org-agenda-sort-notime-is-late is not correctly handled by timestamp comparison [9.4.6 (9.4.6-12-gdcc3a8-elpaplus @ /Users/charlestam/.emacs.d/elpa/org-plus-contrib-20210830/)]
2021-09-02 4:47 Bug: org-agenda-sort-notime-is-late is not correctly handled by timestamp comparison [9.4.6 (9.4.6-12-gdcc3a8-elpaplus @ /Users/charlestam/.emacs.d/elpa/org-plus-contrib-20210830/)] Charles Tam
@ 2021-12-30 9:20 ` Timothy
2022-01-30 7:43 ` Ihor Radchenko
0 siblings, 1 reply; 3+ messages in thread
From: Timothy @ 2021-12-30 9:20 UTC (permalink / raw)
To: Charles Tam; +Cc: emacs-orgmode
[-- Attachment #1.1: Type: text/plain, Size: 393 bytes --]
Hi Charles,
Thanks for reporting this, and sorry it’s taken so long for someone to respond
(it’s been a busy year for the maintainers).
I’ve confirmed both your issue report (thanks for the detailed steps), and your
suggested fix. As such, I’ve produced a patch (attached). It would be good if
someone else could check this looks fine and apply it.
All the best,
Timothy
[-- Attachment #1.2: Type: text/html, Size: 26003 bytes --]
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-org-agenda-Make-timestamp-ordering-match-docs.patch --]
[-- Type: text/x-patch, Size: 1155 bytes --]
From 9ecd0a9266338d7222281c7ccb16808c319646aa Mon Sep 17 00:00:00 2001
From: TEC <tec@tecosaur.com>
Date: Thu, 30 Dec 2021 17:16:29 +0800
Subject: [PATCH] org-agenda: Make timestamp ordering match docs
* lisp/org-agenda.el: When `org-agenda-sort-notime-is-late' is non-nil,
an absent timestamp is now (correctly) treated as maximal.
Bug reported by: Charles Tam <me@charlest.net> in
https://list.orgmode.org/CAKu+9YVNPSHG4HVtPFa2L2tP6yBdjJ38Teyr8OSDmCg0ZEOe9Q@mail.gmail.com
---
lisp/org-agenda.el | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lisp/org-agenda.el b/lisp/org-agenda.el
index 721ef2ced..4321a4f0b 100644
--- a/lisp/org-agenda.el
+++ b/lisp/org-agenda.el
@@ -7729,7 +7729,7 @@ (defsubst org-cmp-ts (a b type)
\"timestamp_ia\", compare within each of these type. When TYPE
is the empty string, compare all timestamps without respect of
their type."
- (let* ((def (and (not org-agenda-sort-notime-is-late) -1))
+ (let* ((def (if org-agenda-sort-notime-is-late 99999999 -1))
(ta (or (and (string-match type (or (get-text-property 1 'type a) ""))
(get-text-property 1 'ts-date a))
def))
--
2.34.1
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] Re: Bug: org-agenda-sort-notime-is-late is not correctly handled by timestamp comparison [9.4.6 (9.4.6-12-gdcc3a8-elpaplus @ /Users/charlestam/.emacs.d/elpa/org-plus-contrib-20210830/)]
2021-12-30 9:20 ` [PATCH] " Timothy
@ 2022-01-30 7:43 ` Ihor Radchenko
0 siblings, 0 replies; 3+ messages in thread
From: Ihor Radchenko @ 2022-01-30 7:43 UTC (permalink / raw)
To: Timothy; +Cc: emacs-orgmode, Charles Tam
Timothy <tecosaur@gmail.com> writes:
> I’ve confirmed both your issue report (thanks for the detailed steps), and your
> suggested fix. As such, I’ve produced a patch (attached). It would be good if
> someone else could check this looks fine and apply it.
I have applied the patch onto bugfix as 1b675f0.
The bug should be fixed now.
Best,
Ihor
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2022-01-30 7:41 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-09-02 4:47 Bug: org-agenda-sort-notime-is-late is not correctly handled by timestamp comparison [9.4.6 (9.4.6-12-gdcc3a8-elpaplus @ /Users/charlestam/.emacs.d/elpa/org-plus-contrib-20210830/)] Charles Tam
2021-12-30 9:20 ` [PATCH] " Timothy
2022-01-30 7:43 ` Ihor Radchenko
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.