From 3c41d3b6fcfb3bfa3cff627535685b9ecfe82a00 Mon Sep 17 00:00:00 2001 From: Craig Jennings Date: Wed, 27 May 2026 23:30:08 -0500 Subject: refactor(preamble): tighten buffer affordance comments to keymap form The four-line preamble enumerated `M-x pearl-save-issue` / `M-x pearl-create-comment` / etc., even though pearl-mode binds the whole verb-prefix keymap under `C-; L` and that's what users actually type after the first session. Replaced with two lines: one for inline edits + save, one for the verb-prefix groups (edit, refresh, menu, pick-source). Reads as a key reference rather than a command list. The build-org-content test now matches the affordance line on "save" instead of the literal `pearl-save-issue` so the next rephrase doesn't trip it. --- pearl.el | 10 +++++----- tests/test-pearl-output.el | 5 +++-- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/pearl.el b/pearl.el index ee01af1..27d56ac 100644 --- a/pearl.el +++ b/pearl.el @@ -3051,12 +3051,12 @@ yields the hardcoded default. Pure function, no side effects." (insert (format "#+LINEAR-FILTER: %s\n" (pearl--summarize-filter filter))) (insert (format "#+LINEAR-COUNT: %d\n" (length issues))) (insert (format "#+LINEAR-TRUNCATED: %s\n" (if truncated "yes" "no"))) - ;; Affordance preamble (org comments -- not rendered content). + ;; Affordance preamble (org comments -- not rendered content). Keys + ;; reference the live `pearl-mode' keymap so the cues match what the + ;; user actually types, not the M-x longhand. (insert "#\n") - (insert "# Body = the issue description; edit it, then M-x pearl-save-issue to push.\n") - (insert "# Comments subtree = the thread; add with M-x pearl-create-comment.\n") - (insert "# State/assignee/labels: M-x pearl-edit-state / -assignee / -labels; priority: the org cookie (C-c ,). All push at save.\n") - (insert "# Refresh with M-x pearl-refresh-current-view (whole file) or -current-issue (one).\n") + (insert "# Inline edits (title, body, comments, [#A] cookie) save with C-; L s. C-; L S saves all.\n") + (insert "# State / assignee / labels: C-; L e s / e a / e l. C-; L g refreshes; C-; L m menu; C-; L f s pick source.\n") (insert "\n") ;; Single top-level parent so the issues are sortable as a group diff --git a/tests/test-pearl-output.el b/tests/test-pearl-output.el index a838bfb..e3208e3 100644 --- a/tests/test-pearl-output.el +++ b/tests/test-pearl-output.el @@ -51,8 +51,9 @@ (should (string-match-p "^#\\+title: Linear — My open issues$" out)) (should (string-match-p "^#\\+LINEAR-SOURCE: " out)) (should (string-match-p "^#\\+LINEAR-COUNT: 0$" out)) - ;; affordance preamble is present as org comments, not content - (should (string-match-p "^# .*pearl-save-issue" out)))) + ;; affordance preamble is present as org comments, not content -- match + ;; the save cue loosely so a future rephrase doesn't break the test + (should (string-match-p "^# .*save" out)))) (ert-deftest test-pearl-build-org-content-source-roundtrips () "The serialized source in the header reads back to the original plist." -- cgit v1.2.3