feat(org): fix agenda workflow
This commit is contained in:
parent
440c93fbf2
commit
48e1c41198
3 changed files with 284 additions and 119 deletions
|
|
@ -586,7 +586,7 @@ frame if FRAME is nil, and to 1 if AMT is nil."
|
|||
(setq org-directory "~/NPersonal/") ; Non-absolute paths for agenda and
|
||||
; capture templates will look here.
|
||||
|
||||
(setq org-agenda-files '("inbox.org" "work.org"))
|
||||
(setq org-agenda-files '("agenda.org"))
|
||||
|
||||
;; Default tags
|
||||
(setq org-tag-alist '(
|
||||
|
|
@ -609,13 +609,44 @@ frame if FRAME is nil, and to 1 if AMT is nil."
|
|||
("reading")))
|
||||
|
||||
;; Org-refile: where should org-refile look?
|
||||
(setq org-refile-targets 'FIXME)
|
||||
(setq org-refile-targets '(("agenda.org" :maxlevel . 2)
|
||||
("archive.org" :level . 1)))
|
||||
|
||||
;; Archive location
|
||||
(setq org-archive-location "archive.org::* Archived")
|
||||
|
||||
;;; Phase 3 variables
|
||||
|
||||
;; Org-roam variables
|
||||
(setq org-roam-directory "~/NPersonal/roam/")
|
||||
(setq org-roam-index-file "~/NPersonal/roam/index.org")
|
||||
;; Denote (zettelkasten with markdown)
|
||||
(use-package denote
|
||||
:ensure t
|
||||
:custom
|
||||
(denote-directory "~/NPersonal/")
|
||||
(denote-file-type 'markdown-yaml) ;; Use markdown with YAML front matter
|
||||
(denote-known-keywords '("project" "idea" "ref" "meeting" "paper"))
|
||||
(denote-prompts '(title keywords))
|
||||
:bind
|
||||
(("C-c n n" . denote) ;; Create new note
|
||||
("C-c n f" . denote-open-or-create)
|
||||
("C-c n i" . denote-link) ;; Insert link to note
|
||||
("C-c n l" . denote-backlinks) ;; Show backlinks
|
||||
("C-c n r" . denote-rename-file)
|
||||
("C-c n k" . denote-keywords-add)
|
||||
("C-c n K" . denote-keywords-remove))
|
||||
:config
|
||||
;; Enable denote links in org
|
||||
(denote-rename-buffer-mode 1))
|
||||
|
||||
;; Denote org extras (better org integration)
|
||||
(use-package denote-org-extras
|
||||
:ensure nil
|
||||
:after denote
|
||||
:config
|
||||
;; Create org links to denote files
|
||||
(denote-org-extras-dblock-backlinks-mode 1)
|
||||
:bind
|
||||
(("C-c n b" . denote-org-extras-backlinks-for-heading)
|
||||
("C-c n h" . denote-org-extras-link-to-heading)))
|
||||
|
||||
;;; Optional variables
|
||||
|
||||
|
|
@ -629,12 +660,38 @@ frame if FRAME is nil, and to 1 if AMT is nil."
|
|||
:elpaca nil
|
||||
:hook ((org-mode . visual-line-mode) ; wrap lines at word breaks
|
||||
(org-mode . flyspell-mode)) ; spell checking!
|
||||
:init
|
||||
;; Load mu4e-org for email links (before org loads)
|
||||
(with-eval-after-load 'org
|
||||
(require 'mu4e-org nil t))
|
||||
|
||||
;; Open agenda on startup (deferred)
|
||||
(add-hook 'elpaca-after-init-hook
|
||||
(lambda ()
|
||||
(run-with-idle-timer 1 nil #'org-agenda nil "n")))
|
||||
|
||||
:bind (:map global-map
|
||||
("C-c a" . org-agenda) ; Agenda
|
||||
("C-c c" . org-capture) ; Capture
|
||||
("C-c l s" . org-store-link) ; Mnemonic: link → store
|
||||
("C-c l i" . org-insert-link-global)) ; Mnemonic: link → insert
|
||||
:custom
|
||||
(org-time-stamp-rounding-minutes '(0 5)) ;; Round to 5 min
|
||||
(org-read-date-prefer-future t)
|
||||
(org-return-follows-link t) ;; RET follows links
|
||||
;; Agenda settings
|
||||
(org-agenda-window-setup 'current-window)
|
||||
(org-agenda-start-with-log-mode t)
|
||||
(org-agenda-include-diary nil)
|
||||
(org-agenda-tags-column -80)
|
||||
(org-agenda-block-separator ?─)
|
||||
(org-agenda-time-grid '((daily today require-timed)
|
||||
(800 1000 1200 1400 1600 1800 2000)
|
||||
" ┄┄┄┄┄ " "┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄"))
|
||||
(org-agenda-current-time-string "◀── now ──────────────────────────────────────")
|
||||
:config
|
||||
(require 'oc-csl) ; citation support
|
||||
|
||||
(add-to-list 'org-export-backends 'md)
|
||||
(setf (cdr (assoc 'file org-link-frame-setup)) 'find-file)
|
||||
(setq org-export-with-smart-quotes t)
|
||||
|
|
@ -643,29 +700,54 @@ frame if FRAME is nil, and to 1 if AMT is nil."
|
|||
(setq org-outline-path-complete-in-steps nil)
|
||||
(setq org-refile-use-outline-path 'file)
|
||||
(setq org-capture-templates
|
||||
'(("c" "Default Capture" entry (file "inbox.org")
|
||||
"* TODO %?\n%U\n%i")
|
||||
'(("c" "Quick Capture" entry (file+headline "agenda.org" "Inbox")
|
||||
"** TODO %?\n%U\n%i")
|
||||
;; Capture and keep an org-link to the thing we're currently working with
|
||||
("r" "Capture with Reference" entry (file "inbox.org")
|
||||
"* TODO %?\n%U\n%i\n%a")
|
||||
;; Define a section
|
||||
("w" "Work")
|
||||
("wm" "Work meeting" entry (file+headline "work.org" "Meetings")
|
||||
("r" "Capture with Reference" entry (file+headline "agenda.org" "Inbox")
|
||||
"** TODO %?\n%U\n%i\n%a")
|
||||
("wr" "Work report" entry (file+headline "work.org" "Reports")
|
||||
("t" "Task" entry (file+headline "agenda.org" "Tasks")
|
||||
"** TODO %?\n%U\n%i")
|
||||
("m" "Meeting" entry (file+headline "agenda.org" "Meetings")
|
||||
"** TODO %?\n%U\n%i\n%a")
|
||||
;; Email capture
|
||||
("e" "Email")
|
||||
("et" "Email TODO" entry (file "inbox.org")
|
||||
"* TODO %:fromname: %:subject\n%U\n%a\n\n%?")
|
||||
("ef" "Email Follow-up" entry (file "inbox.org")
|
||||
"* TODO Follow up: %:subject\nDEADLINE: %(org-insert-time-stamp (org-read-date nil t \"+2d\"))\n%U\n%a\n\n%?")))
|
||||
("ei" "Email to Inbox" entry (file+headline "agenda.org" "Inbox")
|
||||
"** TODO %:subject\nFrom: %:fromname <%:fromaddress>\nEmail: %a\n%?")
|
||||
("et" "Email to Tasks" entry (file+headline "agenda.org" "Tasks")
|
||||
"** TODO %:subject\nFrom: %:fromname <%:fromaddress>\nEmail: %a\n%?")
|
||||
("ef" "Email Follow-up" entry (file+headline "agenda.org" "Tasks")
|
||||
"** TODO Follow up: %:subject\nDEADLINE: %(org-insert-time-stamp (org-read-date nil t \"+2d\"))\nFrom: %:fromname\nEmail: %a\n%?")))
|
||||
(setq org-agenda-custom-commands
|
||||
'(("n" "Agenda and All Todos"
|
||||
((agenda)
|
||||
(todo)))
|
||||
("w" "Work" agenda ""
|
||||
((org-agenda-files '("work.org")))))))
|
||||
'(("n" "Dashboard"
|
||||
((tags-todo "+DEADLINE<\"<today>\""
|
||||
((org-agenda-overriding-header "Overdue!")))
|
||||
(agenda "" ((org-agenda-span 'day)
|
||||
(org-deadline-warning-days 7)
|
||||
(org-agenda-time-grid nil)
|
||||
(org-agenda-overriding-header "Today")))
|
||||
(todo "STARTED"
|
||||
((org-agenda-overriding-header "In Progress")))
|
||||
(todo "WAITING"
|
||||
((org-agenda-overriding-header "Waiting")))
|
||||
(tags-todo "+DEADLINE>=\"<today>\"+DEADLINE<=\"<+7d>\""
|
||||
((org-agenda-overriding-header "Due This Week")))
|
||||
(tags-todo "inbox"
|
||||
((org-agenda-overriding-header "Inbox")))
|
||||
(agenda "" ((org-agenda-span 7)
|
||||
(org-agenda-start-day "+1d")
|
||||
(org-agenda-start-on-weekday nil)
|
||||
(org-agenda-show-all-dates t)
|
||||
(org-agenda-time-grid nil)
|
||||
(org-agenda-overriding-header "Next 7 Days")))
|
||||
(alltodo ""
|
||||
((org-agenda-skip-function
|
||||
'(org-agenda-skip-entry-if 'scheduled 'deadline 'todo '("STARTED" "WAITING")))
|
||||
(org-agenda-overriding-header "Backlog")))))
|
||||
("w" "Week View"
|
||||
((agenda "" ((org-agenda-span 'week)
|
||||
(org-deadline-warning-days 14)))))
|
||||
("i" "Inbox" tags-todo "inbox")
|
||||
("p" "Projects" tags-todo "project"))))
|
||||
|
||||
;; =========================
|
||||
;; Email (mu4e)
|
||||
|
|
@ -686,6 +768,9 @@ frame if FRAME is nil, and to 1 if AMT is nil."
|
|||
(setq mu4e-mu-binary (or (executable-find "mu")
|
||||
"/etc/profiles/per-user/rayandrew/bin/mu"))
|
||||
|
||||
;; Enable org-mode link support
|
||||
(require 'mu4e-org)
|
||||
|
||||
;; General settings
|
||||
(setq mu4e-maildir "~/mail")
|
||||
(setq mu4e-get-mail-command "~/dotfiles/bin/path-shim mbsync -a")
|
||||
|
|
|
|||
177
docs/emacs.md
Normal file
177
docs/emacs.md
Normal file
|
|
@ -0,0 +1,177 @@
|
|||
# Emacs Configuration
|
||||
|
||||
## Notes & Org
|
||||
|
||||
### Directory Structure
|
||||
|
||||
- `~/NPersonal/agenda.org` - All tasks (Inbox, Tasks, Meetings)
|
||||
- `~/NPersonal/archive.org` - Completed/archived items
|
||||
- `~/NPersonal/*.md` - Denote markdown notes
|
||||
|
||||
### agenda.org Structure
|
||||
|
||||
```org
|
||||
* Inbox <- quick captures
|
||||
* Tasks <- organized tasks
|
||||
* Meetings <- meetings
|
||||
```
|
||||
|
||||
### Org Agenda
|
||||
|
||||
| Key | Action |
|
||||
|-----|--------|
|
||||
| `C-c a` | Open agenda dispatcher |
|
||||
| `C-c c` | Capture (quick note/todo) |
|
||||
|
||||
#### In Agenda View
|
||||
|
||||
| Key | Action |
|
||||
|-----|--------|
|
||||
| `n` / `p` | Next / previous item |
|
||||
| `t` | Cycle TODO state |
|
||||
| `RET` | Go to item |
|
||||
| `q` | Quit agenda |
|
||||
|
||||
### Org Mode
|
||||
|
||||
| Key | Action |
|
||||
|-----|--------|
|
||||
| `C-c C-t` | Cycle TODO state |
|
||||
| `C-c C-s` | Schedule |
|
||||
| `C-c C-d` | Set deadline |
|
||||
| `C-c C-w` | Refile to another file/heading |
|
||||
| `C-c C-x C-a` | Archive subtree |
|
||||
| `C-c l s` | Store link |
|
||||
| `C-c l i` | Insert link |
|
||||
|
||||
### Capture Templates (`C-c c`)
|
||||
|
||||
| Key | Action |
|
||||
|-----|--------|
|
||||
| `c` | Quick capture to Inbox |
|
||||
| `r` | Capture with reference |
|
||||
| `t` | Task |
|
||||
| `m` | Meeting |
|
||||
| `e i` | Email to Inbox |
|
||||
| `e t` | Email to Tasks |
|
||||
| `e f` | Email follow-up with deadline |
|
||||
|
||||
### Denote (Markdown Notes)
|
||||
|
||||
Notes are saved as: `20241226T123456--title__keyword1_keyword2.md`
|
||||
|
||||
| Key | Action |
|
||||
|-----|--------|
|
||||
| `C-c n n` | Create new note |
|
||||
| `C-c n f` | Find or create note |
|
||||
| `C-c n i` | Insert link to note |
|
||||
| `C-c n l` | Show backlinks |
|
||||
| `C-c n r` | Rename file |
|
||||
| `C-c n k` | Add keyword |
|
||||
| `C-c n K` | Remove keyword |
|
||||
| `C-c n b` | Backlinks for org heading |
|
||||
| `C-c n h` | Link to org heading |
|
||||
|
||||
### Archive
|
||||
|
||||
Completed tasks go to `archive.org` under `* Archived` heading.
|
||||
|
||||
- `C-c C-x C-a` - Archive current subtree
|
||||
- `C-c C-w` then select `archive.org` - Refile to archive
|
||||
|
||||
---
|
||||
|
||||
## Email (mu4e)
|
||||
|
||||
### Launch
|
||||
|
||||
| Key | Action |
|
||||
|-----|--------|
|
||||
| `C-c e` | Open mu4e |
|
||||
|
||||
### Main View
|
||||
|
||||
| Key | Action |
|
||||
|-----|--------|
|
||||
| `U` | Update mail (run mbsync) |
|
||||
| `j` | Jump to maildir |
|
||||
| `s` | Search |
|
||||
| `b` | Bookmarks |
|
||||
| `C` | Compose new message |
|
||||
| `;` | Switch context (account) |
|
||||
| `q` | Quit mu4e |
|
||||
|
||||
### Headers View (Message List)
|
||||
|
||||
| Key | Action |
|
||||
|-----|--------|
|
||||
| `n` / `p` | Next / previous message |
|
||||
| `RET` | View message |
|
||||
| `d` | Mark for trash |
|
||||
| `D` | Mark for delete |
|
||||
| `t` | Mark for action (prompts) |
|
||||
| `u` | Unmark |
|
||||
| `m` | Move to folder |
|
||||
| `e` | Refile (archive) |
|
||||
| `+` / `-` | Mark / unmark flag |
|
||||
| `!` | Mark as read |
|
||||
| `?` | Mark as unread |
|
||||
| `r` | Reply |
|
||||
| `R` | Reply all |
|
||||
| `F` | Forward |
|
||||
| `x` | Execute marked actions |
|
||||
| `U` | Unmark all |
|
||||
| `%` | Mark by pattern |
|
||||
| `T` | Mark thread |
|
||||
| `g` | Rerun search |
|
||||
| `q` | Quit to main view |
|
||||
|
||||
### Message View
|
||||
|
||||
| Key | Action |
|
||||
|-----|--------|
|
||||
| `n` / `p` | Next / previous message |
|
||||
| `SPC` / `DEL` | Scroll down / up |
|
||||
| `r` | Reply |
|
||||
| `R` | Reply all |
|
||||
| `F` | Forward |
|
||||
| `o` | Open attachment |
|
||||
| `e` | Save attachment |
|
||||
| `a` | View action (open in browser, etc.) |
|
||||
| `#` | Toggle citation folding |
|
||||
| `.` | Raw view |
|
||||
| `h` | Toggle headers |
|
||||
| `q` | Return to headers |
|
||||
|
||||
### Compose
|
||||
|
||||
| Key | Action |
|
||||
|-----|--------|
|
||||
| `C-c C-c` | Send message |
|
||||
| `C-c C-k` | Kill (discard) message |
|
||||
| `C-c C-d` | Save as draft |
|
||||
| `C-c C-a` | Attach file |
|
||||
| `C-c C-s` | GPG sign message |
|
||||
| `C-c C-e` | GPG encrypt message |
|
||||
|
||||
### Bookmarks (from main view, press `b`)
|
||||
|
||||
| Key | Action |
|
||||
|-----|--------|
|
||||
| `u` | Unread messages |
|
||||
| `t` | Today's messages |
|
||||
| `w` | Last 7 days |
|
||||
| `i` | UChicago Inbox |
|
||||
| `p` | Personal Inbox |
|
||||
|
||||
### Search Tips
|
||||
|
||||
- `from:john` - messages from john
|
||||
- `to:jane` - messages to jane
|
||||
- `subject:meeting` - subject contains meeting
|
||||
- `flag:unread` - unread messages
|
||||
- `flag:attach` - messages with attachments
|
||||
- `date:today..now` - today's messages
|
||||
- `date:7d..now` - last 7 days
|
||||
- `maildir:/uchicago/Inbox` - specific maildir
|
||||
- `AND`, `OR`, `NOT` - boolean operators
|
||||
97
docs/mu4e.md
97
docs/mu4e.md
|
|
@ -1,97 +0,0 @@
|
|||
# mu4e Configuration
|
||||
|
||||
## Launch
|
||||
|
||||
| Key | Action |
|
||||
|-----|--------|
|
||||
| `C-c e` | Open mu4e |
|
||||
|
||||
## Main View
|
||||
|
||||
| Key | Action |
|
||||
|-----|--------|
|
||||
| `U` | Update mail (run mbsync) |
|
||||
| `j` | Jump to maildir |
|
||||
| `s` | Search |
|
||||
| `b` | Bookmarks |
|
||||
| `C` | Compose new message |
|
||||
| `;` | Switch context (account) |
|
||||
| `q` | Quit mu4e |
|
||||
|
||||
## Headers View (Message List)
|
||||
|
||||
| Key | Action |
|
||||
|-----|--------|
|
||||
| `n` / `p` | Next / previous message |
|
||||
| `RET` | View message |
|
||||
| `d` | Mark for trash |
|
||||
| `D` | Mark for delete |
|
||||
| `t` | Mark for action (prompts) |
|
||||
| `u` | Unmark |
|
||||
| `m` | Move to folder |
|
||||
| `e` | Refile (archive) |
|
||||
| `+` / `-` | Mark / unmark flag |
|
||||
| `!` | Mark as read |
|
||||
| `?` | Mark as unread |
|
||||
| `r` | Reply |
|
||||
| `R` | Reply all |
|
||||
| `F` | Forward |
|
||||
| `x` | Execute marked actions |
|
||||
| `u` | Unmark |
|
||||
| `U` | Unmark all |
|
||||
| `*` | Mark for something |
|
||||
| `#` | Mark for deferred trash |
|
||||
| `%` | Mark by pattern |
|
||||
| `T` | Mark thread |
|
||||
| `g` | Rerun search |
|
||||
| `q` | Quit to main view |
|
||||
|
||||
## Message View
|
||||
|
||||
| Key | Action |
|
||||
|-----|--------|
|
||||
| `n` / `p` | Next / previous message |
|
||||
| `SPC` / `DEL` | Scroll down / up |
|
||||
| `r` | Reply |
|
||||
| `R` | Reply all |
|
||||
| `F` | Forward |
|
||||
| `o` | Open attachment |
|
||||
| `e` | Save attachment |
|
||||
| `a` | View action (open in browser, etc.) |
|
||||
| `#` | Toggle citation folding |
|
||||
| `.` | Raw view |
|
||||
| `h` | Toggle headers |
|
||||
| `q` | Return to headers |
|
||||
|
||||
## Compose
|
||||
|
||||
| Key | Action |
|
||||
|-----|--------|
|
||||
| `C-c C-c` | Send message |
|
||||
| `C-c C-k` | Kill (discard) message |
|
||||
| `C-c C-d` | Save as draft |
|
||||
| `C-c C-a` | Attach file |
|
||||
| `C-c C-s` | GPG sign message (custom) |
|
||||
| `C-c C-e` | GPG encrypt message |
|
||||
|
||||
## Bookmarks (from main view, press `b`)
|
||||
|
||||
| Key | Action |
|
||||
|-----|--------|
|
||||
| `u` | Unread messages |
|
||||
| `t` | Today's messages |
|
||||
| `w` | Last 7 days |
|
||||
| `i` | UChicago Inbox |
|
||||
| `p` | Personal Inbox |
|
||||
|
||||
## Search Tips
|
||||
|
||||
- `from:john` - messages from john
|
||||
- `to:jane` - messages to jane
|
||||
- `subject:meeting` - subject contains meeting
|
||||
- `flag:unread` - unread messages
|
||||
- `flag:attach` - messages with attachments
|
||||
- `date:today..now` - today's messages
|
||||
- `date:7d..now` - last 7 days
|
||||
- `maildir:/uchicago/Inbox` - specific maildir
|
||||
- `AND`, `OR`, `NOT` - boolean operators
|
||||
Loading…
Reference in a new issue