aboutsummaryrefslogtreecommitdiff
path: root/pearl.el
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-06-01 17:53:53 -0500
committerCraig Jennings <c@cjennings.net>2026-06-01 17:53:53 -0500
commitad1e0b8c33f909814b69458eb34cc792f032e844 (patch)
tree0db98b0d5ef8f50eb71b132d2928f0583b270176 /pearl.el
parent6206fde5acfd48f9eba2ab231c1fe1d32717c98e (diff)
downloadpearl-ad1e0b8c33f909814b69458eb34cc792f032e844.tar.gz
pearl-ad1e0b8c33f909814b69458eb34cc792f032e844.zip
feat(views): reshape the keymap and transient around the view noun
I put the view operations under the verb a user would reach for. Create, edit, and delete local views are c v, e v, and k v. The fetch group gains run-local-view at f l and keeps run-linear-view at f v, with publish at f u and save-locally reserved at f d. Since f p already runs issues by project, publish and save-locally take u and d, which read as up and down and mirror the copy-up and copy-down lifecycle. The transient now has a Views column grouping create, edit, run-local, run-linear, publish, and delete, separate from the source-fetching commands. I updated the spec's keymap to the implemented letters so the two stay in sync. Phase 3 of the views spec. Keymap tests assert the new bindings. Suite, compile, and lint are green.
Diffstat (limited to 'pearl.el')
-rw-r--r--pearl.el40
1 files changed, 24 insertions, 16 deletions
diff --git a/pearl.el b/pearl.el
index 6b9662e..8d2e491 100644
--- a/pearl.el
+++ b/pearl.el
@@ -6277,19 +6277,22 @@ body stay."
("c" "create comment" pearl-create-comment)]
["Delete"
("k" "delete issue" pearl-delete-current-issue)
- ("K" "delete comment" pearl-delete-current-comment)
- ("q" "delete local view" pearl-delete-local-view)]]
+ ("K" "delete comment" pearl-delete-current-comment)]]
["Workspace"
["Fetch"
("P" "pick source" pearl-pick-source)
("l" "my open issues" pearl-list-issues)
("p" "by project" pearl-list-issues-by-project)
- ("f" "build a filter" pearl-list-issues-filtered)
- ("v" "custom view" pearl-run-linear-view)
- ("Q" "local view" pearl-run-local-view)
- ("S" "sync local view" pearl-publish-local-view)
- ("U" "upload current source" pearl-publish-current-view)]
- ["View"
+ ("f" "build a filter" pearl-list-issues-filtered)]
+ ["Views"
+ ("V" "create local view" pearl-create-local-view)
+ ("y" "edit local view" pearl-edit-local-view)
+ ("Q" "run local view" pearl-run-local-view)
+ ("v" "run Linear view" pearl-run-linear-view)
+ ("u" "publish local view" pearl-publish-local-view)
+ ("U" "publish current view" pearl-publish-current-view)
+ ("X" "delete local view" pearl-delete-local-view)]
+ ["Buffer"
("g" "refresh view" pearl-refresh-current-view)
("r" "refresh issue" pearl-refresh-current-issue)
("b" "open view in Linear" pearl-open-current-view-in-linear)
@@ -6328,14 +6331,17 @@ body stay."
(define-key map "o" (cons "my open issues" #'pearl-list-issues))
(define-key map "p" (cons "by project" #'pearl-list-issues-by-project))
(define-key map "f" (cons "build a filter" #'pearl-list-issues-filtered))
- (define-key map "v" (cons "custom view" #'pearl-run-linear-view))
- (define-key map "q" (cons "local view" #'pearl-run-local-view))
- (define-key map "S" (cons "sync local view to Linear"
- #'pearl-publish-local-view))
- (define-key map "P" (cons "publish current source to Linear"
- #'pearl-publish-current-view))
+ (define-key map "v" (cons "run Linear view" #'pearl-run-linear-view))
+ (define-key map "l" (cons "run local view" #'pearl-run-local-view))
+ (define-key map "u" (cons "publish local view" #'pearl-publish-local-view))
+ (define-key map "P" (cons "publish current view" #'pearl-publish-current-view))
map)
- "Pearl fetch commands; a sub-keymap of `pearl-prefix-map'.")
+ "Pearl fetch commands; a sub-keymap of `pearl-prefix-map'.
+The view-movement keys are `l' run local view, `v' run Linear view, `u'
+publish a local view up to Linear, and `d' save a Linear view locally
+\(added with copy-down). `p' stays `by project', so publish takes `u'
+\(up) and save-locally takes `d' (down), mirroring the copy-up/copy-down
+lifecycle.")
(defvar pearl-edit-map
(let ((map (make-sparse-keymap)))
@@ -6344,6 +6350,7 @@ body stay."
(define-key map "a" (cons "edit assignee" #'pearl-edit-assignee))
(define-key map "l" (cons "edit labels" #'pearl-edit-labels))
(define-key map "c" (cons "edit comment" #'pearl-edit-current-comment))
+ (define-key map "v" (cons "edit local view" #'pearl-edit-local-view))
map)
"Pearl edit commands; a sub-keymap of `pearl-prefix-map'.")
@@ -6351,6 +6358,7 @@ body stay."
(let ((map (make-sparse-keymap)))
(define-key map "t" (cons "create issue" #'pearl-create-issue))
(define-key map "c" (cons "create comment" #'pearl-create-comment))
+ (define-key map "v" (cons "create local view" #'pearl-create-local-view))
map)
"Pearl create commands; a sub-keymap of `pearl-prefix-map'.")
@@ -6358,7 +6366,7 @@ body stay."
(let ((map (make-sparse-keymap)))
(define-key map "t" (cons "delete issue" #'pearl-delete-current-issue))
(define-key map "c" (cons "delete comment" #'pearl-delete-current-comment))
- (define-key map "q" (cons "delete local view" #'pearl-delete-local-view))
+ (define-key map "v" (cons "delete local view" #'pearl-delete-local-view))
map)
"Pearl delete commands; a sub-keymap of `pearl-prefix-map'.")