The only effectful layer: run a plan through an injected elisp evaluator.
Every request is issued asynchronously and awaited under a deadline. A Slynk request naming a callee the image cannot resolve is never answered, and a synchronous wait on it blocks the whole editor; the deadline is what bounds that to one failed verb.
The evaluator is injected, so tests drive this namespace with a recording stub and never a live host.
The only effectful layer: run a plan through an injected elisp evaluator. Every request is issued asynchronously and awaited under a deadline. A Slynk request naming a callee the image cannot resolve is never answered, and a synchronous wait on it blocks the whole editor; the deadline is what bounds that to one failed verb. The evaluator is injected, so tests drive this namespace with a recording stub and never a live host.
Elisp evaluation boundary: (f elisp-string timeout-ms) -> {:success bool :result any :error any}. Bound to a stub in tests; the addon binds it to the host's emacsclient bridge.
Elisp evaluation boundary: (f elisp-string timeout-ms) ->
{:success bool :result any :error any}. Bound to a stub in tests; the addon
binds it to the host's emacsclient bridge.(bounded-elisp lisp-source timeout-ms)Elisp evaluating LISP-SOURCE on the current SLY connection, awaiting the reply for at most TIMEOUT-MS.
Yields (:ok VALUE), (:timeout SECS) or (:error MSG). with-timeout is what
keeps the editor responsive when a reply never arrives.
Elisp evaluating LISP-SOURCE on the current SLY connection, awaiting the reply for at most TIMEOUT-MS. Yields (:ok VALUE), (:timeout SECS) or (:error MSG). `with-timeout` is what keeps the editor responsive when a reply never arrives.
(call-form {:call/keys [rpc args]})CALL as Common Lisp source: the callee applied to its encoded arguments.
CALL as Common Lisp source: the callee applied to its encoded arguments.
(ensure-prelude modules timeout-ms)Load each module in MODULES, in order. Returns ok with the module vector, or the first transport failure. A module that reports it was not provided is not an error: the loader still compiles and loads the file.
Load each module in MODULES, in order. Returns ok with the module vector, or the first transport failure. A module that reports it was not provided is not an error: the loader still compiles and loads the file.
(execute {:plan/keys [prelude call]})Run PLAN: ensure its prelude, then issue its call under the call's deadline.
Returns a Result whose ok value is {:shape :value}, so a caller can decode without re-deriving which op produced it.
Run PLAN: ensure its prelude, then issue its call under the call's deadline.
Returns a Result whose ok value is {:shape :value}, so a caller can decode
without re-deriving which op produced it.(lisp-arg value)VALUE as a Common Lisp literal.
Clojure nil and false both render as CL NIL, and true as CL T, because CL has no distinct boolean false. Symbols are emitted verbatim so a caller may pass an already-qualified callee.
VALUE as a Common Lisp literal. Clojure nil and false both render as CL NIL, and true as CL T, because CL has no distinct boolean false. Symbols are emitted verbatim so a caller may pass an already-qualified callee.
(require-module-form module)Source loading MODULE through the loader's one-argument require-module.
The loader is reached by string lookup, never a qualified symbol. Every condition the load signals is trapped: the form yields CL T on success, or the condition's text as a string.
Source loading MODULE through the loader's one-argument require-module. The loader is reached by string lookup, never a qualified symbol. Every condition the load signals is trapped: the form yields CL T on success, or the condition's text as a string.
(run request)Translate REQUEST and execute it. The one entry point a verb handler needs.
Translate REQUEST and execute it. The one entry point a verb handler needs.
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |