Commit graph

102 commits

Author SHA1 Message Date
Nathaniel Nicandro
969cb1ebd7 Add a way to debug the message stream from a kernel
Previously it was hard to step through the code whenever messages were
coming in live from a kernel due to the asynchronous nature of
handling process output in Emacs.
2023-02-13 20:30:19 -06:00
Nathaniel Nicandro
3b94b2b4dc Fix jupyter-mlet* binding 2023-02-13 20:30:19 -06:00
Nathaniel Nicandro
d4c9e24465 Remove jupyter-then 2023-02-13 20:30:19 -06:00
Nathaniel Nicandro
b7ca2d47fa jupyter-return-delayed-thunk: Use thunk-delay
This makes it so that when a delayed value is bound, via
`jupyter-mlet*`, it always results in the same value as was computed
the first time it was bound.  Previously the computation associated
with the delayed value would occur each time it was bound, resulting
in a newly computed value each time.
2023-02-13 20:30:19 -06:00
Nathaniel Nicandro
d061c6eb89 Rename jupyter-reply-message -> jupyter-reply 2023-02-13 20:30:19 -06:00
Nathaniel Nicandro
423bdd76d8 Add jupyter-result 2023-02-13 20:30:19 -06:00
Nathaniel Nicandro
313cc02fa6 Re-add the jupyter-io method 2023-02-13 20:30:19 -06:00
Nathaniel Nicandro
13935fe38f Add jupyter-return-delayed-thunk 2023-02-13 20:25:05 -06:00
Nathaniel Nicandro
45e611a2d8 Remove jupyter--subscribe 2023-02-13 20:25:05 -06:00
Nathaniel Nicandro
a4a48f772b Refactor to remove a use of jupyter-current-io 2023-02-13 20:25:05 -06:00
Nathaniel Nicandro
1dacde77b8 Update commentary 2023-02-13 20:25:05 -06:00
Nathaniel Nicandro
31d79dfd84 Remove do prefix of kernel action functions 2023-02-13 20:25:05 -06:00
Nathaniel Nicandro
9b4877c603 Document some functions 2023-02-13 20:25:05 -06:00
Nathaniel Nicandro
c1bff794d0 Add jupyter-reply-message 2023-02-13 20:25:05 -06:00
Nathaniel Nicandro
07bdc46a87 Move some code to a more appropriate place 2023-02-13 20:25:05 -06:00
Nathaniel Nicandro
3c2cc77348 Remove the callbacks slot of a jupyter-request
Callbacks are added to a request using `jupyter-message-subscribed`.
2023-02-13 20:25:05 -06:00
Nathaniel Nicandro
22d2a3f327 Remove the jupyter-send method...
- Add a `message-publisher` slot to `jupyter-request`, set when
  sending a request.

- `*-request` functions now return a delayed request value instead of
  a request. Update call sites.

- Add the functions `jupyter-messages`, `jupyter-idle`,
`jupyter-message-subscribed` and `jupyter-client-subscribed`.

- Move client subscription to a request's messages to
  `jupyter-client-subscribed`.

- Request callbacks are now added via `jupyter-message-subscribed`.

- Reduce usage of callbacks in favor of searching `jupyter-messages`
  where appropriate.

- Update tests
2023-02-13 20:25:05 -06:00
Nathaniel Nicandro
e1221d55a1 Add :parent-request member when publishing request messages 2023-02-13 20:25:05 -06:00
Nathaniel Nicandro
37a74e601b Actually delay generation of request in jupyter-request 2023-02-13 20:25:05 -06:00
Nathaniel Nicandro
0f271ec322 monads: Reword doc 2023-02-13 20:25:05 -06:00
Nathaniel Nicandro
b763c09778 Remove unused functions 2023-02-13 20:25:05 -06:00
Nathaniel Nicandro
9dd6268fa5 Remove some comments 2023-02-13 20:25:05 -06:00
Nathaniel Nicandro
134167e65e Remove keyword message types 2023-02-13 20:25:05 -06:00
Nathaniel Nicandro
ef26ef1b08 Remove jupyter-io 2023-02-13 20:25:05 -06:00
Nathaniel Nicandro
a23f8fe864 Use jupyter-generate-request in jupyter-request 2023-02-13 20:25:05 -06:00
Nathaniel Nicandro
ab616e4609 Simplify jupyter-request message collecting 2023-02-13 20:22:50 -06:00
Nathaniel Nicandro
e133c34707 Add do prefix to launch,shutdown,interrupt functions of a kernel
launch,shutdown,interrupt are now monadic functions.
2023-02-13 20:22:50 -06:00
Nathaniel Nicandro
f5d8e7c535 Remove unused function 2023-02-13 20:22:50 -06:00
Nathaniel Nicandro
bd6e2c3228 jupyter-monads.el: Require jupyter-base 2023-02-13 20:22:50 -06:00
Nathaniel Nicandro
84b2e140a4 jupyter-publisher: Mention jupyter-subscriber in doc 2023-02-13 20:22:50 -06:00
Nathaniel Nicandro
fa43656632 jupyter-pseudo-bind-content: Mention errors in doc 2023-02-13 20:22:50 -06:00
Nathaniel Nicandro
f28c1c649a Make jupyter-request pure 2023-02-13 20:22:50 -06:00
Nathaniel Nicandro
fc0321a1fd Distinguish between a publisher and subscriber error 2023-02-13 20:22:50 -06:00
Nathaniel Nicandro
1739346990 Remove unused function 2023-02-13 20:22:50 -06:00
Nathaniel Nicandro
61776abcce Add WebSocket I/O 2023-02-13 20:22:50 -06:00
Nathaniel Nicandro
f09fd3618c Modify the subscriber list instead of setting it
This is to account for the asynchronous nature of calls to Emacs
process filter functions.  The old way had
`jupyter-pseudo-bind-content` return a new list of subscribers to set
so ultimately, if the same publisher was called recursively the
outer (older) call would set the list.
2023-02-13 20:22:50 -06:00
Nathaniel Nicandro
9f23483681 jupyter-request 2023-02-13 20:22:50 -06:00
Nathaniel Nicandro
680d8d845a jupyter-publish: Simplify doc 2023-02-13 20:22:50 -06:00
Nathaniel Nicandro
e1843d719e jupyter-filter and jupyter-filter-content 2023-02-13 20:22:50 -06:00
Nathaniel Nicandro
23e58afc35 jupyter-kernel-launch 2023-02-13 20:22:50 -06:00
Nathaniel Nicandro
01f76e07a7 jupyter-monads.el: Add jupyter-io 2023-02-13 20:22:50 -06:00
Nathaniel Nicandro
d720126871 Update doc of publisher 2023-02-13 20:22:50 -06:00
Nathaniel Nicandro
f5c2a4aa63 monads: request 2023-02-13 20:22:50 -06:00
Nathaniel Nicandro
02a9c2d7a8 monads: comments 2023-02-13 20:22:50 -06:00
Nathaniel Nicandro
5336f16851 jupyter-send-content -> jupyter-content 2023-02-13 20:22:50 -06:00
Nathaniel Nicandro
5bd9ca7cbc Flush out the unsubscribe dynamic 2023-02-13 20:22:50 -06:00
Nathaniel Nicandro
c1896288d0 jupyter-monads.el: Doc changes 2023-02-13 20:22:50 -06:00
Nathaniel Nicandro
024c0e1378 jupyter-return-delayed: fix debug form 2023-02-13 20:22:50 -06:00
Nathaniel Nicandro
f19ba287db Update comments 2023-02-13 20:22:50 -06:00
Nathaniel Nicandro
afa2f7ef65 pseudo-bind 2023-02-13 20:22:50 -06:00