Giter VIP home page Giter VIP logo

org-super-agenda's Introduction

org-super-agenda

Introduction

This package lets you “supercharge” your Org daily/weekly agenda. The idea is to group items into sections, rather than having them all in one big list.

Now you can sort-of do this already with custom agenda commands, but when you do that, you lose the daily/weekly aspect of the agenda: items are no longer shown based on deadline/scheduled timestamps, but are shown no-matter-what.

So this package filters the results from org-agenda-finalize-entries, which runs just before items are inserted into agenda views. It runs them through a set of filters that separate them into groups. Then the groups are inserted into the agenda buffer, and any remaining items are inserted at the end. Empty groups are not displayed.

The end result is your standard daily/weekly agenda, but arranged into groups defined by you. You might put items with certain tags in one group, habits in another group, items with certain todo keywords in another, and items with certain priorities in another. The possibilities are only limited by the grouping functions.

The primary use of this package is for the daily/weekly agenda, made by the org-agenda-list command, but it also works for other agenda views, like org-tags-view, org-todo-list, org-search-view, etc.

Contents

Screenshots

Here’s what a normal agenda looks like:

images/screenshots/screenshot-before.png

Here’s what the “super” agenda looks like:

images/screenshots/screenshot-after.png

There are also a few more screenshots.

Installation

MELPA

Just install the org-super-agenda package!

Manual installation

If you want to install manually, you must also install these packages:

  • Emacs >= 26.1
  • dash >= 2.13
  • ht >=2.2
  • org-mode >= 9.0
  • s >= 1.10
  • ts

Then put org-super-agenda.el in your load-path, and eval (require 'org-super-agenda).

Usage

  1. Enable org-super-agenda-mode.
  2. Set the variable org-super-agenda-groups as desired (see example below).

    Note: In order for groups to be automatically, persistently applied to all agenda buffers, the variable org-super-agenda-groups must be set in the global scope (e.g. with setq in your init file, or using the customization interface). Alternatively, it can be let-bound in lisp code that calls org-agenda commands, but in that case, the setting will not persist across agenda commands (so after refreshing an agenda buffer by pressing g, there will be no groups).

  3. Run an Org agenda command.
  4. Start the day with confidence, knowing that nothing important has been lost in the jumble of ahem overdue items.

Examples

At first you might feel bewildered by all the options. Never fear, examples are here!

Here’s the code for the screenshots above. You can test it quickly by evaluating this code block:

(let ((org-super-agenda-groups
       '(;; Each group has an implicit boolean OR operator between its selectors.
         (:name "Today"  ; Optionally specify section name
                :time-grid t  ; Items that appear on the time grid
                :todo "TODAY")  ; Items that have this TODO keyword
         (:name "Important"
                ;; Single arguments given alone
                :tag "bills"
                :priority "A")
         ;; Set order of multiple groups at once
         (:order-multi (2 (:name "Shopping in town"
                                 ;; Boolean AND group matches items that match all subgroups
                                 :and (:tag "shopping" :tag "@town"))
                          (:name "Food-related"
                                 ;; Multiple args given in list with implicit OR
                                 :tag ("food" "dinner"))
                          (:name "Personal"
                                 :habit t
                                 :tag "personal")
                          (:name "Space-related (non-moon-or-planet-related)"
                                 ;; Regexps match case-insensitively on the entire entry
                                 :and (:regexp ("space" "NASA")
                                               ;; Boolean NOT also has implicit OR between selectors
                                               :not (:regexp "moon" :tag "planet")))))
         ;; Groups supply their own section names when none are given
         (:todo "WAITING" :order 8)  ; Set order of this section
         (:todo ("SOMEDAY" "TO-READ" "CHECK" "TO-WATCH" "WATCHING")
                ;; Show this group at the end of the agenda (since it has the
                ;; highest number). If you specified this group last, items
                ;; with these todo keywords that e.g. have priority A would be
                ;; displayed in that group instead, because items are grouped
                ;; out in the order the groups are listed.
                :order 9)
         (:priority<= "B"
                      ;; Show this section after "Today" and "Important", because
                      ;; their order is unspecified, defaulting to 0. Sections
                      ;; are displayed lowest-number-first.
                      :order 1)
         ;; After the last group, the agenda will display items that didn't
         ;; match any of these groups, with the default order position of 99
         )))
  (org-agenda nil "a"))

The groups apply to all agenda commands (at least, every one that calls org-agenda-finalize-entries). You can set different groups for custom commands by setting org-super-agenda-groups in the custom command’s settings list (see the description for org-agenda-custom-commands). You can disable grouping by binding org-super-agenda-groups to nil around a call to an agenda command, or you can disable it globally by disabling the mode.

Group selectors

Each group selector creates a group in the agenda containing the items it matches and consumes those items; any items it doesn’t match are passed to the next group selector. The selector :discard is an exception: it consumes any items it matches without creating an agenda group and passes through the rest to the next selector.

Each group selector takes an argument which can be a single atom or a list, e.g. :tag takes a string or list of strings. Some selectors are predicates, like :deadline or :habit; for consistency, they also take an argument, but it is ignored.

Note: The order of items may not be preserved after grouping due to the implementation’s using hash tables. Future versions may address this shortcoming.

Keywords

:name
Optionally, set group name header. May be a string; or the symbol none, in which case no header will be inserted. If :name is not set at all, the group will be named automatically.
:face
A face to apply to items in the group. If face is a plist containing :append t, it will be appended. See function add-face-text-property.
:transformer
Used to transform item strings before display. Either a function called with one argument, the item string, or a sexp, in which case the item string is bound to it.

Special selectors

Every selector requires an argument, even if it’s just t, e.g. :anything, :auto-category, :auto-group, and :discard.

:and
Group ITEMS that match all selectors in GROUP.
:anything
Select every item, no matter what. This is probably most useful with :discard, because it doesn’t actually test anything, so it’s faster than, e.g. ~:regexp “.”~, which has to get the entry text for every item.
:auto-category
This automatically groups items by their category (usually the filename it’s in, without the .org suffix).
:auto-dir-name
This automatically groups items by the directory name of their source buffer.
:auto-group
This selects items that have the agenda-group Org property set. By setting this property for a subtree, every item in it will be sorted into an agenda group by that name and placed into the agenda where the :auto-group selector is (example).
:auto-map
This automatically groups items by the value returned when applying each item to the given function as a string from the agenda buffer (example). The function should return a string to be used as the grouping key and as the header for its group.
:auto-outline-path
This automatically groups items by their outline path hierarchy, like Plans/Take over the universe/Take over the moon.
:auto-parent
This automatically groups items by their parent heading. This is surprisingly handy, especially if you group tasks hierarchically by project and use agenda restrictions to limit the agenda to a subtree.
:auto-planning
This automatically groups items by their earliest of scheduled date or deadline, formatted according to variable org-super-agenda-date-format.
:auto-priority
This automatically groups items by their priority.
:auto-property
This automatically groups items by the value of the given property (example).
:auto-tags
This automatically groups items by all of their tags (i.e. items with exactly the same tags, in any order, will be grouped together).
:auto-todo
This automatically groups items by their to-do keyword.
:auto-ts
This automatically groups items by the date of their latest timestamp anywhere in the entry, formatted according to variable org-super-agenda-date-format. With argument reverse, groups are sorted newest-first.
:discard
Discard items that match selectors. Any groups processed after this one will not see discarded items. You might use this at the beginning or end of a list of groups, either to narrow down the list of items (used in combination with :not), or to exclude items you’re not interested in.
:not
Group ITEMS that match no selectors in GROUP.
  • Note that the :not group selector creates a group with items it does not match; it can be combined with :discard to discard items that don’t match. For example, (:discard (:not (:priority "A"))) as the first selector would mean that only priority A items would appear in the agenda, while (:discard (:priority "C")) would mean that any priority C items would not appear in the agenda.
:order
A number setting the order sections will be displayed in the agenda, lowest number first. Defaults to 0.
:order-multi
Set the order of multiple groups at once, like (:order-multi (2 (groupA) (groupB) ...)) to set the order of these groups to 2.
:take
Take the first N items in GROUP. If N is negative, take the last N items. For example, (:take (-3 group)) will take the last 3 items from the group. The remainder of items are discarded. Note: The order of entries from GROUP is not guaranteed to be preserved, so :take may not always show expected entries.

Normal selectors

These selectors take one argument alone, or multiple arguments in a list.

:ancestor-with-todo
Group items whose ancestor (up to :limit hops, or with :nearestp, their nearest) has the given to-do keyword. (For example, (:ancestor-with-todo ("PROJECT" :nearestp t)) to group by the nearest ancestor project heading.)
:category
Group items that match any of the given categories. Argument may be a string or list of strings.
:children
Select any item that has child entries. Argument may be t to match if it has any children, nil to match if it has no children, todo to match if it has children with any to-do keywords, or a string to match if it has children with certain to-do keywords. You might use this to select items that are project top-level headings. Be aware that this may be very slow in non-daily/weekly agenda views because of its recursive nature.
:date
Group items that have a date associated. Argument can be t to match items with any date, nil to match items without a date, or today to match items with today’s date. The ts-date text-property is matched against.
:deadline
Group items that have a deadline. Argument can be t (to match items with any deadline), nil (to match items that have no deadline), past (to match items with a deadline in the past), today (to match items whose deadline is today), or future (to match items with a deadline in the future). Argument may also be given like before DATE or after DATE where DATE is a date string that org-time-string-to-absolute can process.
:effort<
Group items that are less than (or equal to) the given effort. Argument is a time-duration string, like 5 or 0:05 for 5 minutes.
:effort>
Group items that are higher than (or equal to) the given effort. Argument is a time-duration string, like 5 or 0:05 for 5 minutes.
:file-path
Group items whose buffers’ filename paths match any of the given regular expressions.
:habit
Group habit items (items which have a STYLE: habit Org property).
:heading-regexp
Group items whose headings match any of the given regular expressions.
:log
Group Agenda Log Mode items. Argument may be close or closed to select items closed today; clock or clocked to select items clocked today; changed or state to select items whose to-do state was changed today; t to select any logged item, or nil to select any non-logged item. (See also variable org-agenda-log-mode-items.) Note that these items may also be matched by the :time-grid selector, so if you want these displayed in their own group, you may need to select them in a group before a group containing the :time-grid selector.
:pred
Group items if any of the given predicate functions return non-nil when called with each item as a string from the agenda buffer (example).
:priority
Group items that match any of the given priorities. Argument may be a string or list of strings, which should be the priority letter, e.g. A.
:priority>
Group items that are higher than the given priority, e.g. C.
:priority>=
Group items that are higher than or equal to the given priority, e.g. B.
:priority<
Group items that are lower than the given priority, e.g. A.
:priority<=
Group items that are lower than or equal to the given priority, e.g. B.
:property
Group items with a property, optionally matching a value. Argument may be a property name string, or a list of property name string and either value string or predicate with which to test the value.
:regexp
Group items that match any of the given regular expressions.
:scheduled
Group items that are scheduled. Argument can be t (to match items scheduled for any date), nil (to match items that are not schedule), past (to match items scheduled for the past), today (to match items scheduled for today), or future (to match items scheduled for the future). Argument may also be given like before DATE or after DATE where DATE is a date string that org-time-string-to-absolute can process.
:tag
Group items that match any of the given tags. Argument may be a string or list of strings.
:time-grid
Group items that appear on the time grid.
:todo
Group items that match any of the given TODO keywords. Argument may be a string or list of strings, or t to match any keyword, or nil to match only non-todo items.

Tips

  • An info page is included, with the contents of this readme file.
  • Group headers use the keymap org-super-agenda-header-map, allowing you to bind keys in that map which will take effect when point is on a header.
    • For example, origami works with org-super-agenda buffers without any extra configuration. Just activate origami-mode in the agenda buffer and use the command origami-toggle-node to fold groups. You can bind, e.g. TAB to that command in the header map, and then you can easily collapse groups as if they were an outline. You might even fold some automatically (example).

FAQ

Why are some items not displayed even though I used group selectors for them?

This is a common misunderstanding of how this package works. As written in the introduction, it does not collect items. It only groups items that are collected by Org Agenda or org-ql. So if your Agenda command or org-ql query does not collect certain items, they will not be displayed, regardless of what org-super-agenda groups you configure.

org-ql provides an easier way to write queries to generate agenda-like views that can be grouped with org-super-agenda.

Why did a group disappear when I moved it to the end of the list?

As explained in the usage instructions and shown in the example, items are collected into groups in the order the groups are listed, and empty groups are not shown. To display a group out of the order in which groups are listed, use :order.

Changelog

1.4-pre

Additions

  • Selector :ancestor-with-todo, which groups items by their ancestor having a certain to-do keyword (up to a :limit number of hops, or with :nearestp, the nearest one). (Useful, for example, to group items by their parent or ancestor project.)
  • Option org-super-agenda-show-message allows disabling of the message shown when the mode is enabled. (Thanks to Liam Hupfer.)

1.3

Additions

  • Selector :property, which groups items with a property, optionally also matching a value or predicate. (Thanks to Per Weijnitz.)
  • Special selector :take, which limits the number of items displayed in a group. (Thanks to Pete Kazmier.)
  • Option org-super-agenda-hide-empty-groups, which hides empty groups. (Thanks to Christian Schwarzgruber.)
  • Option org-super-agenda-keep-order, which re-sorts items after grouping to preserve their original sort order. (Thanks to Alexander-Miller.)
  • Selector :auto-ts may be given the argument reverse to sort the groups newest-first.
  • Option org-super-agenda-final-group-separator, which is a separator inserted after the final agenda group. (Thanks to Tyler Funnell.)

Fixes

1.2

Added

  • Selector :auto-planning, which groups items by their earliest of scheduled date or deadline, formatted according to variable org-super-agenda-date-format.
  • Selector :auto-ts, which groups items by the date of their latest timestamp anywhere in the entry, formatted according to variable org-super-agenda-date-format.
  • Selector :auto-tags, which groups items by all of their tags.
  • Option org-super-agenda-date-format, used to format date headers in the :auto-date selector.
  • To-do keyword faces are applied to keywords in group headers.
  • Option org-super-agenda-header-separator may also be a character, which is automatically repeated to the window width. (Thanks to YUE Daian.)
  • Option org-super-agenda-header-properties. It sets org-agenda-structural-header by default, which enables navigating to headers with the default M-{ / M-} bindings in agenda buffers. (Thanks to Abdul-Lateef Haji-Ali.)
  • Option org-super-agenda-header-prefix, a string prepended to group headers. (#108. Thanks to Christian Schwarzgruber.)

Changed

  • Group headers face is now appended to face list instead of overriding it.
  • Minimum Emacs version requirement is now 26.1 (required by ts library).

Fixed

  • :children todo group selection (#75). (Thanks to Ben Leggett and Elric Milon.)
  • :children group headings.
  • Don’t show blank lines for disabled headers (i.e. with :name none and org-super-agenda-header-separator set to an empty string). (Fixes #105. Thanks to Florian Schrödl.)

Updated

  • Tests updated for Org 9.2.4.

Internal

  • org-habit is now loaded when org-super-agenda is loaded. This avoids issues, real and potential, and should not cause any problems.
  • Variable org-super-agenda-allow-unsafe-groups may be used to disable groups which call arbitrary functions (e.g. when called from other packages that may read code from untrusted origins).

1.1.1

Fixed

  • Selector :auto-dir-name did not handle items without markers

1.1

Additions

  • Keyword :face, used to apply faces to items in groups.
  • Keyword :transformer, used to transform items in groups.
  • Option org-super-agenda-header-separator, which can, e.g. be set to an empty string for a more compact view. (Thanks to Sébastien Delafond.)
  • Face org-super-agenda-header, which can be used to customize group headers. (Thanks to Christian Schwarzgruber.)
  • Selector :auto-map, which groups items by the value returned when applying items to a function.
  • Selector :file-path, which groups items by regular expressions matched against their buffers’ filename paths.
  • Selector :pred, which matches if any of the given predicate functions return non-nil when called with the item string from the agenda buffer.
  • Selector :auto-dir-name, which groups items by the directory name of their source buffer.
  • Selector :auto-parent, which groups items by their parent heading.
  • Selector :auto-todo, which groups items by their to-do keyword.
  • Selector :auto-priority, which groups items by their priority.
  • Option org-super-agenda-unmatched-name, used to change the name of the unmatched group. (Thanks to Marcin Swieczkowski.)

Internal

  • Refactor auto-groups with macro.

1.0.3

Fixed

  • Require seq library. (Fixes #54. Thanks to Rick Hanson.)

1.0.2

Fixed

  • Byte-compiler warnings.

1.0.1

Fixes

  • Initialize org-super-agenda-header-map to a copy of org-agenda-mode-map. (Fixes #50. Thanks to Yiufung Cheong.)

1.0.0

First tagged version.

Development

Contributions and feedback are welcome.

If you find this useful, I’d appreciate if you would share a screenshot or two of your agenda views using it (minus any private data, of course). I’d like to get ideas for how to better organize my agenda. :)

Bugs

  • The org-search-view agenda command does not seem to set the todo-state text property for items it finds, so the :todo selector doesn’t work with it. We should be able to work around this by getting the todo state for each item manually, but we have to make sure that we only do that when necessary, otherwise it might be slow. And I wouldn’t be surprised if there are other selectors that don’t work with this or other commands, but org-agenda-list should work fine, and org-tags-view and org-todo-list seem to work.

Tests

It’s easy to run the tests:

  1. Install Cask.
  2. From the repo root directory, run cask install, which installs Emacs and package dependencies into the .cask directory.
  3. Run make test.

Credits

  • Thanks to Balaji Sivaraman for contributing the :category selector.
  • Thanks to Michael Welle for contributing the customizable auto-group Org property name.

License

GPLv3+

org-super-agenda's People

Contributors

alexander-miller avatar alphapapa avatar balajisivaraman avatar casch-at avatar cryptorick avatar dustinlacewell avatar funnell avatar garrison avatar haji-ali avatar hpfr avatar jzohrab avatar natejlong avatar perweij avatar pkazmier avatar randomwangran avatar sdelafond avatar sheepduke avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

org-super-agenda's Issues

Super mode gone after refreshing agenda with `g`

First of all: Thanks for creating this beautiful add-on to org-mode! I run into one simple problem: After starting emacs, org-super-agenda-mode is enabled and everything is fine.

However after refreshing the agenda with g or starting the agenda later (C-a a) the agenda view is back to normal.

I'm on Emacs 25.2.1 with Prelude.
Am I holding it wrong? 😃

:file group selector

It would be useful to have a :file selector, like :tag, but matching all todos in a particular file.

Perhaps this is already possible somehow?

Recent `org-super-agenda` version errors on building agenda

I attempted to update org-super-agenda to the latest version from GitHub today (specifically commit 00b0dbb), but after doing so, my super agendas no longer work, and I get the following error when building the agenda:

if: Unknown upattern `(quote none)'

I also get the following errors when loading org-super-agenda:

Compiler-macro error for cl--block-wrapper: (error "Unknown upattern `(quote t)'")
Eager macro-expansion failure: (error "Unknown upattern `(quote t)'")
Eager macro-expansion failure: (error "Unknown upattern `(quote past)'") [3 times]
Compiler-macro error for cl--block-wrapper: (error "Unknown upattern `(quote todo)'")
Eager macro-expansion failure: (error "Unknown upattern `(quote todo)'")
Compiler-macro error for cl--block-wrapper: (error "Unknown upattern `(quote t)'")
Eager macro-expansion failure: (error "Unknown upattern `(quote t)'")

but these also occur in the working version, so they may not be related.

I did a git bisect, and the first bad commit is b756b93.

Output of M-x emacs-version:

GNU Emacs 24.4.1 (x86_64-pc-linux-gnu, X toolkit, Xaw3d scroll bars)
 of 2017-09-12 on hullmann, modified by Debian

and M-x org-version:

Org mode version 9.0.5 (release_9.0.5-473-g54e107 @ /path/to/org/mode)

Can I use this only for agenda view and not tags/todo views?

My "agenda" consists of the agenda view and a bunch of tag views where I display tasks to do next, projects and so on. Right now having this package enabled replaces all the headlines with Other items, that's kind of annoying :)

You can see my agenda sections here: https://github.com/Fuco1/.emacs.d/blob/master/files/org-defs.el#L292

Here's an example (shortened) of the output

Saturday    9 September 2017

 Scheduled
  me:         Sched. 6x:  TODO Synchronizovat ledger s uctami (automaticke platby)                                             :ME:GENERAL::

 Other items
               8:00...... ----------------
              10:00...... ----------------
  me:         10:40-12:00 TODO Russian                                                                                        :ME:Langs::RU:
              12:00...... ----------------
              14:00...... ----------------
              16:00...... ----------------
              17:08...... now - - - - - - - - - - - - - - - - - - - - - - - - -
              18:00...... ----------------
────────────────────────────────────────────────────────────────────────────────────
 Other items (Should be called "Tasks to Refile")
  refile:     TODO Mathpages                                                                                             :REFILE::readlater:

 Other items (Should be called "Next tasks")
  emacs:      NEXT Dokumentacia                                                                                           :Emacs:CFG:DIRED::

 Other items (Should be called "Tasks")
  emacs:      TODO Add checker for phpstan                                                                                          :Emacs::

Some keybindings not working at heading

First of all, thanks for coming up with this gorgeous package! Has
helped me a lot in organizing my daily priorities and tracking tasks,
I love using it.

In org-agenda, I normally move around using n, p, which invokes
org-agenda-next-line etc. Somehow, when I place my cursor on
headings of org-super-agenda groups, e.g, the Schedule below:

Day-agenda (W37):
Tuesday    11 September 2018

 |Schedule
               8:00...... ----------------
              10:00...... ----------------

then the keybindings for n and p becomes self-insert-command
instead, and echo area shows "Buffer is read-only: #<buffer *Org Agenda(a)*>. In the describe-mode, I can see it's still Org-Agenda Day Ddl mode. I can also see that n, C-n and <down> are mapped
to org-agenda-next-line, and the other two keybindings still work.

Not sure if it happens to others?

M-x emacs-info: GNU Emacs 26.1 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.22.30) of 2018-08-30

    ;; org-super-agenda
    (setq org-super-agenda-groups
          '((:log t)
            (:name "Schedule"
                   :time-grid t)
            (:name "Today"
                   :scheduled today)

            (:name "Due today"
                   :deadline today)
            (:name "Overdue"
                   :deadline past)
            (:name "Due soon"
                   :deadline future)

            (:habit t)
            (:name "Unimportant"
                   :todo ("SOMEDAY" "MAYBE" "CHECK" "TO-READ" "TO-WATCH")
                   :order 100)
            (:name "Waiting..."
                   :todo "WAITING"
                   :order 98)
            (:name "Scheduled earlier"
                   :scheduled past)))
    (org-super-agenda-mode)

    (setq org-agenda-sticky t)

Traces of old agenda

Hi!

Thanks for this supercharged agenda! It is exactly what I was looking for. However, I seem to have problems getting it to work properly. Or at least that is what I think. I've used tried this example:

(let ((org-super-agenda-groups
       '((:auto-category t))))
  (org-agenda-list))

As you can see I have two agenda files overview.org and outlook_day.org. The grouping works fine, but the agenda view shows traces of the standard agenda:

image

Is this supposed to be the case or am I doing something wrong here?

I am using Org-mode version 9.1.2 and org-super-agenda version 2017/09/04.

Thanks in advance!
Wouter

super-agenda and diary

I'm trying to integrate my calendar entries into agenda and I've hit the following issue. On loading org-super-agenda I go into the today view, which displays fine. However, if I want to switch to week or month view I get the following:

Preparing diary...done.
org-super-agenda--group-dispatch: Wrong type argument: stringp, nil

Which is weird, since I have the right diary files and settings. What's weirder is that if I call a function get all my ical data and resync my diary entries and then try and redisply week or month view in agenda everything works. So I'm wondering what's loading incorrectly on the first go-round. Below are those functions for syncing diary:

  (defun getcal (url file)
    "Download ics file and add it to file"
    (let ((tmpfile (url-file-local-copy url)))
      (icalendar-import-file tmpfile file)
      (kill-buffer (car (last (split-string tmpfile "/"))))))

  (defun cpm/getcals ()
    "Load a set of ics calendars into emacs diary files"
    (interactive)
    (mapcar #'(lambda (x)
                (let ((file (concat diary-location (car x)))
                      (url (cdr x)))
                  (message (concat "Loading " url " into " file))
                  (find-file file)
                  ;; (flush-lines "^[& ]") ;; if you import ical as non marking
                  (erase-buffer) ;; to avoid duplicating events
                  (getcal url file)
                  ))
            calendars))

Any ideas?

how to filter range of priorities?

So, I have lots of more priority levels than is usual in org.

like this:
(defun jv-org-priorities ()
(setq org-highest-priority 48 ;; 64 @ 48 0
org-lowest-priority 75 ;; E
org-default-priority 66 ;; B
org-priority-regexp ".*?\(\[#\([;:<=>?@a-z0-9]\)\] ?\)"
))

Anyway, my question is how can I filter priorities using "more than A" rather than just distinct priority cookies?

Installation issues

I just finished getting org-super-agenda installed, and there are some issues that could be better documented. Only one affects the code directly.

Calling this a "mode" is confusing. All the other "modes", like "lisp-mode" and "org-mode", are buffer modes that affect buffer behavior. Calling the variable "org-super-agenda-active" rather than "org-super-agenda-mode" would be less confusing. I was also initially looking for something on the mode-line, which would only be appropriate if this were a buffer mode.

The other problem results from with my issues with MELPA. I have a personal git area where I modify parts of org-mode and other packages. MELPA corrupts my org-mode when it installs it as a dependency. I have not dug through MELPA lisp code to figure how to stop this. Org-super-agenda lists org as a dependency, so MELPA corrupted it.

A discussion of dependencies and how to install without MELPA would help. Reading the lisp code and figuring out the dependencies was not too hard, but it was time consuming. I also had to undo the corruption of org-mode inflicted by MELPA.

More control over 'date' selectors rather than t, nil and today

It would be nice to have more control over date selectors like date, scheduled and deadline. They accept t, nil, and today, but it would be nice to compare dates.

I suggest following values:

  • before-today (useful for scheduled)
  • after-today (useful for deadline)
  • before DATE
  • after DATE

Use case: (:name "Missed tasks" :deadline before-today). This should show all deadlined tasks that are deadlined to date before today.

How to define a group matching categories?

Hi,

I'm trying to separate items from my "other items" section so that items from categories "foo" and "bar" are shown within their own group before the general "other" group with the rest starts.

The category "foo" is automatically derived from the Org mode file name, "bar" is set within an Org mode file on a header-level via the :CATEGORY: property.

I found all kind of criteria to define groups by tags, priority, deadlines, scheduled, effort, and so forth but nothing related to groups except auto-groups which is not what I want to use.

So: how am I able to define a group (before "other items") that contains all items from two specific categories that would otherwise end up in the "other items" group?

Thank you!

Installation styles

Now that org-super-agenda is working well enough, I'm experimenting with methods of using it.

First, I've already concluded that I do not want a semi-permanent org-super-agenda-mode. I've found that I have several different uses for agenda commands. The one that benefits from org-super-agenda is the "what next" agenda that shows me today's time grid (for appointments, meetings, tele-conferences), priority todo's, categorized deadlines, etc. The ones where plain old org-agenda is better are the various task and project management views, like "what tasks are active for this project?" or "what's waiting on input from xxxx?"

As a result, I've installed it so that another global key (I've chosen "C-c S-a") starts the org-super-agenda. The built-in "C-c a" continues to generate org-agenda results without super processing.

The global key is attached at the moment to a function that is just a let-clause that sets the org-super-agenda-mode, sets the template, invokes the underlying org-agenda function, and unsets the org-super-agenda-mode. This provides a nice non-intrusive result. The rest of the org-agenda functions are undisturbed.

It opens up two paths that I've not explored yet. I'll deal with them after I'm happy with the "what next" agenda. 1) I could have context sensitive tempates. The one that I am thinking about would have a template that put work sections before the personal sections on weekdays before 6PM, and put personal sections before work sections on weekends and after 6PM. That would be kind of cool.
2) I might find other project management views that benefit from org-super-agenda templating. If so, I would add a menu structure that is similar to the menu structure in org-agenda. The template would then be specific to the needs of that kind of query.

Q: Show all WAITING, regardless of the date

Being pretty new to emacs I didn't get this to work. I tried things like

(:name "WAITING" :and ( :todo "WAITING" :date nil ))

What I would like to have is a list of WAITING tasks which have or don't have a due date.

Any help highly appreciated!

Cheers

André

auto-group not working?

Hi

First thanks for the super-agenda. I am currently experimenting with this. I tried the auto-group feature, but apparently it is not working for me. All items are sorted into other items.
For tracking I used a simple init file (attached)
init_debug.txt

and an org file from the examples (grandiose plans etc.)

My org version is Org mode version 9.0.9 (9.0.9-82-gb862c2-elpa) and org-super-agenda the latest from elpa (org-super-agenda-20170816.1459).

If I could help tracking this down, I'll do so, although I do not yet know how to do a backtrace...

Improve docs on initial setup

When making changes to agenda items it is very common to press g to refresh the current view. However when using org-super-agenda one loses his or her groups when doing that...

Is there any convenient workaround for this?

Using with the stable orgmode version (>9.0)

Thanks for the very impressive package. If I install org-super-agenda from MELPA, the melpa version of orgmode, which is also (as far as I know) the dev version, is installed. It is possible to install org-super-agenda without installing the melpa version of orgmode (or at least disable it from being loaded)?

is there a way to sort the "Other" group by timestamp ?

I'm probably missing something obvious but is it somehow possible to have the "Other items" sorted by the timestamp in them (newest first) and optimally showing how "old" they are ?

Right now it seem to just sort alphabetically by the file name they are in.

MELPA package broken

When I installed org-super-agenda from MELPA, it also pulled in the org-20170814 package, which I guess is some dev snapshot version. I wasn't able to get super agenda to work until I deleted this package. I think you can probably remove org as a dependency, since it comes with modern Emacs versions.

Magit/Org like folding?

I think it would be great if the section can be folded with like the commits in Magit, or a ORG heading.

%%(diary entries don't seem to get time grid properties

I've mentioned this on the org-list, but for now it deserves mention as a bug. I think the fix needs to be in org-mode. I want to have sunrise and sunset in my time grid. I do this with two lines with "%%(diary-sunrise)" and "%%(diary-sunset)" in them. These then appear at the proper place in the time-grid.

It appears that by the time the results reach org-super-agenda the time-grid property is not there for the sunrise/sunset lines.

Filter by multiple tags using boolean AND instead of OR

In the example code, you note:

Multiple args given in list with implicit OR

I have some sections that I'd like to limit by multiple tags using AND instead. Is this currently possible, or if not, could such a feature be added? If it helps, I have already written a function that I can set as the org-agenda-skip-function to accomplish this.

I'd also be interested in having the ability to filter to tasks that don't have certain tags, or maybe even more complex boolean constructions.

org-agenda-custom commands extra blank line

When using the org-super-agenda with org-agenda-custom commands extra blank line occurs before the org-super-agenda :name property (due to overriding header variable ?).
Is is possible to prevent this ?

For example, using the following code snippet, extra blank line occurs before Projects heading.
(let ((org-agenda-custom-commands
'(("u" "Super view"
((agenda "" ((org-super-agenda-groups
'((:name "Today"
:time-grid t)))))
(todo "" ((org-agenda-overriding-header "")
(org-super-agenda-groups
'((:name "Projects"
:children todo)
(:discard (:anything t)))))))))))
(org-agenda nil "u"))
untitled

Please help me with org-agenda!

I know it is not really the most preferred place to ask this, but after seeing Mr.alphapapa's passionate way of dealing with the issues, i decided to anyway...

Problem:
With day-view, I don't see any TODOs showing under the today's time-grid (with org-super-agenda-mode, that's the 'Today' group).

After two weeks of yelling at the computer (comment this, uncomment that, blaming org-projectile(lol), etc...),
I found out, that of course i wouldn't be seeing it, it's the bloody day view, it only shows the TODOs that are scheduled for the day!!!

So, what shall I do to show the TODOs underneath the time-grid, just as the screenshots show?

Google tells me to customize org-agenda-custom-commands, yet I can't even bind a key to it, because I am using spacemacs, so there's literally no keys left to bind.
Maybe that's the real problem after all? but there is a successful spacemacs setup in the screenshots (the first one i think), how was it done?
Or the solution is not org-agenda-custom-commands, but something else entirely?

Many thanks in advance.

PS: I will post some screenshots after solving this! i promise!

How to disable org-super-agenda?

Hi!

The Error

Adding super-agenda to my setup broke a cronjob of mine which exports my agenda to a HTML file:
/usr/bin/emacs --batch --load /home/vk/.emacs.d/init.el --eval '(progn (setq org-agenda-files (append my-work-agenda-files my-nonwork-agenda-files)) (org-store-agenda-views))'

I now get: Wrong type argument: stringp, org-agenda

The stack trace for this error when I call it interactively in a running Emacs:

Debugger entered--Lisp error: (wrong-type-argument stringp org-agenda)
  expand-file-name(org-agenda "~/")
  (org-agenda-write (expand-file-name (pop files) dir) nil t bufname)
  (let ((ps-number-of-columns 2) (ps-landscape-mode t) (htmlize-output-type (quote css)) (org-super-agenda-groups my-super-agenda-groups)) (org-agenda-write (expand-file-name (pop files) dir) nil t bufname))
  eval((let ((ps-number-of-columns 2) (ps-landscape-mode t) (htmlize-output-type (quote css)) (org-super-agenda-groups my-super-agenda-groups)) (org-agenda-write (expand-file-name (pop files) dir) nil t bufname)))
  #[(&rest parameters) "\306�!\307	\310\n!\307\211\211\211\211\211\211\211������������������ �!\311 �\"\312\216�!\205\313

My current super agenda settings in case this is relevant to anybody.

Why I'm Not Interested In Fixing The Root Cause & What I Want To Achieve Instead

The error and its stack trace is not relevant to me, because I personally don't care to solve the root cause of it. Since I don't want the super-agenda output format in this HTML file anyway, I would like to disable the mode for this process (CLI invocation via cronjob to export my agenda file) only instead. With a running GUI Emacs, I'm file with the current situation and very grateful of having org-super-agenda.

Interactively, calling (org-super-agenda-mode) toggles the mode on/off. Therefore, without having deeper knowledge of Elisp I tried the following command:
/usr/bin/emacs --batch --load /home/vk/.emacs.d/init.el --eval '(progn (setq org-agenda-files (append my-work-agenda-files my-nonwork-agenda-files)) (org-super-agenda-mode) (org-store-agenda-views))'

This seems not to toggle the mode but to enable it twice: I do see "org-super-agenda-mode enabled." multiple times in the Messages buffer.

So: how am I able to disable the mode for this invocation?

Thanks!

the origami example has issues

  • the keymap code didnt work for me, but this worked:

     :bind (:map org-super-agenda-header-map                                                                                                                                                              
                 ("TAB" . origami-toggle-node))   
    
  • the auto folding code didnt work either for me, so i had to leave it out of the hook

Sorting in autogroups

This relates to #25, but I didn't find an exact solution to my problem.

I want to sort items by schedule and then group them using :auto-group. Items in explicit groups seem to be reversed, while the order in "other items" seems to be retained, so I cannot sort items in a consistent way when I use auto groups.

I've found a FIXME comment apparently related to this issue, but do you plan on implementing it?

Example configuration should use setq

Hi there!
First of all, thanks for the great packages and interesting Reddit posts.

I've tried org-super-agenda on a couple of occasions and have given up because for some reason as soon as I change the agenda view--for example from week to day--the Super Agenda view disappears.

I cannot get it to reappear by calling org-agenda-list, or refreshing (r) the agenda. In fact, I need to close Emacs completely and reopen, and then it works again: once.

Steps to reproduce:

  1. Install org-super-agenda from Melpa.
  2. Paste the following code into my init file:
    (let ((org-super-agenda-groups
    '((:auto-category t))))
    (org-agenda-list))
  3. eval-buffer

On the other couple of occasions I tried different examples and fiddled around for a few hours to no avail.

I anticipate something else in my configuration must be causing this strange behaviour but I don't know how to go about finding it except through an arduous process of disabling all the init and re-enabling one bit at a time.

I thought you might have some experience with this or could at least point me in the right direction.

Thanks a lot!

How to invoke super agenda?

My super agenda setup is pretty simple -

  (let ((org-super-agenda-groups 
	   '(;; Each group has an implicit boolean OR operator between its selectors.
		(:name "IMPORTANT"  ; Optionally specify section name
			   :tag "important"
			   :todo ("TODO" "STARTED"))
		(:name "WORK"
			   :tag "work"
			   :todo ("TODO" "STARTED"))
		(:name "PERSONAL"
			   :tag "personal"
			   :todo ("TODO" "STARTED"))			   
		)))
		(org-agenda nil "a"))



I am dumb, but I can't figure out how to actually see this view... The standard org-agenda a produces a default looking agenda...

"user-error: Invalid org-agenda-super-groups selector: :habit"

EDIT: I'm sorry, this issue can be deleted or closed; I didn't have org-habits properly set up.


When attempting to see the super agenda using the following code in my .spacemacs file, I get the error user-error: Invalid org-agenda-super-groups selector: :habit:

  ;; org super agenda
  (use-package org-super-agenda :config (org-super-agenda-mode))
  (org-super-agenda-mode 1)
  (setq org-agenda-custom-commands
        `((
           "u" "SUPER Agenda"
           org-agenda-list ""
           ((org-agenda-span 'day)
            (org-super-agenda-groups
             '(
               (:name "Next"
                      ;; Single arguments given alone
                      :priority "A"
                      :order 0)
               (:name "Other Priorities"
                      :priority>= "C"
                      ;; Show this section after "Today" and "Important", because
                      ;; their order is unspecified, defaulting to 0. Sections
                      ;; are displayed lowest-number-first.
                      :order 1)
               (:name "Deadline Today"
                      :deadline past
                      :deadline today
                      :order 2
                      )
               (:habit t
                       :order 3)
               (:name "Scheduled Today"  ; Optionally specify section name
                      :time-grid t  ; Items that appear on the time grid
                      :scheduled today
                      :scheduled past
                      :date today
                      :order 4
                      )
               ))))))

Great package by the way! Hope I can get it working. :)

Todo filter does not work if item has no deadline

A filter for a todo item of a certain state does not appear on the agenda unless there is an associated deadline. Is this intended behavior? I am trying to set a category for items that do not have deadlines.
The line that is not working is the "Self Paced" category below.
I have the following configuration:

(use-package org-super-agenda
  :ensure t
  :defer t
  :config
  (setq org-super-agenda-groups
	'((:log t
		:order 0)
	  
	  (:habit t
		  :order 6)
	  
	  (:name "Self-paced"
		 :todo ("SOMEDAY" "TO-READ")
		 :order 7)
	  
	  (:name "Overdue!!"
		 :deadline past
		 :order 2)

	  (:name "Missed!"
		 :scheduled past
		 :order 3)
	 
	  (:name "Today"
		 :scheduled today
		 :deadline today
		 :order 4)
	

	  (:name "Schedule"
		 :time-grid t
		 :order 1)
	  ))
  :hook (org-agenda org-super-agenda-mode))

Habits not see (

Hi guys why my habits not work? i catch that error:

(Spacemacs) Error in dotspacemacs/user-config: Invalid org-agenda-super-groups selector: :habit

Make name of agenda-group property customisable

Hi,

I already have Org's CATEGORY property set on some items. It has basically the same meaning: grouping child items together. It would be nice to re-use that (or any other property) for super agenda. I would like to have the name 'agenda-group' customisable instead of being hard coded.

Regards
hmw

time-grid entries from multiple days under one heading?

Is it possible to get several days under one section? E.g.

*Agenda*
Friday: 
  22:00............ Last night on earth party
Saturday: 
  06:00.............Take-off

*TODO's*
Sched.506x: TODO [#A] check that crack in the helmet

*Priority <= B*
Sched.987x: TODO [#C] read the manual   :reading:spaceship:

instead of e.g. a two-day agenda with

Friday: 
*Agenda*
  22:00............ Last night on earth party

Saturday: 
*Agenda*
  06:00.............Take-off

*TODO's*
Sched.506x: TODO [#A] check that crack in the helmet

*Priority <= B*
Sched.987x: TODO [#C] read the manual   :reading:spaceship:

Add example to readme showing multiple sets of groups

I just noticed that when I am in an org-super-agenda-enabled buffer, and I try to refresh it with r or g, it loses the super agenda enhancements, and goes back to a plain agenda.

This occurs at commit dc4dc51, which is the latest that I'm able to test due to #21, but I don't see anything in the commit messages since then that indicates this has changed.

Is this expected, and can it be fixed? It would be nice to not have to reopen the agenda view every time.

org-agenda-current-subtree-or-region--is this related to org-super-agenda?

Hey alphapapa, really sorry for probably irrelevant topic, but I came across a function called org-agenda-current-subtree-or-region that you shared in this post regarding efficient refiling in org-mode using hydras.

Could you tell me when this would be useful? When I'm in org-agenda, I can C-c C-w to refile, but isn't that just normal refiling? How does making an agenda view of a current subtree or region make refiling more efficient? What do you use org-agenda-current-subtree-or-region for (and have you fixed any of the mentioned bugs or are you still using the exact same function?)?

As you can tell, I'm pretty new to org-agenda. I'm just trying to understand how it can be useful, maybe you have an example.

Also, normal org-agenda sorts stuff in the following manner: specific deadlines/schedules on top, then any results in the order of the files in org-agenda-files variable, right? And org-super-agenda aims to filter and group similar (defined by the user) items together and can also sort how it's displayed in org-agenda? What are good reasons not to use org-super-agenda, since it seems more useful than vanilla org-agenda?

Much appreciated.

"user-error: Invalid org-agenda-super-groups selector: :habit"

Hi!

I do seem to face the same error message as #28 listed. My org-super-agenda setup is somewhat more complicated than usual as we have discussed in #14. :-) I arranged myself with the downside such as not being able to refresh without losing org-super-agenda layout. Meanwhile, I consider this as a feature. I got side-tracked. Back to the issue:

I am using multiple computers with the same Emacs setup. Windows 10 with Emacs 26 (org-super-agenda works), Debian stable with Emacs 25.1.1 (org-super-agenda works).

However, with the recent Emacs snapshot update to "Emacs 27.0.50 (build 2, x86_64-pc-linux-gnu, GTK+ Version 3.18.9) of 2018-04-14" on my notebook (Xubuntu 16.04) I get the error "user-error: Invalid org-agenda-super-groups selector: :habit".

So I guess there is a org-super-agenda issue (only) when using such a brand-new Emacs version.

When I remove the line (:name "Habits" :habit t :order 2) from my setup, org-super-agenda is working flawlessly also on Emacs 27.0.50.

":priority" not working correctly

The org-super-agenda selector ":priority" matches no entries except those that have a deadline.

Example:

(setq org-agenda-custom-commands
(quote (
(" " "Super Agenda View" (
(agenda "" ((org-agenda-span 'day)
(org-super-agenda-groups
'((:name "Today "
:time-grid t
:date today
:scheduled today
:order 1)
(:name "Important "
:priority "A"
:order 2)
)))) <---- more to follow

The 2nd block should match every item with "A" priority. Instead, of the
group:

  • TODO [#A] Test 1
    DEADLINE: <2018-07-23 Mo>
  • TODO [#A] Test 2
    SCHEDULED: <2018-07-20 Fr>
  • TODO [#A] Test 3
  • TODO [#B] Test 4
    DEADLINE: <2018-07-21 Sa>

... only the first item (Test 1) is displayed.

Bug or weird feature? Todos having top priority without having a
deadline is a common use case, right?

Emacs 26.1 (Arch Linux), orgmode 9.1.13 (org-plus-contrib), org-super-agenda 20180714.1348 (melpa)

:Error: Wrong number of arguments: when-let, 1

I'm getting an error:

Entering directory ‘/home/emacsomancer/.emacs.d/elpa/org-super-agenda-20180608.1619/’
org-super-agenda.el:298:1:Error: Wrong number of arguments: when-let, 1

Also (on one machine) when I try to use certain groups (like :effort<), it 'crashes' (fails to generate an agenda) and also makes reference to when-let having the wrong number of arguments

Document group folding with origami, add header keymap

First off, thank you so much for creating such a super useful addition to org-mode. I'm instantly ❤️ ing this now I've customized it a bit it is serious helping in my migration from Taskpaper to org-mode.

While the Headings/Names are great, my config and the fact I have a lot of tasks/followups to a very long super-agenda screen (which is an issue on a laptop), and one thing that would be amazing is if I could interactively hide/fold a Named heading (ie. Today, Habits, Due Soon etc) via the Tab key much as I would do in an org-mode file on a heading.

Would be super handy for focusing on things.

And again, thank you for making this. I actually think I would have abandoned org-mode and run back to Taskpaper if not for you writing this super useful module.

":scheduled today" doesn't show the items in the correct (Today) group on days other than today

Hello,

Thanks for org-super-agenda, it's a big help.

As the title says, I have an expectation problem with the way ":scheduled today" works.

It works as expected for the day that is actually today. In other words, items scheduled for today appear in the correct group.

But let's say I have items scheduled to be done tomorrow. When I look at / go forward to tomorrow's day-view/-block, I expect those items to appear in that day's ":scheduled today" group. But they do not -- instead, they will be under eg "Other items".

Is the way I expect this to behave not the more natural way? Or am I missing an obvious point?

Here's an org file to demonstrate -- just save it and follow the TODOs :)

Many thanks
Berkan


* Tasks

** TODO C-xC-e the sexp to schedule this task for today  :task1:
   SCHEDULED: <2018-07-05 Thu>

   #+BEGIN_SRC elisp
     (org-schedule nil ".")
   #+END_SRC

** TODO C-xC-e the sexp to schedule this task for tomorrow  :task2:
   SCHEDULED: <2018-07-06 Fri>

   #+BEGIN_SRC elisp
     (org-schedule nil "+")
   #+END_SRC

** TODO C-xC-e the sexp to display the agenda

   #+BEGIN_SRC elisp
     (let ((org-agenda-sticky nil)
           (org-agenda-span 2) ; show 2 days
           (org-agenda-start-day ".") ; start from today
           (org-agenda-start-on-weekday nil)
           (org-super-agenda-groups '((:name "Today" :scheduled today))))
       (org-super-agenda-mode)
       (save-excursion
         (goto-char (org-find-olp (list "Tasks") 't))
         (org-agenda nil "a" 'subtree)))
   #+END_SRC

   Expected: The first task will appear under "Today" in today's block.
   Actual: As expected.

   Expected: The second task will appear under "Today" in tomorrow's block.
   Actual: The second task appears under "Other items" in tomorrow's block.

Symbol's function definition is void: use-package

Hi - I'm trying to get org-super-agenda working. Per the documentation I've added the following to my init.el file:

(use-package org-super-agenda :config (org-super-agenda-mode))
(let ((org-super-agenda-groups
       '((:auto-group t))))
  (org-agenda-list))

This generates the following error when starting emacs:

Symbol's function definition is void: use-package

To ensure normal operation, you should investigate and remove the
cause of the error in your initialization file. Start Emacs with
the ‘--debug-init’ option to view a complete error backtrace.

A reasonably thorough Google search didn't yield any answers. Help!

Origami example binds Tab incorrectly

Hi there,

I've tried integrating with origami as described in 3b5e8fa, but use-package does not like the :general symbol in its given position. Actually, it does not seem that use-package knows anything about either :general or :keymaps (I've grepped the source). I've also tried putting (define-key org-super-agenda-header-map (kbd "TAB") #'origami-toggle-node) in the :config section with no luck. Do you have any other ideas for getting the TAB keybinding to work? Running M-x origami-toggle-node on a header works, so the only issue is getting the keybinding to work reliably.

No effect on agenda

Hi!

Thanks for this awesome package!

My issue is, that I can't make it work since I get my normal agenda, without anything different than usual.

I cloned your code from GitHub (since I got only stable MELPA which does not feature org-super-agenda) and ran following code:

(defun my-load-local-el (part)
  "load lisp file and warn if not found"
  (let ((fullname (concat my-user-emacs-directory part)))
    (if (file-exists-p fullname)
	(load fullname)
      (message (format "Loading %s (source)...failed" fullname)))))

(my-load-local-el "contrib/org-super-agenda/org-super-agenda.el");; this works definitely

  (let ((org-super-agenda-groups
	 '(;; Each group has an implicit boolean OR operator between its selectors.
	   (:name "Today"  ; Optionally specify section name
		  :time-grid t  ; Items that appear on the time grid
		  ;; :todo "TODAY"  ; Items that have this TODO keyword
		  )
	   (:name "Important"
		  ;; Single arguments given alone
		  ;;:tag "bills"
		  :priority "A")
	   ;; Set order of multiple groups at once
	   (:order-multi (2 (:name "Shopping"
				   :tab "Besorgung"
				   ;; Boolean AND group matches items that match all subgroups
				   ;;:and (:tag "shopping" :tag "@town")
				   )
			    (:name "Started"
				   :todo "STARTED")
			    ;;(:name "Food-related"
			    ;;       ;; Multiple args given in list with implicit OR
			    ;;       :tag ("food" "dinner"))
			    ;;(:name "Personal"
			    ;;       :habit t
			    ;;       :tag "personal")
			    (:name "Habits"
				   :habit t)
			    (:name "BWG"
				   :tag "@BWG")
			    (:name "read"
				   :tag "2read")
			    (:name "reward"
				   :tag ("reward" "lp"))
			    ;;(:name "Space-related (non-moon-or-planet-related)"
			    ;;       ;; Regexps match case-insensitively on the entire entry
			    ;;       :and (:regexp ("space" "NASA")
			    ;;                     ;; Boolean NOT also has implicit OR between selectors
			    ;;                     :not (:regexp "moon" :tag "planet")))
						 ))
	   ;; Groups supply their own section names when none are given
	   (:todo "WAITING" :order 8)  ; Set order of this section
	   (:todo ("SOMEDAY" "WATCHING")
		  ;; Show this group at the end of the agenda (since it has the
		  ;; highest number). If you specified this group last, items
		  ;; with these todo keywords that e.g. have priority A would be
		  ;; displayed in that group instead, because items are grouped
		  ;; out in the order the groups are listed.
		  :order 9)
	   (:priority<= "B"
			;; Show this section after "Today" and "Important", because
			;; their order is unspecified, defaulting to 0. Sections
			;; are displayed lowest-number-first.
			:order 1)
	   ;; After the last group, the agenda will display items that didn't
	   ;; match any of these groups, with the default order position of 99
	   )))
    (org-agenda nil "a"))

This code does generate my usual agenda and nothing is logged in the Messages buffer.

What is my error?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.