Commit graph

1873 commits

Author SHA1 Message Date
Nathaniel Nicandro
83881bf4e0 Ensure the startup message is caught
Setup the necessary hooks before starting the kernel so that we can ensure that
the startup message is caught.

A short delay is also added whenever we start a channel. This was necessary for
the client to catch the startup message of a python kernel.
2018-02-07 12:08:07 -06:00
Nathaniel Nicandro
48c07e1f04 Do nothing when there is no render parameter when clearing/injecting one 2018-02-06 17:46:47 -06:00
Nathaniel Nicandro
5f902e1593 Remove unused code 2018-02-06 17:46:07 -06:00
Nathaniel Nicandro
a28952c643 Silence byte compiler 2018-02-06 17:45:53 -06:00
Nathaniel Nicandro
2a602246de Revert back to correct behavior 2018-02-06 17:45:12 -06:00
Nathaniel Nicandro
85efbf9c04 Refactor org-babel-jupyter-prepare-result
- Return the correct result when HTML contains only image data
  - Still need to handle all possible cases of the data URL scheme
- Add `org-babel-jupyter--image-result`
2018-02-06 16:49:48 -06:00
Nathaniel Nicandro
072dce7c00 Negligible changes 2018-02-04 18:22:56 -06:00
Nathaniel Nicandro
43fc5a6ab8 Remove superfluous newlines when executing code 2018-02-04 18:21:12 -06:00
Nathaniel Nicandro
731480a4dd Don't add a newline in stream output 2018-02-04 18:20:11 -06:00
Nathaniel Nicandro
f466b3adcc [WIP] Better support for display-data messages 2018-02-04 18:19:08 -06:00
Nathaniel Nicandro
8d7e0a3bd7 Update comments 2018-02-04 18:18:19 -06:00
Nathaniel Nicandro
90dd699a7a Update comments 2018-02-04 18:15:32 -06:00
Nathaniel Nicandro
2cb665e744 Check if the ioloop process is live in jupyter-channel-alive-p for async channels 2018-02-04 18:10:32 -06:00
Nathaniel Nicandro
e6d9fcbf5a Add kernel-died-cb for heartbeat channels
This is a callback function which is called when no response has been received
from the kernel after 5 `time-to-dead` periods.
2018-02-04 18:08:05 -06:00
Nathaniel Nicandro
a94c6cc4c6 Remove redundancy in org-babel-execute:jupyter 2018-02-04 18:06:55 -06:00
Nathaniel Nicandro
ca6c2ae37a Simplify wording of jupyter-add-callback documentation 2018-02-04 18:06:11 -06:00
Nathaniel Nicandro
8784b9fcc3 Update comments and documentation 2018-02-04 17:58:11 -06:00
Nathaniel Nicandro
09ef799535 Use jupyter-inhibit-handlers 2018-02-04 17:57:18 -06:00
Nathaniel Nicandro
4a0cff991d Add jupyter-ioloop-wait-until to wait for events from ioloop subprocess 2018-02-04 17:55:47 -06:00
Nathaniel Nicandro
2ffbf74149 Flush stdout after sending all messages in ioloop subprocess 2018-02-04 17:44:27 -06:00
Nathaniel Nicandro
fe323cf623 Properly stop channels in ioloop subprocess 2018-02-04 17:43:59 -06:00
Nathaniel Nicandro
290f3a2d96 Block until channel is alive in jupyter-start-channel for async channels 2018-02-04 17:43:20 -06:00
Nathaniel Nicandro
b72713b00c Remove the special behavior when dropping requests 2018-02-04 17:41:48 -06:00
Nathaniel Nicandro
74ccc47a6e Get the kernel language from the kernel-info slot of a jupyter-kernel-client 2018-02-04 17:41:13 -06:00
Nathaniel Nicandro
c6d78872cb Refactor the injection of render parameters when inserting results 2018-02-04 17:40:01 -06:00
Nathaniel Nicandro
84cf20c863 Simplify adding results 2018-02-04 17:38:24 -06:00
Nathaniel Nicandro
0dec139a3a Simplify synchronous output in org-babel-execute:jupyter 2018-02-04 17:36:29 -06:00
Nathaniel Nicandro
9fa2d34ec5 Add org-babel-jupyter-aliases-from-kernelspecs 2018-02-04 17:35:34 -06:00
Nathaniel Nicandro
7bc3021302 Unset require-final-newline when writing image files 2018-02-04 00:01:02 -06:00
Nathaniel Nicandro
1a4739fa19 Save the match data when searching html results 2018-02-03 23:48:42 -06:00
Nathaniel Nicandro
b680aee309 Set the default header args for Jupyter src block aliases 2018-02-03 23:48:14 -06:00
Nathaniel Nicandro
d15ba28956 Remove the need for the src block info in org-babel-execute:jupyter 2018-02-03 23:47:18 -06:00
Nathaniel Nicandro
f804f6fbfd Remove the need to pass the src block info to org-babel-jupyter-insert-results 2018-02-03 23:34:31 -06:00
Nathaniel Nicandro
562d6643e4 Remove the need for passing the src block info to orb-babel-jupyter-prepare-result 2018-02-03 23:31:10 -06:00
Nathaniel Nicandro
dae244f146 Fix mispelled word 2018-02-03 21:51:01 -06:00
Nathaniel Nicandro
84cc6d1b12 Add jupyter-repl-connected-p 2018-02-03 21:49:46 -06:00
Nathaniel Nicandro
aff2a6e925 Heavily refactor org-babel integration
- Externalize some of the functions implemented within the body of
  `org-babel-execute:jupyter`

- Use the `:status` callback to finalize the collected results

- Handle the `:display-data` messages
2018-02-03 21:14:53 -06:00
Nathaniel Nicandro
8d2272e75b Change group of ob-jupyter to org-babel 2018-02-03 21:10:21 -06:00
Nathaniel Nicandro
db485268c8 Simplify jupyter-repl-cell-line-p 2018-02-03 20:59:57 -06:00
Nathaniel Nicandro
265b6b874b Document jupyter-session and jupyter-request 2018-02-03 19:25:50 -06:00
Nathaniel Nicandro
05c7f73e8f Update README 2018-02-03 19:25:29 -06:00
Nathaniel Nicandro
91da143fb1 Simplify making jupyter-request objects when sending a message 2018-02-03 19:16:16 -06:00
Nathaniel Nicandro
80509f275c Only allow stdin messages when the stdin channel is alive 2018-02-03 19:15:28 -06:00
Nathaniel Nicandro
019309efcd Cleanup indentation 2018-02-03 19:14:24 -06:00
Nathaniel Nicandro
95a5cfbd74 Add jupyter--get-channel 2018-02-03 19:10:30 -06:00
Nathaniel Nicandro
aa054178b7 Refactor jupyter-start-new-kernel 2018-02-03 19:06:10 -06:00
Nathaniel Nicandro
8627c4892a Fix mispelled variable name 2018-02-03 19:06:10 -06:00
Nathaniel Nicandro
91be45df3a Add declare spec for client handlers 2018-02-03 19:06:10 -06:00
Nathaniel Nicandro
43a59ba74d Update channel implementation
- Distinguish between an asynchronous channel and a synchronous one

  - `jupyter-async-channel` :: Messages are sent and received through an ioloop
                               subprocess that the channel has access to. The
                               subprocess uses the `jupyter-sync-channel` for
                               sending and receiving messages.

  - `jupyter-sync-channel` :: Messages are sent and received through a
                               `zmq-socket` in the current Emacs session.

  - Define `jupyter-send` and `jupyter-recv` methods for channels.

  - Update `jupyter-kernel-client` and ioloop interfaces to take into account
    changes with channels.
2018-02-03 19:06:10 -06:00
Nathaniel Nicandro
c2c62329cb Take into account a narrowed buffer 2018-02-03 19:06:10 -06:00