aboutsummaryrefslogtreecommitdiff
path: root/pearl.el
diff options
context:
space:
mode:
Diffstat (limited to 'pearl.el')
-rw-r--r--pearl.el65
1 files changed, 35 insertions, 30 deletions
diff --git a/pearl.el b/pearl.el
index f08f636..8f7fa3c 100644
--- a/pearl.el
+++ b/pearl.el
@@ -1157,7 +1157,7 @@ CALLBACK is called with the created issue data."
(pearl--graphql-request-async query variables success-fn error-fn)))
-(defun pearl-create-issue (title description team-id)
+(defun pearl--create-issue (title description team-id)
"Create a new issue (synchronous wrapper for backward compatibility).
TITLE is the issue title.
DESCRIPTION is the issue description.
@@ -2577,7 +2577,7 @@ create callback fires with another buffer current (the compose path)."
(message "Added comment to %s" issue-id)))))
;;;###autoload
-(defun pearl-add-comment (&optional body)
+(defun pearl-create-comment (&optional body)
"Add a comment to the Linear issue at point.
Interactively, opens an Org compose buffer (C-c C-c sends, C-c C-k cancels) and
converts the composed Org to Markdown before sending -- room to write a real
@@ -2946,7 +2946,7 @@ yields the hardcoded default. Pure function, no side effects."
;; Affordance preamble (org comments -- not rendered content).
(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-add-comment.\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 "\n")
@@ -3552,7 +3552,7 @@ the deferred smerge path."
"Save the description of the issue subtree at MARKER, calling CALLBACK.
A push advances both `LINEAR-DESC-SHA256' (the markdown baseline used by the
remote conflict gate) and `LINEAR-DESC-ORG-SHA256' (the rendered-Org baseline
-used by the local dirty scan), so the next scan sees the ticket as clean."
+used by the local dirty scan), so the next scan sees the issue as clean."
(org-with-point-at marker
(let* ((issue-id (org-entry-get nil "LINEAR-ID"))
(identifier (org-entry-get nil "LINEAR-IDENTIFIER"))
@@ -4147,7 +4147,7 @@ yours\". Returns a plist (:issues :titles :descriptions :priorities :states
VIEWER-ID gates comment ownership; VIEWER-FAILED marks a failed viewer lookup so
the prompt counts comments as viewer-unavailable rather than read-only. BUFFER
is surfaced if anything pushed. Declining the prompt mutates nothing. The
-queue continues past a per-field conflict, so one conflicted ticket does not
+queue continues past a per-field conflict, so one conflicted issue does not
stop the rest."
(if (not (y-or-n-p (pearl--save-all-prompt
(pearl--save-all-counts scan viewer-id viewer-failed))))
@@ -4195,7 +4195,7 @@ reported. A clean file does nothing."
"Non-nil if the issue subtree at point has any unpushed local edit.
Broader than `pearl--subtree-dirty-p', which inspects only the description:
this also covers a changed title, state, priority, assignee, labels, or comment.
-A merge refresh uses it so it keeps a ticket you have touched in any field, not
+A merge refresh uses it so it keeps an issue you have touched in any field, not
just ones whose description changed."
(pearl--issue-has-dirty-fields-p (pearl--issue-dirty-fields)))
@@ -4477,7 +4477,7 @@ resolves to a single label."
(when (and selected-label-name (not (string-empty-p selected-label-name)))
(cdr (assoc selected-label-name issue-types)))))
-(defun pearl-new-issue ()
+(defun pearl-create-issue ()
"Create a new Linear issue with additional attributes."
(interactive)
;; Select team first (needed for states, members, etc.)
@@ -4846,9 +4846,9 @@ body stay."
;; delete); fetch / view / setup are the operational groups with no keymap
;; equivalent. The org-sync commands (enable / disable / push-file) are
;; deliberately not surfaced -- they are plumbing (see the todo).
- ["Ticket"
+ ["Issue"
["Save"
- ("e" "save ticket" pearl-save-issue)
+ ("e" "save issue" pearl-save-issue)
("E" "save all" pearl-save-all)]
["Edit"
("D" "edit description" pearl-edit-description)
@@ -4856,11 +4856,11 @@ body stay."
("s" "edit state" pearl-edit-state)
("a" "edit assignee" pearl-edit-assignee)
("L" "edit labels" pearl-edit-labels)]
- ["New"
- ("n" "new ticket" pearl-new-issue)
- ("c" "new comment" pearl-add-comment)]
+ ["Create"
+ ("n" "create issue" pearl-create-issue)
+ ("c" "create comment" pearl-create-comment)]
["Delete"
- ("k" "delete ticket" pearl-delete-current-issue)
+ ("k" "delete issue" pearl-delete-current-issue)
("K" "delete comment" pearl-delete-current-comment)]]
["Workspace"
["Fetch"
@@ -4873,7 +4873,7 @@ body stay."
("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)
- ("o" "open ticket in browser" pearl-open-current-issue)]
+ ("o" "open issue in browser" pearl-open-current-issue)]
["Setup"
("T" "test connection" pearl-test-connection)
("C" "check setup" pearl-check-setup)
@@ -4922,27 +4922,32 @@ body stay."
map)
"Pearl edit commands; a sub-keymap of `pearl-prefix-map'.")
-(defvar pearl-new-map
+(defvar pearl-create-map
(let ((map (make-sparse-keymap)))
- (define-key map "t" (cons "new ticket" #'pearl-new-issue))
- (define-key map "c" (cons "new comment" #'pearl-add-comment))
+ (define-key map "t" (cons "create issue" #'pearl-create-issue))
+ (define-key map "c" (cons "create comment" #'pearl-create-comment))
map)
- "Pearl new-object commands; a sub-keymap of `pearl-prefix-map'.")
+ "Pearl create commands; a sub-keymap of `pearl-prefix-map'.")
(defvar pearl-delete-map
(let ((map (make-sparse-keymap)))
- (define-key map "t" (cons "delete ticket" #'pearl-delete-current-issue))
+ (define-key map "t" (cons "delete issue" #'pearl-delete-current-issue))
(define-key map "c" (cons "delete comment" #'pearl-delete-current-comment))
map)
"Pearl delete commands; a sub-keymap of `pearl-prefix-map'.")
-(defvar pearl-url-map
+(defvar pearl-open-map
(let ((map (make-sparse-keymap)))
- (define-key map "o" (cons "open issue in browser" #'pearl-open-current-issue))
- (define-key map "c" (cons "copy issue URL" #'pearl-copy-issue-url))
+ (define-key map "i" (cons "open issue in browser" #'pearl-open-current-issue))
(define-key map "v" (cons "open view in Linear" #'pearl-open-current-view-in-linear))
map)
- "Pearl URL commands; a sub-keymap of `pearl-prefix-map'.")
+ "Pearl open commands; a sub-keymap of `pearl-prefix-map'.")
+
+(defvar pearl-copy-map
+ (let ((map (make-sparse-keymap)))
+ (define-key map "u" (cons "copy issue URL" #'pearl-copy-issue-url))
+ map)
+ "Pearl copy commands; a sub-keymap of `pearl-prefix-map'.")
(defvar pearl-prefix-map
(let ((map (make-sparse-keymap)))
@@ -4950,21 +4955,21 @@ body stay."
(define-key map "l" (cons "list my open issues" #'pearl-list-issues))
(define-key map "g" (cons "refresh view" #'pearl-refresh-current-view))
(define-key map "r" (cons "refresh issue" #'pearl-refresh-current-issue))
- (define-key map "s" (cons "save ticket" #'pearl-save-issue))
+ (define-key map "s" (cons "save issue" #'pearl-save-issue))
(define-key map "S" (cons "save all" #'pearl-save-all))
(define-key map "d" (cons "edit description" #'pearl-edit-description))
- (define-key map "c" (cons "new comment" #'pearl-add-comment))
(define-key map "m" (cons "menu" #'pearl-menu))
- ;; Category sub-maps -- two keys.
+ ;; Category sub-maps -- two keys; each prefix names an action verb.
(define-key map "f" (cons "+fetch" pearl-fetch-map))
(define-key map "e" (cons "+edit" pearl-edit-map))
- (define-key map "n" (cons "+new" pearl-new-map))
+ (define-key map "c" (cons "+create" pearl-create-map))
(define-key map "k" (cons "+delete" pearl-delete-map))
- (define-key map "u" (cons "+url" pearl-url-map))
+ (define-key map "o" (cons "+open" pearl-open-map))
+ (define-key map "y" (cons "+copy" pearl-copy-map))
map)
"Pearl command prefix keymap.
-Hot-path commands are bound directly; the rest live under the category
-sub-maps (fetch / edit / new / delete / url). `pearl-mode' binds this under
+Hot-path commands are bound directly; the rest live under verb sub-maps
+\(fetch / edit / create / delete / open / copy). `pearl-mode' binds this under
`pearl-keymap-prefix' inside Pearl buffers; you can also bind it globally
\(see the Commentary above).")