alphapapa / org-super-agenda

Supercharge your Org daily/weekly agenda by grouping items

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Org 9.7 `org-element` API changes break habit selector

Thaodan opened this issue · comments

Description

Opening the agenda (org-agenda) for the current week or day results in the backtrace shown below.
(C-c a a).
Custom agenda commands are only affected if they have habbits inside them.

I think the habbit :habit t selector triggers the bug.

Environment

  • Org mode version 9.7-pre (release_9.6.3-297-g28d41e
  • GNU Emacs 30.0.50 (build 1, x86_64-suse-linux-gnu, GTK+ Version 3.24.38, cairo version 1.17.8)

Org-Agenda and Super-Agenda setings

   (use-package org-agenda
      :defer t
      :after org
      :config
      ;; org-org-directory and subdirectories
      (setq org-agenda-files `,(append '("~/Dokumente/org") (f-directories "~/Dokumente/org" nil t)))

      (defun org-agenda-custom-command-for (file)
        "Return list usable in org-agenda-custom-commands with agenda and all TODOs for FILE and inbox-FILE."
        (list '((agenda "") (alltodo "")) `((org-agenda-files '(,(expand-file-name "inbox.org" (car org-directory))
                                                                ,(expand-file-name (concat "caldav-inbox-" file ".org") (car org-directory))
                                                                ,(expand-file-name "gemeinsam-inbox.org" (car org-directory))
                                                                ,(expand-file-name "gemeinsam.org" (car org-directory))
                                                                ,(expand-file-name (concat file ".org") (car org-directory)))))))
      (defun org-agenda-custom-command-for-work (file)
        "Return list usable in org-agenda-custom-commands with agenda and all TODOs for FILE and work inbox."
        (list '((agenda "") (alltodo "")) `((org-agenda-files '(,(expand-file-name "inbox.org" (car org-directory))
                                                                ,(expand-file-name "caldav-inbox-arbeit.org" (car org-directory))
                                                                ,(expand-file-name (concat file ".org") (car org-directory)))))))

      (setq org-clocked-in-project "jolla")

      (setq org-agenda-custom-commands
            `(
              ("A" "Agenda and all TODOs" ((agenda "") (alltodo "")))
              (" " "Current Project Agenda and TODOs" ,@(org-agenda-custom-command-for-work org-clocked-in-project))
              ("j" "Jolla Agenda and TODOs" ,@(org-agenda-custom-command-for-work "jolla"))
              ("d" "Agenda and TODOs" ,@(org-agenda-custom-command-for-work "mler"))
              ("p" "Personal Agenda and TODOs" ,@(org-agenda-custom-command-for "personal"))
              ;;("t" "PTapp Agenda and TODOs" ,@(org-agenda-custom-command-for "ptapp"))
              ;;("S" "Skor Agenda and TODOs" ,@(org-agenda-custom-command-for "skor"))
              ("W" "Weekly Review"
               ((agenda "" ((org-agenda-span 7))); review upcoming deadlines and appointments
                                            ; type "l" in the agenda to review logged items
                (stuck "") ; review stuck projects as designated by org-stuck-projects
                (todo "PROJECT") ; review all projects (assuming you use todo keywords to designate projects)
                (todo "MAYBE") ; review someday/maybe items
                (todo "WAITING"))) ; review waiting items
              ;; ...other commands here
              ))

      ;; Overwrite the current window with the agenda
      (setq org-agenda-window-setup 'current-window)

      ;; Do not dim blocked tasks
      (setq org-agenda-dim-blocked-tasks nil)

      ;; Compact the block agenda view
      (setq org-agenda-compact-blocks nil)

      ;; Agenda clock report parameters
      (setq org-agenda-clockreport-parameter-plist
            (quote (:link t :maxlevel 5 :fileskip0 t :stepskip0 t :compact nil :narrow 80)))

      ;; Agenda log mode items to display (closed and state changes by default)
      (setq org-agenda-log-mode-items (quote (closed state clock)))

      ;; Keep tasks with dates on the global todo lists
      (setq org-agenda-todo-ignore-with-date nil)

      ;; Keep tasks with deadlines on the global todo lists
      (setq org-agenda-todo-ignore-deadlines nil)

      ;; Keep tasks with scheduled dates on the global todo lists
      (setq org-agenda-todo-ignore-scheduled nil)

      ;; Keep tasks with timestamps on the global todo lists
      (setq org-agenda-todo-ignore-timestamp nil)

      ;; Remove completed deadline tasks from the agenda view
      (setq org-agenda-skip-deadline-if-done t)

      ;; Remove completed scheduled tasks from the agenda view
      ;; (setq org-agenda-skip-scheduled-if-done t)

      ;; Remove completed items from search results
      ;; (setq org-agenda-skip-timestamp-if-done t)

      ;; Include agenda archive files when searching for things
      (setq org-agenda-text-search-extra-files (quote (agenda-archives)))

      ;; Show all future entries for repeating tasks
      (setq org-agenda-repeating-timestamp-show-all t)

      ;; Show all agenda dates - even if they are empty
      (setq org-agenda-show-all-dates t)

      ;; Start the weekly agenda on Monday
      (setq org-agenda-start-on-weekday 1)

      ;; For 0 to 4am show yesterday in the agenda view "toady"
      (setq org-extend-today-until 4)

      ;; Agenda styling
      (setq org-agenda-block-separator ?─
            org-agenda-time-grid
            '((daily today require-timed)
              (800 1000 1200 1400 1600 1800 2000)
              " ┄┄┄┄┄ " "┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄")
            org-agenda-current-time-string
            "⭠ now ─────────────────────────────────────────────────")

      ;; Insert a separator between each day
      (setq org-agenda-format-date (lambda (date) (concat "\n"
                                                          (make-string (window-width) 9472)
                                                          "\n"
                                                          (org-agenda-format-date-aligned date))))

      ;; Use sticky agenda's so they persist
      ;;(setq org-agenda-sticky t)

      ;; Limit restriction lock highlighting to the headline only
      (setq org-agenda-restriction-lock-highlight-subtree nil)

      ;; Sorting order for tasks on the agenda
      (setq org-agenda-sorting-strategy
            (quote ((agenda habit-down time-up user-defined-up effort-up category-keep)
                    (todo category-up effort-up)
                    (tags category-up effort-up)
                    (search category-up))))

      ;; Enable display of the time grid so we can see the marker for the current time
      ;;(setq org-agenda-time-grid (quote ((daily today remove-match)
      ;;                                   #("----------------" 0 16 (org-heading t))
      ;;                                   (0900 1100 1300 1500 1700))))

      ;; Update appt list on agenda view
      (add-hook 'org-agenda-finalize-hook 'org-agenda-to-appt)
      (appt-activate)
      (org-agenda-to-appt)

      (setq org-catch-invisible-edits 'show-and-error)
      (setq org-auto-align-tags t)
      ;; Display tags farther right
      ;; (setq org-agenda-tags-column 0)
      (setq org-agenda-tags-column -102)

      (setq org-agenda-include-diary t)

      ;; Include the last few days in the agenda by default
      ;; Switch w to get a week a agenda
      (setq org-agenda-span 2)

      ;; http://doc.norang.ca/org-mode.html#CustomAgendaViewFiltering
      (defun thao/org-auto-exclude-function (tag)
        "Automatic task exclusion in the agenda with / RET"
        (and (cond
              ((string= tag "hold")
               t))
             (concat "-" tag)))
      (setq org-agenda-auto-exclude-function 'thao/org-auto-exclude-function)
      )


    (use-package org-super-agenda
      :after org-agenda
      :config
      (setq org-super-agenda-groups
            '(;; Each group has an implicit boolean OR operator between its selectors.

              (:name "Deadlines"
                     :deadline today
                     :order 0)
              (:name "Upcoming Deadlines"
                     :deadline future
                     :order 10)
              (:name "Habits"
                     :habit t
                     :order 7)
              (:name "Routines"
                     :category "Routine"
                     :order 6)
              (:name "GTD Upkeep"
                     :category "GTD"
                     :order 8)
              (:name "Events"
                     :category "Event"
                     :category "Social"
                     :order 1)
              (:name "Emails and online tasks"
                     :tag "email"
                     :order 1)
              (:name "Work tasks"
                     :time-grid t
                     :and (:tag "work" :todo t :scheduled today)
                     ;; Add any work catergories here
                     :and (:category "Jolla" :todo t :scheduled today)
                     :and (:category "Daimler" :todo t :scheduled today)
                     :order 2)
              (:name "Deferred work tasks"
                     :and (:tag "work" :not (:todo ("CNCL" "DONE")) :scheduled past)
                     ;; Add any work catergories here
                     :and (:category "Jolla" :not (:todo ("CNCL" "DONE")) :scheduled past)
                     :and (:category "Daimler" :not (:todo ("CNCL" "DONE")) :scheduled past)
                     :order 3)
              (:name "Information about today"
                     :category "Sunrise" ;; FIXME use geo
                     :category "Day info"
                     :order 9)
              (:name "Personal tasks"
                     :scheduled today
                     :order 4)
              (:name "Deferred personal tasks"
                     :and (:not (:todo ("CNCL" "DONE")) :scheduled past)
                     :order 5)))


      (org-super-agenda-mode)
      )

Notes:

Similar to alphapapa/org-web-tools#56 but for org-super-agenda.

Backtrace

Debugger entered--Lisp error: (error "‘org-element-at-point’ cannot be used in non-Org b...")
  signal(error ("‘org-element-at-point’ cannot be used in non-Org b..."))
  error("`org-element-at-point' cannot be used in non-Org b..." #<buffer *Org Agenda*> org-agenda-mode)
  (if (derived-mode-p 'org-mode) nil (error "`org-element-at-point' cannot be used in non-Org b..." (current-buffer) major-mode))
  (save-restriction (widen) (goto-char (or --mepom (point))) (if (derived-mode-p 'org-mode) nil (error "`org-element-at-point' cannot be used in non-Org b..." (current-buffer) major-mode)) (if (and cached-only (memq this-command org-element--cache-non-modifying-commands)) (progn (setq cached-only nil))) (let (element) (if (org-element--cache-active-p) (progn (if (not (save-current-buffer (set-buffer ...) org-element--cache)) (org-element-cache-reset) (if cached-only nil (org-element--cache-sync (current-buffer) epom))))) (setq element (if cached-only (if (and (org-element--cache-active-p) (or (not org-element--cache-sync-requests) (< epom ...))) (progn (org-element--cache-find epom))) (condition-case err (org-element--parse-to epom) ((debug error) (let* (... ...) (if ... ... ...)) (org-element-cache-reset) (org-element--parse-to epom))))) (if (and (org-element--cache-active-p) element (org-element--cache-verify-element element)) (progn (setq element (org-element--parse-to epom)))) (if (eq (org-element-type element t) 'org-data) nil (if (and cached-only (not (and element (or ... ... ... ...)))) nil (if (not (eq (org-element-type element t) 'section)) element (org-element-at-point (1+ epom) cached-only))))))
  (save-excursion (save-restriction (widen) (goto-char (or --mepom (point))) (if (derived-mode-p 'org-mode) nil (error "`org-element-at-point' cannot be used in non-Org b..." (current-buffer) major-mode)) (if (and cached-only (memq this-command org-element--cache-non-modifying-commands)) (progn (setq cached-only nil))) (let (element) (if (org-element--cache-active-p) (progn (if (not (save-current-buffer ... org-element--cache)) (org-element-cache-reset) (if cached-only nil (org-element--cache-sync ... epom))))) (setq element (if cached-only (if (and (org-element--cache-active-p) (or ... ...)) (progn (org-element--cache-find epom))) (condition-case err (org-element--parse-to epom) ((debug error) (let* ... ...) (org-element-cache-reset) (org-element--parse-to epom))))) (if (and (org-element--cache-active-p) element (org-element--cache-verify-element element)) (progn (setq element (org-element--parse-to epom)))) (if (eq (org-element-type element t) 'org-data) nil (if (and cached-only (not (and element ...))) nil (if (not (eq ... ...)) element (org-element-at-point (1+ epom) cached-only)))))))
  (save-excursion (cond ((markerp --mepom) (set-buffer (marker-buffer --mepom))) ((numberp --mepom)) (t (if (let* ((parray (and t ...))) (if parray (let* (...) (if ... ... ...)) (let* (...) (cond ... ... ...)))) (progn (set-buffer (let* (...) (if parray ... ...))))) (setq --mepom (let* ((parray (and t ...))) (if parray (let* (...) (if ... ... ...)) (let* (...) (cond ... ... ...))))))) (save-excursion (save-restriction (widen) (goto-char (or --mepom (point))) (if (derived-mode-p 'org-mode) nil (error "`org-element-at-point' cannot be used in non-Org b..." (current-buffer) major-mode)) (if (and cached-only (memq this-command org-element--cache-non-modifying-commands)) (progn (setq cached-only nil))) (let (element) (if (org-element--cache-active-p) (progn (if (not ...) (org-element-cache-reset) (if cached-only nil ...)))) (setq element (if cached-only (if (and ... ...) (progn ...)) (condition-case err (org-element--parse-to epom) (... ... ... ...)))) (if (and (org-element--cache-active-p) element (org-element--cache-verify-element element)) (progn (setq element (org-element--parse-to epom)))) (if (eq (org-element-type element t) 'org-data) nil (if (and cached-only (not ...)) nil (if (not ...) element (org-element-at-point ... cached-only))))))))
  (let ((--mepom epom)) (save-excursion (cond ((markerp --mepom) (set-buffer (marker-buffer --mepom))) ((numberp --mepom)) (t (if (let* ((parray ...)) (if parray (let* ... ...) (let* ... ...))) (progn (set-buffer (let* ... ...)))) (setq --mepom (let* ((parray ...)) (if parray (let* ... ...) (let* ... ...)))))) (save-excursion (save-restriction (widen) (goto-char (or --mepom (point))) (if (derived-mode-p 'org-mode) nil (error "`org-element-at-point' cannot be used in non-Org b..." (current-buffer) major-mode)) (if (and cached-only (memq this-command org-element--cache-non-modifying-commands)) (progn (setq cached-only nil))) (let (element) (if (org-element--cache-active-p) (progn (if ... ... ...))) (setq element (if cached-only (if ... ...) (condition-case err ... ...))) (if (and (org-element--cache-active-p) element (org-element--cache-verify-element element)) (progn (setq element ...))) (if (eq (org-element-type element t) 'org-data) nil (if (and cached-only ...) nil (if ... element ...))))))))
  (if (org-element-type epom t) epom (setq epom (or epom (point))) (let ((--mepom epom)) (save-excursion (cond ((markerp --mepom) (set-buffer (marker-buffer --mepom))) ((numberp --mepom)) (t (if (let* (...) (if parray ... ...)) (progn (set-buffer ...))) (setq --mepom (let* (...) (if parray ... ...))))) (save-excursion (save-restriction (widen) (goto-char (or --mepom (point))) (if (derived-mode-p 'org-mode) nil (error "`org-element-at-point' cannot be used in non-Org b..." (current-buffer) major-mode)) (if (and cached-only (memq this-command org-element--cache-non-modifying-commands)) (progn (setq cached-only nil))) (let (element) (if (org-element--cache-active-p) (progn ...)) (setq element (if cached-only ... ...)) (if (and ... element ...) (progn ...)) (if (eq ... ...) nil (if ... nil ...))))))))
  org-element-at-point(nil)
  (org-element-lineage (org-element-at-point epom) '(headline inlinetask org-data) 'with-self)
  (setq epom (org-element-lineage (org-element-at-point epom) '(headline inlinetask org-data) 'with-self))
  org--property-local-values("STYLE" nil nil)
  (let* ((local (org--property-local-values property literal-nil epom)) (value (and local (mapconcat #'identity (delq nil local) (org--property-get-separator property))))) (if literal-nil value (org-not-nil value)))
  (cond ((member-ignore-case property (cons "CATEGORY" org-special-properties)) (cdr (assoc-string property (org-entry-properties epom property)))) ((and inherit (or (not (eq inherit 'selective)) (org-property-inherit-p property))) (org-entry-get-with-inheritance property literal-nil epom)) (t (let* ((local (org--property-local-values property literal-nil epom)) (value (and local (mapconcat #'identity (delq nil local) (org--property-get-separator property))))) (if literal-nil value (org-not-nil value)))))
  org-entry-get(nil "STYLE" selective)
  (string= "habit" (org-entry-get epom "STYLE" 'selective))
  org-is-habit-p(nil)
  (if (org-is-habit-p (org-super-agenda--get-marker item)) (progn (setq matching (nconc matching (list item)))) (setq non-matching (nconc non-matching (list item))))
  (while (consp --cl-var--) (setq item (car --cl-var--)) (if (org-is-habit-p (org-super-agenda--get-marker item)) (progn (setq matching (nconc matching (list item)))) (setq non-matching (nconc non-matching (list item)))) (setq --cl-var-- (cdr --cl-var--)))
  (let* ((section-name "Habits") (--cl-var-- items) (item nil) (matching nil) (non-matching nil)) (while (consp --cl-var--) (setq item (car --cl-var--)) (if (org-is-habit-p (org-super-agenda--get-marker item)) (progn (setq matching (nconc matching (list item)))) (setq non-matching (nconc non-matching (list item)))) (setq --cl-var-- (cdr --cl-var--))) (list section-name non-matching matching))
  (let* nil (let* ((section-name "Habits") (--cl-var-- items) (item nil) (matching nil) (non-matching nil)) (while (consp --cl-var--) (setq item (car --cl-var--)) (if (org-is-habit-p (org-super-agenda--get-marker item)) (progn (setq matching (nconc matching (list item)))) (setq non-matching (nconc non-matching (list item)))) (setq --cl-var-- (cdr --cl-var--))) (list section-name non-matching matching)))
  org-super-agenda--group-habit((... ... ... ... ... ... ... ... ... ... ... ... ... ... ...) t)
  funcall(org-super-agenda--group-habit (... ... ... ... ... ... ... ... ... ... ... ... ... ... ...) t)
  (setq --cl-var-- (funcall fn items args))
  (progn (setq --cl-var-- (funcall fn items args)) (setq auto-section-name (car-safe (prog1 --cl-var-- (setq --cl-var-- (cdr --cl-var--))))) (setq non-matching (car-safe (prog1 --cl-var-- (setq --cl-var-- (cdr --cl-var--))))) (setq matching (car --cl-var--)))
  (progn (progn (setq --cl-var-- (funcall fn items args)) (setq auto-section-name (car-safe (prog1 --cl-var-- (setq --cl-var-- (cdr --cl-var--))))) (setq non-matching (car-safe (prog1 --cl-var-- (setq --cl-var-- (cdr --cl-var--))))) (setq matching (car --cl-var--))))
  (if fn (progn (progn (setq --cl-var-- (funcall fn items args)) (setq auto-section-name (car-safe (prog1 --cl-var-- (setq --cl-var-- (cdr --cl-var--))))) (setq non-matching (car-safe (prog1 --cl-var-- (setq --cl-var-- (cdr --cl-var--))))) (setq matching (car --cl-var--)))))
  (while (consp --cl-var--) (progn (setq --cl-var-- --cl-var--) (setq selector (car-safe (prog1 --cl-var-- (setq --cl-var-- (cdr --cl-var--))))) (setq args (car --cl-var--))) (setq fn (org-super-agenda--get-selector-fn selector)) (if fn (progn (progn (setq --cl-var-- (funcall fn items args)) (setq auto-section-name (car-safe (prog1 --cl-var-- (setq --cl-var-- ...)))) (setq non-matching (car-safe (prog1 --cl-var-- (setq --cl-var-- ...)))) (setq matching (car --cl-var--))))) (if fn (progn (setq all-matches (append all-matches matching)) (setq names (nconc names (list auto-section-name))) (setq items non-matching))) (setq name (if (stringp (car names)) (s-join " and " (-non-nil names)) (car names))) (setq --cl-var-- (cdr (cdr --cl-var--))) (setq --cl-var-- nil))
  (let* ((--cl-var-- group) (selector nil) (args nil) (--cl-var--) (fn nil) (auto-section-name nil) (non-matching nil) (matching nil) (--cl-var--) (all-matches nil) (names nil) (name nil) (--cl-var-- t)) (while (consp --cl-var--) (progn (setq --cl-var-- --cl-var--) (setq selector (car-safe (prog1 --cl-var-- (setq --cl-var-- (cdr --cl-var--))))) (setq args (car --cl-var--))) (setq fn (org-super-agenda--get-selector-fn selector)) (if fn (progn (progn (setq --cl-var-- (funcall fn items args)) (setq auto-section-name (car-safe (prog1 --cl-var-- ...))) (setq non-matching (car-safe (prog1 --cl-var-- ...))) (setq matching (car --cl-var--))))) (if fn (progn (setq all-matches (append all-matches matching)) (setq names (nconc names (list auto-section-name))) (setq items non-matching))) (setq name (if (stringp (car names)) (s-join " and " (-non-nil names)) (car names))) (setq --cl-var-- (cdr (cdr --cl-var--))) (setq --cl-var-- nil)) (list name items all-matches))
  org-super-agenda--group-dispatch((... ... ... ... ... ... ... ... ... ... ... ... ... ... ...) (:name "Habits" :habit t :order 7))
  (setq --cl-var-- (org-super-agenda--group-dispatch all-items filter))
  (progn (setq --cl-var-- (org-super-agenda--group-dispatch all-items filter)) (setq auto-section-name (car-safe (prog1 --cl-var-- (setq --cl-var-- (cdr --cl-var--))))) (setq non-matching (car-safe (prog1 --cl-var-- (setq --cl-var-- (cdr --cl-var--))))) (setq matching (car --cl-var--)))
  (while (consp --cl-var--) (setq filter (car --cl-var--)) (setq custom-section-name (plist-get filter :name)) (setq order (or (plist-get filter :order) 0)) (progn (setq --cl-var-- (org-super-agenda--group-dispatch all-items filter)) (setq auto-section-name (car-safe (prog1 --cl-var-- (setq --cl-var-- (cdr --cl-var--))))) (setq non-matching (car-safe (prog1 --cl-var-- (setq --cl-var-- (cdr --cl-var--))))) (setq matching (car --cl-var--))) (if org-super-agenda-keep-order (progn (setq matching (sort matching #'org-entries-lessp)))) (setq transformer (plist-get filter :transformer)) (let ((it transformer)) (if it (progn (setq matching (-map (let* (...) (cond ... ... ...)) matching))))) (setq face (plist-get filter :face)) (let ((it face)) (if it (progn (let ((append (plist-get face :append))) (if append (progn (if ... ... ...))) (let ((list matching) (i 0)) (while list (let ... ... ...) (setq i ...))))))) (if (memql auto-section-name org-super-agenda-auto-selector-keywords) (progn (setq section-name (or custom-section-name "Auto category/group")) (setq sections (append sections (let* ((--cl-var-- matching) (group nil) (--cl-var-- nil)) (while (consp --cl-var--) (setq group ...) (setq --cl-var-- ...) (setq --cl-var-- ...)) (nreverse --cl-var--)))) (setq all-items non-matching)) (setq section-name (or custom-section-name auto-section-name)) (setq sections (nconc sections (list (list :name section-name :items matching :order order)))) (setq all-items non-matching)) (setq --cl-var-- (cdr --cl-var--)) (setq --cl-var-- nil))
  (let* ((section-name nil) (--cl-var-- org-super-agenda-groups) (filter nil) (custom-section-name nil) (order nil) (auto-section-name nil) (non-matching nil) (matching nil) (--cl-var--) (transformer nil) (face nil) (sections nil) (--cl-var-- t)) (while (consp --cl-var--) (setq filter (car --cl-var--)) (setq custom-section-name (plist-get filter :name)) (setq order (or (plist-get filter :order) 0)) (progn (setq --cl-var-- (org-super-agenda--group-dispatch all-items filter)) (setq auto-section-name (car-safe (prog1 --cl-var-- (setq --cl-var-- (cdr --cl-var--))))) (setq non-matching (car-safe (prog1 --cl-var-- (setq --cl-var-- (cdr --cl-var--))))) (setq matching (car --cl-var--))) (if org-super-agenda-keep-order (progn (setq matching (sort matching #'org-entries-lessp)))) (setq transformer (plist-get filter :transformer)) (let ((it transformer)) (if it (progn (setq matching (-map (let* ... ...) matching))))) (setq face (plist-get filter :face)) (let ((it face)) (if it (progn (let ((append ...)) (if append (progn ...)) (let (... ...) (while list ... ...)))))) (if (memql auto-section-name org-super-agenda-auto-selector-keywords) (progn (setq section-name (or custom-section-name "Auto category/group")) (setq sections (append sections (let* (... ... ...) (while ... ... ... ...) (nreverse --cl-var--)))) (setq all-items non-matching)) (setq section-name (or custom-section-name auto-section-name)) (setq sections (nconc sections (list (list :name section-name :items matching :order order)))) (setq all-items non-matching)) (setq --cl-var-- (cdr --cl-var--)) (setq --cl-var-- nil)) (setq non-matching (list :name org-super-agenda-unmatched-name :items non-matching :order org-super-agenda-unmatched-order)) (setq sections (-sort #'(lambda (it other) (ignore it other) (let ((o-it ...) (o-other ...)) (cond (... ...) (... ...) (t nil)))) (setq sections (cons non-matching sections)))) (let* ((--cl-var-- sections) (name nil) (items nil) (--cl-var--) (--cl-var--) (--cl-var--) (--cl-var-- nil)) (while (consp --cl-var--) (progn (setq --cl-var-- (car --cl-var--)) (setq --cl-var-- (car-safe (prog1 --cl-var-- (setq --cl-var-- ...)))) (setq name (car-safe (prog1 --cl-var-- (setq --cl-var-- ...)))) (setq --cl-var-- (car-safe (prog1 --cl-var-- (setq --cl-var-- ...)))) (setq items (car --cl-var--))) (if items (progn (setq --cl-var-- (cons (org-super-agenda--make-agenda-header name) --cl-var--)) (setq --cl-var-- (nconc (reverse items) --cl-var--)))) (setq --cl-var-- (cdr --cl-var--))) (nreverse --cl-var--)))
  (let ((org-super-agenda-groups (org-super-agenda--transform-groups org-super-agenda-groups))) (let* ((section-name nil) (--cl-var-- org-super-agenda-groups) (filter nil) (custom-section-name nil) (order nil) (auto-section-name nil) (non-matching nil) (matching nil) (--cl-var--) (transformer nil) (face nil) (sections nil) (--cl-var-- t)) (while (consp --cl-var--) (setq filter (car --cl-var--)) (setq custom-section-name (plist-get filter :name)) (setq order (or (plist-get filter :order) 0)) (progn (setq --cl-var-- (org-super-agenda--group-dispatch all-items filter)) (setq auto-section-name (car-safe (prog1 --cl-var-- (setq --cl-var-- ...)))) (setq non-matching (car-safe (prog1 --cl-var-- (setq --cl-var-- ...)))) (setq matching (car --cl-var--))) (if org-super-agenda-keep-order (progn (setq matching (sort matching #'org-entries-lessp)))) (setq transformer (plist-get filter :transformer)) (let ((it transformer)) (if it (progn (setq matching (-map ... matching))))) (setq face (plist-get filter :face)) (let ((it face)) (if it (progn (let (...) (if append ...) (let ... ...))))) (if (memql auto-section-name org-super-agenda-auto-selector-keywords) (progn (setq section-name (or custom-section-name "Auto category/group")) (setq sections (append sections (let* ... ... ...))) (setq all-items non-matching)) (setq section-name (or custom-section-name auto-section-name)) (setq sections (nconc sections (list (list :name section-name :items matching :order order)))) (setq all-items non-matching)) (setq --cl-var-- (cdr --cl-var--)) (setq --cl-var-- nil)) (setq non-matching (list :name org-super-agenda-unmatched-name :items non-matching :order org-super-agenda-unmatched-order)) (setq sections (-sort #'(lambda (it other) (ignore it other) (let (... ...) (cond ... ... ...))) (setq sections (cons non-matching sections)))) (let* ((--cl-var-- sections) (name nil) (items nil) (--cl-var--) (--cl-var--) (--cl-var--) (--cl-var-- nil)) (while (consp --cl-var--) (progn (setq --cl-var-- (car --cl-var--)) (setq --cl-var-- (car-safe (prog1 --cl-var-- ...))) (setq name (car-safe (prog1 --cl-var-- ...))) (setq --cl-var-- (car-safe (prog1 --cl-var-- ...))) (setq items (car --cl-var--))) (if items (progn (setq --cl-var-- (cons ... --cl-var--)) (setq --cl-var-- (nconc ... --cl-var--)))) (setq --cl-var-- (cdr --cl-var--))) (nreverse --cl-var--))))
  (if (and (boundp 'org-super-agenda-groups) org-super-agenda-groups) (let ((org-super-agenda-groups (org-super-agenda--transform-groups org-super-agenda-groups))) (let* ((section-name nil) (--cl-var-- org-super-agenda-groups) (filter nil) (custom-section-name nil) (order nil) (auto-section-name nil) (non-matching nil) (matching nil) (--cl-var--) (transformer nil) (face nil) (sections nil) (--cl-var-- t)) (while (consp --cl-var--) (setq filter (car --cl-var--)) (setq custom-section-name (plist-get filter :name)) (setq order (or (plist-get filter :order) 0)) (progn (setq --cl-var-- (org-super-agenda--group-dispatch all-items filter)) (setq auto-section-name (car-safe (prog1 --cl-var-- ...))) (setq non-matching (car-safe (prog1 --cl-var-- ...))) (setq matching (car --cl-var--))) (if org-super-agenda-keep-order (progn (setq matching (sort matching ...)))) (setq transformer (plist-get filter :transformer)) (let ((it transformer)) (if it (progn (setq matching ...)))) (setq face (plist-get filter :face)) (let ((it face)) (if it (progn (let ... ... ...)))) (if (memql auto-section-name org-super-agenda-auto-selector-keywords) (progn (setq section-name (or custom-section-name "Auto category/group")) (setq sections (append sections ...)) (setq all-items non-matching)) (setq section-name (or custom-section-name auto-section-name)) (setq sections (nconc sections (list ...))) (setq all-items non-matching)) (setq --cl-var-- (cdr --cl-var--)) (setq --cl-var-- nil)) (setq non-matching (list :name org-super-agenda-unmatched-name :items non-matching :order org-super-agenda-unmatched-order)) (setq sections (-sort #'(lambda (it other) (ignore it other) (let ... ...)) (setq sections (cons non-matching sections)))) (let* ((--cl-var-- sections) (name nil) (items nil) (--cl-var--) (--cl-var--) (--cl-var--) (--cl-var-- nil)) (while (consp --cl-var--) (progn (setq --cl-var-- (car --cl-var--)) (setq --cl-var-- (car-safe ...)) (setq name (car-safe ...)) (setq --cl-var-- (car-safe ...)) (setq items (car --cl-var--))) (if items (progn (setq --cl-var-- ...) (setq --cl-var-- ...))) (setq --cl-var-- (cdr --cl-var--))) (nreverse --cl-var--)))) all-items)
  org-super-agenda--group-items((... ... ... ... ... ... ... ... ... ... ... ... ... ... ...))
  (let ((it (org-super-agenda--group-items it))) (let ((it (-remove #'s-blank-str? it))) (let ((it (s-join "\n" it))) (concat it (cond ((natnump org-super-agenda-final-group-separator) (concat "\n" (make-string ... org-super-agenda-final-group-separator))) ((stringp org-super-agenda-final-group-separator) org-super-agenda-final-group-separator) ((error "cl-etypecase failed: %s, %s" org-super-agenda-final-group-separator '...) nil))))))
  (let ((it (split-string it "\n" 'omit-nulls))) (let ((it (org-super-agenda--group-items it))) (let ((it (-remove #'s-blank-str? it))) (let ((it (s-join "\n" it))) (concat it (cond ((natnump org-super-agenda-final-group-separator) (concat "\n" ...)) ((stringp org-super-agenda-final-group-separator) org-super-agenda-final-group-separator) ((error "cl-etypecase failed: %s, %s" org-super-agenda-final-group-separator ...) nil)))))))
  (let ((it string)) (let ((it (split-string it "\n" 'omit-nulls))) (let ((it (org-super-agenda--group-items it))) (let ((it (-remove #'s-blank-str? it))) (let ((it (s-join "\n" it))) (concat it (cond (... ...) (... org-super-agenda-final-group-separator) (... nil))))))))
  org-super-agenda--filter-finalize-entries(#("               8:00 ┄┄┄┄┄ ┄┄┄┄┄┄..." 0 2 (org-category "" tags nil org-priority-highest 65 org-priority-lowest 67 time-of-day 800 duration nil breadcrumbs nil txt #("┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄" 0 15 (org-heading t)) level "" time " 8:00 ┄┄┄┄┄ " extra nil format ((... ... ... ... ...) (format " %s %s%s%s" ... ... ... ...)) dotime "08:00") 2 26 (org-category "" tags nil org-priority-highest 65 org-priority-lowest 67 time-of-day 800 duration nil breadcrumbs nil txt #("┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄" 0 15 (org-heading t)) level "" time " 8:00 ┄┄┄┄┄ " extra nil format ((... ... ... ... ...) (format " %s %s%s%s" ... ... ... ...)) dotime "08:00" face org-time-grid) 26 41 (org-heading t org-category "" tags nil org-priority-highest 65 org-priority-lowest 67 time-of-day 800 duration nil breadcrumbs nil txt #("┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄" 0 15 (org-heading t)) level "" time " 8:00 ┄┄┄┄┄ " extra nil format ((... ... ... ... ...) (format " %s %s%s%s" ... ... ... ...)) dotime "08:00" face org-time-grid) 42 44 (org-category "" tags nil org-priority-highest 65 org-priority-lowest 67 time-of-day 1000 duration nil breadcrumbs nil txt #("┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄" 0 15 (org-heading t)) level "" time "10:00 ┄┄┄┄┄ " extra nil format ((... ... ... ... ...) (format " %s %s%s%s" ... ... ... ...)) dotime "10:00") 44 68 (org-category "" tags nil org-priority-highest 65 org-priority-lowest 67 time-of-day 1000 duration nil breadcrumbs nil txt #("┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄" 0 15 (org-heading t)) level "" time "10:00 ┄┄┄┄┄ " extra nil format ((... ... ... ... ...) (format " %s %s%s%s" ... ... ... ...)) dotime "10:00" face org-time-grid) 68 83 (org-heading t org-category "" tags nil org-priority-highest 65 org-priority-lowest 67 time-of-day 1000 duration nil breadcrumbs nil txt #("┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄" 0 15 (org-heading t)) level "" time "10:00 ┄┄┄┄┄ " extra nil format ((... ... ... ... ...) (format " %s %s%s%s" ... ... ... ...)) dotime "10:00" face org-time-grid) 84 86 (org-category "" tags nil org-priority-highest 65 org-priority-lowest 67 time-of-day 1200 duration nil breadcrumbs nil txt #("┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄" 0 15 (org-heading t)) level "" time "12:00 ┄┄┄┄┄ " extra nil format ((... ... ... ... ...) (format " %s %s%s%s" ... ... ... ...)) dotime "12:00") 86 110 (org-category "" tags nil org-priority-highest 65 org-priority-lowest 67 time-of-day 1200 duration nil breadcrumbs nil txt #("┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄" 0 15 (org-heading t)) level "" time "12:00 ┄┄┄┄┄ " extra nil format ((... ... ... ... ...) (format " %s %s%s%s" ... ... ... ...)) dotime "12:00" face org-time-grid) 110 125 (org-heading t org-category "" tags nil org-priority-highest 65 org-priority-lowest 67 time-of-day 1200 duration nil breadcrumbs nil txt #("┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄" 0 15 (org-heading t)) level "" time "12:00 ┄┄┄┄┄ " extra nil format ((... ... ... ... ...) (format " %s %s%s%s" ... ... ... ...)) dotime "12:00" face org-time-grid) 126 128 (org-category "" tags nil org-priority-highest 65 org-priority-lowest 67 time-of-day 1400 duration nil breadcrumbs nil txt #("┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄" 0 15 (org-heading t)) level "" time "14:00 ┄┄┄┄┄ " extra nil format ((... ... ... ... ...) (format " %s %s%s%s" ... ... ... ...)) dotime "14:00") ...))
  org-agenda-finalize-entries((... ... ... ... ... ... ... ... ... ... ... ... ... ... ...) agenda)
  (insert (org-agenda-finalize-entries rtnall 'agenda) "\n")
  (progn (insert (org-agenda-finalize-entries rtnall 'agenda) "\n"))
  (if rtnall (progn (insert (org-agenda-finalize-entries rtnall 'agenda) "\n")))
  (progn (setq day-cnt (1+ day-cnt)) (insert (if (stringp org-agenda-format-date) (format-time-string org-agenda-format-date (org-time-from-absolute date)) (funcall org-agenda-format-date date)) "\n") (put-text-property s (1- (point)) 'face (org-agenda-get-day-face date)) (put-text-property s (1- (point)) 'org-date-line t) (put-text-property s (1- (point)) 'org-agenda-date-header t) (put-text-property s (1- (point)) 'org-day-cnt day-cnt) (if todayp (progn (put-text-property s (1- (point)) 'org-today t))) (setq rtnall (org-agenda-add-time-grid-maybe rtnall ndays todayp)) (if rtnall (progn (insert (org-agenda-finalize-entries rtnall 'agenda) "\n"))) (put-text-property s (1- (point)) 'day d) (put-text-property s (1- (point)) 'org-day-cnt day-cnt))
  (if (or rtnall org-agenda-show-all-dates) (progn (setq day-cnt (1+ day-cnt)) (insert (if (stringp org-agenda-format-date) (format-time-string org-agenda-format-date (org-time-from-absolute date)) (funcall org-agenda-format-date date)) "\n") (put-text-property s (1- (point)) 'face (org-agenda-get-day-face date)) (put-text-property s (1- (point)) 'org-date-line t) (put-text-property s (1- (point)) 'org-agenda-date-header t) (put-text-property s (1- (point)) 'org-day-cnt day-cnt) (if todayp (progn (put-text-property s (1- (point)) 'org-today t))) (setq rtnall (org-agenda-add-time-grid-maybe rtnall ndays todayp)) (if rtnall (progn (insert (org-agenda-finalize-entries rtnall 'agenda) "\n"))) (put-text-property s (1- (point)) 'day d) (put-text-property s (1- (point)) 'org-day-cnt day-cnt)))
  (while (setq d (car-safe (prog1 day-numbers (setq day-numbers (cdr day-numbers))))) (progn (setq date (calendar-gregorian-from-absolute d)) (setq s (point))) (if (or (setq todayp (= d today)) (and (not start-pos) (= d sd))) (setq start-pos (point)) (if (and start-pos (not end-pos)) (progn (setq end-pos (point))))) (progn (setq files thefiles) (setq rtnall nil)) (while (setq file (car-safe (prog1 files (setq files (cdr files))))) (catch 'nextfile (org-check-agenda-file file) (let ((org-agenda-entry-types org-agenda-entry-types)) (if (member :deadline* org-agenda-entry-types) (progn (setq org-agenda-entry-types (delq :deadline org-agenda-entry-types)))) (if (member :scheduled* org-agenda-entry-types) (progn (setq org-agenda-entry-types (delq :scheduled org-agenda-entry-types)))) (if with-hour (progn (if (member :deadline org-agenda-entry-types) (progn ... ...)) (if (member :scheduled org-agenda-entry-types) (progn ... ...)))) (if org-agenda-include-deadlines nil (setq org-agenda-entry-types (delq :deadline* (delq :deadline org-agenda-entry-types)))) (cond ((memq org-agenda-show-log-scoped '...) (setq rtn (org-agenda-get-day-entries file date :closed))) (org-agenda-show-log-scoped (setq rtn (apply ... file date ...))) (t (setq rtn (apply ... file date org-agenda-entry-types))))) (setq rtnall (append rtnall rtn)))) (if org-agenda-include-diary (progn (let ((org-agenda-search-headline-for-time t)) (require 'diary-lib) (setq rtn (org-get-entries-from-diary date)) (setq rtnall (append rtnall rtn))))) (if (or rtnall org-agenda-show-all-dates) (progn (setq day-cnt (1+ day-cnt)) (insert (if (stringp org-agenda-format-date) (format-time-string org-agenda-format-date (org-time-from-absolute date)) (funcall org-agenda-format-date date)) "\n") (put-text-property s (1- (point)) 'face (org-agenda-get-day-face date)) (put-text-property s (1- (point)) 'org-date-line t) (put-text-property s (1- (point)) 'org-agenda-date-header t) (put-text-property s (1- (point)) 'org-day-cnt day-cnt) (if todayp (progn (put-text-property s (1- (point)) 'org-today t))) (setq rtnall (org-agenda-add-time-grid-maybe rtnall ndays todayp)) (if rtnall (progn (insert (org-agenda-finalize-entries rtnall 'agenda) "\n"))) (put-text-property s (1- (point)) 'day d) (put-text-property s (1- (point)) 'org-day-cnt day-cnt))))
  (let* ((span (org-agenda-ndays-to-span (or span org-agenda-span))) (today (org-today)) (sd (or start-day today)) (ndays (org-agenda-span-to-ndays span sd)) (org-agenda-start-on-weekday (and (or (eq ndays 7) (eq ndays 14)) org-agenda-start-on-weekday)) (thefiles (org-agenda-files nil 'ifmode)) (files thefiles) (start (if (or (null org-agenda-start-on-weekday) (< ndays 7)) sd (let* (... ... ...) (- sd ...)))) (day-numbers (list start)) (day-cnt 0) (inhibit-redisplay (not debug-on-error)) (org-agenda-show-log-scoped org-agenda-show-log) s rtn rtnall file date d start-pos end-pos todayp clocktable-start clocktable-end) (setq org-agenda-redo-command (list 'org-agenda-list (list 'quote arg) start-day (list 'quote span) with-hour)) (let ((upper-bound (1- ndays)) (counter 0)) (while (< counter upper-bound) (let ((_ counter)) (setq day-numbers (cons ... day-numbers))) (setq counter (1+ counter)))) (setq day-numbers (nreverse day-numbers)) (progn (setq clocktable-start (car day-numbers)) (setq clocktable-end (1+ (or (org-last day-numbers) 0)))) (set (make-local-variable 'org-starting-day) (car day-numbers)) (set (make-local-variable 'org-arg-loc) arg) (set (make-local-variable 'org-agenda-current-span) (org-agenda-ndays-to-span span)) (if org-agenda-compact-blocks nil (let* ((d1 (car day-numbers)) (d2 (org-last day-numbers)) (w1 (org-days-to-iso-week d1)) (w2 (org-days-to-iso-week d2))) (setq s (point)) (cond ((not org-agenda-overriding-header) (insert ...)) ((equal org-agenda-overriding-header "") nil) ((stringp org-agenda-overriding-header) (insert ... "\n")) ((functionp org-agenda-overriding-header) (insert ...)) (t (user-error "Invalid value for `org-agenda-overridi..." org-agenda-overriding-header)))) (if (> (point) s) (progn (add-text-properties s (1- ...) (list ... ... ... t)) (org-agenda-mark-header-line s)))) (while (setq d (car-safe (prog1 day-numbers (setq day-numbers ...)))) (progn (setq date (calendar-gregorian-from-absolute d)) (setq s (point))) (if (or (setq todayp (= d today)) (and (not start-pos) (= d sd))) (setq start-pos (point)) (if (and start-pos (not end-pos)) (progn (setq end-pos ...)))) (progn (setq files thefiles) (setq rtnall nil)) (while (setq file (car-safe (prog1 files ...))) (catch 'nextfile (org-check-agenda-file file) (let (...) (if ... ...) (if ... ...) (if with-hour ...) (if org-agenda-include-deadlines nil ...) (cond ... ... ...)) (setq rtnall (append rtnall rtn)))) (if org-agenda-include-diary (progn (let (...) (require ...) (setq rtn ...) (setq rtnall ...)))) (if (or rtnall org-agenda-show-all-dates) (progn (setq day-cnt (1+ day-cnt)) (insert (if ... ... ...) "\n") (put-text-property s (1- ...) 'face (org-agenda-get-day-face date)) (put-text-property s (1- ...) 'org-date-line t) (put-text-property s (1- ...) 'org-agenda-date-header t) (put-text-property s (1- ...) 'org-day-cnt day-cnt) (if todayp (progn ...)) (setq rtnall (org-agenda-add-time-grid-maybe rtnall ndays todayp)) (if rtnall (progn ...)) (put-text-property s (1- ...) 'day d) (put-text-property s (1- ...) 'org-day-cnt day-cnt)))) (if (and org-agenda-clockreport-mode clocktable-start) (progn (let ((org-agenda-files ...) (p ...) tbl) (setq p (org-plist-delete p :block)) (setq p (plist-put p :tstart clocktable-start)) (setq p (plist-put p :tend clocktable-end)) (setq p (plist-put p :scope ...)) (setq tbl (apply ... p)) (if org-agenda-clock-report-header (progn ... ...)) (insert tbl)))) (goto-char (point-min)) (or org-agenda-multi (org-agenda-fit-window-to-buffer)) (if (or (not (get-buffer-window org-agenda-buffer-name)) (and (pos-visible-in-window-p (point-min)) (pos-visible-in-window-p (point-max)))) nil (goto-char (1- (point-max))) (recenter -1) (if (not (pos-visible-in-window-p (or start-pos 1))) (progn (goto-char (or start-pos 1)) (recenter 1)))) (goto-char (or start-pos 1)) (add-text-properties (point-min) (point-max) (list 'org-agenda-type 'agenda 'org-last-args (list arg start-day span) 'org-redo-cmd org-agenda-redo-command 'org-series-cmd org-cmd)) (if (eq org-agenda-show-log-scoped 'clockcheck) (progn (org-agenda-show-clocking-issues))) (org-agenda-finalize) (setq buffer-read-only t) (message ""))
  (catch 'exit (setq org-agenda-buffer-name (org-agenda--get-buffer-name (and org-agenda-sticky (cond ((and org-keys ...) (format "*Org Agenda(%s:%s)*" org-keys org-match)) (org-keys (format "*Org Agenda(%s)*" org-keys)) (t "*Org Agenda(a)*"))))) (org-agenda-prepare "Day/Week") (setq start-day (or start-day org-agenda-start-day)) (if (stringp start-day) (progn (setq start-day (time-to-days (org-read-date nil t start-day))))) (org-compile-prefix-format 'agenda) (org-set-sorting-strategy 'agenda) (let* ((span (org-agenda-ndays-to-span (or span org-agenda-span))) (today (org-today)) (sd (or start-day today)) (ndays (org-agenda-span-to-ndays span sd)) (org-agenda-start-on-weekday (and (or (eq ndays 7) (eq ndays 14)) org-agenda-start-on-weekday)) (thefiles (org-agenda-files nil 'ifmode)) (files thefiles) (start (if (or (null org-agenda-start-on-weekday) (< ndays 7)) sd (let* (... ... ...) (- sd ...)))) (day-numbers (list start)) (day-cnt 0) (inhibit-redisplay (not debug-on-error)) (org-agenda-show-log-scoped org-agenda-show-log) s rtn rtnall file date d start-pos end-pos todayp clocktable-start clocktable-end) (setq org-agenda-redo-command (list 'org-agenda-list (list 'quote arg) start-day (list 'quote span) with-hour)) (let ((upper-bound (1- ndays)) (counter 0)) (while (< counter upper-bound) (let ((_ counter)) (setq day-numbers (cons ... day-numbers))) (setq counter (1+ counter)))) (setq day-numbers (nreverse day-numbers)) (progn (setq clocktable-start (car day-numbers)) (setq clocktable-end (1+ (or (org-last day-numbers) 0)))) (set (make-local-variable 'org-starting-day) (car day-numbers)) (set (make-local-variable 'org-arg-loc) arg) (set (make-local-variable 'org-agenda-current-span) (org-agenda-ndays-to-span span)) (if org-agenda-compact-blocks nil (let* ((d1 (car day-numbers)) (d2 (org-last day-numbers)) (w1 (org-days-to-iso-week d1)) (w2 (org-days-to-iso-week d2))) (setq s (point)) (cond ((not org-agenda-overriding-header) (insert ...)) ((equal org-agenda-overriding-header "") nil) ((stringp org-agenda-overriding-header) (insert ... "\n")) ((functionp org-agenda-overriding-header) (insert ...)) (t (user-error "Invalid value for `org-agenda-overriding-hea..." org-agenda-overriding-header)))) (if (> (point) s) (progn (add-text-properties s (1- ...) (list ... ... ... t)) (org-agenda-mark-header-line s)))) (while (setq d (car-safe (prog1 day-numbers (setq day-numbers ...)))) (progn (setq date (calendar-gregorian-from-absolute d)) (setq s (point))) (if (or (setq todayp (= d today)) (and (not start-pos) (= d sd))) (setq start-pos (point)) (if (and start-pos (not end-pos)) (progn (setq end-pos ...)))) (progn (setq files thefiles) (setq rtnall nil)) (while (setq file (car-safe (prog1 files ...))) (catch 'nextfile (org-check-agenda-file file) (let (...) (if ... ...) (if ... ...) (if with-hour ...) (if org-agenda-include-deadlines nil ...) (cond ... ... ...)) (setq rtnall (append rtnall rtn)))) (if org-agenda-include-diary (progn (let (...) (require ...) (setq rtn ...) (setq rtnall ...)))) (if (or rtnall org-agenda-show-all-dates) (progn (setq day-cnt (1+ day-cnt)) (insert (if ... ... ...) "\n") (put-text-property s (1- ...) 'face (org-agenda-get-day-face date)) (put-text-property s (1- ...) 'org-date-line t) (put-text-property s (1- ...) 'org-agenda-date-header t) (put-text-property s (1- ...) 'org-day-cnt day-cnt) (if todayp (progn ...)) (setq rtnall (org-agenda-add-time-grid-maybe rtnall ndays todayp)) (if rtnall (progn ...)) (put-text-property s (1- ...) 'day d) (put-text-property s (1- ...) 'org-day-cnt day-cnt)))) (if (and org-agenda-clockreport-mode clocktable-start) (progn (let ((org-agenda-files ...) (p ...) tbl) (setq p (org-plist-delete p :block)) (setq p (plist-put p :tstart clocktable-start)) (setq p (plist-put p :tend clocktable-end)) (setq p (plist-put p :scope ...)) (setq tbl (apply ... p)) (if org-agenda-clock-report-header (progn ... ...)) (insert tbl)))) (goto-char (point-min)) (or org-agenda-multi (org-agenda-fit-window-to-buffer)) (if (or (not (get-buffer-window org-agenda-buffer-name)) (and (pos-visible-in-window-p (point-min)) (pos-visible-in-window-p (point-max)))) nil (goto-char (1- (point-max))) (recenter -1) (if (not (pos-visible-in-window-p (or start-pos 1))) (progn (goto-char (or start-pos 1)) (recenter 1)))) (goto-char (or start-pos 1)) (add-text-properties (point-min) (point-max) (list 'org-agenda-type 'agenda 'org-last-args (list arg start-day span) 'org-redo-cmd org-agenda-redo-command 'org-series-cmd org-cmd)) (if (eq org-agenda-show-log-scoped 'clockcheck) (progn (org-agenda-show-clocking-issues))) (org-agenda-finalize) (setq buffer-read-only t) (message "")))
  org-agenda-list(nil)
  funcall-interactively(org-agenda-list nil)
  call-interactively(org-agenda-list)
  (cond ((setq entry (assoc org-keys org-agenda-custom-commands)) (if (or (symbolp (nth 2 entry)) (functionp (nth 2 entry))) (progn (progn (setq type (nth 2 entry)) (setq org-match (eval (nth 3 entry) t)) (setq lprops (nth 4 entry))) (if org-agenda-sticky (progn (setq org-agenda-buffer-name (or ... ...)))) (progn (let* ((syms ...) (vals ...) (body ...) (binds nil)) (while syms (setq binds ...)) (eval (list ... ... ...)))) (let ((inhibit-read-only t)) (add-text-properties (point-min) (point-max) (list 'org-lprops lprops)))) (org-agenda-run-series (nth 1 entry) (cdr (cdr entry))))) ((equal org-keys "C") (setq org-agenda-custom-commands org-agenda-custom-commands-orig) (customize-variable 'org-agenda-custom-commands)) ((equal org-keys "a") (call-interactively 'org-agenda-list)) ((equal org-keys "s") (call-interactively 'org-search-view)) ((equal org-keys "S") (org-call-with-arg 'org-search-view (or arg '(4)))) ((equal org-keys "t") (call-interactively 'org-todo-list)) ((equal org-keys "T") (org-call-with-arg 'org-todo-list (or arg '(4)))) ((equal org-keys "m") (call-interactively 'org-tags-view)) ((equal org-keys "M") (org-call-with-arg 'org-tags-view (or arg '(4)))) ((equal org-keys "e") (call-interactively 'org-store-agenda-views)) ((equal org-keys "?") (org-tags-view nil "+FLAGGED") (add-hook 'post-command-hook #'(lambda nil (if (current-message) nil (let* (... ...) (if note ...)))) t t)) ((equal org-keys "#") (call-interactively 'org-agenda-list-stuck-projects)) ((equal org-keys "/") (call-interactively 'org-occur-in-agenda-files)) ((equal org-keys "!") (customize-variable 'org-stuck-projects)) (t (user-error "Invalid agenda key")))
  (let* ((org-keys keys) (prefix-descriptions nil) (org-agenda-buffer-name org-agenda-buffer-name) (org-agenda-window-setup (if (equal (buffer-name) org-agenda-buffer-name) 'current-window org-agenda-window-setup)) (org-agenda-custom-commands-orig org-agenda-custom-commands) (org-agenda-custom-commands (delq nil (mapcar #'(lambda (x) (cond ... ... ... ...)) org-agenda-custom-commands))) (org-agenda-custom-commands (org-contextualize-keys org-agenda-custom-commands org-agenda-custom-commands-contexts)) (bfn (buffer-file-name (buffer-base-buffer))) entry type org-match lprops ans) (if org-agenda-overriding-restriction nil (if org-agenda-keep-restricted-file-list nil (put 'org-agenda-files 'org-restrict nil)) (setq org-agenda-restrict nil) (move-marker org-agenda-restrict-begin nil) (move-marker org-agenda-restrict-end nil)) (if org-keys nil (progn (setq ans (org-agenda-get-restriction-and-command prefix-descriptions)) (setq org-keys (car ans)) (setq restriction (cdr ans)))) (if org-agenda-sticky (progn (setq org-agenda-buffer-name (format "*Org Agenda(%s)*" org-keys)))) (if (and (not org-agenda-overriding-restriction) restriction) (progn (put 'org-agenda-files 'org-restrict (list bfn)) (cond ((eq restriction 'region) (setq org-agenda-restrict (current-buffer)) (move-marker org-agenda-restrict-begin (region-beginning)) (move-marker org-agenda-restrict-end (region-end))) ((eq restriction 'subtree) (save-excursion (setq org-agenda-restrict (current-buffer)) (org-back-to-heading t) (move-marker org-agenda-restrict-begin (point)) (move-marker org-agenda-restrict-end (progn ...)))) ((eq restriction 'buffer) (if (not (buffer-narrowed-p)) (setq org-agenda-restrict t) (setq org-agenda-restrict (current-buffer)) (move-marker org-agenda-restrict-begin (point-min)) (move-marker org-agenda-restrict-end (point-max))))))) (cond ((setq entry (assoc org-keys org-agenda-custom-commands)) (if (or (symbolp (nth 2 entry)) (functionp (nth 2 entry))) (progn (progn (setq type (nth 2 entry)) (setq org-match (eval ... t)) (setq lprops (nth 4 entry))) (if org-agenda-sticky (progn (setq org-agenda-buffer-name ...))) (progn (let* (... ... ... ...) (while syms ...) (eval ...))) (let ((inhibit-read-only t)) (add-text-properties (point-min) (point-max) (list ... lprops)))) (org-agenda-run-series (nth 1 entry) (cdr (cdr entry))))) ((equal org-keys "C") (setq org-agenda-custom-commands org-agenda-custom-commands-orig) (customize-variable 'org-agenda-custom-commands)) ((equal org-keys "a") (call-interactively 'org-agenda-list)) ((equal org-keys "s") (call-interactively 'org-search-view)) ((equal org-keys "S") (org-call-with-arg 'org-search-view (or arg '(4)))) ((equal org-keys "t") (call-interactively 'org-todo-list)) ((equal org-keys "T") (org-call-with-arg 'org-todo-list (or arg '(4)))) ((equal org-keys "m") (call-interactively 'org-tags-view)) ((equal org-keys "M") (org-call-with-arg 'org-tags-view (or arg '(4)))) ((equal org-keys "e") (call-interactively 'org-store-agenda-views)) ((equal org-keys "?") (org-tags-view nil "+FLAGGED") (add-hook 'post-command-hook #'(lambda nil (if (current-message) nil (let* ... ...))) t t)) ((equal org-keys "#") (call-interactively 'org-agenda-list-stuck-projects)) ((equal org-keys "/") (call-interactively 'org-occur-in-agenda-files)) ((equal org-keys "!") (customize-variable 'org-stuck-projects)) (t (user-error "Invalid agenda key"))))
  (catch 'exit (let* ((org-keys keys) (prefix-descriptions nil) (org-agenda-buffer-name org-agenda-buffer-name) (org-agenda-window-setup (if (equal (buffer-name) org-agenda-buffer-name) 'current-window org-agenda-window-setup)) (org-agenda-custom-commands-orig org-agenda-custom-commands) (org-agenda-custom-commands (delq nil (mapcar #'(lambda ... ...) org-agenda-custom-commands))) (org-agenda-custom-commands (org-contextualize-keys org-agenda-custom-commands org-agenda-custom-commands-contexts)) (bfn (buffer-file-name (buffer-base-buffer))) entry type org-match lprops ans) (if org-agenda-overriding-restriction nil (if org-agenda-keep-restricted-file-list nil (put 'org-agenda-files 'org-restrict nil)) (setq org-agenda-restrict nil) (move-marker org-agenda-restrict-begin nil) (move-marker org-agenda-restrict-end nil)) (if org-keys nil (progn (setq ans (org-agenda-get-restriction-and-command prefix-descriptions)) (setq org-keys (car ans)) (setq restriction (cdr ans)))) (if org-agenda-sticky (progn (setq org-agenda-buffer-name (format "*Org Agenda(%s)*" org-keys)))) (if (and (not org-agenda-overriding-restriction) restriction) (progn (put 'org-agenda-files 'org-restrict (list bfn)) (cond ((eq restriction 'region) (setq org-agenda-restrict (current-buffer)) (move-marker org-agenda-restrict-begin (region-beginning)) (move-marker org-agenda-restrict-end (region-end))) ((eq restriction 'subtree) (save-excursion (setq org-agenda-restrict ...) (org-back-to-heading t) (move-marker org-agenda-restrict-begin ...) (move-marker org-agenda-restrict-end ...))) ((eq restriction 'buffer) (if (not ...) (setq org-agenda-restrict t) (setq org-agenda-restrict ...) (move-marker org-agenda-restrict-begin ...) (move-marker org-agenda-restrict-end ...)))))) (cond ((setq entry (assoc org-keys org-agenda-custom-commands)) (if (or (symbolp (nth 2 entry)) (functionp (nth 2 entry))) (progn (progn (setq type ...) (setq org-match ...) (setq lprops ...)) (if org-agenda-sticky (progn ...)) (progn (let* ... ... ...)) (let (...) (add-text-properties ... ... ...))) (org-agenda-run-series (nth 1 entry) (cdr (cdr entry))))) ((equal org-keys "C") (setq org-agenda-custom-commands org-agenda-custom-commands-orig) (customize-variable 'org-agenda-custom-commands)) ((equal org-keys "a") (call-interactively 'org-agenda-list)) ((equal org-keys "s") (call-interactively 'org-search-view)) ((equal org-keys "S") (org-call-with-arg 'org-search-view (or arg '(4)))) ((equal org-keys "t") (call-interactively 'org-todo-list)) ((equal org-keys "T") (org-call-with-arg 'org-todo-list (or arg '(4)))) ((equal org-keys "m") (call-interactively 'org-tags-view)) ((equal org-keys "M") (org-call-with-arg 'org-tags-view (or arg '(4)))) ((equal org-keys "e") (call-interactively 'org-store-agenda-views)) ((equal org-keys "?") (org-tags-view nil "+FLAGGED") (add-hook 'post-command-hook #'(lambda nil (if ... nil ...)) t t)) ((equal org-keys "#") (call-interactively 'org-agenda-list-stuck-projects)) ((equal org-keys "/") (call-interactively 'org-occur-in-agenda-files)) ((equal org-keys "!") (customize-variable 'org-stuck-projects)) (t (user-error "Invalid agenda key")))))
  org-agenda(nil)
  funcall-interactively(org-agenda nil)
  call-interactively(org-agenda nil nil)
  command-execute(org-agenda)

Hello,

I don't understand. Please start from the beginning and explain the problem in context. As well, please provide a minimal reproducible example. And, of course, include the versions of all relevant software. You know, all the standard bug-report info.

I think i have the same issue, at least removing habit fixes it:

Config in org-agenda-custom-commands:

        ("t" "test"
         ((agenda "" ((org-agenda-span 'day)
                      (org-super-agenda-groups
                        '((:name "Timeline"
                           :time-grid t)
                          (:habit t)
                          )
                       )))))

Shows without debug:

if: ‘org-element-at-point’ cannot be used in non-Org buffer #<buffer *Org Agenda(t)*> (org-agenda-mode)

Trace: https://gist.github.com/k11m1/fa6d819d247ef9e8b69d31bf0e659f2a

Removing (:habit t) makes the error go away.

I am using Latest doom emacs (as of 2023-09-25), on Arch Linux.

  • GNU Emacs 29.1
  • Org 9.7
  • I am on: 4efc0bd * master origin/master replaced Meta: Update .gitignore

@k11m1 Thanks. Until this is fixed, you'll have to either not use the habit selector, or use Org 9.6.

@alphapapa No problem. I am not using the habit selector actively so disabling it for me fixed all the problems.

Adam Porter @.***> writes:
@k11m1 Thanks. Until this is fixed, you'll have to either not use the habit selector, or use Org 9.6.
Another option is to comment out the check in org-element.el that causes the issue.

Sure, just be sure to recompile that file afterward, otherwise you'll get reduced performance from its being interpreted.

The root cause is emacs-straight/org-mode@f135954.

Determining whether something is a habit will involve a call to org-element-at-point, which now errors when not in org-mode. This is normally not a problem, as agenda items processed in their home buffer in org-mode. But there's (at least) one exception: Hourly lines/separators in the time grid (like 10:00 .....) aren't real org items, and they're "processed" in the org-agenda buffer in org-agenda-mode.

The simple fix is to evaluate whether an item is a habit only (when (derived-mode-p 'org-mode)). See https://git.savannah.gnu.org/cgit/emacs/org-mode.git/commit/?id=a1fa52197 for a similar fix inside org.

I had a similar issue with a org-agenda-prefix-format that makes a call to (org-get-category).