summaryrefslogtreecommitdiff
path: root/config.org
diff options
context:
space:
mode:
Diffstat (limited to 'config.org')
-rw-r--r--config.org33
1 files changed, 21 insertions, 12 deletions
diff --git a/config.org b/config.org
index 4a5c426..ed8e7e6 100644
--- a/config.org
+++ b/config.org
@@ -277,14 +277,19 @@ annotations.
(global-corfu-mode 1))
#+end_src
-* Name shortcuts
+* People rolodex
-The people workflow is a lightweight rolodex backed by a single =~/org/areas/people/people.org=
-file. Each top-level heading is a compact card with properties for lookup,
-completion, reports, and abbrevs. Abbrev remains the fast path for names you
-type all the time, while CAPF plus Corfu remains the discovery path. The
-machine-facing layer only reads heading text and properties; the =Context= and
-=TODOs= sections stay human-facing notes.
+The people workflow is a lightweight rolodex backed by the canonical
+=~/org/areas/people/people.org= file. Each top-level heading is a compact card
+with properties for lookup, completion, reports, and abbrevs. Abbrev remains
+the fast path for names you type all the time, while CAPF plus Corfu remains
+the discovery path. The machine-facing layer only reads heading text and
+properties; the =Context= and =TODOs= sections stay human-facing notes.
+
+The rolodex is designed around =ss/people-overview=: opening the file starts in
+overview mode, direct visits reset back to overview mode, and exiting card view
+means widening the buffer and restoring that overview. Keep =CURRENT_FOCUS=
+short and phrase-like so summaries and completion annotations stay readable.
#+begin_src emacs-lisp
(require 'seq)
@@ -497,7 +502,7 @@ machine-facing layer only reads heading text and properties; the =Context= and
t))))
(defun ss/people-overview ()
- "Show `ss/people-file' in overview mode."
+ "Open `ss/people-file' in overview mode, widening first when needed."
(interactive)
(unless (and buffer-file-name
(string= (file-truename buffer-file-name)
@@ -509,7 +514,7 @@ machine-facing layer only reads heading text and properties; the =Context= and
(org-cycle-hide-drawers 'all))
(defun ss/people-open ()
- "Open the rolodex in overview mode."
+ "Open the people rolodex by delegating to `ss/people-overview'."
(interactive)
(ss/people-overview))
@@ -527,7 +532,7 @@ machine-facing layer only reads heading text and properties; the =Context= and
(file-truename ss/people-file))))
(defun ss/people--open-entry (entry)
- "Open the people rolodex file and narrow to ENTRY."
+ "Open the people rolodex file, then narrow to ENTRY for card view."
(find-file (ss/people--ensure-file))
(widen)
(let ((position (org-find-exact-headline-in-buffer
@@ -580,7 +585,10 @@ machine-facing layer only reads heading text and properties; the =Context= and
(insert "#+title: " title "\n\n")
(dolist (group groups)
(insert "* " (car group) "\n")
- (dolist (entry (cdr group))
+ (dolist (entry (sort (copy-sequence (cdr group))
+ (lambda (left right)
+ (string< (ss/people--entry-name left)
+ (ss/people--entry-name right)))))
(insert "- " (ss/people--display entry) "\n")))
(goto-char (point-min))
(read-only-mode 1)
@@ -703,6 +711,7 @@ machine-facing layer only reads heading text and properties; the =Context= and
(skip-syntax-backward "w_")
(let ((beg (point)))
(when (< beg end)
+ ;; Verify this in real Org/text writing buffers, not just by inspection.
(let ((annotation
(lambda (candidate)
(when-let ((entry (ss/people--entry-by-name candidate)))
@@ -723,7 +732,7 @@ machine-facing layer only reads heading text and properties; the =Context= and
(add-hook 'completion-at-point-functions #'ss/people-capf nil t)))
(defun ss/people--maybe-overview-buffer ()
- "Reset the people rolodex file to overview when visiting it directly."
+ "Reset the people rolodex buffer to overview when visiting it directly."
(when (and buffer-file-name
(string= (file-truename buffer-file-name)
(file-truename ss/people-file)))