diff options
Diffstat (limited to 'config.org')
| -rw-r--r-- | config.org | 33 |
1 files changed, 21 insertions, 12 deletions
@@ -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))) |
