Function: majutsu-gerrit--async-accounts
majutsu-gerrit--async-accounts is a natively compiled function defined
in majutsu-gerrit.el.
Signature
(majutsu-gerrit--async-accounts BUILDER)
Documentation
Consult async function for Gerrit account completion via plz.
BUILDER takes an input string and returns (URL . HEADERS), or nil.
This mirrors consult--async-process but drives plz instead of
make-process: plz returns a curl process object for async
requests, which we cancel on new input. Candidates are parsed with
majutsu-gerrit--account-transform and pushed through the sink.
Source Code
;; Defined in /nix/store/jagqw3nms546pad0gxi5f3wsckk6pji7-emacs-packages-deps/share/emacs/site-lisp/majutsu-gerrit.el
(defun majutsu-gerrit--async-accounts (builder)
"Consult async function for Gerrit account completion via `plz'.
BUILDER takes an input string and returns (URL . HEADERS), or nil.
This mirrors `consult--async-process' but drives `plz' instead of
`make-process': `plz' returns a curl process object for async
requests, which we cancel on new input. Candidates are parsed with
`majutsu-gerrit--account-transform' and pushed through the sink."
(lambda (sink)
(let (proc last-input)
(lambda (action)
(pcase action
((pred stringp)
(funcall sink action)
(if (equal action last-input)
nil
(setq last-input action)
(when proc
(delete-process proc)
(setq proc nil))
(when-let* ((req (funcall builder action)))
(let ((url (car req))
(headers (cdr req)))
(funcall sink [indicator running])
(setq proc
(plz 'get url
:headers headers
:as 'string
:then (lambda (body)
(setq proc nil)
(funcall sink 'flush)
;; Send the raw body as a single-element
;; list; the pipeline's transform stage
;; parses it with
;; `majutsu-gerrit--account-transform'.
(funcall sink (list body))
(funcall sink [indicator finished]))
:else (lambda (_err)
(setq proc nil)
(funcall sink [indicator failed]))))))))
((or 'cancel 'destroy)
(when proc
(delete-process proc)
(setq proc nil))
(setq last-input nil)
(funcall sink action))
(_ (funcall sink action)))))))