Integrating org-super-agenda to supe-up my agenda display
This makes it easier to see what is going on.
This commit is contained in:
parent
c7a79697a1
commit
3b33def950
4 changed files with 177 additions and 5 deletions
|
@ -24,6 +24,7 @@ This creates [[file:~/.emacs.d/init.el][~/.emacs.d/init.el]] that starts the pro
|
|||
- [[file:ha-remoting.org][ha-remoting.org]] :: my interface to systems using SSH and Vterm.
|
||||
- [[file:ha-feed-reader.org][ha-feed-reader.org]] :: configuration of elfeed as well as my RSS feeds.
|
||||
- [[file:ha-capturing-notes.org][ha-capturing-notes.org]] :: my engineering notebook.
|
||||
- [[file:ha-agendas.org][ha-agendas.org]] :: Attempts to "supe-up" my task list.
|
||||
- [[file:ha-programming.org][ha-programming.org]] :: configuration for /all/ programming languages, or at least, the simple ones.
|
||||
|
||||
*Note:* Other functions and files come from essays written on [[http://www.howardism.org][my blog]]. To help with this, see [[file:support/final-initialize.el][support/final-initialize.el]] file.
|
||||
|
|
|
@ -120,7 +120,7 @@ The following loads the rest of my org-mode literate files. I add them as they a
|
|||
"ha-org-sprint.org"
|
||||
"ha-capturing-notes.org"
|
||||
"ha-programming.org"
|
||||
;; "ha-agendas.org"
|
||||
"ha-agendas.org"
|
||||
;; "ha-email.org"
|
||||
;; "ha-irc.org"
|
||||
;; "ha-passwords.org"
|
||||
|
|
171
ha-agendas.org
Normal file
171
ha-agendas.org
Normal file
|
@ -0,0 +1,171 @@
|
|||
#+TITLE: Org Agenda Configuration
|
||||
#+AUTHOR: Howard X. Abrams
|
||||
#+EMAIL: howard.abrams@gmail.com
|
||||
#+DATE: 2020-09-18
|
||||
#+FILETAGS: :emacs:
|
||||
|
||||
A literate programming configuration for fancy agenda and todo lists.
|
||||
|
||||
#+BEGIN_SRC emacs-lisp :exports none
|
||||
;;; ha-agendas.el --- A literate programming configuration for fancy agenda and todo lists. -*- lexical-binding: t; -*-
|
||||
;;
|
||||
;; Copyright (C) 2020 Howard X. Abrams
|
||||
;;
|
||||
;; Author: Howard X. Abrams <http://gitlab.com/howardabrams>
|
||||
;; Maintainer: Howard X. Abrams <howard.abrams@gmail.com>
|
||||
;; Created: September 18, 2020
|
||||
;;
|
||||
;; This file is not part of GNU Emacs.
|
||||
;;
|
||||
;; *NB:* Do not edit this file. Instead, edit the original literate file at:
|
||||
;; ~/other/hamacs/ha-agendas.org
|
||||
;; And tangle the file to recreate this one.
|
||||
;;
|
||||
;;; Code:
|
||||
#+END_SRC
|
||||
* Introduction
|
||||
All the code we describe in this file needs loading /after/ org.
|
||||
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(with-eval-after-load "org"
|
||||
(add-to-list 'org-modules 'org-protocol))
|
||||
#+END_SRC
|
||||
* Grouping
|
||||
Typical agendas have an /order/ to them, but the [[https://github.com/alphapapa/org-super-agenda][org-super-agenda project]] allows you to get specific as well as group them under headings.
|
||||
|
||||
Unless you specify otherwise, this is the grouping we'll use:
|
||||
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(use-package org-super-agenda
|
||||
:after org
|
||||
:init
|
||||
(setq org-super-agenda-date-format "%A (%e)"
|
||||
org-super-agenda-groups
|
||||
'((:name "Accomplishments"
|
||||
:todo ("DONE" "CANCELED")
|
||||
:order 4)
|
||||
(:name "End of Day"
|
||||
:habit t
|
||||
:order 2)
|
||||
(:name "Uncompleted Work"
|
||||
:todo "DOING"
|
||||
:scheduled past
|
||||
:order 0)
|
||||
(:name "Today's Tasks"
|
||||
:date today
|
||||
:order 1)
|
||||
(:name "Today's Tasks"
|
||||
:scheduled today
|
||||
:order 1)
|
||||
(:name "Future Work"
|
||||
:todo "TODO"
|
||||
:scheduled future
|
||||
:order 3))))
|
||||
#+END_SRC
|
||||
|
||||
The task matches a group based on the /code order/, but the =:order= tag allows me to display them in a different order.
|
||||
|
||||
The following super agenda is just for /today/ and should be smaller:
|
||||
#+BEGIN_SRC emacs-lisp :tangle no
|
||||
(setq ha-org-super-agenda-today
|
||||
'((:name "Finished"
|
||||
:todo ("DONE" "CANCELED")
|
||||
:order 4)
|
||||
(:name "End of Day"
|
||||
:habit t
|
||||
:order 2)
|
||||
(:name "Today's Tasks"
|
||||
:todo "DOING"
|
||||
:scheduled past
|
||||
:date today
|
||||
:order 0)))
|
||||
#+END_SRC
|
||||
* Query Views
|
||||
The [[https://github.com/alphapapa/org-ql][org-ql project]] gives us a /query language/ of sorts (based on s-expressions).
|
||||
|
||||
By putting all queries under =org-ql-views=, we can then call ~M-x query~ and select the view to display:
|
||||
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(use-package org-ql
|
||||
:after org
|
||||
:config
|
||||
;; Often used 'subgroup' that defines a work task
|
||||
(setq ha-org-ql-typical-work-tasks
|
||||
'(and (tags "work")
|
||||
|
||||
;; I will always be Supporting the onboarding projects,
|
||||
;; but don't show them (but show descendants):
|
||||
(not (and (tags "onboarding")
|
||||
(heading "^Support ")))
|
||||
|
||||
;; Show a blocking subtask instead of the parent:
|
||||
(or (not (children))
|
||||
(not (descendants (todo "TODO" "DOING"))))
|
||||
|
||||
(not (habit))
|
||||
(not (done))))
|
||||
|
||||
(setq org-ql-views
|
||||
(list (cons "Overview: Today"
|
||||
(list :buffers-files #'org-agenda-files
|
||||
:query `(or (closed :on today)
|
||||
(and (habit)
|
||||
(not (done))
|
||||
(scheduled :to today))
|
||||
(and ,ha-org-ql-typical-work-tasks
|
||||
(or (deadline auto)
|
||||
(todo "DOING")
|
||||
(scheduled :to today)
|
||||
(ts-active :on today))))
|
||||
:sort '(priority date)
|
||||
:super-groups 'ha-org-super-agenda-today
|
||||
:title "Today in Me"))
|
||||
|
||||
(cons "Overview: Tomorrow"
|
||||
(list :buffers-files #'org-agenda-files
|
||||
:query '(and (not (done))
|
||||
(tags "work")
|
||||
(scheduled :from tomorrow :to tomorrow))
|
||||
:sort '(priority date)
|
||||
:super-groups 'ha-org-super-agenda-today
|
||||
:title "Overview: Tomorrow's tasks"))
|
||||
|
||||
(cons "Calendar: Today"
|
||||
(list :buffers-files #'org-agenda-files
|
||||
:query '(ts-active :on today)
|
||||
:title "Today"
|
||||
:super-groups 'ha-org-super-agenda-today
|
||||
:sort '(priority))))))
|
||||
#+END_SRC
|
||||
* Agenda Interface
|
||||
We can create a function to start this:
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(defun ha-todays-agenda ()
|
||||
"Display an agenda for today, including tasks and scheduled entries."
|
||||
(interactive)
|
||||
(org-ql-view "Overview: Today"))
|
||||
#+END_SRC
|
||||
|
||||
And of course, a keybinding:
|
||||
#+BEGIN_SRC emacs-lisp
|
||||
(ha-leader "a a" '("my agenda" . ha-todays-agenda))
|
||||
#+END_SRC
|
||||
* Technical Artifacts :noexport:
|
||||
Let's provide a name so that the file can be required:
|
||||
|
||||
#+BEGIN_SRC emacs-lisp :exports none
|
||||
(provide 'ha-agendas)
|
||||
;;; ha-agendas.el ends here
|
||||
#+END_SRC
|
||||
|
||||
Before you can build this on a new system, make sure that you put the cursor over any of these properties, and hit: ~C-c C-c~
|
||||
|
||||
#+DESCRIPTION: A literate programming configuration for fancy agenda and todo lists.
|
||||
|
||||
#+PROPERTY: header-args:sh :tangle no
|
||||
#+PROPERTY: header-args:emacs-lisp :tangle yes
|
||||
#+PROPERTY: header-args :results none :eval no-export :comments no mkdirp yes
|
||||
|
||||
#+OPTIONS: num:nil toc:nil todo:nil tasks:nil tags:nil date:nil
|
||||
#+OPTIONS: skip:nil author:nil email:nil creator:nil timestamp:nil
|
||||
#+INFOJS_OPT: view:nil toc:nil ltoc:t mouse:underline buttons:0 path:http://orgmode.org/org-info.js
|
Loading…
Reference in a new issue