diff --git a/README.org b/README.org index 46057f2..ce48c0a 100644 --- a/README.org +++ b/README.org @@ -186,8 +186,7 @@ These selectors take one argument alone, or multiple arguments in a list. + =: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. ++ =: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. @@ -201,9 +200,10 @@ These selectors take one argument alone, or multiple arguments in a list. + =: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~. + =: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. ++ =: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. ++ =:timestamp= :: Group items that have a timestamp. Argument can be ~t~ (to match items with any timestamp), ~nil~ (to match items that have no timestamp), ~past~ (to match items with a timestamp in the past), ~today~ (to match items whose timestamp is today), or ~future~ (to match items with a timestamp 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. + =: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 diff --git a/org-super-agenda.el b/org-super-agenda.el index 5a1cf10..7272e9f 100644 --- a/org-super-agenda.el +++ b/org-super-agenda.el @@ -335,6 +335,7 @@ returned by :SECTION-NAME as the first item, a list of items not matching the :TEST as the second, and a list of items matching as the third." (declare (indent defun) + (doc-string 2) (debug (&define symbolp stringp &rest [&or [":section-name" [&or stringp def-form]] [":test" def-form] @@ -358,26 +359,39 @@ the third." ;;;;; Date/time-related -;; TODO: I guess these should be in a date-matcher macro +(cl-defmacro org-super-agenda--defgroup-with-time-tests (name docstring &key section-name test-property let*) + "Define an agenda-item group function based on time info. -(org-super-agenda--defgroup 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. " - :section-name "Dated items" ; Note: this does not mean the item has a "SCHEDULED:" line - :let* ((today (org-today))) - :test (pcase (car args) - ('t ;; Test for any date - (org-find-text-property-in-string 'ts-date item)) - ('nil ;; Test for not having a date - (not (org-find-text-property-in-string 'ts-date item))) - ('today ;; Items that have a time sometime today - ;; TODO: Maybe I can use the ts-date property in some other places, might be faster - (when-let ((day (org-find-text-property-in-string 'ts-date item))) - (= day today))) - (_ ;; Oops - (user-error "Argument to `:date' must be `t', `nil', or `today'")))) +:TEST-PROPERTY is the property string on which to run the tests. +It can be one of the special properties like `TIMESTAMP', +`SCHEDULED' or `DEADLINE', but it can also be a user-defined +property like `CREATED'. + +For more information on the other parameters, see +`org-super-agenda--defgroup'." + (declare (indent defun) + (doc-string 2)) + `(org-super-agenda--defgroup ,name + ,docstring + :section-name ,section-name + :let* ((today (pcase (car args) ; Perhaps premature optimization + ((or 'past 'today 'future 'before 'on 'after) + (org-today)))) + (target-date (pcase (car args) + ((or 'before 'on 'after) + (org-time-string-to-absolute (second args)))))) + :test (org-super-agenda--when-with-marker-buffer (org-super-agenda--get-marker item) + (let ((entry-time (org-entry-get (point) ,test-property))) + (pcase (car args) + ('t entry-time) ; Has any timestamp + ('nil (not entry-time)) ; Has no timestamp + (comparison + (when entry-time + (let ((entry-time (org-time-string-to-absolute entry-time)) + (compare-date (pcase comparison + ((or 'past 'today 'future) today) + ((or 'before 'on 'after) target-date)))) + (org-super-agenda--compare-dates comparison entry-time compare-date))))))))) (org-super-agenda--defgroup time-grid "Group items that appear on a time grid. @@ -397,8 +411,28 @@ agenda time-grid. " ;; the time-grid. Yes, this is confusing. :) (not (eql it 'time))))) -(org-super-agenda--defgroup deadline - "Group items that have a deadline. +(org-super-agenda--defgroup-with-time-tests timestamp + "Group items that have a timestamp. +Argument can be `t' (to match items with any timestamp), +`nil' (to match items that have no timestamp), `past' (to match +items with a timestamp in the past), `today' (to match items +whose timestamp for today), or `future' (to match items with +a timestamp 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." + :section-name (pcase (car args) + ('t "Timestamp items") + ('nil "Items without timestamps") + ('past "Timestamps in the past") + ('today "Timestamps for today") + ('future "Timestamps in the future") + ('before (concat "Timestamps before " (second args))) + ('on (concat "Timestamps on " (second args))) + ('after (concat "Timestamps after " (second args)))) + :test-property "TIMESTAMP") + +(org-super-agenda--defgroup-with-time-tests 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 @@ -415,26 +449,9 @@ DATE', where DATE is a date string that ('before (concat "Due before " (second args))) ('on (concat "Due on " (second args))) ('after (concat "Due after " (second args)))) - :let* ((today (pcase (car args) ; Perhaps premature optimization - ((or 'past 'today 'future 'before 'on 'after) - (org-today)))) - (target-date (pcase (car args) - ((or 'before 'on 'after) - (org-time-string-to-absolute (second args)))))) - :test (org-super-agenda--when-with-marker-buffer (org-super-agenda--get-marker item) - (let ((entry-time (org-entry-get (point) "DEADLINE"))) - (pcase (car args) - ('t entry-time) ; Has any deadline info - ('nil (not entry-time)) ; Has no deadline info - (comparison - (when entry-time - (let ((entry-time (org-time-string-to-absolute entry-time)) - (compare-date (pcase comparison - ((or 'past 'today 'future) today) - ((or 'before 'on 'after) target-date)))) - (org-super-agenda--compare-dates comparison entry-time compare-date)))))))) - -(org-super-agenda--defgroup scheduled + :test-property "DEADLINE") + +(org-super-agenda--defgroup-with-time-tests 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 @@ -452,24 +469,7 @@ DATE', where DATE is a date string that ('before (concat "Scheduled before " (second args))) ('on (concat "Scheduled on " (second args))) ('after (concat "Scheduled after " (second args)))) - :let* ((today (pcase (car args) ; Perhaps premature optimization - ((or 'past 'today 'future 'before 'on 'after) - (org-today)))) - (target-date (pcase (car args) - ((or 'before 'on 'after) - (org-time-string-to-absolute (second args)))))) - :test (org-super-agenda--when-with-marker-buffer (org-super-agenda--get-marker item) - (let ((entry-time (org-entry-get (point) "SCHEDULED"))) - (pcase (car args) - ('t entry-time) ; Has any scheduled info - ('nil (not entry-time)) ; Has no scheduled info - (comparison - (when entry-time - (let ((entry-time (org-time-string-to-absolute entry-time)) - (compare-date (pcase comparison - ((or 'past 'today 'future) today) - ((or 'before 'on 'after) target-date)))) - (org-super-agenda--compare-dates comparison entry-time compare-date)))))))) + :test-property "SCHEDULED") (defun org-super-agenda--compare-dates (comparison date-a date-b) "Compare DATE-A and DATE-B according to COMPARISON. @@ -940,16 +940,29 @@ of the arguments to the function." "Return function for SELECTOR, or nil if special selector. Raise error if invalid selector." (cond - ((cl-member selector org-super-agenda-special-selectors) - ;; Special selector, so no associated function; return nil - nil) - ;; Valid selector: return function - ((plist-get org-super-agenda-group-types selector)) - ((eq selector :habit) - ;; :habit selector used but `org-habit' not loaded - (user-error "Please `require' the `org-habit' library to use the :habit selector")) - ;; Invalid selector: raise error - ((user-error "Invalid org-super-agenda-groups selector: %s" selector)))) + ((cl-member selector org-super-agenda-special-selectors) + ;; Special selector, so no associated function; return nil + nil) + ;; Valid selector: return function + ((plist-get org-super-agenda-group-types selector)) + ((eq selector :habit) + ;; :habit selector used but `org-habit' not loaded + (user-error "Please `require' the `org-habit' library to use the :habit selector")) + ;; Deprecated selector: raise warning + ((when-let ((new-selector (alist-get selector + org-super-agenda-deprecated-selectors-alist))) + (let ((old (symbol-name selector)) + (new (symbol-name new-selector))) + (display-warning 'org-super-agenda + (concat "Deprecated selector, please use `" new + "' instead of `" old "'")) + (plist-get org-super-agenda-group-types new-selector)))) + ;; Invalid selector: raise error + ((user-error "Invalid org-super-agenda-groups selector: %s" selector)))) + +(defvar org-super-agenda-deprecated-selectors-alist + '((:date . :timestamp)) + "Alist of deprecated selectors and their replacements.") (defun org-super-agenda--group-dispatch (items group) "Group ITEMS with the appropriate grouping functions for GROUP. diff --git a/org-super-agenda.info b/org-super-agenda.info index f7daba0..72d4c26 100644 --- a/org-super-agenda.info +++ b/org-super-agenda.info @@ -1,4 +1,4 @@ -This is README.info, produced by makeinfo version 5.2 from README.texi. +This is README.info, produced by makeinfo version 6.6 from README.texi. GPLv3+ INFO-DIR-SECTION Emacs @@ -12,8 +12,6 @@ File: README.info, Node: Top, Next: Introduction, Up: (dir) org-super-agenda **************** -GPLv3+ - * Menu: * Introduction:: @@ -27,23 +25,17 @@ GPLv3+ — The Detailed Node Listing — - - - Installation * MELPA:: * Manual installation:: - - Usage * Examples:: * Group selectors:: * Tips:: - Group selectors * Keywords:: @@ -52,28 +44,27 @@ Group selectors Changelog -* 1.2-pre: 12-pre. -* 1.1.1: 111. -* 1.1: 11. -* 1.0.3: 103. -* 1.0.2: 102. -* 1.0.1: 101. -* 1.0.0: 100. - - +* 1.2-pre: 12-pre. +* 1.1.1: 111. +* 1.1: 11. +* 1.0.3: 103. +* 1.0.2: 102. +* 1.0.1: 101. +* 1.0.0: 100. Development * Bugs:: * Tests:: +  File: README.info, Node: Introduction, Next: Contents, Prev: Top, Up: Top 1 Introduction ************** -This package lets you "supercharge" your Org daily/weekly agenda. The +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. @@ -115,7 +106,7 @@ File: README.info, Node: Screenshots, Next: Installation, Prev: Contents, Up Here’s what a normal agenda looks like: - Here’s what the "super" agenda looks like: + Here’s what the ‘super’ agenda looks like: There are also a few . @@ -136,7 +127,7 @@ File: README.info, Node: MELPA, Next: Manual installation, Up: Installation 4.1 MELPA ========= -Just install the org-super-agenda package! +Just install the ‘org-super-agenda’ package!  File: README.info, Node: Manual installation, Prev: MELPA, Up: Installation @@ -147,13 +138,13 @@ File: README.info, Node: Manual installation, Prev: MELPA, Up: Installation If you want to install manually, you must also install these packages: • Emacs >= 25.1 - • dash >= 2.13 - • ht >=2.2 - • org-mode >= 9.0 - • s >= 1.10 + • ‘dash’ >= 2.13 + • ‘ht’ >=2.2 + • ‘org-mode’ >= 9.0 + • ‘s’ >= 1.10 - Then put org-super-agenda.el in your load-path, and eval -(require 'org-super-agenda). + Then put ‘org-super-agenda.el’ in your ‘load-path’, and eval +‘(require 'org-super-agenda)’.  File: README.info, Node: Usage, Next: Changelog, Prev: Installation, Up: Top @@ -172,7 +163,7 @@ File: README.info, Node: Usage, Next: Changelog, Prev: Installation, Up: Top 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). + 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. @@ -195,48 +186,48 @@ 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")) + (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 @@ -288,11 +279,11 @@ File: README.info, Node: Keywords, Next: Special selectors, Up: Group selecto 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’’ +‘: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’’ +‘: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’. @@ -315,8 +306,8 @@ Every selector requires an argument, even if it’s just ‘t’, e.g. 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’’ + filename it’s in, without the ‘.org’ suffix). +‘:auto-dir-name’ This automatically groups items by the directory name of their source buffer. ‘:auto-date’ @@ -324,16 +315,16 @@ Every selector requires an argument, even if it’s just ‘t’, e.g. or deadline, formatted according to variable ‘org-super-agenda-date-format’. ‘: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 + 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 (). -‘‘:auto-map’’ +‘: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 (). The function should return a string to be used as the grouping key and as the header for its group. -‘‘:auto-parent’’ +‘: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 @@ -342,7 +333,7 @@ Every selector requires an argument, even if it’s just ‘t’, e.g. This automatically groups items by their to-do keyword. ‘:auto-priority’ This automatically groups items by their priority. -‘‘:auto-property’’ +‘:auto-property’ This automatically groups items by the value of the given property (). ‘:discard’ @@ -355,7 +346,7 @@ Every selector requires an argument, even if it’s just ‘t’, e.g. Group ITEMS that match no selectors in GROUP. ‘:order’ A number setting the order sections will be displayed in the - agenda, lowest number first. Defaults to 0. + 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. @@ -380,18 +371,13 @@ list. 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 + 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. @@ -401,11 +387,11 @@ list. 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’’ +‘: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). + Group habit items (items which have a ‘STYLE: habit’ Org property). ‘:heading-regexp’ Group items whose headings match any of the given regular expressions. @@ -419,7 +405,7 @@ list. 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’’ +‘: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 (). ‘:priority’ @@ -444,13 +430,21 @@ list. 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 + 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. +‘:timestamp’ + Group items that have a timestamp. Argument can be ‘t’ (to match + items with any timestamp), ‘nil’ (to match items that have no + timestamp), ‘past’ (to match items with a timestamp in the past), + ‘today’ (to match items whose timestamp is today), or ‘future’ (to + match items with a timestamp 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. ‘: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 @@ -464,17 +458,17 @@ File: README.info, Node: Tips, Prev: Group selectors, Up: Usage • An *note info page: (org-super-agenda)Top. 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. + • 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 (https://github.com/gregsexton/origami.el) 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 (). + ‘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 ().  File: README.info, Node: Changelog, Next: Development, Prev: Usage, Up: Top @@ -484,13 +478,13 @@ File: README.info, Node: Changelog, Next: Development, Prev: Usage, Up: Top * Menu: -* 1.2-pre: 12-pre. -* 1.1.1: 111. -* 1.1: 11. -* 1.0.3: 103. -* 1.0.2: 102. -* 1.0.1: 101. -* 1.0.0: 100. +* 1.2-pre: 12-pre. +* 1.1.1: 111. +* 1.1: 11. +* 1.0.3: 103. +* 1.0.2: 102. +* 1.0.1: 101. +* 1.0.0: 100.  File: README.info, Node: 12-pre, Next: 111, Up: Changelog @@ -514,7 +508,7 @@ File: README.info, Node: 12-pre, Next: 111, Up: Changelog • :children todo group selection (#75 (https://github.com/alphapapa/org-super-agenda/issues/75)). (Thanks to Ben Leggett (https://github.com/bleggett).) - • :children group headings. + • ‘:children’ group headings. *Updated* • Tests updated for Org 9.2.4. @@ -526,7 +520,7 @@ File: README.info, Node: 111, Next: 11, Prev: 12-pre, Up: Changelog ========= *Fixed* - • Selector :auto-dir-name did not handle items without markers + • Selector ‘:auto-dir-name’ did not handle items without markers  File: README.info, Node: 11, Next: 103, Prev: 111, Up: Changelog @@ -554,8 +548,8 @@ File: README.info, Node: 11, Next: 103, Prev: 111, Up: Changelog 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. + • 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 (https://github.com/m-cat).) @@ -626,14 +620,15 @@ File: README.info, Node: Bugs, Next: Tests, Up: Development 7.1 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. + • 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.  File: README.info, Node: Tests, Prev: Bugs, Up: Development @@ -644,9 +639,9 @@ File: README.info, Node: Tests, Prev: Bugs, Up: Development It’s easy to run the tests: 1. Install Cask (https://github.com/cask/cask). - 2. From the repo root directory, run cask install, which installs - Emacs and package dependencies into the .cask directory. - 3. Run make test. + 2. From the repo root directory, run ‘cask install’, which installs + Emacs and package dependencies into the ‘.cask’ directory. + 3. Run ‘make test’.  File: README.info, Node: Credits, Prev: Development, Up: Top @@ -655,9 +650,9 @@ File: README.info, Node: Credits, Prev: Development, Up: Top ********* • Thanks to Balaji Sivaraman (https://github.com/balajisivaraman) for - contributing the :category selector. + contributing the ‘:category’ selector. • Thanks to Michael Welle (https://github.com/hmw42) for contributing - the customizable auto-group Org property name. + the customizable ‘auto-group’ Org property name.