diff options
| -rw-r--r-- | README.md | 17 | ||||
| -rw-r--r-- | config.org | 46 |
2 files changed, 29 insertions, 34 deletions
@@ -43,7 +43,9 @@ The note system lives under `~/org/` and is organized like this: - `resources/` for reference material. - `archives/` for archived notes. -This is a PARA-style layout, but the agenda is intentionally narrower than the full tree. Agenda files are discovered dynamically from `projects/`, `areas/`, and `resources/` only. Daily notes and archives are excluded from the agenda scan. +This is a PARA-style layout, but the agenda is intentionally narrower than the full tree. Agenda files are discovered dynamically from `projects/` and `areas/` only. Daily notes, archives, and resources are excluded from the agenda scan. + +Folder placement carries most of the structural meaning in this setup. Denote keywords are used sparingly, with `project` kept as the only built-in structural keyword because project titles are often ambiguous outside their folder. ### Completion setup @@ -76,9 +78,8 @@ emacs --batch -Q --load ./init.el Daily notes are plain Org files in `~/org/daily/`, named by date. When a daily note is created through the config, it starts with these headings: - `Tasks` -- `Meetings` - `Notes` -- `Open loops` +- `Open Loops` This keeps daily capture fast without routing everything through Denote. @@ -86,7 +87,7 @@ This keeps daily capture fast without routing everything through Denote. The agenda is opened through `ss/open-agenda`, bound to `C-c a`. That command explicitly loads `org-agenda`, and the config refreshes `org-agenda-files` immediately before each `org-agenda` invocation so the agenda sees the current PARA files without relying on a fixed file list. -This means the agenda reflects the current project, area, and resource files at runtime instead of relying on a fixed file list. +This means the agenda reflects the current project and area files at runtime instead of relying on a fixed file list. Daily notes, archives, and resources are outside the agenda scan. ### Capture flow @@ -95,9 +96,11 @@ This means the agenda reflects the current project, area, and resource files at - daily tasks - daily notes - daily meetings -- Denote-backed captures for generic notes, projects, areas, people, resources, and meetings +- Denote-backed captures for generic notes, projects, areas, people, and resources + +Daily task capture writes under `Tasks`. Daily note capture and daily meeting capture both write under `Notes`, and the meeting template prefixes the heading with a timestamp and the word `meeting`. -Denote captures prompt for title, keywords, and subdirectory placement where appropriate, while daily captures write directly into the current day's plain Org file. +Denote captures still prompt for title, keywords, and subdirectory placement where appropriate, but folder placement does most of the classification work. The project capture template prepopulates the `project` keyword. Area, person, and resource captures do not inject structural keywords automatically, and there is no Denote-backed meeting capture template. ### Note creation and linking @@ -108,7 +111,7 @@ Denote handles long-lived notes. The main bindings are: - `C-c n m` to create a PARA subdirectory from the minibuffer before capturing into it. - `C-c n d` to open today's daily note. -Keyword prompts and directory placement are part of the workflow, not an afterthought. The config is set up so structure is created first, then capture writes into it. +Keyword prompts and directory placement are part of the workflow, not an afterthought. The config is set up so structure is created first, then capture writes into it, with folder placement carrying most of the durable type information. ### Automatic note commits @@ -365,8 +365,7 @@ subdirectories easy to create from the minibuffer before capturing into them. (defconst ss/org-agenda-directories (list ss/org-projects-directory - ss/org-areas-directory - ss/org-resources-directory) + ss/org-areas-directory) "Directories whose Org files feed the agenda.") (defconst ss/org-subdirectory-roots @@ -374,7 +373,7 @@ subdirectories easy to create from the minibuffer before capturing into them. ("areas" . ,ss/org-areas-directory) ("people" . ,ss/org-people-directory) ("resources" . ,ss/org-resources-directory)) - "PARA roots offered when creating note subdirectories.") + "Capture roots offered when creating note subdirectories.") (defun ss/denote-capture-in-directory (directory &optional keywords &rest prompts) "Start a Denote Org capture in DIRECTORY with KEYWORDS and PROMPTS. @@ -410,7 +409,7 @@ If PROMPTS is empty, rely on `denote-prompts'." "Create a PARA subdirectory using minibuffer completion." (interactive) (let* ((root-name (completing-read - "PARA root: " + "Capture root: " (mapcar #'car ss/org-subdirectory-roots) nil t)) (root (alist-get root-name ss/org-subdirectory-roots nil nil #'string=)) @@ -463,7 +462,7 @@ If TIME is nil, use the current date." (defun ss/daily-note-template (&optional time) "Return the initial contents for the daily note at TIME." - (format "#+title: %s\n\n* Tasks\n\n* Meetings\n\n* Notes\n\n* Open loops\n" + (format "#+title: %s\n\n* Tasks\n\n* Notes\n\n* Open Loops\n" (format-time-string "%Y-%m-%d" (or time (current-time))))) (defun ss/ensure-daily-note (&optional time) @@ -506,10 +505,11 @@ Return the path to the note." ** Capture entry points -Daily capture goes to today's plain Org file. Denote capture uses Denote's own -Org integration so note identity, metadata, and directories stay under Denote's -control rather than custom code. The convenience templates set a few durable -defaults and prompt for subdirectory placement within the relevant PARA root. +Daily capture goes to today's plain Org file. Tasks land under =Tasks= while +notes and meetings land under =Notes=. Denote capture uses Denote's own Org +integration so note identity, metadata, and directories stay under Denote's +control rather than custom code. The convenience templates keep the familiar +entry points, but only project capture injects a structural keyword by default. #+begin_src emacs-lisp (use-package org-capture @@ -525,8 +525,8 @@ defaults and prompt for subdirectory placement within the relevant PARA root. (file+headline ,#'ss/ensure-daily-note "Notes") "* %?") ("dm" "Meeting" entry - (file+headline ,#'ss/ensure-daily-note "Meetings") - "* %<%H:%M> %?") + (file+headline ,#'ss/ensure-daily-note "Notes") + "* %<%H:%M> meeting %?") ("n" "Denote") ("nn" "Generic" plain (file denote-last-path) @@ -552,7 +552,7 @@ defaults and prompt for subdirectory placement within the relevant PARA root. (function (lambda () (ss/denote-capture-in-directory - ss/org-areas-directory '("area") :title :keywords :subdirectory))) + ss/org-areas-directory nil :title :keywords :subdirectory))) :no-save t :immediate-finish nil :kill-buffer t @@ -562,7 +562,7 @@ defaults and prompt for subdirectory placement within the relevant PARA root. (function (lambda () (ss/denote-capture-in-directory - ss/org-people-directory '("person") :title :keywords :subdirectory))) + ss/org-people-directory nil :title :keywords :subdirectory))) :no-save t :immediate-finish nil :kill-buffer t @@ -572,17 +572,7 @@ defaults and prompt for subdirectory placement within the relevant PARA root. (function (lambda () (ss/denote-capture-in-directory - ss/org-resources-directory '("resource") :title :keywords :subdirectory))) - :no-save t - :immediate-finish nil - :kill-buffer t - :jump-to-captured t) - ("nm" "Meeting" plain - (file denote-last-path) - (function - (lambda () - (ss/denote-capture-in-directory - ss/org-directory '("meeting") :title :keywords :subdirectory))) + ss/org-resources-directory nil :title :keywords :subdirectory))) :no-save t :immediate-finish nil :kill-buffer t @@ -591,8 +581,10 @@ defaults and prompt for subdirectory placement within the relevant PARA root. ** Denote -Denote manages the durable notes. The folder layout reflects lifecycle, while -Denote handles naming, metadata, linking, and retrieval. +Denote manages the durable notes. Folder placement carries most of the +structural meaning, while Denote handles naming, metadata, linking, and +retrieval. Built-in keywords stay intentionally sparse, with =project= +retained because project note titles are often ambiguous outside their folder. #+begin_src emacs-lisp (use-package denote @@ -602,7 +594,7 @@ Denote handles naming, metadata, linking, and retrieval. ("C-c n l" . denote-link)) :config (setq denote-directory ss/org-directory - denote-known-keywords '("area" "project" "person" "meeting" "1on1" "resource" "decision") + denote-known-keywords '("project") denote-prompts '(title keywords) denote-org-capture-specifiers "%?") (denote-rename-buffer-mode 1)) |
