diff options
Diffstat (limited to 'pearl.el')
| -rw-r--r-- | pearl.el | 38 |
1 files changed, 37 insertions, 1 deletions
@@ -4040,6 +4040,39 @@ scope-and-visibility display string for the success message." (message "Failed to sync %s: %s" name (or (plist-get result :error) "Linear refused the create")))))) +;;;###autoload +(defun pearl-publish-current-source () + "Publish the active buffer's local saved query to Linear as a Custom View. +Convenience wrapper. Reads `#+LINEAR-SOURCE' from the current buffer. +When it's a `:type filter' source whose `:name' matches a local saved +query, dispatches to `pearl-sync-saved-query-to-linear' with that name +pre-filled. Otherwise refuses with a clear message: the source is +already a Linear view (no publish needed), the filter is transient (no +name to sync under), or no local saved query matches the recorded name. + +Bound under \\='C-; L f P\\=' inside `pearl-mode' buffers; reachable +through the transient as the `U' (upload) entry in the Fetch group." + (interactive) + (let* ((source (pearl--read-active-source)) + (type (and source (plist-get source :type))) + (name (and source (plist-get source :name)))) + (cond + ((null source) + (user-error "No active source header in this buffer; nothing to publish")) + ((eq type 'view) + (user-error "Source is already a Linear view (%s); no publish needed" + (or name "<unnamed>"))) + ((not (eq type 'filter)) + (user-error "Unsupported source type %s; only filter sources can be published" + type)) + ((or (null name) (and (stringp name) (string-blank-p name))) + (user-error "Source has no name; save it first via pearl-list-issues-filtered then re-publish")) + ((not (assoc name pearl-saved-queries)) + (user-error "No local saved query named %s; save it first via pearl-list-issues-filtered" + name)) + (t + (pearl-sync-saved-query-to-linear name))))) + (defun pearl--sync-saved-query-do-update (name view-id team-id shared filter-data scope-label) "Update an existing Linear view from saved query NAME by VIEW-ID. @@ -5772,7 +5805,8 @@ body stay." ("f" "build a filter" pearl-list-issues-filtered) ("v" "custom view" pearl-run-view) ("Q" "saved query" pearl-run-saved-query) - ("S" "sync saved query" pearl-sync-saved-query-to-linear)] + ("S" "sync saved query" pearl-sync-saved-query-to-linear) + ("U" "upload current source" pearl-publish-current-source)] ["View" ("g" "refresh view" pearl-refresh-current-view) ("r" "refresh issue" pearl-refresh-current-issue) @@ -5816,6 +5850,8 @@ body stay." (define-key map "q" (cons "saved query" #'pearl-run-saved-query)) (define-key map "S" (cons "sync saved query to Linear" #'pearl-sync-saved-query-to-linear)) + (define-key map "P" (cons "publish current source to Linear" + #'pearl-publish-current-source)) map) "Pearl fetch commands; a sub-keymap of `pearl-prefix-map'.") |
